@xopcai/xopc 0.0.119 → 0.0.121
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/dashscope/src/image-generation-provider.d.ts +6 -5
- package/dist/extensions/dashscope/src/image-generation-provider.js +40 -64
- package/dist/extensions/dashscope/src/image-generation-provider.js.map +1 -1
- package/dist/extensions/dashscope/src/index.d.ts +1 -1
- package/dist/extensions/dashscope/src/index.js +2 -2
- package/dist/extensions/dashscope/xopc.extension.json +3 -2
- package/dist/extensions/minimax/src/image-generation-provider.d.ts +7 -5
- package/dist/extensions/minimax/src/image-generation-provider.js +43 -37
- package/dist/extensions/minimax/src/image-generation-provider.js.map +1 -1
- package/dist/extensions/minimax/src/index.d.ts +1 -1
- package/dist/extensions/minimax/src/index.js +2 -2
- package/dist/extensions/minimax/xopc.extension.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/Combination-HAlzriaz.js +41 -0
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CU8J6zou.js → agent-avatar-dicebear-4AW4JgSU.js} +1 -1
- package/dist/gateway/static/root/assets/agents-2SVUUPlp.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-B9vfYoEr.js → app-management-settings-panel-CE6GkGU2.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-ClOzIO24.js → appearance-settings-BmaUjghw.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-DU0dz9Zo.js → apps-page-BWeQ1I49.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-BkVIgZzA.js → archive-plugin-CX4_KWut.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-CaCMWh1D.js → attachment-load-jf-PIIUU.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-DhGDpKP3.js → automation-suggestion-card-BHk5rtJz.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-QHotl53D.js +1 -0
- package/dist/gateway/static/root/assets/{binary-plugins-B4TO_bsn.js → binary-plugins-DG9XQikd.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DJRWwWNI.js → block-editor-Up_VIxLJ.js} +6 -6
- package/dist/gateway/static/root/assets/browser-settings-page-Cmwi6IIQ.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-Befi89CL.js → capability-presets-api-CGM4OyMw.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-_G8eb2vJ.js → capability-presets-settings-panel-CzWt0LBb.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-BNSuJb5f.js → channel-recipient-api-BEByL4_o.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BOMCUe2J.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-C-Dexk_F.js +2 -0
- package/dist/gateway/static/root/assets/dist-Mys7eFJ5.js +1 -0
- package/dist/gateway/static/root/assets/dist-wO9a2_ID.js +1 -0
- package/dist/gateway/static/root/assets/dreaming-settings-WPEj8pir.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DYh402XV.js → extension-debug-page-DZxa_j7-.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Cr_TizrN.js → extension-page-CseziW53.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-B_9J-xyo.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-Y7AEX4H3.js → fetch-Cs4ck8zA.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-RbMmAOpX.js → gateway-config-api-Dl223a7r.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-DdzbtW9R.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DiD_Tx4N.js → gateway-startup-retry-IvePwjFE.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-Dxldogms.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-DqxVi0p5.js → goals-config-api-CUCP6yCl.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-DU5Nd6Xp.js +2 -0
- package/dist/gateway/static/root/assets/goals-settings-Dj87qPxv.js +1 -0
- package/dist/gateway/static/root/assets/heartbeat-settings-Cgm5JmwH.js +1 -0
- package/dist/gateway/static/root/assets/index-BU1pvxmS.js +191 -0
- package/dist/gateway/static/root/assets/index-l54WfSqe.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-Dvg53qnd.js → keyboard-shortcuts-settings-DJgYw0nB.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-DjbfSsfA.js → locale-store-Ba72bFmP.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-C10aS4XO.js +2 -0
- package/dist/gateway/static/root/assets/{markdown-split-CpHxbtWJ.js → markdown-split-gnQ_EiGo.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-SFPQRSxq.js → media-plugins-CQV-mgJn.js} +1 -1
- package/dist/gateway/static/root/assets/messages-C6Kc4Jhf.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-B35CAfg6.js +2 -0
- package/dist/gateway/static/root/assets/note-detail-page-Brlwse8x.js +2 -0
- package/dist/gateway/static/root/assets/{note-image-lightbox-BUYURRgn.js → note-image-lightbox-BthwKjLA.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-BsIBSFyZ.js → notes-page-CoAwRc7L.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BHz9iWYA.js → preview-open-alternatives-BPMXC-2u.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-B36RQ05h.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-CefkOlRg.js → save-bar-controls-BEHqwZjz.js} +1 -1
- package/dist/gateway/static/root/assets/schedule-field-CMY25m97.js +1 -0
- package/dist/gateway/static/root/assets/schema-form-CxjxsFfg.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-73THChnj.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-CR9VsY-R.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BouO6JTi.js → settings-collapsible-section-s-kiLAxP.js} +1 -1
- package/dist/gateway/static/root/assets/settings-form-section-CIxIEYxU.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-BJ1AhfKI.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-layout-BJ4Gsef5.js → settings-page-layout--6qT7ZJa.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-CrUjHPQo.js → setup-status-panel-C1TtS1vJ.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-BDy2btRN.js → share-preview-page-BZADSbS1.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-gqC8Rmhy.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-C9P-WYvS.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-CEpSvOhF.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-CRngrlnZ.js → system-settings-panel-Czjf0kLJ.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-CD2wtgZV.js → theme-store-Bt6vAkSB.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-BltBc0b-.js → typed-models-lib-Cmt8SYdI.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-CjN-51e6.js → use-channel-catalog-DyM-ckEQ.js} +1 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-BygLv8vm.js +1 -0
- package/dist/gateway/static/root/assets/{utils-B5M5-YvK.js → utils-CloW8coB.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BsoqJba6.js +1 -0
- package/dist/gateway/static/root/assets/{voice-player-store-B7ykUlHM.js → voice-player-store-DduWlJYV.js} +1 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-CcQeX6l5.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-CeA8A9Ef.js +18 -0
- package/dist/gateway/static/root/index.html +9 -10
- package/dist/package.js +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +3 -2
- package/dist/src/agent/embedded/xopc-auth-storage.d.ts +1 -5
- package/dist/src/agent/embedded/xopc-auth-storage.js +2 -8
- package/dist/src/agent/embedded/xopc-auth-storage.js.map +1 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.js +23 -0
- package/dist/src/agent/embedded/xopc-tools-bridge.js.map +1 -1
- package/dist/src/agent/goals/checklist-judge.js +1 -1
- package/dist/src/agent/goals/checklist-judge.js.map +1 -1
- package/dist/src/agent/goals/judge.js +1 -1
- package/dist/src/agent/goals/judge.js.map +1 -1
- package/dist/src/agent/image/tool-model-config.d.ts +2 -0
- package/dist/src/agent/image/tool-model-config.js +2 -2
- package/dist/src/agent/image/tool-model-config.js.map +1 -1
- package/dist/src/agent/image/understanding/pi-ai-provider.js +1 -1
- package/dist/src/agent/image/understanding/pi-ai-provider.js.map +1 -1
- package/dist/src/agent/memory/builtin-memory-store.d.ts +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js +1 -1
- package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
- package/dist/src/agent/memory/builtin-provider.d.ts +2 -2
- package/dist/src/agent/memory/builtin-provider.js +2 -2
- package/dist/src/agent/memory/builtin-provider.js.map +1 -1
- package/dist/src/agent/memory/compaction.d.ts +1 -1
- package/dist/src/agent/memory/compaction.js +1 -1
- package/dist/src/agent/memory/compaction.js.map +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.d.ts +0 -7
- package/dist/src/agent/memory/dreaming/light-sweep.js +16 -277
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.d.ts +3 -3
- package/dist/src/agent/memory/dreaming/short-term-store.js +5 -5
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +1 -1
- package/dist/src/agent/memory/dreaming/utils.d.ts +2 -2
- package/dist/src/agent/memory/dreaming/utils.js +2 -2
- package/dist/src/agent/memory/dreaming/utils.js.map +1 -1
- package/dist/src/agent/memory/index.d.ts +0 -2
- package/dist/src/agent/memory/index.js +1 -2
- package/dist/src/agent/middleware/self-verify.d.ts +3 -0
- package/dist/src/agent/middleware/self-verify.js +18 -0
- package/dist/src/agent/middleware/self-verify.js.map +1 -1
- package/dist/src/agent/orchestration/agent-event-handler.js +28 -3
- package/dist/src/agent/orchestration/agent-event-handler.js.map +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js +11 -10
- package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -1
- package/dist/src/agent/prompt/sections/tooling.js +23 -7
- package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +1 -0
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/prompt/system-prompt.d.ts +1 -0
- package/dist/src/agent/prompt/system-prompt.js +13 -1
- package/dist/src/agent/prompt/system-prompt.js.map +1 -1
- package/dist/src/agent/reply/startup-context.js +6 -105
- package/dist/src/agent/reply/startup-context.js.map +1 -1
- package/dist/src/agent/sandbox/path-policy.js +30 -6
- package/dist/src/agent/sandbox/path-policy.js.map +1 -1
- package/dist/src/agent/service/btw-query.js +1 -1
- package/dist/src/agent/service/btw-query.js.map +1 -1
- package/dist/src/agent/service.d.ts +0 -3
- package/dist/src/agent/service.js +0 -41
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/starter-agents.js +16 -16
- package/dist/src/agent/starter-agents.js.map +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +12 -1
- package/dist/src/agent/tools/image-generate-tool.js.map +1 -1
- package/dist/src/agent/tools/memory-tool.js +2 -2
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/agent/tools/session-search-tool.js +1 -1
- package/dist/src/agent/tools/session-search-tool.js.map +1 -1
- package/dist/src/agent/tools/web-extract.js +1 -1
- package/dist/src/agent/tools/web-extract.js.map +1 -1
- package/dist/src/agent-manifest/index.js +2 -2
- package/dist/src/agent-manifest/schema.d.ts +66 -0
- package/dist/src/agent-manifest/schema.js +28 -2
- package/dist/src/agent-manifest/schema.js.map +1 -1
- package/dist/src/automations/draft/automation-draft-service.js +1 -1
- package/dist/src/automations/draft/automation-draft-service.js.map +1 -1
- package/dist/src/cli/commands/agent.js +2 -2
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +161 -11
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/profile.js +1 -1
- package/dist/src/cli/commands/tunnel.js +1 -1
- package/dist/src/cli/commands/update.js +1 -1
- package/dist/src/cli/extension-cli-register.js +1 -1
- package/dist/src/cli/templates.js +3 -2
- package/dist/src/cli/templates.js.map +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/default-model.d.ts +11 -0
- package/dist/src/config/default-model.js +19 -0
- package/dist/src/config/default-model.js.map +1 -0
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/schema.d.ts +73 -13
- package/dist/src/config/schema.js +59 -24
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/connectors/registries/smithery.js +10 -9
- package/dist/src/connectors/registries/smithery.js.map +1 -1
- package/dist/src/daemon/install-plan.js +2 -1
- package/dist/src/daemon/install-plan.js.map +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/global-defaults-admin.js +6 -16
- package/dist/src/gateway/global-defaults-admin.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +24 -0
- package/dist/src/gateway/hono/routes/agents.js +1 -79
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +4 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
- package/dist/src/gateway/hono/routes/models.js +132 -14
- package/dist/src/gateway/hono/routes/models.js.map +1 -1
- package/dist/src/gateway/hono/routes/voice.js +1 -1
- package/dist/src/gateway/hono/routes/voice.js.map +1 -1
- package/dist/src/gateway/image-capabilities.d.ts +11 -1
- package/dist/src/gateway/image-capabilities.js +32 -43
- package/dist/src/gateway/image-capabilities.js.map +1 -1
- package/dist/src/gateway/run-loop.js +1 -1
- package/dist/src/gateway/workspace-editor-path.js +9 -1
- package/dist/src/gateway/workspace-editor-path.js.map +1 -1
- package/dist/src/generated/bundled-image-generation-providers.d.ts +4 -2
- package/dist/src/generated/bundled-image-generation-providers.js +6 -4
- package/dist/src/generated/bundled-image-generation-providers.js.map +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/media/paths.js +3 -4
- package/dist/src/media/paths.js.map +1 -1
- package/dist/src/notes/service.js +1 -1
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/providers/domestic-presets.d.ts +615 -0
- package/dist/src/providers/domestic-presets.js +834 -0
- package/dist/src/providers/domestic-presets.js.map +1 -0
- package/dist/src/providers/env-keys.js +29 -5
- package/dist/src/providers/env-keys.js.map +1 -1
- package/dist/src/providers/extension-stream-bridge.js +1 -1
- package/dist/src/providers/extension-stream-bridge.js.map +1 -1
- package/dist/src/providers/index.d.ts +5 -5
- package/dist/src/providers/index.js +101 -21
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/model-discovery.d.ts +17 -0
- package/dist/src/providers/model-discovery.js +61 -0
- package/dist/src/providers/model-discovery.js.map +1 -0
- package/dist/src/providers/model-registry.d.ts +1 -1
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/model-registry.js.map +1 -1
- package/dist/src/providers/presentation.js +185 -14
- package/dist/src/providers/presentation.js.map +1 -1
- package/dist/src/session/session-title.js +1 -1
- package/dist/src/session/session-title.js.map +1 -1
- package/dist/src/storage/sqlite/row-mappers.js +3 -1
- package/dist/src/storage/sqlite/row-mappers.js.map +1 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -2
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/xopc-tui-keybindings.d.ts +1 -1
- package/dist/src/voice/tts/summarize.js +1 -1
- package/dist/src/voice/tts/summarize.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/draft/workflow-draft-service.js.map +1 -1
- package/package.json +6 -6
- package/dist/gateway/static/root/assets/Combination-BzaXOLd9.js +0 -41
- package/dist/gateway/static/root/assets/agents-B0hkpLhP.js +0 -2
- package/dist/gateway/static/root/assets/automations-page-CTedroVo.js +0 -1
- package/dist/gateway/static/root/assets/browser-settings-page-FCDwOOBK.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-C3d5JBJX.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-yaUNvt5u.js +0 -2
- package/dist/gateway/static/root/assets/dist-By6Rh2ee.js +0 -1
- package/dist/gateway/static/root/assets/dist-CkobR7mk.js +0 -1
- package/dist/gateway/static/root/assets/dist-DokQNVMQ.js +0 -1
- package/dist/gateway/static/root/assets/dreaming-settings-DNrdg1Ve.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-BU1KoKRj.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-C79wkXef.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-9paXuHdo.js +0 -1
- package/dist/gateway/static/root/assets/goals-page-CS0R-Af2.js +0 -2
- package/dist/gateway/static/root/assets/goals-settings-CSuzZ8Ae.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-DXPaYJm3.js +0 -1
- package/dist/gateway/static/root/assets/index-BoKafJIZ.js +0 -191
- package/dist/gateway/static/root/assets/index-CArhCcYn.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-DLXPcksQ.js +0 -2
- package/dist/gateway/static/root/assets/messages-CrDHEbss.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-BDF2iyRk.js +0 -2
- package/dist/gateway/static/root/assets/note-detail-page-CSb_hwig.js +0 -2
- package/dist/gateway/static/root/assets/remote-access-hub-CwzSovcS.js +0 -1
- package/dist/gateway/static/root/assets/schedule-field-CmTRoOcE.js +0 -1
- package/dist/gateway/static/root/assets/schema-form-FMKv1vGu.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-PHmX-NmA.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BRAeKJN4.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-D-4lBl6X.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-KKrbFjy8.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-B18OBmH5.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-C28-2uKQ.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-Bm2ebkwl.js +0 -2
- package/dist/gateway/static/root/assets/user-profile-settings-panel-DJ1dKwZy.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-CeEevm7z.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-C4PzUQjB.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-BL84_-Ky.js +0 -18
- package/dist/src/agent/memory/memory-flush.d.ts +0 -27
- package/dist/src/agent/memory/memory-flush.js +0 -124
- package/dist/src/agent/memory/memory-flush.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domestic-presets.js","names":[],"sources":["../../../src/providers/domestic-presets.ts"],"sourcesContent":["import type { ProviderConfig } from '../config/models-json.js';\n\nexport interface DomesticProviderModelPreset {\n id: string;\n name?: string;\n contextWindow?: number;\n maxTokens?: number;\n reasoning?: boolean;\n input?: Array<'text' | 'image'>;\n}\n\nexport interface DomesticProviderBaseUrlPreset {\n id: string;\n label: string;\n baseUrl: string;\n description?: string;\n}\n\nexport interface DomesticProviderPreset {\n id: string;\n displayName: string;\n description: string;\n docsUrl: string;\n apiKeyUrl: string;\n pricingUrl?: string;\n envVars: string[];\n api: NonNullable<ProviderConfig['api']>;\n authHeader?: boolean;\n headers?: Record<string, string>;\n baseUrlPresets: DomesticProviderBaseUrlPreset[];\n defaultBaseUrlPreset: string;\n defaultModel: string;\n models: DomesticProviderModelPreset[];\n aliases: string[];\n quirks?: string[];\n}\n\nconst QWEN_MODELS: DomesticProviderModelPreset[] = [\n { id: 'qwen3.7-max', name: 'Qwen3.7 Max', contextWindow: 1000000, input: ['text', 'image'] },\n { id: 'qwen3.7-plus', name: 'Qwen3.7 Plus', contextWindow: 1000000, input: ['text', 'image'] },\n { id: 'qwen3.6-flash', name: 'Qwen3.6 Flash', contextWindow: 1000000, input: ['text'] },\n];\n\nconst STEPFUN_MODELS: DomesticProviderModelPreset[] = [\n { id: 'step-3.7-flash', name: 'Step 3.7 Flash', contextWindow: 1000000, reasoning: true, input: ['text', 'image'] },\n { id: 'step-3.5-flash-2603', name: 'Step 3.5 Flash 2603', contextWindow: 1000000, reasoning: true, input: ['text', 'image'] },\n { id: 'step-3.5-flash', name: 'Step 3.5 Flash', contextWindow: 1000000, reasoning: true, input: ['text'] },\n];\n\nconst MIMO_MODELS: DomesticProviderModelPreset[] = [\n { id: 'mimo-v2.5-pro', name: 'MiMo V2.5 Pro', contextWindow: 1000000, reasoning: true, input: ['text'] },\n { id: 'mimo-v2.5-pro-ultraspeed', name: 'MiMo V2.5 Pro UltraSpeed', contextWindow: 1000000, reasoning: true, input: ['text'] },\n { id: 'mimo-v2.5', name: 'MiMo V2.5', contextWindow: 1000000, reasoning: true, input: ['text', 'image'] },\n];\n\nconst MINIMAX_MODELS: DomesticProviderModelPreset[] = [\n { id: 'MiniMax-M3', name: 'MiniMax M3', contextWindow: 1000000, reasoning: true, input: ['text', 'image'] },\n { id: 'MiniMax-M2.7-highspeed', name: 'MiniMax M2.7 Highspeed', contextWindow: 204800, input: ['text'] },\n { id: 'MiniMax-M2.7', name: 'MiniMax M2.7', contextWindow: 204800, input: ['text'] },\n];\n\nexport const DOMESTIC_PROVIDER_PRESETS = [\n {\n id: 'dashscope-cn',\n displayName: 'Alibaba Bailian / DashScope China',\n description: 'Alibaba Bailian Qwen models through the China DashScope OpenAI-compatible endpoint.',\n docsUrl: 'https://help.aliyun.com/zh/model-studio/developer-reference/compatibility-of-openai-with-dashscope',\n apiKeyUrl: 'https://dashscope.console.aliyun.com/apiKey',\n pricingUrl: 'https://help.aliyun.com/zh/model-studio/developer-reference/tongyi-thousand-questions-metering-and-billing',\n envVars: ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [\n {\n id: 'cn',\n label: 'China',\n baseUrl: 'https://dashscope.aliyuncs.com/compatible-mode/v1',\n },\n ],\n defaultBaseUrlPreset: 'cn',\n defaultModel: 'qwen3.7-plus',\n models: QWEN_MODELS,\n aliases: ['qwen', 'tongyi', 'aliyun', 'bailian', 'dashscope', 'dashscope cn', '阿里百炼'],\n quirks: ['Some Qwen coding endpoints use different hosts; keep the Base URL editable.'],\n },\n {\n id: 'dashscope-intl',\n displayName: 'Alibaba Bailian / DashScope International',\n description: 'Alibaba Bailian Qwen models through the international DashScope OpenAI-compatible endpoint.',\n docsUrl: 'https://www.alibabacloud.com/help/en/model-studio/compatibility-of-openai-with-dashscope',\n apiKeyUrl: 'https://modelstudio.console.alibabacloud.com/',\n pricingUrl: 'https://www.alibabacloud.com/help/en/model-studio/billing-for-tongyi-qianwen',\n envVars: ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [\n {\n id: 'intl',\n label: 'International',\n baseUrl: 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1',\n },\n ],\n defaultBaseUrlPreset: 'intl',\n defaultModel: 'qwen3.7-plus',\n models: QWEN_MODELS,\n aliases: ['qwen intl', 'tongyi intl', 'alibaba cloud', 'dashscope intl'],\n quirks: ['Use an international DashScope key for the international endpoint.'],\n },\n {\n id: 'volcengine-ark',\n displayName: 'Volcengine Ark',\n description: 'Volcengine Ark models through the OpenAI-compatible API.',\n docsUrl: 'https://www.volcengine.com/docs/82379/1302008',\n apiKeyUrl: 'https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey',\n envVars: ['ARK_API_KEY', 'VOLCENGINE_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [\n {\n id: 'cn-beijing',\n label: 'China Beijing',\n baseUrl: 'https://ark.cn-beijing.volces.com/api/v3',\n description: 'Model IDs are usually Ark endpoint IDs.',\n },\n ],\n defaultBaseUrlPreset: 'cn-beijing',\n defaultModel: 'ep-your-endpoint-id',\n models: [{ id: 'ep-your-endpoint-id', name: 'Ark endpoint ID', contextWindow: 128000, input: ['text'] }],\n aliases: ['doubao', 'ark', 'volcengine', 'volces', 'bytedance'],\n quirks: ['Use the Ark endpoint id as the model id.'],\n },\n {\n id: 'volcengine-plan',\n displayName: 'Volcengine Doubao Coding Plan',\n description: 'Doubao coding-plan models through Volcengine Ark coding endpoint.',\n docsUrl: 'https://www.volcengine.com/docs/82379/1302008',\n apiKeyUrl: 'https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey',\n envVars: ['ARK_API_KEY', 'VOLCENGINE_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [\n { id: 'cn-beijing-coding', label: 'China Beijing Coding Plan', baseUrl: 'https://ark.cn-beijing.volces.com/api/coding/v3' },\n ],\n defaultBaseUrlPreset: 'cn-beijing-coding',\n defaultModel: 'ark-code-latest',\n models: [\n { id: 'ark-code-latest', name: 'Ark Coding Plan', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n { id: 'doubao-seed-2.0-code', name: 'Doubao Seed 2.0 Code', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n { id: 'doubao-seed-2.0-pro', name: 'Doubao Seed 2.0 Pro', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n { id: 'doubao-seed-2.0-lite', name: 'Doubao Seed 2.0 Lite', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n ],\n aliases: ['doubao coding', 'volcengine plan', 'ark coding plan', '火山方舟 coding'],\n },\n {\n id: 'byteplus-plan',\n displayName: 'BytePlus Doubao Coding Plan',\n description: 'Doubao coding-plan models through the BytePlus international coding endpoint.',\n docsUrl: 'https://docs.byteplus.com/en/docs/ModelArk/OpenAI',\n apiKeyUrl: 'https://console.byteplus.com/ark/region:ark+ap-southeast-1/apiKey',\n envVars: ['BYTEPLUS_API_KEY', 'ARK_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [\n { id: 'ap-southeast-coding', label: 'Asia Pacific Coding Plan', baseUrl: 'https://ark.ap-southeast.bytepluses.com/api/coding/v3' },\n ],\n defaultBaseUrlPreset: 'ap-southeast-coding',\n defaultModel: 'ark-code-latest',\n models: [\n { id: 'ark-code-latest', name: 'Ark Coding Plan', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n { id: 'doubao-seed-2.0-code', name: 'Doubao Seed 2.0 Code', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n { id: 'doubao-seed-2.0-pro', name: 'Doubao Seed 2.0 Pro', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n { id: 'doubao-seed-2.0-lite', name: 'Doubao Seed 2.0 Lite', contextWindow: 256000, maxTokens: 4096, input: ['text'] },\n ],\n aliases: ['byteplus', 'byteplus plan', 'doubao coding international'],\n },\n {\n id: 'deepseek',\n displayName: 'DeepSeek',\n description: 'DeepSeek models through the OpenAI-compatible API.',\n docsUrl: 'https://api-docs.deepseek.com/',\n apiKeyUrl: 'https://platform.deepseek.com/api_keys',\n pricingUrl: 'https://api-docs.deepseek.com/quick_start/pricing',\n envVars: ['DEEPSEEK_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'default', label: 'Default', baseUrl: 'https://api.deepseek.com' }],\n defaultBaseUrlPreset: 'default',\n defaultModel: 'deepseek-v4-pro',\n models: [\n { id: 'deepseek-v4-pro', name: 'DeepSeek V4 Pro', contextWindow: 1000000, maxTokens: 393216, reasoning: true, input: ['text'] },\n { id: 'deepseek-v4-flash', name: 'DeepSeek V4 Flash', contextWindow: 1000000, maxTokens: 393216, reasoning: true, input: ['text'] },\n ],\n aliases: ['deep seek', 'deepseek', 'r1'],\n quirks: ['Prefer current catalog models; older chat/reasoner aliases may be deprecated by the provider.'],\n },\n {\n id: 'moonshotai-cn',\n displayName: 'Kimi / Moonshot China',\n description: 'Kimi models through the Moonshot China OpenAI-compatible endpoint.',\n docsUrl: 'https://platform.moonshot.cn/docs',\n apiKeyUrl: 'https://platform.moonshot.cn/console/api-keys',\n pricingUrl: 'https://platform.moonshot.cn/docs/pricing/chat',\n envVars: ['MOONSHOT_API_KEY', 'KIMI_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'cn', label: 'China', baseUrl: 'https://api.moonshot.cn/v1' }],\n defaultBaseUrlPreset: 'cn',\n defaultModel: 'kimi-k2.7-code',\n models: [\n { id: 'kimi-k2.7-code', name: 'Kimi K2.7 Code', contextWindow: 262144, maxTokens: 32768, reasoning: true, input: ['text', 'image'] },\n { id: 'kimi-k2.6', name: 'Kimi K2.6', contextWindow: 128000, input: ['text'] },\n { id: 'kimi-k2.5', name: 'Kimi K2.5', contextWindow: 128000, input: ['text'] },\n ],\n aliases: ['kimi', 'moonshot', 'moonshot cn'],\n quirks: ['Provider-specific thinking and tool-call stream fields may need compatibility handling.'],\n },\n {\n id: 'moonshotai',\n displayName: 'Kimi / Moonshot International',\n description: 'Kimi models through the Moonshot international OpenAI-compatible endpoint.',\n docsUrl: 'https://platform.moonshot.ai/docs',\n apiKeyUrl: 'https://platform.moonshot.ai/console/api-keys',\n pricingUrl: 'https://platform.moonshot.ai/docs/pricing',\n envVars: ['MOONSHOT_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'intl', label: 'International', baseUrl: 'https://api.moonshot.ai/v1' }],\n defaultBaseUrlPreset: 'intl',\n defaultModel: 'kimi-k2.7-code',\n models: [\n { id: 'kimi-k2.7-code', name: 'Kimi K2.7 Code', contextWindow: 262144, maxTokens: 32768, reasoning: true, input: ['text', 'image'] },\n { id: 'kimi-k2.6', name: 'Kimi K2.6', contextWindow: 128000, input: ['text'] },\n { id: 'kimi-k2.5', name: 'Kimi K2.5', contextWindow: 128000, input: ['text'] },\n ],\n aliases: ['kimi intl', 'moonshot intl', 'moonshot ai'],\n quirks: ['Provider-specific thinking and tool-call stream fields may need compatibility handling.'],\n },\n {\n id: 'kimi-coding',\n displayName: 'Kimi Coding',\n description: 'Kimi dedicated coding endpoint with Anthropic-compatible requests.',\n docsUrl: 'https://platform.kimi.com/docs',\n apiKeyUrl: 'https://platform.kimi.com/console/api-keys',\n pricingUrl: 'https://platform.kimi.com/docs/pricing/chat',\n envVars: ['KIMI_API_KEY', 'MOONSHOT_API_KEY'],\n api: 'anthropic-messages',\n headers: { 'User-Agent': 'claude-code/0.1.0' },\n baseUrlPresets: [{ id: 'coding', label: 'Coding endpoint', baseUrl: 'https://api.kimi.com/coding/' }],\n defaultBaseUrlPreset: 'coding',\n defaultModel: 'kimi-k2.7-code',\n models: [\n { id: 'kimi-k2.7-code', name: 'Kimi K2.7 Code', contextWindow: 262144, maxTokens: 32768, reasoning: true, input: ['text', 'image'] },\n { id: 'kimi-for-coding', name: 'Kimi Code', contextWindow: 262144, maxTokens: 32768, reasoning: true, input: ['text', 'image'] },\n ],\n aliases: ['kimi coding', 'kimi code', 'moonshot coding'],\n },\n {\n id: 'stepfun-intl',\n displayName: 'StepFun International',\n description: 'StepFun models through the international OpenAI-compatible API.',\n docsUrl: 'https://platform.stepfun.com/docs',\n apiKeyUrl: 'https://platform.stepfun.com/interface-key',\n envVars: ['STEPFUN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'intl', label: 'International', baseUrl: 'https://api.stepfun.ai/v1' }],\n defaultBaseUrlPreset: 'intl',\n defaultModel: 'step-3.7-flash',\n models: STEPFUN_MODELS,\n aliases: ['step', 'stepfun', 'jieyue', 'stepfun intl'],\n },\n {\n id: 'stepfun-cn',\n displayName: 'StepFun China',\n description: 'StepFun models through the China OpenAI-compatible API.',\n docsUrl: 'https://platform.stepfun.com/docs',\n apiKeyUrl: 'https://platform.stepfun.com/interface-key',\n envVars: ['STEPFUN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'cn', label: 'China', baseUrl: 'https://api.stepfun.com/v1' }],\n defaultBaseUrlPreset: 'cn',\n defaultModel: 'step-3.7-flash',\n models: STEPFUN_MODELS,\n aliases: ['step cn', 'stepfun cn', 'jieyue cn', '阶跃星辰'],\n },\n {\n id: 'stepfun-plan-intl',\n displayName: 'StepFun Step Plan International',\n description: 'StepFun Step Plan international coding/planning endpoint.',\n docsUrl: 'https://platform.stepfun.com/docs',\n apiKeyUrl: 'https://platform.stepfun.com/interface-key',\n envVars: ['STEPFUN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'plan-intl', label: 'Step Plan International', baseUrl: 'https://api.stepfun.ai/step_plan/v1' }],\n defaultBaseUrlPreset: 'plan-intl',\n defaultModel: 'step-3.7-flash',\n models: STEPFUN_MODELS,\n aliases: ['step plan', 'stepfun plan', 'stepfun plan intl'],\n },\n {\n id: 'stepfun-plan-cn',\n displayName: 'StepFun Step Plan China',\n description: 'StepFun Step Plan China coding/planning endpoint.',\n docsUrl: 'https://platform.stepfun.com/docs',\n apiKeyUrl: 'https://platform.stepfun.com/interface-key',\n envVars: ['STEPFUN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'plan-cn', label: 'Step Plan China', baseUrl: 'https://api.stepfun.com/step_plan/v1' }],\n defaultBaseUrlPreset: 'plan-cn',\n defaultModel: 'step-3.7-flash',\n models: STEPFUN_MODELS,\n aliases: ['step plan cn', 'stepfun plan cn', '阶跃 plan'],\n },\n {\n id: 'xiaomi',\n displayName: 'Xiaomi MiMo',\n description: 'Xiaomi MiMo API billing endpoint through OpenAI-compatible requests.',\n docsUrl: 'https://platform.xiaomimimo.com/',\n apiKeyUrl: 'https://platform.xiaomimimo.com/#/console/api-keys',\n pricingUrl: 'https://mimo.mi.com/',\n envVars: ['XIAOMI_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'api', label: 'API billing', baseUrl: 'https://api.xiaomimimo.com/v1' }],\n defaultBaseUrlPreset: 'api',\n defaultModel: 'mimo-v2.5-pro',\n models: MIMO_MODELS,\n aliases: ['xiaomi', 'mimo', 'xiaomimimo'],\n quirks: ['Some MiMo plans document api-key style auth; keep auth header behavior configurable if needed.'],\n },\n {\n id: 'xiaomi-token-plan-cn',\n displayName: 'Xiaomi MiMo Token Plan China',\n description: 'Xiaomi MiMo Token Plan China endpoint.',\n docsUrl: 'https://platform.xiaomimimo.com/',\n apiKeyUrl: 'https://platform.xiaomimimo.com/#/console/api-keys',\n pricingUrl: 'https://mimo.mi.com/',\n envVars: ['XIAOMI_TOKEN_PLAN_CN_API_KEY', 'XIAOMI_TOKEN_PLAN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'cn', label: 'China', baseUrl: 'https://token-plan-cn.xiaomimimo.com/v1' }],\n defaultBaseUrlPreset: 'cn',\n defaultModel: 'mimo-v2.5-pro',\n models: MIMO_MODELS,\n aliases: ['xiaomi token plan cn', 'mimo token plan cn'],\n },\n {\n id: 'xiaomi-token-plan-ams',\n displayName: 'Xiaomi MiMo Token Plan Amsterdam',\n description: 'Xiaomi MiMo Token Plan Amsterdam endpoint.',\n docsUrl: 'https://platform.xiaomimimo.com/',\n apiKeyUrl: 'https://platform.xiaomimimo.com/#/console/api-keys',\n pricingUrl: 'https://mimo.mi.com/',\n envVars: ['XIAOMI_TOKEN_PLAN_AMS_API_KEY', 'XIAOMI_TOKEN_PLAN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'ams', label: 'Amsterdam', baseUrl: 'https://token-plan-ams.xiaomimimo.com/v1' }],\n defaultBaseUrlPreset: 'ams',\n defaultModel: 'mimo-v2.5-pro',\n models: MIMO_MODELS,\n aliases: ['xiaomi token plan ams', 'mimo token plan ams'],\n },\n {\n id: 'xiaomi-token-plan-sgp',\n displayName: 'Xiaomi MiMo Token Plan Singapore',\n description: 'Xiaomi MiMo Token Plan Singapore endpoint.',\n docsUrl: 'https://platform.xiaomimimo.com/',\n apiKeyUrl: 'https://platform.xiaomimimo.com/#/console/api-keys',\n pricingUrl: 'https://mimo.mi.com/',\n envVars: ['XIAOMI_TOKEN_PLAN_SGP_API_KEY', 'XIAOMI_TOKEN_PLAN_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'sgp', label: 'Singapore', baseUrl: 'https://token-plan-sgp.xiaomimimo.com/v1' }],\n defaultBaseUrlPreset: 'sgp',\n defaultModel: 'mimo-v2.5-pro',\n models: MIMO_MODELS,\n aliases: ['xiaomi token plan sgp', 'mimo token plan sgp'],\n },\n {\n id: 'zhipu-cn',\n displayName: 'Zhipu GLM China',\n description: 'Zhipu GLM models through the BigModel OpenAI-compatible API.',\n docsUrl: 'https://docs.bigmodel.cn/cn/guide/start/model-overview',\n apiKeyUrl: 'https://bigmodel.cn/usercenter/proj-mgmt/apikeys',\n pricingUrl: 'https://bigmodel.cn/pricing',\n envVars: ['ZHIPU_API_KEY', 'BIGMODEL_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'cn', label: 'China', baseUrl: 'https://open.bigmodel.cn/api/paas/v4' }],\n defaultBaseUrlPreset: 'cn',\n defaultModel: 'glm-5.2',\n models: [\n { id: 'glm-5.2', name: 'GLM 5.2', contextWindow: 1000000, maxTokens: 65536, reasoning: true, input: ['text'] },\n ],\n aliases: ['zhipu', 'glm', 'bigmodel', 'zai cn'],\n },\n {\n id: 'zai',\n displayName: 'Zhipu GLM International',\n description: 'Zhipu GLM models through the z.ai OpenAI-compatible endpoint.',\n docsUrl: 'https://docs.z.ai/guides/overview/quick-start',\n apiKeyUrl: 'https://z.ai/manage-apikey/apikey-list',\n pricingUrl: 'https://z.ai/manage-apikey/billing',\n envVars: ['ZAI_API_KEY', 'Z_AI_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'global', label: 'International', baseUrl: 'https://api.z.ai/api/paas/v4' }],\n defaultBaseUrlPreset: 'global',\n defaultModel: 'glm-5.2',\n models: [\n { id: 'glm-5.2', name: 'GLM 5.2', contextWindow: 1000000, maxTokens: 65536, reasoning: true, input: ['text'] },\n ],\n aliases: ['zai', 'z.ai', 'zhipu global', 'glm global'],\n },\n {\n id: 'zai-coding-global',\n displayName: 'Zhipu GLM Coding Plan International',\n description: 'Zhipu GLM coding-plan international endpoint.',\n docsUrl: 'https://docs.z.ai/guides/overview/quick-start',\n apiKeyUrl: 'https://z.ai/manage-apikey/apikey-list',\n pricingUrl: 'https://z.ai/manage-apikey/billing',\n envVars: ['ZAI_API_KEY', 'Z_AI_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'coding-global', label: 'Coding Global', baseUrl: 'https://api.z.ai/api/coding/paas/v4' }],\n defaultBaseUrlPreset: 'coding-global',\n defaultModel: 'glm-5.2',\n models: [\n { id: 'glm-5.2', name: 'GLM 5.2', contextWindow: 1000000, maxTokens: 65536, reasoning: true, input: ['text'] },\n ],\n aliases: ['zai coding', 'zhipu coding global', 'glm coding global'],\n },\n {\n id: 'zhipu-coding-cn',\n displayName: 'Zhipu GLM Coding Plan China',\n description: 'Zhipu GLM coding-plan China endpoint.',\n docsUrl: 'https://docs.bigmodel.cn/cn/guide/start/model-overview',\n apiKeyUrl: 'https://bigmodel.cn/usercenter/proj-mgmt/apikeys',\n pricingUrl: 'https://bigmodel.cn/pricing',\n envVars: ['ZHIPU_API_KEY', 'BIGMODEL_API_KEY', 'ZAI_API_KEY'],\n api: 'openai-completions',\n baseUrlPresets: [{ id: 'coding-cn', label: 'Coding China', baseUrl: 'https://open.bigmodel.cn/api/coding/paas/v4' }],\n defaultBaseUrlPreset: 'coding-cn',\n defaultModel: 'glm-5.2',\n models: [\n { id: 'glm-5.2', name: 'GLM 5.2', contextWindow: 1000000, maxTokens: 65536, reasoning: true, input: ['text'] },\n ],\n aliases: ['zhipu coding', 'glm coding cn', '智谱 coding'],\n },\n {\n id: 'minimax',\n displayName: 'MiniMax',\n description: 'MiniMax text models. Anthropic-compatible endpoint is preferred for agent/tool workflows.',\n docsUrl: 'https://platform.minimax.io/docs',\n apiKeyUrl: 'https://platform.minimax.io/user-center/basic-information/interface-key',\n pricingUrl: 'https://platform.minimax.io/docs/guides/models-intro',\n envVars: ['MINIMAX_API_KEY'],\n api: 'anthropic-messages',\n authHeader: true,\n baseUrlPresets: [\n { id: 'intl-anthropic', label: 'International Anthropic-compatible', baseUrl: 'https://api.minimax.io/anthropic' },\n { id: 'intl-openai', label: 'International OpenAI-compatible', baseUrl: 'https://api.minimax.io/v1' },\n ],\n defaultBaseUrlPreset: 'intl-anthropic',\n defaultModel: 'MiniMax-M3',\n models: MINIMAX_MODELS,\n aliases: ['minimax', 'mini max', 'abab'],\n quirks: ['Switch API type to OpenAI-compatible if you select an /v1 endpoint.'],\n },\n {\n id: 'minimax-cn',\n displayName: 'MiniMax China',\n description: 'MiniMax China endpoint. Anthropic-compatible endpoint is preferred for agent/tool workflows.',\n docsUrl: 'https://platform.minimaxi.com/document',\n apiKeyUrl: 'https://platform.minimaxi.com/user-center/basic-information/interface-key',\n pricingUrl: 'https://platform.minimaxi.com/document/Price',\n envVars: ['MINIMAX_CN_API_KEY', 'MINIMAX_API_KEY'],\n api: 'anthropic-messages',\n authHeader: true,\n baseUrlPresets: [\n { id: 'cn-anthropic', label: 'China Anthropic-compatible', baseUrl: 'https://api.minimaxi.com/anthropic' },\n { id: 'cn-openai', label: 'China OpenAI-compatible', baseUrl: 'https://api.minimaxi.com/v1' },\n ],\n defaultBaseUrlPreset: 'cn-anthropic',\n defaultModel: 'MiniMax-M3',\n models: MINIMAX_MODELS,\n aliases: ['minimax cn', 'mini max cn', 'abab cn'],\n quirks: ['Switch API type to OpenAI-compatible if you select an /v1 endpoint.'],\n },\n] as const satisfies readonly DomesticProviderPreset[];\n\nconst PRESET_BY_ID = new Map<string, DomesticProviderPreset>(\n DOMESTIC_PROVIDER_PRESETS.map((preset) => [preset.id, preset]),\n);\n\nexport function getDomesticProviderPreset(id: string): DomesticProviderPreset | undefined {\n return PRESET_BY_ID.get(id);\n}\n\nexport function getDomesticProviderPresetIds(): string[] {\n return DOMESTIC_PROVIDER_PRESETS.map((preset) => preset.id);\n}\n\nexport function getDomesticProviderBaseUrl(preset: DomesticProviderPreset): string {\n return (\n preset.baseUrlPresets.find((entry) => entry.id === preset.defaultBaseUrlPreset)?.baseUrl ??\n preset.baseUrlPresets[0]?.baseUrl ??\n ''\n );\n}\n\nexport function providerConfigFromDomesticPreset(\n preset: DomesticProviderPreset,\n params: { apiKey?: string; baseUrl?: string; modelIds?: string[] } = {},\n): ProviderConfig {\n const ids = params.modelIds?.length ? params.modelIds : preset.models.map((model) => model.id);\n return {\n baseUrl: params.baseUrl ?? getDomesticProviderBaseUrl(preset),\n apiKey: params.apiKey,\n api: preset.api,\n ...(preset.authHeader === undefined ? {} : { authHeader: preset.authHeader }),\n ...(preset.headers ? { headers: preset.headers } : {}),\n models: ids.map((id) => {\n const model = preset.models.find((entry) => entry.id === id);\n return {\n id,\n name: model?.name ?? id,\n api: preset.api,\n ...(model?.contextWindow ? { contextWindow: model.contextWindow } : {}),\n ...(model?.maxTokens ? { maxTokens: model.maxTokens } : {}),\n ...(model?.reasoning ? { reasoning: model.reasoning } : {}),\n input: model?.input ?? ['text'],\n };\n }),\n };\n}\n"],"mappings":"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"}
|
|
@@ -44,12 +44,12 @@ var init_env_keys = __esmMin((() => {
|
|
|
44
44
|
huggingface: ["HF_TOKEN", "HUGGINGFACE_TOKEN"],
|
|
45
45
|
opencode: ["OPENCODE_API_KEY"],
|
|
46
46
|
"opencode-go": ["OPENCODE_API_KEY"],
|
|
47
|
-
zai: ["ZAI_API_KEY"],
|
|
47
|
+
zai: ["ZAI_API_KEY", "Z_AI_API_KEY"],
|
|
48
48
|
together: ["TOGETHER_API_KEY"],
|
|
49
49
|
xiaomi: ["XIAOMI_API_KEY"],
|
|
50
|
-
"xiaomi-token-plan-cn": ["XIAOMI_TOKEN_PLAN_CN_API_KEY"],
|
|
51
|
-
"xiaomi-token-plan-ams": ["XIAOMI_TOKEN_PLAN_AMS_API_KEY"],
|
|
52
|
-
"xiaomi-token-plan-sgp": ["XIAOMI_TOKEN_PLAN_SGP_API_KEY"],
|
|
50
|
+
"xiaomi-token-plan-cn": ["XIAOMI_TOKEN_PLAN_CN_API_KEY", "XIAOMI_TOKEN_PLAN_API_KEY"],
|
|
51
|
+
"xiaomi-token-plan-ams": ["XIAOMI_TOKEN_PLAN_AMS_API_KEY", "XIAOMI_TOKEN_PLAN_API_KEY"],
|
|
52
|
+
"xiaomi-token-plan-sgp": ["XIAOMI_TOKEN_PLAN_SGP_API_KEY", "XIAOMI_TOKEN_PLAN_API_KEY"],
|
|
53
53
|
"google-gemini-cli": ["GEMINI_CLI_TOKEN", "GOOGLE_TOKEN"],
|
|
54
54
|
"google-antigravity": ["ANTIGRAVITY_API_KEY"],
|
|
55
55
|
"vercel-ai-gateway": ["AI_GATEWAY_API_KEY", "VERCEL_AI_GATEWAY_API_KEY"],
|
|
@@ -60,7 +60,31 @@ var init_env_keys = __esmMin((() => {
|
|
|
60
60
|
"GITHUB_COPILOT_TOKEN"
|
|
61
61
|
],
|
|
62
62
|
/** DashScope HTTP APIs (image gen, STT, TTS) — not an LLM KnownProvider. */
|
|
63
|
-
dashscope: ["DASHSCOPE_API_KEY"]
|
|
63
|
+
dashscope: ["DASHSCOPE_API_KEY", "QWEN_API_KEY"],
|
|
64
|
+
"dashscope-cn": ["DASHSCOPE_API_KEY", "QWEN_API_KEY"],
|
|
65
|
+
"dashscope-intl": ["DASHSCOPE_API_KEY", "QWEN_API_KEY"],
|
|
66
|
+
"volcengine-ark": ["ARK_API_KEY", "VOLCENGINE_API_KEY"],
|
|
67
|
+
"volcengine-plan": ["ARK_API_KEY", "VOLCENGINE_API_KEY"],
|
|
68
|
+
"byteplus-plan": ["BYTEPLUS_API_KEY", "ARK_API_KEY"],
|
|
69
|
+
stepfun: ["STEPFUN_API_KEY"],
|
|
70
|
+
"stepfun-cn": ["STEPFUN_API_KEY"],
|
|
71
|
+
"stepfun-intl": ["STEPFUN_API_KEY"],
|
|
72
|
+
"stepfun-plan": ["STEPFUN_API_KEY"],
|
|
73
|
+
"stepfun-plan-cn": ["STEPFUN_API_KEY"],
|
|
74
|
+
"stepfun-plan-intl": ["STEPFUN_API_KEY"],
|
|
75
|
+
"ant-ling": ["ANT_LING_API_KEY", "LING_API_KEY"],
|
|
76
|
+
"zhipu-cn": ["ZHIPU_API_KEY", "BIGMODEL_API_KEY"],
|
|
77
|
+
"zai-coding-cn": [
|
|
78
|
+
"ZHIPU_API_KEY",
|
|
79
|
+
"BIGMODEL_API_KEY",
|
|
80
|
+
"ZAI_API_KEY"
|
|
81
|
+
],
|
|
82
|
+
"zai-coding-global": ["ZAI_API_KEY", "Z_AI_API_KEY"],
|
|
83
|
+
"zhipu-coding-cn": [
|
|
84
|
+
"ZHIPU_API_KEY",
|
|
85
|
+
"BIGMODEL_API_KEY",
|
|
86
|
+
"ZAI_API_KEY"
|
|
87
|
+
]
|
|
64
88
|
};
|
|
65
89
|
}));
|
|
66
90
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-keys.js","names":[],"sources":["../../../src/providers/env-keys.ts"],"sourcesContent":["/**\n * Provider → environment variable resolution (no credentials module dependency).\n * Keys align with pi-ai KnownProvider + @earendil-works/pi-ai getEnvApiKey where applicable.\n */\n\nexport const PROVIDER_ENV_MAP: Record<string, string[]> = {\n\topenai: ['OPENAI_API_KEY'],\n\tanthropic: ['ANTHROPIC_OAUTH_TOKEN', 'ANTHROPIC_API_KEY'],\n\tdeepseek: ['DEEPSEEK_API_KEY'],\n\tgoogle: ['GEMINI_API_KEY', 'GOOGLE_API_KEY'],\n\t'google-vertex': ['GOOGLE_CLOUD_API_KEY', 'GOOGLE_CLOUD_PROJECT', 'GOOGLE_CLOUD_LOCATION'],\n\tgroq: ['GROQ_API_KEY'],\n\txai: ['XAI_API_KEY'],\n\tcerebras: ['CEREBRAS_API_KEY'],\n\tmistral: ['MISTRAL_API_KEY'],\n\topenrouter: ['OPENROUTER_API_KEY'],\n\t'azure-openai-responses': ['AZURE_OPENAI_API_KEY', 'AZURE_OPENAI_BASE_URL'],\n\t'amazon-bedrock': ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION'],\n\t'cloudflare-ai-gateway': ['CLOUDFLARE_API_KEY'],\n\t'cloudflare-workers-ai': ['CLOUDFLARE_API_KEY'],\n\tfireworks: ['FIREWORKS_API_KEY'],\n\tminimax: ['MINIMAX_API_KEY'],\n\t'minimax-cn': ['MINIMAX_CN_API_KEY', 'MINIMAX_API_KEY'],\n\t'kimi-coding': ['KIMI_API_KEY', 'MOONSHOT_API_KEY'],\n\tmoonshotai: ['MOONSHOT_API_KEY'],\n\t'moonshotai-cn': ['MOONSHOT_API_KEY'],\n\thuggingface: ['HF_TOKEN', 'HUGGINGFACE_TOKEN'],\n\topencode: ['OPENCODE_API_KEY'],\n\t'opencode-go': ['OPENCODE_API_KEY'],\n\tzai: ['ZAI_API_KEY'],\n\ttogether: ['TOGETHER_API_KEY'],\n\txiaomi: ['XIAOMI_API_KEY'],\n\t'xiaomi-token-plan-cn': ['XIAOMI_TOKEN_PLAN_CN_API_KEY'],\n\t'xiaomi-token-plan-ams': ['XIAOMI_TOKEN_PLAN_AMS_API_KEY'],\n\t'xiaomi-token-plan-sgp': ['XIAOMI_TOKEN_PLAN_SGP_API_KEY'],\n\t'google-gemini-cli': ['GEMINI_CLI_TOKEN', 'GOOGLE_TOKEN'],\n\t'google-antigravity': ['ANTIGRAVITY_API_KEY'],\n\t'vercel-ai-gateway': ['AI_GATEWAY_API_KEY', 'VERCEL_AI_GATEWAY_API_KEY'],\n\t'github-copilot': ['COPILOT_GITHUB_TOKEN', 'GH_TOKEN', 'GITHUB_TOKEN', 'GITHUB_COPILOT_TOKEN'],\n\t/** DashScope HTTP APIs (image gen, STT, TTS) — not an LLM KnownProvider. */\n\tdashscope: ['DASHSCOPE_API_KEY'],\n};\n\n/**\n * Get API key from environment variables for a provider\n */\nexport function getApiKeyFromEnv(provider: string): string | undefined {\n\tconst envVar = provider.toUpperCase().replace(/-/g, '_') + '_API_KEY';\n\tconst envKey = process.env[envVar];\n\tif (envKey) return envKey;\n\n\tconst keys = PROVIDER_ENV_MAP[provider] || [];\n\tfor (const key of keys) {\n\t\tif (process.env[key]) return process.env[key];\n\t}\n\n\treturn undefined;\n}\n"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"env-keys.js","names":[],"sources":["../../../src/providers/env-keys.ts"],"sourcesContent":["/**\n * Provider → environment variable resolution (no credentials module dependency).\n * Keys align with pi-ai KnownProvider + @earendil-works/pi-ai getEnvApiKey where applicable.\n */\n\nexport const PROVIDER_ENV_MAP: Record<string, string[]> = {\n\topenai: ['OPENAI_API_KEY'],\n\tanthropic: ['ANTHROPIC_OAUTH_TOKEN', 'ANTHROPIC_API_KEY'],\n\tdeepseek: ['DEEPSEEK_API_KEY'],\n\tgoogle: ['GEMINI_API_KEY', 'GOOGLE_API_KEY'],\n\t'google-vertex': ['GOOGLE_CLOUD_API_KEY', 'GOOGLE_CLOUD_PROJECT', 'GOOGLE_CLOUD_LOCATION'],\n\tgroq: ['GROQ_API_KEY'],\n\txai: ['XAI_API_KEY'],\n\tcerebras: ['CEREBRAS_API_KEY'],\n\tmistral: ['MISTRAL_API_KEY'],\n\topenrouter: ['OPENROUTER_API_KEY'],\n\t'azure-openai-responses': ['AZURE_OPENAI_API_KEY', 'AZURE_OPENAI_BASE_URL'],\n\t'amazon-bedrock': ['AWS_ACCESS_KEY_ID', 'AWS_SECRET_ACCESS_KEY', 'AWS_REGION'],\n\t'cloudflare-ai-gateway': ['CLOUDFLARE_API_KEY'],\n\t'cloudflare-workers-ai': ['CLOUDFLARE_API_KEY'],\n\tfireworks: ['FIREWORKS_API_KEY'],\n\tminimax: ['MINIMAX_API_KEY'],\n\t'minimax-cn': ['MINIMAX_CN_API_KEY', 'MINIMAX_API_KEY'],\n\t'kimi-coding': ['KIMI_API_KEY', 'MOONSHOT_API_KEY'],\n\tmoonshotai: ['MOONSHOT_API_KEY'],\n\t'moonshotai-cn': ['MOONSHOT_API_KEY'],\n\thuggingface: ['HF_TOKEN', 'HUGGINGFACE_TOKEN'],\n\topencode: ['OPENCODE_API_KEY'],\n\t'opencode-go': ['OPENCODE_API_KEY'],\n\tzai: ['ZAI_API_KEY', 'Z_AI_API_KEY'],\n\ttogether: ['TOGETHER_API_KEY'],\n\txiaomi: ['XIAOMI_API_KEY'],\n\t'xiaomi-token-plan-cn': ['XIAOMI_TOKEN_PLAN_CN_API_KEY', 'XIAOMI_TOKEN_PLAN_API_KEY'],\n\t'xiaomi-token-plan-ams': ['XIAOMI_TOKEN_PLAN_AMS_API_KEY', 'XIAOMI_TOKEN_PLAN_API_KEY'],\n\t'xiaomi-token-plan-sgp': ['XIAOMI_TOKEN_PLAN_SGP_API_KEY', 'XIAOMI_TOKEN_PLAN_API_KEY'],\n\t'google-gemini-cli': ['GEMINI_CLI_TOKEN', 'GOOGLE_TOKEN'],\n\t'google-antigravity': ['ANTIGRAVITY_API_KEY'],\n\t'vercel-ai-gateway': ['AI_GATEWAY_API_KEY', 'VERCEL_AI_GATEWAY_API_KEY'],\n\t'github-copilot': ['COPILOT_GITHUB_TOKEN', 'GH_TOKEN', 'GITHUB_TOKEN', 'GITHUB_COPILOT_TOKEN'],\n\t/** DashScope HTTP APIs (image gen, STT, TTS) — not an LLM KnownProvider. */\n\tdashscope: ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'],\n\t'dashscope-cn': ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'],\n\t'dashscope-intl': ['DASHSCOPE_API_KEY', 'QWEN_API_KEY'],\n\t'volcengine-ark': ['ARK_API_KEY', 'VOLCENGINE_API_KEY'],\n\t'volcengine-plan': ['ARK_API_KEY', 'VOLCENGINE_API_KEY'],\n\t'byteplus-plan': ['BYTEPLUS_API_KEY', 'ARK_API_KEY'],\n\tstepfun: ['STEPFUN_API_KEY'],\n\t'stepfun-cn': ['STEPFUN_API_KEY'],\n\t'stepfun-intl': ['STEPFUN_API_KEY'],\n\t'stepfun-plan': ['STEPFUN_API_KEY'],\n\t'stepfun-plan-cn': ['STEPFUN_API_KEY'],\n\t'stepfun-plan-intl': ['STEPFUN_API_KEY'],\n\t'ant-ling': ['ANT_LING_API_KEY', 'LING_API_KEY'],\n\t'zhipu-cn': ['ZHIPU_API_KEY', 'BIGMODEL_API_KEY'],\n\t'zai-coding-cn': ['ZHIPU_API_KEY', 'BIGMODEL_API_KEY', 'ZAI_API_KEY'],\n\t'zai-coding-global': ['ZAI_API_KEY', 'Z_AI_API_KEY'],\n\t'zhipu-coding-cn': ['ZHIPU_API_KEY', 'BIGMODEL_API_KEY', 'ZAI_API_KEY'],\n};\n\n/**\n * Get API key from environment variables for a provider\n */\nexport function getApiKeyFromEnv(provider: string): string | undefined {\n\tconst envVar = provider.toUpperCase().replace(/-/g, '_') + '_API_KEY';\n\tconst envKey = process.env[envVar];\n\tif (envKey) return envKey;\n\n\tconst keys = PROVIDER_ENV_MAP[provider] || [];\n\tfor (const key of keys) {\n\t\tif (process.env[key]) return process.env[key];\n\t}\n\n\treturn undefined;\n}\n"],"mappings":";;;;;AA8DA,SAAgB,iBAAiB,UAAsC;CACtE,MAAM,SAAS,SAAS,aAAa,CAAC,QAAQ,MAAM,IAAI,GAAG;CAC3D,MAAM,SAAS,QAAQ,IAAI;AAC3B,KAAI,OAAQ,QAAO;CAEnB,MAAM,OAAO,iBAAiB,aAAa,EAAE;AAC7C,MAAK,MAAM,OAAO,KACjB,KAAI,QAAQ,IAAI,KAAM,QAAO,QAAQ,IAAI;;;;AAhE9B,oBAA6C;EACzD,QAAQ,CAAC,iBAAiB;EAC1B,WAAW,CAAC,yBAAyB,oBAAoB;EACzD,UAAU,CAAC,mBAAmB;EAC9B,QAAQ,CAAC,kBAAkB,iBAAiB;EAC5C,iBAAiB;GAAC;GAAwB;GAAwB;GAAwB;EAC1F,MAAM,CAAC,eAAe;EACtB,KAAK,CAAC,cAAc;EACpB,UAAU,CAAC,mBAAmB;EAC9B,SAAS,CAAC,kBAAkB;EAC5B,YAAY,CAAC,qBAAqB;EAClC,0BAA0B,CAAC,wBAAwB,wBAAwB;EAC3E,kBAAkB;GAAC;GAAqB;GAAyB;GAAa;EAC9E,yBAAyB,CAAC,qBAAqB;EAC/C,yBAAyB,CAAC,qBAAqB;EAC/C,WAAW,CAAC,oBAAoB;EAChC,SAAS,CAAC,kBAAkB;EAC5B,cAAc,CAAC,sBAAsB,kBAAkB;EACvD,eAAe,CAAC,gBAAgB,mBAAmB;EACnD,YAAY,CAAC,mBAAmB;EAChC,iBAAiB,CAAC,mBAAmB;EACrC,aAAa,CAAC,YAAY,oBAAoB;EAC9C,UAAU,CAAC,mBAAmB;EAC9B,eAAe,CAAC,mBAAmB;EACnC,KAAK,CAAC,eAAe,eAAe;EACpC,UAAU,CAAC,mBAAmB;EAC9B,QAAQ,CAAC,iBAAiB;EAC1B,wBAAwB,CAAC,gCAAgC,4BAA4B;EACrF,yBAAyB,CAAC,iCAAiC,4BAA4B;EACvF,yBAAyB,CAAC,iCAAiC,4BAA4B;EACvF,qBAAqB,CAAC,oBAAoB,eAAe;EACzD,sBAAsB,CAAC,sBAAsB;EAC7C,qBAAqB,CAAC,sBAAsB,4BAA4B;EACxE,kBAAkB;GAAC;GAAwB;GAAY;GAAgB;GAAuB;;EAE9F,WAAW,CAAC,qBAAqB,eAAe;EAChD,gBAAgB,CAAC,qBAAqB,eAAe;EACrD,kBAAkB,CAAC,qBAAqB,eAAe;EACvD,kBAAkB,CAAC,eAAe,qBAAqB;EACvD,mBAAmB,CAAC,eAAe,qBAAqB;EACxD,iBAAiB,CAAC,oBAAoB,cAAc;EACpD,SAAS,CAAC,kBAAkB;EAC5B,cAAc,CAAC,kBAAkB;EACjC,gBAAgB,CAAC,kBAAkB;EACnC,gBAAgB,CAAC,kBAAkB;EACnC,mBAAmB,CAAC,kBAAkB;EACtC,qBAAqB,CAAC,kBAAkB;EACxC,YAAY,CAAC,oBAAoB,eAAe;EAChD,YAAY,CAAC,iBAAiB,mBAAmB;EACjD,iBAAiB;GAAC;GAAiB;GAAoB;GAAc;EACrE,qBAAqB,CAAC,eAAe,eAAe;EACpD,mBAAmB;GAAC;GAAiB;GAAoB;GAAc;EACvE"}
|
|
@@ -2,7 +2,7 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { getProviderRegistry, init_plugin_registry } from "./plugin-registry.js";
|
|
4
4
|
import { init_providers } from "./index.js";
|
|
5
|
-
import { createAssistantMessageEventStream, streamSimple } from "@earendil-works/pi-ai";
|
|
5
|
+
import { createAssistantMessageEventStream, streamSimple } from "@earendil-works/pi-ai/compat";
|
|
6
6
|
//#region src/providers/extension-stream-bridge.ts
|
|
7
7
|
init_plugin_registry();
|
|
8
8
|
init_providers();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extension-stream-bridge.js","names":[],"sources":["../../../src/providers/extension-stream-bridge.ts"],"sourcesContent":["import {\n\tstreamSimple,\n\tcreateAssistantMessageEventStream,\n\ttype AssistantMessage,\n\ttype Model,\n\ttype Api,\n\ttype Context,\n\ttype SimpleStreamOptions,\n} from '@earendil-works/pi-ai';\nimport type { StreamFn } from '@earendil-works/pi-agent-core';\nimport type { ProviderStreamParams } from '../extensions/types/providers.js';\nimport { getProviderRegistry } from './plugin-registry.js';\nimport { EXTENSION_PROVIDER_BASE_URL } from './index.js';\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('ExtensionStreamBridge');\n\nfunction createPartialMessage(model: Model<Api>): AssistantMessage {\n\treturn {\n\t\trole: 'assistant',\n\t\tcontent: [],\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: 'stop',\n\t\ttimestamp: Date.now(),\n\t};\n}\n\nfunction parseToolArguments(raw: string | undefined): Record<string, unknown> {\n\tif (!raw?.trim()) return {};\n\ttry {\n\t\treturn JSON.parse(raw) as Record<string, unknown>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nfunction collectExtraStreamOptions(options?: SimpleStreamOptions): Record<string, unknown> | undefined {\n\tif (!options) return undefined;\n\tconst knownOptionKeys = new Set([\n\t\t'temperature',\n\t\t'maxTokens',\n\t\t'signal',\n\t\t'apiKey',\n\t\t'transport',\n\t\t'cacheRetention',\n\t\t'sessionId',\n\t\t'onPayload',\n\t\t'onResponse',\n\t\t'headers',\n\t\t'timeoutMs',\n\t\t'maxRetries',\n\t\t'maxRetryDelayMs',\n\t\t'metadata',\n\t\t'reasoning',\n\t\t'thinkingBudgets',\n\t]);\n\tconst entries = Object.entries(options as Record<string, unknown>).filter(([key, value]) => {\n\t\treturn !knownOptionKeys.has(key) && value !== undefined;\n\t});\n\treturn entries.length > 0 ? Object.fromEntries(entries) : undefined;\n}\n\n/** Wraps {@link streamSimple} so extension-registered models use the plugin `createStream()` path. */\nexport function createExtensionAwareStreamFn(): StreamFn {\n\treturn ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n\t\tif (model.baseUrl !== EXTENSION_PROVIDER_BASE_URL) {\n\t\t\treturn streamSimple(model, context, options);\n\t\t}\n\n\t\tconst plugin = getProviderRegistry().get(model.provider);\n\t\tif (!plugin) {\n\t\t\treturn streamSimple(model, context, options);\n\t\t}\n\n\t\tlog.info({ provider: model.provider, modelId: model.id }, 'Streaming via extension provider');\n\n\t\tconst stream = createAssistantMessageEventStream();\n\n\t\tconst params: ProviderStreamParams = {\n\t\t\tmodel: model.id,\n\t\t\tsystemPrompt: context.systemPrompt,\n\t\t\tmessages: context.messages as unknown as ProviderStreamParams['messages'],\n\t\t\ttools: context.tools as unknown as ProviderStreamParams['tools'],\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens,\n\t\t\tapiKey: options?.apiKey,\n\t\t\tsessionId: options?.sessionId,\n\t\t\treasoning: options?.reasoning,\n\t\t\theaders: options?.headers,\n\t\t\ttimeoutMs: options?.timeoutMs,\n\t\t\tmaxRetries: options?.maxRetries,\n\t\t\tmetadata: options?.metadata,\n\t\t\tcacheRetention: options?.cacheRetention,\n\t\t\ttransport: options?.transport,\n\t\t\tthinkingBudgets: options?.thinkingBudgets,\n\t\t\textra: collectExtraStreamOptions(options),\n\t\t\tsignal: options?.signal,\n\t\t};\n\n\t\tvoid (async () => {\n\t\t\tconst partial = createPartialMessage(model);\n\t\t\tlet textContentIndex = -1;\n\t\t\tlet hasStarted = false;\n\n\t\t\ttry {\n\t\t\t\tfor await (const chunk of plugin.createStream(params)) {\n\t\t\t\t\tif (options?.signal?.aborted) {\n\t\t\t\t\t\tpartial.stopReason = 'aborted';\n\t\t\t\t\t\tpartial.errorMessage = 'Request aborted';\n\t\t\t\t\t\tstream.push({ type: 'error', reason: 'aborted', error: partial });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\t\tcase 'text': {\n\t\t\t\t\t\t\tif (!hasStarted) {\n\t\t\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (textContentIndex === -1) {\n\t\t\t\t\t\t\t\ttextContentIndex = partial.content.length;\n\t\t\t\t\t\t\t\tpartial.content.push({ type: 'text', text: '' });\n\t\t\t\t\t\t\t\tstream.push({ type: 'text_start', contentIndex: textContentIndex, partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst textContent = partial.content[textContentIndex];\n\t\t\t\t\t\t\tif (textContent?.type === 'text' && chunk.text) {\n\t\t\t\t\t\t\t\ttextContent.text += chunk.text;\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: 'text_delta',\n\t\t\t\t\t\t\t\t\tcontentIndex: textContentIndex,\n\t\t\t\t\t\t\t\t\tdelta: chunk.text,\n\t\t\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'tool_call': {\n\t\t\t\t\t\t\tif (!hasStarted) {\n\t\t\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (textContentIndex !== -1) {\n\t\t\t\t\t\t\t\tconst tc = partial.content[textContentIndex];\n\t\t\t\t\t\t\t\tif (tc?.type === 'text') {\n\t\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\t\ttype: 'text_end',\n\t\t\t\t\t\t\t\t\t\tcontentIndex: textContentIndex,\n\t\t\t\t\t\t\t\t\t\tcontent: tc.text,\n\t\t\t\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttextContentIndex = -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (chunk.toolCall) {\n\t\t\t\t\t\t\t\tconst idx = partial.content.length;\n\t\t\t\t\t\t\t\tconst toolCall = {\n\t\t\t\t\t\t\t\t\ttype: 'toolCall' as const,\n\t\t\t\t\t\t\t\t\tid: chunk.toolCall.id,\n\t\t\t\t\t\t\t\t\tname: chunk.toolCall.name,\n\t\t\t\t\t\t\t\t\targuments: parseToolArguments(chunk.toolCall.arguments),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tpartial.content.push(toolCall);\n\t\t\t\t\t\t\t\tstream.push({ type: 'toolcall_start', contentIndex: idx, partial });\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: 'toolcall_delta',\n\t\t\t\t\t\t\t\t\tcontentIndex: idx,\n\t\t\t\t\t\t\t\t\tdelta: chunk.toolCall.arguments || '{}',\n\t\t\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tstream.push({ type: 'toolcall_end', contentIndex: idx, toolCall, partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'usage': {\n\t\t\t\t\t\t\tif (chunk.usage) {\n\t\t\t\t\t\t\t\tconst inputCost = (chunk.usage.input / 1_000_000) * (model.cost?.input ?? 0);\n\t\t\t\t\t\t\t\tconst outputCost = (chunk.usage.output / 1_000_000) * (model.cost?.output ?? 0);\n\t\t\t\t\t\t\t\tpartial.usage = {\n\t\t\t\t\t\t\t\t\tinput: chunk.usage.input,\n\t\t\t\t\t\t\t\t\toutput: chunk.usage.output,\n\t\t\t\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\t\t\t\ttotalTokens: chunk.usage.total ?? chunk.usage.input + chunk.usage.output,\n\t\t\t\t\t\t\t\t\tcost: {\n\t\t\t\t\t\t\t\t\t\tinput: inputCost,\n\t\t\t\t\t\t\t\t\t\toutput: outputCost,\n\t\t\t\t\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\t\t\t\t\ttotal: inputCost + outputCost,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'error': {\n\t\t\t\t\t\t\tif (!hasStarted) {\n\t\t\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpartial.stopReason = 'error';\n\t\t\t\t\t\t\tpartial.errorMessage = chunk.error ?? 'Unknown extension provider error';\n\t\t\t\t\t\t\tstream.push({ type: 'error', reason: 'error', error: partial });\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'done':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (textContentIndex !== -1) {\n\t\t\t\t\tconst tc = partial.content[textContentIndex];\n\t\t\t\t\tif (tc?.type === 'text') {\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: 'text_end',\n\t\t\t\t\t\t\tcontentIndex: textContentIndex,\n\t\t\t\t\t\t\tcontent: tc.text,\n\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!hasStarted) {\n\t\t\t\t\thasStarted = true;\n\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t}\n\n\t\t\t\tconst hasToolCalls = partial.content.some(c => c.type === 'toolCall');\n\t\t\t\tconst stopReason = hasToolCalls ? 'toolUse' : 'stop';\n\t\t\t\tpartial.stopReason = stopReason;\n\t\t\t\tstream.push({ type: 'done', reason: stopReason, message: partial });\n\t\t\t} catch (err) {\n\t\t\t\tif (!hasStarted) stream.push({ type: 'start', partial });\n\t\t\t\tpartial.stopReason = 'error';\n\t\t\t\tpartial.errorMessage = err instanceof Error ? err.message : String(err);\n\t\t\t\tstream.push({ type: 'error', reason: 'error', error: partial });\n\t\t\t}\n\t\t})();\n\n\t\treturn stream;\n\t}) as StreamFn;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"extension-stream-bridge.js","names":[],"sources":["../../../src/providers/extension-stream-bridge.ts"],"sourcesContent":["import {\n\tstreamSimple,\n\tcreateAssistantMessageEventStream,\n\ttype AssistantMessage,\n\ttype Model,\n\ttype Api,\n\ttype Context,\n\ttype SimpleStreamOptions,\n} from '@earendil-works/pi-ai/compat';\nimport type { StreamFn } from '@earendil-works/pi-agent-core';\nimport type { ProviderStreamParams } from '../extensions/types/providers.js';\nimport { getProviderRegistry } from './plugin-registry.js';\nimport { EXTENSION_PROVIDER_BASE_URL } from './index.js';\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('ExtensionStreamBridge');\n\nfunction createPartialMessage(model: Model<Api>): AssistantMessage {\n\treturn {\n\t\trole: 'assistant',\n\t\tcontent: [],\n\t\tapi: model.api,\n\t\tprovider: model.provider,\n\t\tmodel: model.id,\n\t\tusage: {\n\t\t\tinput: 0,\n\t\t\toutput: 0,\n\t\t\tcacheRead: 0,\n\t\t\tcacheWrite: 0,\n\t\t\ttotalTokens: 0,\n\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t},\n\t\tstopReason: 'stop',\n\t\ttimestamp: Date.now(),\n\t};\n}\n\nfunction parseToolArguments(raw: string | undefined): Record<string, unknown> {\n\tif (!raw?.trim()) return {};\n\ttry {\n\t\treturn JSON.parse(raw) as Record<string, unknown>;\n\t} catch {\n\t\treturn {};\n\t}\n}\n\nfunction collectExtraStreamOptions(options?: SimpleStreamOptions): Record<string, unknown> | undefined {\n\tif (!options) return undefined;\n\tconst knownOptionKeys = new Set([\n\t\t'temperature',\n\t\t'maxTokens',\n\t\t'signal',\n\t\t'apiKey',\n\t\t'transport',\n\t\t'cacheRetention',\n\t\t'sessionId',\n\t\t'onPayload',\n\t\t'onResponse',\n\t\t'headers',\n\t\t'timeoutMs',\n\t\t'maxRetries',\n\t\t'maxRetryDelayMs',\n\t\t'metadata',\n\t\t'reasoning',\n\t\t'thinkingBudgets',\n\t]);\n\tconst entries = Object.entries(options as Record<string, unknown>).filter(([key, value]) => {\n\t\treturn !knownOptionKeys.has(key) && value !== undefined;\n\t});\n\treturn entries.length > 0 ? Object.fromEntries(entries) : undefined;\n}\n\n/** Wraps {@link streamSimple} so extension-registered models use the plugin `createStream()` path. */\nexport function createExtensionAwareStreamFn(): StreamFn {\n\treturn ((model: Model<Api>, context: Context, options?: SimpleStreamOptions) => {\n\t\tif (model.baseUrl !== EXTENSION_PROVIDER_BASE_URL) {\n\t\t\treturn streamSimple(model, context, options);\n\t\t}\n\n\t\tconst plugin = getProviderRegistry().get(model.provider);\n\t\tif (!plugin) {\n\t\t\treturn streamSimple(model, context, options);\n\t\t}\n\n\t\tlog.info({ provider: model.provider, modelId: model.id }, 'Streaming via extension provider');\n\n\t\tconst stream = createAssistantMessageEventStream();\n\n\t\tconst params: ProviderStreamParams = {\n\t\t\tmodel: model.id,\n\t\t\tsystemPrompt: context.systemPrompt,\n\t\t\tmessages: context.messages as unknown as ProviderStreamParams['messages'],\n\t\t\ttools: context.tools as unknown as ProviderStreamParams['tools'],\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens,\n\t\t\tapiKey: options?.apiKey,\n\t\t\tsessionId: options?.sessionId,\n\t\t\treasoning: options?.reasoning,\n\t\t\theaders: options?.headers,\n\t\t\ttimeoutMs: options?.timeoutMs,\n\t\t\tmaxRetries: options?.maxRetries,\n\t\t\tmetadata: options?.metadata,\n\t\t\tcacheRetention: options?.cacheRetention,\n\t\t\ttransport: options?.transport,\n\t\t\tthinkingBudgets: options?.thinkingBudgets,\n\t\t\textra: collectExtraStreamOptions(options),\n\t\t\tsignal: options?.signal,\n\t\t};\n\n\t\tvoid (async () => {\n\t\t\tconst partial = createPartialMessage(model);\n\t\t\tlet textContentIndex = -1;\n\t\t\tlet hasStarted = false;\n\n\t\t\ttry {\n\t\t\t\tfor await (const chunk of plugin.createStream(params)) {\n\t\t\t\t\tif (options?.signal?.aborted) {\n\t\t\t\t\t\tpartial.stopReason = 'aborted';\n\t\t\t\t\t\tpartial.errorMessage = 'Request aborted';\n\t\t\t\t\t\tstream.push({ type: 'error', reason: 'aborted', error: partial });\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tswitch (chunk.type) {\n\t\t\t\t\t\tcase 'text': {\n\t\t\t\t\t\t\tif (!hasStarted) {\n\t\t\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (textContentIndex === -1) {\n\t\t\t\t\t\t\t\ttextContentIndex = partial.content.length;\n\t\t\t\t\t\t\t\tpartial.content.push({ type: 'text', text: '' });\n\t\t\t\t\t\t\t\tstream.push({ type: 'text_start', contentIndex: textContentIndex, partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst textContent = partial.content[textContentIndex];\n\t\t\t\t\t\t\tif (textContent?.type === 'text' && chunk.text) {\n\t\t\t\t\t\t\t\ttextContent.text += chunk.text;\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: 'text_delta',\n\t\t\t\t\t\t\t\t\tcontentIndex: textContentIndex,\n\t\t\t\t\t\t\t\t\tdelta: chunk.text,\n\t\t\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'tool_call': {\n\t\t\t\t\t\t\tif (!hasStarted) {\n\t\t\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (textContentIndex !== -1) {\n\t\t\t\t\t\t\t\tconst tc = partial.content[textContentIndex];\n\t\t\t\t\t\t\t\tif (tc?.type === 'text') {\n\t\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\t\ttype: 'text_end',\n\t\t\t\t\t\t\t\t\t\tcontentIndex: textContentIndex,\n\t\t\t\t\t\t\t\t\t\tcontent: tc.text,\n\t\t\t\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttextContentIndex = -1;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (chunk.toolCall) {\n\t\t\t\t\t\t\t\tconst idx = partial.content.length;\n\t\t\t\t\t\t\t\tconst toolCall = {\n\t\t\t\t\t\t\t\t\ttype: 'toolCall' as const,\n\t\t\t\t\t\t\t\t\tid: chunk.toolCall.id,\n\t\t\t\t\t\t\t\t\tname: chunk.toolCall.name,\n\t\t\t\t\t\t\t\t\targuments: parseToolArguments(chunk.toolCall.arguments),\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tpartial.content.push(toolCall);\n\t\t\t\t\t\t\t\tstream.push({ type: 'toolcall_start', contentIndex: idx, partial });\n\t\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\t\ttype: 'toolcall_delta',\n\t\t\t\t\t\t\t\t\tcontentIndex: idx,\n\t\t\t\t\t\t\t\t\tdelta: chunk.toolCall.arguments || '{}',\n\t\t\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tstream.push({ type: 'toolcall_end', contentIndex: idx, toolCall, partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'usage': {\n\t\t\t\t\t\t\tif (chunk.usage) {\n\t\t\t\t\t\t\t\tconst inputCost = (chunk.usage.input / 1_000_000) * (model.cost?.input ?? 0);\n\t\t\t\t\t\t\t\tconst outputCost = (chunk.usage.output / 1_000_000) * (model.cost?.output ?? 0);\n\t\t\t\t\t\t\t\tpartial.usage = {\n\t\t\t\t\t\t\t\t\tinput: chunk.usage.input,\n\t\t\t\t\t\t\t\t\toutput: chunk.usage.output,\n\t\t\t\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\t\t\t\ttotalTokens: chunk.usage.total ?? chunk.usage.input + chunk.usage.output,\n\t\t\t\t\t\t\t\t\tcost: {\n\t\t\t\t\t\t\t\t\t\tinput: inputCost,\n\t\t\t\t\t\t\t\t\t\toutput: outputCost,\n\t\t\t\t\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\t\t\t\t\ttotal: inputCost + outputCost,\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'error': {\n\t\t\t\t\t\t\tif (!hasStarted) {\n\t\t\t\t\t\t\t\thasStarted = true;\n\t\t\t\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tpartial.stopReason = 'error';\n\t\t\t\t\t\t\tpartial.errorMessage = chunk.error ?? 'Unknown extension provider error';\n\t\t\t\t\t\t\tstream.push({ type: 'error', reason: 'error', error: partial });\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'done':\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (textContentIndex !== -1) {\n\t\t\t\t\tconst tc = partial.content[textContentIndex];\n\t\t\t\t\tif (tc?.type === 'text') {\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: 'text_end',\n\t\t\t\t\t\t\tcontentIndex: textContentIndex,\n\t\t\t\t\t\t\tcontent: tc.text,\n\t\t\t\t\t\t\tpartial,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!hasStarted) {\n\t\t\t\t\thasStarted = true;\n\t\t\t\t\tstream.push({ type: 'start', partial });\n\t\t\t\t}\n\n\t\t\t\tconst hasToolCalls = partial.content.some(c => c.type === 'toolCall');\n\t\t\t\tconst stopReason = hasToolCalls ? 'toolUse' : 'stop';\n\t\t\t\tpartial.stopReason = stopReason;\n\t\t\t\tstream.push({ type: 'done', reason: stopReason, message: partial });\n\t\t\t} catch (err) {\n\t\t\t\tif (!hasStarted) stream.push({ type: 'start', partial });\n\t\t\t\tpartial.stopReason = 'error';\n\t\t\t\tpartial.errorMessage = err instanceof Error ? err.message : String(err);\n\t\t\t\tstream.push({ type: 'error', reason: 'error', error: partial });\n\t\t\t}\n\t\t})();\n\n\t\treturn stream;\n\t}) as StreamFn;\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Model provider module - integrates built-in models with custom models from models.json
|
|
3
3
|
*/
|
|
4
|
-
import { type Model, type Api } from '@earendil-works/pi-ai';
|
|
4
|
+
import { type Model, type Api } from '@earendil-works/pi-ai/compat';
|
|
5
5
|
import { type Config } from '../config/schema.js';
|
|
6
6
|
import type { ProviderModelDefinition } from '../extensions/types/providers.js';
|
|
7
7
|
export { getApiKeyFromEnv, PROVIDER_ENV_MAP } from './env-keys.js';
|
|
@@ -45,7 +45,7 @@ export declare function getConfiguredProviders(): Promise<string[]>;
|
|
|
45
45
|
export declare function getAllModels(): readonly Model<Api>[];
|
|
46
46
|
export declare function getAvailableModels(): Promise<readonly Model<Api>[]>;
|
|
47
47
|
export type { Model, Api } from '@earendil-works/pi-ai';
|
|
48
|
-
export type ProviderCategory = 'common' | 'specialty' | 'oauth' | 'enterprise' | 'extension';
|
|
48
|
+
export type ProviderCategory = 'common' | 'domestic' | 'specialty' | 'oauth' | 'enterprise' | 'extension';
|
|
49
49
|
export interface ProviderMeta {
|
|
50
50
|
name: string;
|
|
51
51
|
category: ProviderCategory;
|
|
@@ -61,15 +61,15 @@ export declare function providerSupportsApiKey(provider: string): boolean;
|
|
|
61
61
|
* Get a default model reference.
|
|
62
62
|
* Priority:
|
|
63
63
|
* 1. Effective model inherited from the global default preset / agent presets / agent override
|
|
64
|
-
* 2. Empty string when
|
|
64
|
+
* 2. Empty string only when no default model is present in the loaded config
|
|
65
65
|
*/
|
|
66
66
|
export declare function getDefaultModel(config?: Config | null | undefined): Promise<string>;
|
|
67
67
|
/**
|
|
68
68
|
* Synchronous default model resolution for constructors and sync code paths.
|
|
69
69
|
* Uses catalog/registry only (no async credential checks).
|
|
70
70
|
*
|
|
71
|
-
* When no model is
|
|
72
|
-
* flows can prompt for the global default model.
|
|
71
|
+
* When no model is present in the loaded config, returns an empty string so
|
|
72
|
+
* setup flows can prompt for the global default model.
|
|
73
73
|
*/
|
|
74
74
|
export declare function getDefaultModelSync(config?: Config | null | undefined): string;
|
|
75
75
|
export { ModelRegistry, getModelRegistry, resetModelRegistry, prewarmModelRegistry } from './model-registry.js';
|
|
@@ -5,7 +5,7 @@ import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "./env-keys.js
|
|
|
5
5
|
import { ModelRegistry, getModelRegistry, init_model_registry, prewarmModelRegistry, resetModelRegistry } from "./model-registry.js";
|
|
6
6
|
import { CredentialResolver, hasCredentials, init_credentials, resolveApiKey } from "../auth/credentials.js";
|
|
7
7
|
import { getProviderRegistry, init_plugin_registry } from "./plugin-registry.js";
|
|
8
|
-
import { getModel, getModels, getProviders } from "@earendil-works/pi-ai";
|
|
8
|
+
import { getModel, getModels, getProviders } from "@earendil-works/pi-ai/compat";
|
|
9
9
|
//#region src/providers/index.ts
|
|
10
10
|
/**
|
|
11
11
|
* Model provider module - integrates built-in models with custom models from models.json
|
|
@@ -238,10 +238,11 @@ function getSortedProviders() {
|
|
|
238
238
|
const all = getAllProviders();
|
|
239
239
|
const catOrder = {
|
|
240
240
|
common: 0,
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
241
|
+
domestic: 1,
|
|
242
|
+
specialty: 2,
|
|
243
|
+
enterprise: 3,
|
|
244
|
+
oauth: 4,
|
|
245
|
+
extension: 5
|
|
245
246
|
};
|
|
246
247
|
const pluginRegistry = getProviderRegistry();
|
|
247
248
|
return [...all].sort((a, b) => {
|
|
@@ -266,7 +267,7 @@ function providerSupportsApiKey(provider) {
|
|
|
266
267
|
* Get a default model reference.
|
|
267
268
|
* Priority:
|
|
268
269
|
* 1. Effective model inherited from the global default preset / agent presets / agent override
|
|
269
|
-
* 2. Empty string when
|
|
270
|
+
* 2. Empty string only when no default model is present in the loaded config
|
|
270
271
|
*/
|
|
271
272
|
async function getDefaultModel(config) {
|
|
272
273
|
const modelRef = config ? getAgentDefaultModelRef(config) : void 0;
|
|
@@ -281,8 +282,8 @@ async function getDefaultModel(config) {
|
|
|
281
282
|
* Synchronous default model resolution for constructors and sync code paths.
|
|
282
283
|
* Uses catalog/registry only (no async credential checks).
|
|
283
284
|
*
|
|
284
|
-
* When no model is
|
|
285
|
-
* flows can prompt for the global default model.
|
|
285
|
+
* When no model is present in the loaded config, returns an empty string so
|
|
286
|
+
* setup flows can prompt for the global default model.
|
|
286
287
|
*/
|
|
287
288
|
function getDefaultModelSync(config) {
|
|
288
289
|
const modelRef = config ? getAgentDefaultModelRef(config) : void 0;
|
|
@@ -313,7 +314,7 @@ var init_providers = __esmMin((() => {
|
|
|
313
314
|
},
|
|
314
315
|
"deepseek": {
|
|
315
316
|
name: "DeepSeek",
|
|
316
|
-
category: "
|
|
317
|
+
category: "domestic",
|
|
317
318
|
supportsApiKey: true
|
|
318
319
|
},
|
|
319
320
|
"google": {
|
|
@@ -328,19 +329,19 @@ var init_providers = __esmMin((() => {
|
|
|
328
329
|
},
|
|
329
330
|
"minimax": {
|
|
330
331
|
name: "MiniMax",
|
|
331
|
-
category: "
|
|
332
|
+
category: "domestic",
|
|
332
333
|
supportsApiKey: true,
|
|
333
334
|
supportsOAuth: true
|
|
334
335
|
},
|
|
335
336
|
"minimax-cn": {
|
|
336
337
|
name: "MiniMax CN",
|
|
337
|
-
category: "
|
|
338
|
+
category: "domestic",
|
|
338
339
|
supportsApiKey: true,
|
|
339
340
|
supportsOAuth: true
|
|
340
341
|
},
|
|
341
342
|
"kimi-coding": {
|
|
342
343
|
name: "Kimi For Coding",
|
|
343
|
-
category: "
|
|
344
|
+
category: "domestic",
|
|
344
345
|
supportsApiKey: true,
|
|
345
346
|
supportsOAuth: true
|
|
346
347
|
},
|
|
@@ -371,12 +372,12 @@ var init_providers = __esmMin((() => {
|
|
|
371
372
|
},
|
|
372
373
|
moonshotai: {
|
|
373
374
|
name: "Moonshot AI (Kimi · International)",
|
|
374
|
-
category: "
|
|
375
|
+
category: "domestic",
|
|
375
376
|
supportsApiKey: true
|
|
376
377
|
},
|
|
377
378
|
"moonshotai-cn": {
|
|
378
379
|
name: "Moonshot AI (Kimi · China)",
|
|
379
|
-
category: "
|
|
380
|
+
category: "domestic",
|
|
380
381
|
supportsApiKey: true
|
|
381
382
|
},
|
|
382
383
|
fireworks: {
|
|
@@ -401,22 +402,22 @@ var init_providers = __esmMin((() => {
|
|
|
401
402
|
},
|
|
402
403
|
xiaomi: {
|
|
403
404
|
name: "Xiaomi Mimo",
|
|
404
|
-
category: "
|
|
405
|
+
category: "domestic",
|
|
405
406
|
supportsApiKey: true
|
|
406
407
|
},
|
|
407
408
|
"xiaomi-token-plan-cn": {
|
|
408
409
|
name: "Xiaomi Token Plan (CN)",
|
|
409
|
-
category: "
|
|
410
|
+
category: "domestic",
|
|
410
411
|
supportsApiKey: true
|
|
411
412
|
},
|
|
412
413
|
"xiaomi-token-plan-ams": {
|
|
413
414
|
name: "Xiaomi Token Plan (AMS)",
|
|
414
|
-
category: "
|
|
415
|
+
category: "domestic",
|
|
415
416
|
supportsApiKey: true
|
|
416
417
|
},
|
|
417
418
|
"xiaomi-token-plan-sgp": {
|
|
418
419
|
name: "Xiaomi Token Plan (SGP)",
|
|
419
|
-
category: "
|
|
420
|
+
category: "domestic",
|
|
420
421
|
supportsApiKey: true
|
|
421
422
|
},
|
|
422
423
|
"opencode": {
|
|
@@ -429,16 +430,95 @@ var init_providers = __esmMin((() => {
|
|
|
429
430
|
category: "specialty",
|
|
430
431
|
supportsApiKey: true
|
|
431
432
|
},
|
|
432
|
-
/** DashScope (Alibaba) — image, speech, STT; not an LLM KnownProvider. */
|
|
433
433
|
"dashscope": {
|
|
434
434
|
name: "DashScope (Alibaba)",
|
|
435
|
-
category: "
|
|
435
|
+
category: "domestic",
|
|
436
|
+
supportsApiKey: true
|
|
437
|
+
},
|
|
438
|
+
"dashscope-cn": {
|
|
439
|
+
name: "Alibaba Bailian / DashScope China",
|
|
440
|
+
category: "domestic",
|
|
441
|
+
supportsApiKey: true
|
|
442
|
+
},
|
|
443
|
+
"dashscope-intl": {
|
|
444
|
+
name: "Alibaba Bailian / DashScope International",
|
|
445
|
+
category: "domestic",
|
|
446
|
+
supportsApiKey: true
|
|
447
|
+
},
|
|
448
|
+
"volcengine-ark": {
|
|
449
|
+
name: "Volcengine Ark",
|
|
450
|
+
category: "domestic",
|
|
451
|
+
supportsApiKey: true
|
|
452
|
+
},
|
|
453
|
+
"volcengine-plan": {
|
|
454
|
+
name: "Volcengine Doubao Coding Plan",
|
|
455
|
+
category: "domestic",
|
|
456
|
+
supportsApiKey: true
|
|
457
|
+
},
|
|
458
|
+
"byteplus-plan": {
|
|
459
|
+
name: "BytePlus Doubao Coding Plan",
|
|
460
|
+
category: "domestic",
|
|
461
|
+
supportsApiKey: true
|
|
462
|
+
},
|
|
463
|
+
"stepfun": {
|
|
464
|
+
name: "StepFun",
|
|
465
|
+
category: "domestic",
|
|
466
|
+
supportsApiKey: true
|
|
467
|
+
},
|
|
468
|
+
"stepfun-cn": {
|
|
469
|
+
name: "StepFun China",
|
|
470
|
+
category: "domestic",
|
|
471
|
+
supportsApiKey: true
|
|
472
|
+
},
|
|
473
|
+
"stepfun-intl": {
|
|
474
|
+
name: "StepFun International",
|
|
475
|
+
category: "domestic",
|
|
476
|
+
supportsApiKey: true
|
|
477
|
+
},
|
|
478
|
+
"stepfun-plan": {
|
|
479
|
+
name: "StepFun Step Plan",
|
|
480
|
+
category: "domestic",
|
|
481
|
+
supportsApiKey: true
|
|
482
|
+
},
|
|
483
|
+
"stepfun-plan-cn": {
|
|
484
|
+
name: "StepFun Step Plan China",
|
|
485
|
+
category: "domestic",
|
|
486
|
+
supportsApiKey: true
|
|
487
|
+
},
|
|
488
|
+
"stepfun-plan-intl": {
|
|
489
|
+
name: "StepFun Step Plan International",
|
|
490
|
+
category: "domestic",
|
|
491
|
+
supportsApiKey: true
|
|
492
|
+
},
|
|
493
|
+
"ant-ling": {
|
|
494
|
+
name: "Ant Ling",
|
|
495
|
+
category: "domestic",
|
|
496
|
+
supportsApiKey: true
|
|
497
|
+
},
|
|
498
|
+
"zhipu-cn": {
|
|
499
|
+
name: "Zhipu GLM (China)",
|
|
500
|
+
category: "domestic",
|
|
501
|
+
supportsApiKey: true
|
|
502
|
+
},
|
|
503
|
+
"zai-coding-cn": {
|
|
504
|
+
name: "Zhipu GLM Coding Plan (China)",
|
|
505
|
+
category: "domestic",
|
|
506
|
+
supportsApiKey: true
|
|
507
|
+
},
|
|
508
|
+
"zai-coding-global": {
|
|
509
|
+
name: "Zhipu GLM Coding Plan (International)",
|
|
510
|
+
category: "domestic",
|
|
511
|
+
supportsApiKey: true
|
|
512
|
+
},
|
|
513
|
+
"zhipu-coding-cn": {
|
|
514
|
+
name: "Zhipu GLM Coding Plan (China)",
|
|
515
|
+
category: "domestic",
|
|
436
516
|
supportsApiKey: true
|
|
437
517
|
},
|
|
438
518
|
/** International GLM (api.z.ai). Auth: API key (ZAI_API_KEY); no published OAuth for this HTTP API. */
|
|
439
519
|
"zai": {
|
|
440
520
|
name: "Zhipu GLM (International · z.ai)",
|
|
441
|
-
category: "
|
|
521
|
+
category: "domestic",
|
|
442
522
|
supportsApiKey: true
|
|
443
523
|
},
|
|
444
524
|
"amazon-bedrock": {
|