@fased/fased 0.1.53 → 0.1.55
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/agents/authenticated-model-catalog.js +27 -0
- package/dist/agents/current-model-catalog.js +30 -10
- package/dist/agents/model-catalog-normalized.js +1 -0
- package/dist/agents/model-catalog-source.js +4 -4
- package/dist/agents/model-forward-compat.js +19 -1
- package/dist/agents/model-metadata.js +37 -8
- package/dist/agents/pi-embedded-runner/agent-messages.js +15 -0
- package/dist/agents/pi-embedded-runner/compact.js +2 -1
- package/dist/agents/pi-embedded-runner/extra-params.js +25 -0
- package/dist/agents/pi-embedded-runner/model.js +2 -7
- package/dist/agents/pi-embedded-runner/run/attempt.js +4 -5
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/brand.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/cli/program/register.agent.js +17 -0
- package/dist/cli/providers-cli.js +3 -2
- package/dist/commands/agents.commands.models.js +63 -0
- package/dist/commands/agents.js +1 -0
- package/dist/commands/auth-choice.apply.api-providers.js +3 -8
- package/dist/commands/auth-choice.apply.openai.js +13 -7
- package/dist/commands/auth-choice.model-check.js +1 -2
- package/dist/commands/configure.gateway-auth.js +14 -16
- package/dist/commands/model-picker.js +25 -7
- package/dist/commands/models/list.registry.js +13 -18
- package/dist/commands/onboard-auth.config-core.js +1 -1
- package/dist/commands/onboard-auth.config-litellm.js +21 -21
- package/dist/commands/onboard-auth.credentials.js +0 -1
- package/dist/commands/onboard-auth.js +0 -1
- package/dist/commands/openai-codex-model-default.js +26 -4
- package/dist/config/defaults.js +1 -1
- package/dist/config/zod-schema.agent-defaults.js +4 -2
- package/dist/config/zod-schema.agent-runtime.js +4 -2
- package/dist/config/zod-schema.core.js +4 -2
- package/dist/control-ui/assets/{app-WIDYwhr-.js → app-D2RaTXoV.js} +1788 -1755
- package/dist/control-ui/assets/chat-model-ref-BZFblCeY.js +2 -0
- package/dist/control-ui/assets/{index-K3ysLeTN.js → index-D2nC6I-9.js} +3 -3
- package/dist/control-ui/assets/{providers-rQMhp1fb.js → providers-CyjiG5Jw.js} +4 -4
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/version.json +1 -0
- package/dist/cron/isolated-agent/run.js +9 -3
- package/dist/cron/normalize.js +10 -0
- package/dist/gateway/control-ui.js +2 -0
- package/dist/gateway/protocol/schema/agents-models-skills.js +6 -2
- package/dist/gateway/protocol/schema/cron.js +7 -0
- package/dist/gateway/server-methods/models.js +8 -9
- package/dist/gateway/server-model-catalog.js +3 -0
- package/dist/infra/update-runner.js +31 -3
- package/dist/light-update-status.js +10 -10
- package/dist/memory/inventory.js +19 -2
- package/dist/plugin-sdk/{accounts-BZrfqJmO.js → accounts-CeRNo5Ae.js} +1 -1
- package/dist/plugin-sdk/{actions-7_zTh8zC.js → actions-OMRHtXPj.js} +2 -2
- package/dist/plugin-sdk/{active-listener-D8NVRD8J.js → active-listener-BlIkS3iR.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-BrVWUkoP.js → audio-preflight-B2n3a2Tj.js} +26 -26
- package/dist/plugin-sdk/{audit-2iRlVyQF.js → audit-Ppg6dR_b.js} +1 -1
- package/dist/plugin-sdk/{channel-access-BCf1rJsn.js → channel-access-af8dWWRv.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-B-Z51Qsd.js → channel-access-configure-B6IAGlE0.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
- package/dist/plugin-sdk/channel-plugin-common.js +4 -4
- package/dist/plugin-sdk/{chunk-BREC9ijl.js → chunk-CD76Byie.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-BLRCltGL.js → chunk-items-Bu19zrYH.js} +1 -1
- package/dist/plugin-sdk/command-status.d.ts +2 -2
- package/dist/plugin-sdk/command-status.js +26 -26
- package/dist/plugin-sdk/{commands-registry-D3-bFLsz.js → commands-registry-DgS55tNj.js} +2 -2
- package/dist/plugin-sdk/{common-BlqMqEqn.js → common-CWvfeiX0.js} +1 -1
- package/dist/plugin-sdk/{config-442EDe7Z.js → config-CYDETqcF.js} +130 -134
- package/dist/plugin-sdk/{config-schema-DV0zctd2.js → config-schema-CQ4EVcQG.js} +164 -78
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +5 -5
- package/dist/plugin-sdk/discord.js +19 -19
- package/dist/plugin-sdk/{group-mentions-DLOOve8d.d.ts → group-mentions-BxDgHCgj.d.ts} +1 -1
- package/dist/plugin-sdk/{handle-action-pNaP87Dr.js → handle-action-B75UVKxF.js} +13 -13
- package/dist/plugin-sdk/{helpers-B994qqVW.js → helpers-BuEwju6y.js} +1 -1
- package/dist/plugin-sdk/{image-ops-Doq8nZQw.js → image-ops-C66HPeAZ.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +8 -8
- package/dist/plugin-sdk/index.js +28 -28
- package/dist/plugin-sdk/{login-CK2zTIJA.js → login-Amr2DpKU.js} +3 -3
- package/dist/plugin-sdk/{login-qr-u8Mn1mCp.js → login-qr-DMQNEi9m.js} +3 -3
- package/dist/plugin-sdk/{manager-CeJNf2bH.js → manager-Bvpq49BI.js} +2 -2
- package/dist/plugin-sdk/{markdown-tables-DeZztrY6.js → markdown-tables-DmQ7oXOm.js} +1 -1
- package/dist/plugin-sdk/{media-CgUAEfhs.js → media-ByLQbEwJ.js} +2 -2
- package/dist/plugin-sdk/{monitor-CEtMJuFX.js → monitor-K_u6daGa.js} +30 -30
- package/dist/plugin-sdk/{monitor-D-APtCpn.js → monitor-S_7LrvSj.js} +31 -31
- package/dist/plugin-sdk/{openresponses-http-g1Iz0xB2.js → openresponses-http-BrDJUZXR.js} +26 -26
- package/dist/plugin-sdk/{optional-runtime-dependency-D0BdXz1C.js → optional-runtime-dependency-CbYjAC2b.js} +1 -1
- package/dist/plugin-sdk/{outbound-DXGuFrdx.js → outbound-BuDafBBI.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-oxhGO33g.js → outbound-attachment-DmZmUqFP.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-D3WPVg_j.d.ts → pairing-message-D0-UWGFJ.d.ts} +2 -2
- package/dist/plugin-sdk/{pairing-message-C29ixrvn.js → pairing-message-e4D4eBDA.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-1kcsOWRs.js → pairing-store-T3IGoGZg.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-l-xqaEd0.js → pi-model-discovery-DvAG_Png.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-CibV8F8G.js → pi-model-discovery-runtime-NjkUgjIf.js} +2 -2
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
- package/dist/plugin-sdk/{pw-ai-9qEBW5-k.js → pw-ai-D7eW43DL.js} +3 -3
- package/dist/plugin-sdk/{replies-BX3L8fX7.js → replies-BMIPmEoP.js} +2 -2
- package/dist/plugin-sdk/{resolve-outbound-target-D0AK10E7.js → resolve-outbound-target-CXCqUUPV.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-UO6XLYH3.js → resolve-route-DJN-SUSt.js} +1 -1
- package/dist/plugin-sdk/{retry-policy-C5N8JiHL.js → retry-policy-CY1qY6d7.js} +1 -1
- package/dist/plugin-sdk/{runtime-Dnzwux3G.js → runtime-CgOkQe0w.js} +3 -3
- package/dist/plugin-sdk/{runtime-dependency-BDDpVKBO.js → runtime-dependency-DvdRNMvs.js} +2 -2
- package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
- package/dist/plugin-sdk/sat-runtime.js +5 -5
- package/dist/plugin-sdk/{send-bcKv8F5E.js → send-2ITqny2W.js} +8 -8
- package/dist/plugin-sdk/{send-DGEgo_6f.js → send-BAz22RZr.js} +5 -5
- package/dist/plugin-sdk/{send-DcsYRH2f.js → send-BG3RWyil.js} +7 -7
- package/dist/plugin-sdk/{send-D5rgCP1r.js → send-Cr-dj6S-.js} +6 -6
- package/dist/plugin-sdk/{send-B4XLsTL0.js → send-eTxqFFsw.js} +6 -6
- package/dist/plugin-sdk/{session-BoGNOlwv.js → session-C8nJmmVE.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-Be8s4TGQ.js → skill-commands-Rm5by9S8.js} +2 -2
- package/dist/plugin-sdk/{slack-actions-TNnAXiUx.js → slack-actions-BNIALJTA.js} +11 -11
- package/dist/plugin-sdk/{slack-74qForpW.js → slack-xvIVvyEM.js} +38 -38
- package/dist/plugin-sdk/slack.d.ts +5 -5
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-CrYayLff.js → sticker-cache-D3oDiu2u.js} +3 -3
- package/dist/plugin-sdk/{tables-Ch4js2qy.js → tables-DS5L7lCA.js} +1 -1
- package/dist/plugin-sdk/{targets-BGfRUJPE.js → targets-D6lUomJc.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-BGy4AEvF.js → telegram-actions-MSFkDn0m.js} +29 -29
- package/dist/plugin-sdk/telegram.d.ts +5 -5
- package/dist/plugin-sdk/telegram.js +8 -8
- package/dist/plugin-sdk/{thread-bindings.lifecycle-_uQ2EF17.js → thread-bindings.lifecycle-Ry6Vcgw3.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-DUg0s_1X.js → thread-bindings.state-C0stmvNk.js} +2 -2
- package/dist/plugin-sdk/{tmp-fased-dir-BrbXGSkl.d.ts → tmp-fased-dir-D91GExk4.d.ts} +2 -2
- package/dist/plugin-sdk/{types-CBCtqtMn.d.ts → types-BzadOItY.d.ts} +1 -1
- package/dist/plugin-sdk/{types-DlKIHIqA.d.ts → types-DKvBJHfH.d.ts} +16 -6
- package/dist/plugin-sdk/{types-BJdDoTQF.d.ts → types-DVTIpopt.d.ts} +2 -2
- package/dist/plugin-sdk/{types.plugin-CvUiB3Kh.d.ts → types.plugin-BiHPaDTF.d.ts} +2 -1
- package/dist/plugin-sdk/{wallet-status-M6aK3abH.js → wallet-status-f0HagNeO.js} +31 -13
- package/dist/plugin-sdk/{web-r1KFR44s.js → web-DRNJxHXA.js} +31 -31
- package/dist/plugin-sdk/{whatsapp-actions-CID_tqAX.js → whatsapp-actions-BDXZF2R5.js} +13 -13
- package/dist/plugin-sdk/{whatsapp-heartbeat-Bk-aZVMa.js → whatsapp-heartbeat-CKgmwCGr.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +5 -5
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-C_STtED7.js → wsl-Biw7Mj39.js} +3 -3
- package/dist/providers/huggingface-models.js +0 -30
- package/dist/providers/litellm-models.js +1 -1
- package/dist/providers/opencode-zen-shared.js +0 -1
- package/dist/providers/refresh.js +221 -62
- package/dist/providers/registry.js +31 -7
- package/dist/providers/runtime-model-catalog.js +181 -0
- package/dist/providers/vercel-ai-gateway-models.js +0 -35
- package/dist/shared/model-thinking.js +44 -2
- package/dist/wizard/onboarding.js +24 -6
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/control-ui/assets/chat-model-ref-NT82zapt.js +0 -2
|
@@ -1,27 +1,29 @@
|
|
|
1
1
|
import { BASE_THINKING_LEVELS } from "../shared/model-thinking.js";
|
|
2
2
|
import { CLOUDFLARE_AI_GATEWAY_MODEL_IDS, CLOUDFLARE_AI_GATEWAY_PROVIDER_BRAND_ID, CLOUDFLARE_AI_GATEWAY_ROUTE_ID } from "./cloudflare-ai-gateway-shared.js";
|
|
3
3
|
import { HUGGINGFACE_MODEL_IDS } from "./huggingface-models.js";
|
|
4
|
-
import { LITELLM_BASE_URL, LITELLM_MODEL_IDS } from "./litellm-models.js";
|
|
5
4
|
import { OPENCODE_ZEN_MODEL_IDS } from "./opencode-zen-shared.js";
|
|
6
5
|
import { SYNTHETIC_MODEL_IDS } from "./synthetic-models.js";
|
|
7
6
|
import { TOGETHER_MODEL_IDS } from "./together-models.js";
|
|
8
7
|
import { VENICE_MODEL_IDS } from "./venice-models.js";
|
|
9
8
|
import { VERCEL_AI_GATEWAY_MODEL_IDS } from "./vercel-ai-gateway-models.js";
|
|
10
9
|
import { XIAOMI_MODEL_IDS } from "./xiaomi-models.js";
|
|
10
|
+
import { LITELLM_BASE_URL } from "./litellm-models.js";
|
|
11
11
|
import { ANTHROPIC_MODEL_IDS, ANTHROPIC_PROVIDER_BRAND_ID, ANTHROPIC_ROUTE_ID, BYTEPLUS_CODING_MODEL_IDS, BYTEPLUS_CODING_ROUTE_ID, BYTEPLUS_MODEL_IDS, BYTEPLUS_PLAN_ROUTE_ID, BYTEPLUS_PROVIDER_BRAND_ID, BYTEPLUS_ROUTE_ID, CHUTES_MODEL_IDS, CHUTES_PROVIDER_BRAND_ID, CHUTES_ROUTE_ID, COPILOT_PROVIDER_BRAND_ID, COPILOT_PROXY_MODEL_IDS, COPILOT_PROXY_ROUTE_ID, CUSTOM_PROVIDER_BRAND_ID, CUSTOM_PROVIDER_ROUTE_ID, GITHUB_COPILOT_ROUTE_ID, GOOGLE_API_ROUTE_ID, GOOGLE_GEMINI_CLI_ROUTE_ID, GOOGLE_GEMINI_MODEL_IDS, GOOGLE_PROVIDER_BRAND_ID, HUGGINGFACE_PROVIDER_BRAND_ID, HUGGINGFACE_ROUTE_ID, KIMI_CODING_MODEL_IDS, KIMI_CODING_ROUTE_ID, LITELLM_PROVIDER_BRAND_ID, LITELLM_ROUTE_ID, LMSTUDIO_PROVIDER_BRAND_ID, LMSTUDIO_ROUTE_ID, MINIMAX_API_ROUTE_ID, MINIMAX_CN_ROUTE_ID, MINIMAX_MODEL_IDS, MINIMAX_PORTAL_ROUTE_ID, MINIMAX_PROVIDER_BRAND_ID, MISTRAL_MODEL_IDS, MISTRAL_PROVIDER_BRAND_ID, MISTRAL_ROUTE_ID, MOONSHOT_MODEL_IDS, MOONSHOT_PROVIDER_BRAND_ID, MOONSHOT_ROUTE_ID, OLLAMA_PROVIDER_BRAND_ID, OLLAMA_ROUTE_ID, OPENAI_API_MODEL_IDS, OPENAI_API_ROUTE_ID, OPENAI_CODEX_ROUTE_ID, OPENAI_PROVIDER_BRAND_ID, OPENAI_SIGN_IN_MODEL_IDS, OPENCODE_ZEN_PROVIDER_BRAND_ID, OPENCODE_ZEN_ROUTE_ID, OPENROUTER_MODEL_IDS, OPENROUTER_PROVIDER_BRAND_ID, OPENROUTER_ROUTE_ID, QIANFAN_MODEL_IDS, QIANFAN_PROVIDER_BRAND_ID, QIANFAN_ROUTE_ID, QWEN_API_MODEL_IDS, QWEN_API_ROUTE_ID, QWEN_CODING_PLAN_MODEL_IDS, QWEN_CODING_PLAN_ROUTE_ID, QWEN_PROVIDER_BRAND_ID, SYNTHETIC_PROVIDER_BRAND_ID, SYNTHETIC_ROUTE_ID, TOGETHER_PROVIDER_BRAND_ID, TOGETHER_ROUTE_ID, VENICE_PROVIDER_BRAND_ID, VENICE_ROUTE_ID, VERCEL_AI_GATEWAY_PROVIDER_BRAND_ID, VERCEL_AI_GATEWAY_ROUTE_ID, VLLM_PROVIDER_BRAND_ID, VLLM_ROUTE_ID, VOLCENGINE_CODING_MODEL_IDS, VOLCENGINE_CODING_ROUTE_ID, VOLCENGINE_MODEL_IDS, VOLCENGINE_PLAN_ROUTE_ID, VOLCENGINE_PROVIDER_BRAND_ID, VOLCENGINE_ROUTE_ID, XAI_MODEL_IDS, XAI_PROVIDER_BRAND_ID, XAI_ROUTE_ID, XIAOMI_PROVIDER_BRAND_ID, XIAOMI_ROUTE_ID, ZAI_MODEL_IDS, ZAI_PROVIDER_BRAND_ID, ZAI_ROUTE_ID, listProviderBrandManifests, lookupProviderManifestModelCapability, resolveProviderRouteModelCapability } from "./registry.js";
|
|
12
12
|
import { readFile } from "node:fs/promises";
|
|
13
13
|
|
|
14
14
|
//#region src/providers/refresh.ts
|
|
15
15
|
const OPENAI_DOCS_MODELS_URL = "https://developers.openai.com/api/docs/models/all";
|
|
16
|
+
const OPENAI_API_MODELS_URL = "https://api.openai.com/v1/models";
|
|
16
17
|
const CHUTES_MODELS_URL = "https://llm.chutes.ai/v1/models";
|
|
17
18
|
const OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models";
|
|
18
19
|
const VERCEL_AI_GATEWAY_MODELS_URL = "https://ai-gateway.vercel.sh/v1/models";
|
|
19
20
|
const OPENCODE_ZEN_MODELS_URL = "https://opencode.ai/zen/v1/models";
|
|
20
21
|
const HUGGINGFACE_MODELS_URL = "https://router.huggingface.co/v1/models";
|
|
21
22
|
const VENICE_MODELS_URL = "https://api.venice.ai/api/v1/models";
|
|
23
|
+
const PROVIDER_CATALOG_TIMEOUT_MS = 8e3;
|
|
22
24
|
const ANTHROPIC_MODELS_URL = "https://api.anthropic.com/v1/models";
|
|
23
25
|
const GOOGLE_GEMINI_MODELS_URL = "https://generativelanguage.googleapis.com/v1beta/models";
|
|
24
|
-
const
|
|
26
|
+
const XAI_LANGUAGE_MODELS_URL = "https://api.x.ai/v1/language-models";
|
|
25
27
|
const MISTRAL_MODELS_URL = "https://api.mistral.ai/v1/models";
|
|
26
28
|
const MINIMAX_MODELS_URL = "https://api.minimax.io/v1/models";
|
|
27
29
|
const MINIMAX_PORTAL_DEFAULT_BASE_URL = "https://api.minimax.io/anthropic";
|
|
@@ -44,12 +46,6 @@ const VLLM_DEFAULT_BASE_URL = "http://127.0.0.1:8000/v1";
|
|
|
44
46
|
const OLLAMA_DEFAULT_BASE_URL = "http://127.0.0.1:11434";
|
|
45
47
|
const LMSTUDIO_DEFAULT_BASE_URL = "http://127.0.0.1:1234/v1";
|
|
46
48
|
const LITELLM_DEFAULT_BASE_URL = LITELLM_BASE_URL;
|
|
47
|
-
const OPENAI_CURRENT_API_MODEL_RE = /^gpt-5\.(?:[4-9]|\d{2,})(?:-(?:mini|nano|terra|luna))?$/;
|
|
48
|
-
const OPENAI_CURRENT_SIGN_IN_MODEL_RE = /^gpt-(?:5\.(?:[4-9]|\d{2,})(?:-mini)?|5\.3-codex-spark)$/;
|
|
49
|
-
const CHUTES_CURRENT_NORMAL_UI_MODEL_RE = /^(?:google\/gemma-4-[^/]+-TEE|Qwen\/Qwen3(?:\.\d+)?-[^/]+-TEE|deepseek-ai\/DeepSeek-V3\.2-TEE|zai-org\/GLM-5(?:\.\d+)?-TEE|moonshotai\/Kimi-K2\.6-TEE)$/;
|
|
50
|
-
const OPENROUTER_CURRENT_NORMAL_UI_MODEL_RE = /^(?:openrouter\/owl-alpha|openai\/gpt-(?:5\.6-(?:sol|terra|luna)|5\.5|5\.4(?:-(?:mini|nano))?)|anthropic\/claude-(?:fable-5|opus-4\.8|sonnet-5|haiku-4\.5)|google\/gemini-(?:3\.5-flash|3\.1-(?:pro-preview|flash-lite)|3-flash-preview)|x-ai\/(?:grok-4\.5|grok-4\.3|grok-build-0\.1)|mistralai\/(?:mistral-medium-3-5|mistral-small-2603|mistral-large-2512|devstral-2512)|qwen\/qwen3\.(?:7-(?:max|plus)|6-flash)|z-ai\/glm-5\.2|deepseek\/deepseek-v4-(?:pro|flash)|minimax\/minimax-m2\.7|moonshotai\/kimi-k2\.6)$/;
|
|
51
|
-
const VERCEL_AI_GATEWAY_CURRENT_NORMAL_UI_MODEL_RE = /^(?:openai\/gpt-(?:5\.5|5\.4(?:-(?:mini|nano))?)|anthropic\/claude-(?:fable-5|opus-4\.8|sonnet-5|haiku-4\.5)|google\/gemini-(?:3\.5-flash|3\.1-(?:pro-preview|flash-lite)|3-flash-preview)|xai\/(?:grok-4\.3|grok-build-0\.1)|mistral\/(?:mistral-medium-3\.5|mistral-small-2603|mistral-large-2512|devstral-2512)|minimax\/minimax-m2\.7(?:-highspeed)?|moonshotai\/kimi-k2\.6)$/;
|
|
52
|
-
const OPENCODE_ZEN_CURRENT_NORMAL_UI_MODEL_RE = /^(?:gpt-5\.(?:5|4(?:-(?:mini|nano))?|3-codex-spark)|claude-(?:fable-5|opus-4-8|sonnet-5|haiku-4-5)|gemini-(?:3\.5-flash|3\.1-pro|3-flash)|qwen3\.7-plus|minimax-m2\.7|glm-5\.2|kimi-k2\.6)$/;
|
|
53
49
|
function normalizeModelIds(values, options = {}) {
|
|
54
50
|
const seen = new Set();
|
|
55
51
|
const result = [];
|
|
@@ -112,6 +108,12 @@ function setProviderRefreshEnvFromProfile(params) {
|
|
|
112
108
|
const provider = params.profile.provider.trim();
|
|
113
109
|
const apiKey = resolveApiKeyProfileValue(params.profile, params.env);
|
|
114
110
|
switch (provider) {
|
|
111
|
+
case "openai":
|
|
112
|
+
setProviderRefreshEnvValue(params.target, "OPENAI_API_KEY", apiKey);
|
|
113
|
+
break;
|
|
114
|
+
case "chutes":
|
|
115
|
+
setProviderRefreshEnvValue(params.target, "CHUTES_API_KEY", apiKey);
|
|
116
|
+
break;
|
|
115
117
|
case "anthropic":
|
|
116
118
|
setProviderRefreshEnvValue(params.target, "ANTHROPIC_API_KEY", apiKey);
|
|
117
119
|
break;
|
|
@@ -190,6 +192,23 @@ function setProviderRefreshEnvFromProfile(params) {
|
|
|
190
192
|
case "together":
|
|
191
193
|
setProviderRefreshEnvValue(params.target, "TOGETHER_API_KEY", apiKey);
|
|
192
194
|
break;
|
|
195
|
+
case "openrouter":
|
|
196
|
+
setProviderRefreshEnvValue(params.target, "OPENROUTER_API_KEY", apiKey);
|
|
197
|
+
break;
|
|
198
|
+
case "vercel-ai-gateway":
|
|
199
|
+
case "ai-gateway":
|
|
200
|
+
setProviderRefreshEnvValue(params.target, "AI_GATEWAY_API_KEY", apiKey);
|
|
201
|
+
break;
|
|
202
|
+
case "opencode":
|
|
203
|
+
case "opencode-zen":
|
|
204
|
+
setProviderRefreshEnvValue(params.target, "OPENCODE_API_KEY", apiKey);
|
|
205
|
+
break;
|
|
206
|
+
case "huggingface":
|
|
207
|
+
setProviderRefreshEnvValue(params.target, "HUGGINGFACE_HUB_TOKEN", apiKey);
|
|
208
|
+
break;
|
|
209
|
+
case "venice":
|
|
210
|
+
setProviderRefreshEnvValue(params.target, "VENICE_API_KEY", apiKey);
|
|
211
|
+
break;
|
|
193
212
|
default:
|
|
194
213
|
if (provider.startsWith("custom-")) {
|
|
195
214
|
setProviderRefreshEnvValue(params.target, "CUSTOM_PROVIDER_API_KEY", apiKey);
|
|
@@ -201,6 +220,28 @@ function setProviderRefreshEnvFromModelProvider(params) {
|
|
|
201
220
|
const apiKey = resolveEnvSecretValue(params.provider.apiKey, params.env);
|
|
202
221
|
const baseUrl = typeof params.provider.baseUrl === "string" ? params.provider.baseUrl.trim() : undefined;
|
|
203
222
|
switch (params.providerId) {
|
|
223
|
+
case "openai":
|
|
224
|
+
setProviderRefreshEnvValue(params.target, "OPENAI_API_KEY", apiKey);
|
|
225
|
+
break;
|
|
226
|
+
case "chutes":
|
|
227
|
+
setProviderRefreshEnvValue(params.target, "CHUTES_API_KEY", apiKey);
|
|
228
|
+
break;
|
|
229
|
+
case "openrouter":
|
|
230
|
+
setProviderRefreshEnvValue(params.target, "OPENROUTER_API_KEY", apiKey);
|
|
231
|
+
break;
|
|
232
|
+
case "vercel-ai-gateway":
|
|
233
|
+
case "ai-gateway":
|
|
234
|
+
setProviderRefreshEnvValue(params.target, "AI_GATEWAY_API_KEY", apiKey);
|
|
235
|
+
break;
|
|
236
|
+
case "opencode":
|
|
237
|
+
setProviderRefreshEnvValue(params.target, "OPENCODE_API_KEY", apiKey);
|
|
238
|
+
break;
|
|
239
|
+
case "huggingface":
|
|
240
|
+
setProviderRefreshEnvValue(params.target, "HUGGINGFACE_HUB_TOKEN", apiKey);
|
|
241
|
+
break;
|
|
242
|
+
case "venice":
|
|
243
|
+
setProviderRefreshEnvValue(params.target, "VENICE_API_KEY", apiKey);
|
|
244
|
+
break;
|
|
204
245
|
case "vllm":
|
|
205
246
|
setProviderRefreshEnvValue(params.target, "VLLM_API_KEY", apiKey);
|
|
206
247
|
setProviderRefreshEnvValue(params.target, "VLLM_BASE_URL", baseUrl);
|
|
@@ -1094,13 +1135,13 @@ function selectManifestModelsForNormalUi(modelIds, preferred) {
|
|
|
1094
1135
|
return sortWithPreferredOrder(normalizeModelIds(modelIds).filter((id) => allowed.has(id.toLowerCase())), preferred);
|
|
1095
1136
|
}
|
|
1096
1137
|
function selectOpenAIApiModelsForNormalUi(modelIds) {
|
|
1097
|
-
return
|
|
1138
|
+
return selectManifestModelsForNormalUi(modelIds, OPENAI_API_MODEL_IDS);
|
|
1098
1139
|
}
|
|
1099
1140
|
function selectOpenAISignInModelsForNormalUi(modelIds) {
|
|
1100
|
-
return
|
|
1141
|
+
return selectManifestModelsForNormalUi(modelIds, OPENAI_SIGN_IN_MODEL_IDS);
|
|
1101
1142
|
}
|
|
1102
1143
|
function selectChutesModelsForNormalUi(modelIds) {
|
|
1103
|
-
return
|
|
1144
|
+
return selectManifestModelsForNormalUi(modelIds, CHUTES_MODEL_IDS);
|
|
1104
1145
|
}
|
|
1105
1146
|
function selectAnthropicModelsForNormalUi(modelIds) {
|
|
1106
1147
|
return selectManifestModelsForNormalUi(modelIds, ANTHROPIC_MODEL_IDS);
|
|
@@ -1166,17 +1207,16 @@ function selectDynamicProviderModelsForNormalUi(modelIds) {
|
|
|
1166
1207
|
return normalizeModelIds(modelIds);
|
|
1167
1208
|
}
|
|
1168
1209
|
function selectLitellmModelsForNormalUi(modelIds) {
|
|
1169
|
-
|
|
1170
|
-
return discovered.length > 0 ? discovered : [...LITELLM_MODEL_IDS];
|
|
1210
|
+
return selectDynamicProviderModelsForNormalUi(modelIds);
|
|
1171
1211
|
}
|
|
1172
1212
|
function selectOpenRouterModelsForNormalUi(modelIds) {
|
|
1173
|
-
return
|
|
1213
|
+
return selectManifestModelsForNormalUi(modelIds, OPENROUTER_MODEL_IDS);
|
|
1174
1214
|
}
|
|
1175
1215
|
function selectVercelAiGatewayModelsForNormalUi(modelIds) {
|
|
1176
|
-
return
|
|
1216
|
+
return selectManifestModelsForNormalUi(modelIds, VERCEL_AI_GATEWAY_MODEL_IDS);
|
|
1177
1217
|
}
|
|
1178
1218
|
function selectOpencodeZenModelsForNormalUi(modelIds) {
|
|
1179
|
-
return
|
|
1219
|
+
return selectManifestModelsForNormalUi(modelIds, OPENCODE_ZEN_MODEL_IDS);
|
|
1180
1220
|
}
|
|
1181
1221
|
function selectHuggingfaceModelsForNormalUi(modelIds) {
|
|
1182
1222
|
const allowed = new Set(HUGGINGFACE_MODEL_IDS);
|
|
@@ -1196,7 +1236,10 @@ function readEnv(env, names) {
|
|
|
1196
1236
|
return undefined;
|
|
1197
1237
|
}
|
|
1198
1238
|
async function fetchJsonCatalog(params) {
|
|
1199
|
-
const response = await params.fetch(params.url, {
|
|
1239
|
+
const response = await params.fetch(params.url, {
|
|
1240
|
+
headers: params.headers,
|
|
1241
|
+
signal: AbortSignal.timeout(PROVIDER_CATALOG_TIMEOUT_MS)
|
|
1242
|
+
});
|
|
1200
1243
|
if (!response.ok) {
|
|
1201
1244
|
throw new Error(`${params.label} model catalog fetch failed: HTTP ${response.status}`);
|
|
1202
1245
|
}
|
|
@@ -1272,7 +1315,25 @@ function cloudflareAiGatewayHeaders(env, providerKey) {
|
|
|
1272
1315
|
}
|
|
1273
1316
|
async function fetchOpenAIProviderRefreshSnapshot(params = {}) {
|
|
1274
1317
|
const fetchImpl = params.fetch ?? fetch;
|
|
1275
|
-
const
|
|
1318
|
+
const token = readEnv(params.env ?? process.env, ["OPENAI_API_KEY"]);
|
|
1319
|
+
if (token) {
|
|
1320
|
+
const payload = await fetchJsonCatalog({
|
|
1321
|
+
fetch: fetchImpl,
|
|
1322
|
+
url: OPENAI_API_MODELS_URL,
|
|
1323
|
+
headers: bearerHeaders(token),
|
|
1324
|
+
label: "OpenAI"
|
|
1325
|
+
});
|
|
1326
|
+
const models = parseGenericModelSnapshotsFromModelsResponse(payload);
|
|
1327
|
+
const ids = selectOpenAIApiModelsForNormalUi(models.map((model) => model.id));
|
|
1328
|
+
return { providers: { [OPENAI_PROVIDER_BRAND_ID]: {
|
|
1329
|
+
missing: { [OPENAI_CODEX_ROUTE_ID]: {
|
|
1330
|
+
reason: "catalog-unsupported",
|
|
1331
|
+
detail: "ChatGPT sign-in models are discovered from the authenticated runtime."
|
|
1332
|
+
} },
|
|
1333
|
+
routes: { [OPENAI_API_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, OPENAI_API_ROUTE_ID) }
|
|
1334
|
+
} } };
|
|
1335
|
+
}
|
|
1336
|
+
const response = await fetchImpl(OPENAI_DOCS_MODELS_URL, { signal: AbortSignal.timeout(PROVIDER_CATALOG_TIMEOUT_MS) });
|
|
1276
1337
|
if (!response.ok) {
|
|
1277
1338
|
throw new Error(`OpenAI docs model fetch failed: HTTP ${response.status}`);
|
|
1278
1339
|
}
|
|
@@ -1283,16 +1344,20 @@ async function fetchOpenAIProviderRefreshSnapshot(params = {}) {
|
|
|
1283
1344
|
reason: "catalog-unsupported",
|
|
1284
1345
|
detail: "OpenAI public model docs do not verify ChatGPT sign-in route compatibility."
|
|
1285
1346
|
} },
|
|
1286
|
-
routes: { [OPENAI_API_ROUTE_ID]: selectOpenAIApiModelsForNormalUi(ids)
|
|
1347
|
+
routes: { [OPENAI_API_ROUTE_ID]: selectOpenAIApiModelsForNormalUi(ids).map((id) => ({
|
|
1348
|
+
id,
|
|
1349
|
+
source: "official-docs"
|
|
1350
|
+
})) }
|
|
1287
1351
|
} } };
|
|
1288
1352
|
}
|
|
1289
1353
|
async function fetchChutesProviderRefreshSnapshot(params = {}) {
|
|
1290
|
-
const
|
|
1291
|
-
const
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1295
|
-
|
|
1354
|
+
const token = readEnv(params.env ?? process.env, ["CHUTES_API_KEY"]);
|
|
1355
|
+
const payload = await fetchJsonCatalog({
|
|
1356
|
+
fetch: params.fetch ?? fetch,
|
|
1357
|
+
url: CHUTES_MODELS_URL,
|
|
1358
|
+
headers: optionalBearerHeaders(token),
|
|
1359
|
+
label: "Chutes"
|
|
1360
|
+
});
|
|
1296
1361
|
const models = parseGenericModelSnapshotsFromModelsResponse(payload);
|
|
1297
1362
|
const ids = models.map((model) => model.id);
|
|
1298
1363
|
return { providers: { [CHUTES_PROVIDER_BRAND_ID]: { routes: { [CHUTES_ROUTE_ID]: selectModelSnapshotsByIds(models, selectChutesModelsForNormalUi(ids), CHUTES_ROUTE_ID) } } } };
|
|
@@ -1373,7 +1438,7 @@ async function fetchXaiProviderRefreshSnapshot(params = {}) {
|
|
|
1373
1438
|
}
|
|
1374
1439
|
const payload = await fetchJsonCatalog({
|
|
1375
1440
|
fetch: params.fetch ?? fetch,
|
|
1376
|
-
url:
|
|
1441
|
+
url: XAI_LANGUAGE_MODELS_URL,
|
|
1377
1442
|
headers: bearerHeaders(token),
|
|
1378
1443
|
label: "xAI"
|
|
1379
1444
|
});
|
|
@@ -1867,56 +1932,73 @@ async function fetchTogetherProviderRefreshSnapshot(params = {}) {
|
|
|
1867
1932
|
return { providers: { [TOGETHER_PROVIDER_BRAND_ID]: { routes: { [TOGETHER_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, TOGETHER_ROUTE_ID) } } } };
|
|
1868
1933
|
}
|
|
1869
1934
|
async function fetchOpenRouterProviderRefreshSnapshot(params = {}) {
|
|
1870
|
-
const
|
|
1871
|
-
const
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1935
|
+
const token = readEnv(params.env ?? process.env, ["OPENROUTER_API_KEY"]);
|
|
1936
|
+
const payload = await fetchJsonCatalog({
|
|
1937
|
+
fetch: params.fetch ?? fetch,
|
|
1938
|
+
url: OPENROUTER_MODELS_URL,
|
|
1939
|
+
headers: optionalBearerHeaders(token),
|
|
1940
|
+
label: "OpenRouter"
|
|
1941
|
+
});
|
|
1876
1942
|
const models = parseOpenRouterModelSnapshotsFromModelsResponse(payload);
|
|
1877
1943
|
const ids = selectOpenRouterModelsForNormalUi(models.map((model) => model.id));
|
|
1878
1944
|
return { providers: { [OPENROUTER_PROVIDER_BRAND_ID]: { routes: { [OPENROUTER_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, OPENROUTER_ROUTE_ID) } } } };
|
|
1879
1945
|
}
|
|
1880
1946
|
async function fetchVercelAiGatewayProviderRefreshSnapshot(params = {}) {
|
|
1881
|
-
const
|
|
1882
|
-
const
|
|
1883
|
-
|
|
1884
|
-
|
|
1885
|
-
|
|
1886
|
-
|
|
1947
|
+
const token = readEnv(params.env ?? process.env, ["AI_GATEWAY_API_KEY"]);
|
|
1948
|
+
const payload = await fetchJsonCatalog({
|
|
1949
|
+
fetch: params.fetch ?? fetch,
|
|
1950
|
+
url: VERCEL_AI_GATEWAY_MODELS_URL,
|
|
1951
|
+
headers: optionalBearerHeaders(token),
|
|
1952
|
+
label: "Vercel AI Gateway"
|
|
1953
|
+
});
|
|
1887
1954
|
const models = parseOpenRouterModelSnapshotsFromModelsResponse(payload);
|
|
1888
1955
|
const ids = selectVercelAiGatewayModelsForNormalUi(models.map((model) => model.id));
|
|
1889
1956
|
return { providers: { [VERCEL_AI_GATEWAY_PROVIDER_BRAND_ID]: { routes: { [VERCEL_AI_GATEWAY_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, VERCEL_AI_GATEWAY_ROUTE_ID) } } } };
|
|
1890
1957
|
}
|
|
1891
1958
|
async function fetchOpencodeZenProviderRefreshSnapshot(params = {}) {
|
|
1892
|
-
const
|
|
1893
|
-
const
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1959
|
+
const token = readEnv(params.env ?? process.env, ["OPENCODE_API_KEY"]);
|
|
1960
|
+
const payload = await fetchJsonCatalog({
|
|
1961
|
+
fetch: params.fetch ?? fetch,
|
|
1962
|
+
url: OPENCODE_ZEN_MODELS_URL,
|
|
1963
|
+
headers: optionalBearerHeaders(token),
|
|
1964
|
+
label: "OpenCode Zen"
|
|
1965
|
+
});
|
|
1898
1966
|
const models = parseOpenRouterModelSnapshotsFromModelsResponse(payload);
|
|
1899
1967
|
const ids = selectOpencodeZenModelsForNormalUi(models.map((model) => model.id));
|
|
1900
1968
|
return { providers: { [OPENCODE_ZEN_PROVIDER_BRAND_ID]: { routes: { [OPENCODE_ZEN_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, OPENCODE_ZEN_ROUTE_ID) } } } };
|
|
1901
1969
|
}
|
|
1902
1970
|
async function fetchHuggingfaceProviderRefreshSnapshot(params = {}) {
|
|
1903
|
-
const
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1971
|
+
const token = readEnv(params.env ?? process.env, ["HUGGINGFACE_HUB_TOKEN", "HF_TOKEN"]);
|
|
1972
|
+
if (!token) {
|
|
1973
|
+
return missingProviderRoutes(HUGGINGFACE_PROVIDER_BRAND_ID, { [HUGGINGFACE_ROUTE_ID]: {
|
|
1974
|
+
reason: "credential-missing",
|
|
1975
|
+
detail: "Set HUGGINGFACE_HUB_TOKEN/HF_TOKEN or configure a Hugging Face token profile."
|
|
1976
|
+
} });
|
|
1907
1977
|
}
|
|
1908
|
-
const payload = await
|
|
1978
|
+
const payload = await fetchJsonCatalog({
|
|
1979
|
+
fetch: params.fetch ?? fetch,
|
|
1980
|
+
url: HUGGINGFACE_MODELS_URL,
|
|
1981
|
+
headers: bearerHeaders(token),
|
|
1982
|
+
label: "Hugging Face"
|
|
1983
|
+
});
|
|
1909
1984
|
const models = parseHuggingfaceModelSnapshotsFromModelsResponse(payload);
|
|
1910
1985
|
const ids = selectHuggingfaceModelsForNormalUi(models.map((model) => model.id));
|
|
1911
1986
|
return { providers: { [HUGGINGFACE_PROVIDER_BRAND_ID]: { routes: { [HUGGINGFACE_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, HUGGINGFACE_ROUTE_ID) } } } };
|
|
1912
1987
|
}
|
|
1913
1988
|
async function fetchVeniceProviderRefreshSnapshot(params = {}) {
|
|
1914
|
-
const
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1989
|
+
const token = readEnv(params.env ?? process.env, ["VENICE_API_KEY"]);
|
|
1990
|
+
if (!token) {
|
|
1991
|
+
return missingProviderRoutes(VENICE_PROVIDER_BRAND_ID, { [VENICE_ROUTE_ID]: {
|
|
1992
|
+
reason: "credential-missing",
|
|
1993
|
+
detail: "Set VENICE_API_KEY or configure a Venice API-key auth profile."
|
|
1994
|
+
} });
|
|
1918
1995
|
}
|
|
1919
|
-
const payload = await
|
|
1996
|
+
const payload = await fetchJsonCatalog({
|
|
1997
|
+
fetch: params.fetch ?? fetch,
|
|
1998
|
+
url: VENICE_MODELS_URL,
|
|
1999
|
+
headers: bearerHeaders(token),
|
|
2000
|
+
label: "Venice AI"
|
|
2001
|
+
});
|
|
1920
2002
|
const models = parseVeniceModelSnapshotsFromModelsResponse(payload);
|
|
1921
2003
|
const ids = selectVeniceModelsForNormalUi(models.map((model) => model.id));
|
|
1922
2004
|
return { providers: { [VENICE_PROVIDER_BRAND_ID]: { routes: { [VENICE_ROUTE_ID]: selectModelSnapshotsByIds(models, ids, VENICE_ROUTE_ID) } } } };
|
|
@@ -1927,6 +2009,62 @@ function fetchStaticUnsupportedProviderRefreshSnapshot() {
|
|
|
1927
2009
|
detail: "Direct GitHub Copilot model catalog probing is not implemented; configure Copilot Proxy for a probeable /models route."
|
|
1928
2010
|
} })]);
|
|
1929
2011
|
}
|
|
2012
|
+
function providerRefreshFetcherForBrand(brandId) {
|
|
2013
|
+
switch (brandId) {
|
|
2014
|
+
case OPENAI_PROVIDER_BRAND_ID: return fetchOpenAIProviderRefreshSnapshot;
|
|
2015
|
+
case CHUTES_PROVIDER_BRAND_ID: return fetchChutesProviderRefreshSnapshot;
|
|
2016
|
+
case ANTHROPIC_PROVIDER_BRAND_ID: return fetchAnthropicProviderRefreshSnapshot;
|
|
2017
|
+
case GOOGLE_PROVIDER_BRAND_ID: return fetchGoogleGeminiProviderRefreshSnapshot;
|
|
2018
|
+
case XAI_PROVIDER_BRAND_ID: return fetchXaiProviderRefreshSnapshot;
|
|
2019
|
+
case MISTRAL_PROVIDER_BRAND_ID: return fetchMistralProviderRefreshSnapshot;
|
|
2020
|
+
case VOLCENGINE_PROVIDER_BRAND_ID: return fetchVolcengineProviderRefreshSnapshot;
|
|
2021
|
+
case BYTEPLUS_PROVIDER_BRAND_ID: return fetchBytePlusProviderRefreshSnapshot;
|
|
2022
|
+
case MINIMAX_PROVIDER_BRAND_ID: return fetchMinimaxProviderRefreshSnapshot;
|
|
2023
|
+
case MOONSHOT_PROVIDER_BRAND_ID: return fetchMoonshotProviderRefreshSnapshot;
|
|
2024
|
+
case QWEN_PROVIDER_BRAND_ID: return fetchQwenProviderRefreshSnapshot;
|
|
2025
|
+
case COPILOT_PROVIDER_BRAND_ID: return fetchCopilotProviderRefreshSnapshot;
|
|
2026
|
+
case XIAOMI_PROVIDER_BRAND_ID: return fetchXiaomiProviderRefreshSnapshot;
|
|
2027
|
+
case SYNTHETIC_PROVIDER_BRAND_ID: return fetchSyntheticProviderRefreshSnapshot;
|
|
2028
|
+
case TOGETHER_PROVIDER_BRAND_ID: return fetchTogetherProviderRefreshSnapshot;
|
|
2029
|
+
case OPENROUTER_PROVIDER_BRAND_ID: return fetchOpenRouterProviderRefreshSnapshot;
|
|
2030
|
+
case ZAI_PROVIDER_BRAND_ID: return fetchZaiProviderRefreshSnapshot;
|
|
2031
|
+
case QIANFAN_PROVIDER_BRAND_ID: return fetchQianfanProviderRefreshSnapshot;
|
|
2032
|
+
case VERCEL_AI_GATEWAY_PROVIDER_BRAND_ID: return fetchVercelAiGatewayProviderRefreshSnapshot;
|
|
2033
|
+
case OPENCODE_ZEN_PROVIDER_BRAND_ID: return fetchOpencodeZenProviderRefreshSnapshot;
|
|
2034
|
+
case OLLAMA_PROVIDER_BRAND_ID: return fetchOllamaProviderRefreshSnapshot;
|
|
2035
|
+
case LMSTUDIO_PROVIDER_BRAND_ID: return fetchLmStudioProviderRefreshSnapshot;
|
|
2036
|
+
case VLLM_PROVIDER_BRAND_ID: return fetchVllmProviderRefreshSnapshot;
|
|
2037
|
+
case LITELLM_PROVIDER_BRAND_ID: return fetchLitellmProviderRefreshSnapshot;
|
|
2038
|
+
case CLOUDFLARE_AI_GATEWAY_PROVIDER_BRAND_ID: return fetchCloudflareAiGatewayProviderRefreshSnapshot;
|
|
2039
|
+
case CUSTOM_PROVIDER_BRAND_ID: return fetchCustomProviderRefreshSnapshot;
|
|
2040
|
+
case HUGGINGFACE_PROVIDER_BRAND_ID: return fetchHuggingfaceProviderRefreshSnapshot;
|
|
2041
|
+
case VENICE_PROVIDER_BRAND_ID: return fetchVeniceProviderRefreshSnapshot;
|
|
2042
|
+
default: return undefined;
|
|
2043
|
+
}
|
|
2044
|
+
}
|
|
2045
|
+
async function fetchProviderRefreshSnapshotForRoutes(params) {
|
|
2046
|
+
const requestedRoutes = new Set([...params.routes].map((route) => route.trim().toLowerCase()).filter(Boolean));
|
|
2047
|
+
const fetchers = new Set();
|
|
2048
|
+
for (const manifest of listProviderBrandManifests()) {
|
|
2049
|
+
const routes = new Set([
|
|
2050
|
+
...manifest.methods.map((method) => method.route.trim().toLowerCase()),
|
|
2051
|
+
...(manifest.modelProviderIds ?? []).map((route) => route.trim().toLowerCase()),
|
|
2052
|
+
...(manifest.routeAliases ?? []).map((route) => route.trim().toLowerCase())
|
|
2053
|
+
]);
|
|
2054
|
+
if (![...routes].some((route) => requestedRoutes.has(route))) {
|
|
2055
|
+
continue;
|
|
2056
|
+
}
|
|
2057
|
+
const fetcher = providerRefreshFetcherForBrand(manifest.id);
|
|
2058
|
+
if (fetcher) {
|
|
2059
|
+
fetchers.add(fetcher);
|
|
2060
|
+
}
|
|
2061
|
+
}
|
|
2062
|
+
const results = await Promise.allSettled([...fetchers].map((fetcher) => fetcher({
|
|
2063
|
+
fetch: params.fetch,
|
|
2064
|
+
env: params.env
|
|
2065
|
+
})));
|
|
2066
|
+
return mergeProviderRefreshSnapshots(results.flatMap((result) => result.status === "fulfilled" ? [result.value] : []));
|
|
2067
|
+
}
|
|
1930
2068
|
function mergeProviderRefreshSnapshots(snapshots) {
|
|
1931
2069
|
const providers = {};
|
|
1932
2070
|
for (const snapshot of snapshots) {
|
|
@@ -1951,8 +2089,14 @@ function mergeProviderRefreshSnapshots(snapshots) {
|
|
|
1951
2089
|
async function fetchOfficialProviderRefreshSnapshot(params = {}) {
|
|
1952
2090
|
const fetchImpl = params.fetch ?? fetch;
|
|
1953
2091
|
const [openai, chutes, anthropic, google, xai, mistral, volcengine, byteplus, minimax, moonshot, qwen, copilot, xiaomi, synthetic, together, openrouter, zai, qianfan, vercelAiGateway, opencodeZen, ollama, lmstudio, vllm, litellm, cloudflareAiGateway, custom, huggingface, venice, staticUnsupported] = await Promise.all([
|
|
1954
|
-
fetchOpenAIProviderRefreshSnapshot({
|
|
1955
|
-
|
|
2092
|
+
fetchOpenAIProviderRefreshSnapshot({
|
|
2093
|
+
fetch: fetchImpl,
|
|
2094
|
+
env: params.env
|
|
2095
|
+
}),
|
|
2096
|
+
fetchChutesProviderRefreshSnapshot({
|
|
2097
|
+
fetch: fetchImpl,
|
|
2098
|
+
env: params.env
|
|
2099
|
+
}),
|
|
1956
2100
|
fetchAnthropicProviderRefreshSnapshot({
|
|
1957
2101
|
fetch: fetchImpl,
|
|
1958
2102
|
env: params.env
|
|
@@ -2005,7 +2149,10 @@ async function fetchOfficialProviderRefreshSnapshot(params = {}) {
|
|
|
2005
2149
|
fetch: fetchImpl,
|
|
2006
2150
|
env: params.env
|
|
2007
2151
|
}),
|
|
2008
|
-
fetchOpenRouterProviderRefreshSnapshot({
|
|
2152
|
+
fetchOpenRouterProviderRefreshSnapshot({
|
|
2153
|
+
fetch: fetchImpl,
|
|
2154
|
+
env: params.env
|
|
2155
|
+
}),
|
|
2009
2156
|
fetchZaiProviderRefreshSnapshot({
|
|
2010
2157
|
fetch: fetchImpl,
|
|
2011
2158
|
env: params.env
|
|
@@ -2014,8 +2161,14 @@ async function fetchOfficialProviderRefreshSnapshot(params = {}) {
|
|
|
2014
2161
|
fetch: fetchImpl,
|
|
2015
2162
|
env: params.env
|
|
2016
2163
|
}),
|
|
2017
|
-
fetchVercelAiGatewayProviderRefreshSnapshot({
|
|
2018
|
-
|
|
2164
|
+
fetchVercelAiGatewayProviderRefreshSnapshot({
|
|
2165
|
+
fetch: fetchImpl,
|
|
2166
|
+
env: params.env
|
|
2167
|
+
}),
|
|
2168
|
+
fetchOpencodeZenProviderRefreshSnapshot({
|
|
2169
|
+
fetch: fetchImpl,
|
|
2170
|
+
env: params.env
|
|
2171
|
+
}),
|
|
2019
2172
|
fetchOllamaProviderRefreshSnapshot({
|
|
2020
2173
|
fetch: fetchImpl,
|
|
2021
2174
|
env: params.env
|
|
@@ -2040,8 +2193,14 @@ async function fetchOfficialProviderRefreshSnapshot(params = {}) {
|
|
|
2040
2193
|
fetch: fetchImpl,
|
|
2041
2194
|
env: params.env
|
|
2042
2195
|
}),
|
|
2043
|
-
fetchHuggingfaceProviderRefreshSnapshot({
|
|
2044
|
-
|
|
2196
|
+
fetchHuggingfaceProviderRefreshSnapshot({
|
|
2197
|
+
fetch: fetchImpl,
|
|
2198
|
+
env: params.env
|
|
2199
|
+
}),
|
|
2200
|
+
fetchVeniceProviderRefreshSnapshot({
|
|
2201
|
+
fetch: fetchImpl,
|
|
2202
|
+
env: params.env
|
|
2203
|
+
}),
|
|
2045
2204
|
Promise.resolve(fetchStaticUnsupportedProviderRefreshSnapshot())
|
|
2046
2205
|
]);
|
|
2047
2206
|
return mergeProviderRefreshSnapshots([
|
|
@@ -2078,4 +2237,4 @@ async function fetchOfficialProviderRefreshSnapshot(params = {}) {
|
|
|
2078
2237
|
}
|
|
2079
2238
|
|
|
2080
2239
|
//#endregion
|
|
2081
|
-
export { applyProviderRefreshToRegistrySource, buildProviderCapabilityOverridesSource, buildProviderRefreshEnvFromCredentials, buildProviderRefreshReport, buildProviderRegistryReviewPatch, fetchOfficialProviderRefreshSnapshot, loadProviderRefreshSnapshotFromFile };
|
|
2240
|
+
export { applyProviderRefreshToRegistrySource, buildProviderCapabilityOverridesSource, buildProviderRefreshEnvFromCredentials, buildProviderRefreshReport, buildProviderRegistryReviewPatch, fetchOfficialProviderRefreshSnapshot, fetchProviderRefreshSnapshotForRoutes, loadProviderRefreshSnapshotFromFile };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { BASE_THINKING_LEVELS, XHIGH_THINKING_LEVELS, resolveModelThinkingCapability } from "../shared/model-thinking.js";
|
|
2
2
|
import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_ID, CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, CLOUDFLARE_AI_GATEWAY_MODEL_IDS, CLOUDFLARE_AI_GATEWAY_MODEL_REFS, CLOUDFLARE_AI_GATEWAY_PROVIDER_BRAND_ID, CLOUDFLARE_AI_GATEWAY_ROUTE_ID, buildCloudflareAiGatewayModelCapabilityOverrides, resolveCloudflareAiGatewayBaseUrl } from "./cloudflare-ai-gateway-shared.js";
|
|
3
3
|
import { HUGGINGFACE_DEFAULT_MODEL_ID, HUGGINGFACE_DEFAULT_MODEL_REF, HUGGINGFACE_MODEL_IDS, HUGGINGFACE_MODEL_REFS, buildHuggingfaceModelCapabilityOverrides } from "./huggingface-models.js";
|
|
4
|
-
import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID, LITELLM_DEFAULT_MODEL_REF, LITELLM_MODEL_IDS, LITELLM_MODEL_REFS, buildLitellmModelCapabilityOverrides } from "./litellm-models.js";
|
|
5
4
|
import { OPENCODE_ZEN_DEFAULT_MODEL, OPENCODE_ZEN_DEFAULT_MODEL_REF, OPENCODE_ZEN_MODEL_IDS, OPENCODE_ZEN_MODEL_REFS, buildOpencodeZenModelCapabilityOverrides } from "./opencode-zen-shared.js";
|
|
6
5
|
import { SYNTHETIC_MODEL_IDS, buildSyntheticModelCapabilityOverrides } from "./synthetic-models.js";
|
|
7
6
|
import { TOGETHER_DEFAULT_MODEL_ID, TOGETHER_DEFAULT_MODEL_REF, TOGETHER_MODEL_IDS, TOGETHER_MODEL_REFS, buildTogetherModelCapabilityOverrides } from "./together-models.js";
|
|
8
7
|
import { VENICE_DEFAULT_MODEL_ID, VENICE_DEFAULT_MODEL_REF, VENICE_MODEL_IDS, VENICE_MODEL_REFS, buildVeniceModelCapabilityOverrides } from "./venice-models.js";
|
|
9
8
|
import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF, VERCEL_AI_GATEWAY_MODEL_IDS, VERCEL_AI_GATEWAY_MODEL_REFS, buildVercelAiGatewayModelCapabilityOverrides } from "./vercel-ai-gateway-models.js";
|
|
10
9
|
import { XIAOMI_MODEL_IDS, buildXiaomiModelCapabilityOverrides } from "./xiaomi-models.js";
|
|
10
|
+
import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID, LITELLM_MODEL_IDS, LITELLM_MODEL_REFS } from "./litellm-models.js";
|
|
11
11
|
|
|
12
12
|
//#region src/providers/registry.ts
|
|
13
13
|
const PROVIDER_BRAND_ORDER = [
|
|
@@ -112,7 +112,18 @@ const OPENAI_API_MODEL_IDS = [
|
|
|
112
112
|
"gpt-5.6-luna",
|
|
113
113
|
"gpt-5.5"
|
|
114
114
|
];
|
|
115
|
-
const OPENAI_SIGN_IN_MODEL_IDS = [
|
|
115
|
+
const OPENAI_SIGN_IN_MODEL_IDS = [
|
|
116
|
+
"gpt-5.6-sol",
|
|
117
|
+
"gpt-5.6-terra",
|
|
118
|
+
"gpt-5.6-luna",
|
|
119
|
+
"gpt-5.5"
|
|
120
|
+
];
|
|
121
|
+
const OPENAI_SIGN_IN_LEGACY_RUNTIME_MODEL_IDS = [
|
|
122
|
+
"gpt-5.3-codex",
|
|
123
|
+
"gpt-5.3-codex-spark",
|
|
124
|
+
"gpt-5.4",
|
|
125
|
+
"gpt-5.4-mini"
|
|
126
|
+
];
|
|
116
127
|
const OPENAI_API_MODEL_REFS = OPENAI_API_MODEL_IDS.map((id) => `${OPENAI_API_ROUTE_ID}/${id}`);
|
|
117
128
|
const OPENAI_SIGN_IN_MODEL_REFS = OPENAI_SIGN_IN_MODEL_IDS.map((id) => `${OPENAI_CODEX_ROUTE_ID}/${id}`);
|
|
118
129
|
const ANTHROPIC_MODEL_IDS = [
|
|
@@ -218,7 +229,6 @@ const BYTEPLUS_CODING_MODEL_IDS = [
|
|
|
218
229
|
];
|
|
219
230
|
const BYTEPLUS_CODING_MODEL_REFS = BYTEPLUS_CODING_MODEL_IDS.flatMap((id) => [`${BYTEPLUS_CODING_ROUTE_ID}/${id}`, `${BYTEPLUS_PLAN_ROUTE_ID}/${id}`]);
|
|
220
231
|
const OPENROUTER_MODEL_IDS = [
|
|
221
|
-
"openrouter/owl-alpha",
|
|
222
232
|
"openai/gpt-5.6-sol",
|
|
223
233
|
"openai/gpt-5.6-terra",
|
|
224
234
|
"openai/gpt-5.6-luna",
|
|
@@ -412,7 +422,6 @@ const SYNTHETIC_MODEL_CAPABILITY_OVERRIDES = buildSyntheticModelCapabilityOverri
|
|
|
412
422
|
const TOGETHER_MODEL_CAPABILITY_OVERRIDES = buildTogetherModelCapabilityOverrides(TOGETHER_ROUTE_ID);
|
|
413
423
|
const HUGGINGFACE_MODEL_CAPABILITY_OVERRIDES = buildHuggingfaceModelCapabilityOverrides(HUGGINGFACE_ROUTE_ID);
|
|
414
424
|
const VENICE_MODEL_CAPABILITY_OVERRIDES = buildVeniceModelCapabilityOverrides(VENICE_ROUTE_ID);
|
|
415
|
-
const LITELLM_MODEL_CAPABILITY_OVERRIDES = buildLitellmModelCapabilityOverrides(LITELLM_ROUTE_ID);
|
|
416
425
|
const CLOUDFLARE_AI_GATEWAY_MODEL_CAPABILITY_OVERRIDES = buildCloudflareAiGatewayModelCapabilityOverrides(CLOUDFLARE_AI_GATEWAY_ROUTE_ID);
|
|
417
426
|
const CUSTOM_PROVIDER_MODEL_REFS = [];
|
|
418
427
|
function parseModelRef(ref) {
|
|
@@ -1427,12 +1436,12 @@ const LITELLM_PROVIDER_MANIFEST = {
|
|
|
1427
1436
|
hint: "LiteLLM Proxy virtual key or master key plus /v1 base URL"
|
|
1428
1437
|
}],
|
|
1429
1438
|
models: {
|
|
1430
|
-
recommended: [
|
|
1439
|
+
recommended: [],
|
|
1431
1440
|
dynamic: true,
|
|
1432
1441
|
operatorCatalog: true,
|
|
1433
1442
|
routeRules: { [LITELLM_ROUTE_ID]: [`${LITELLM_ROUTE_ID}/*`] }
|
|
1434
1443
|
},
|
|
1435
|
-
modelCapabilities:
|
|
1444
|
+
modelCapabilities: {}
|
|
1436
1445
|
};
|
|
1437
1446
|
const CLOUDFLARE_AI_GATEWAY_PROVIDER_MANIFEST = {
|
|
1438
1447
|
id: CLOUDFLARE_AI_GATEWAY_PROVIDER_BRAND_ID,
|
|
@@ -1515,6 +1524,7 @@ const PROVIDER_MANIFEST_BY_ROUTE = new Map(PROVIDER_REGISTRY.flatMap((entry) =>
|
|
|
1515
1524
|
const STANDARD_PROVIDER_MODEL_REFS = new Set(PROVIDER_REGISTRY.flatMap((entry) => entry.models.recommended.map((ref) => ref.toLowerCase())));
|
|
1516
1525
|
const PROVIDER_MODEL_CAPABILITY_BY_REF = new Map(PROVIDER_REGISTRY.flatMap((entry) => Object.entries(entry.modelCapabilities ?? {}).map(([ref, capability]) => [ref.toLowerCase(), capability])));
|
|
1517
1526
|
const OPENAI_SIGN_IN_MODEL_ID_SET = new Set(OPENAI_SIGN_IN_MODEL_IDS);
|
|
1527
|
+
const OPENAI_SIGN_IN_RUNTIME_MODEL_ID_SET = new Set([...OPENAI_SIGN_IN_MODEL_IDS, ...OPENAI_SIGN_IN_LEGACY_RUNTIME_MODEL_IDS]);
|
|
1518
1528
|
function listProviderBrandManifests() {
|
|
1519
1529
|
return [...PROVIDER_REGISTRY];
|
|
1520
1530
|
}
|
|
@@ -1535,6 +1545,9 @@ function isOpenAIProviderRoute(provider) {
|
|
|
1535
1545
|
return normalized === OPENAI_API_ROUTE_ID || normalized === OPENAI_CODEX_ROUTE_ID;
|
|
1536
1546
|
}
|
|
1537
1547
|
function isOpenAISignInRuntimeModelSupported(id) {
|
|
1548
|
+
return OPENAI_SIGN_IN_RUNTIME_MODEL_ID_SET.has(id.trim().toLowerCase());
|
|
1549
|
+
}
|
|
1550
|
+
function isOpenAISignInCatalogModel(id) {
|
|
1538
1551
|
return OPENAI_SIGN_IN_MODEL_ID_SET.has(id.trim().toLowerCase());
|
|
1539
1552
|
}
|
|
1540
1553
|
function lookupProviderManifestModelCapability(provider, model) {
|
|
@@ -1567,6 +1580,17 @@ function isStandardProviderModelRef(ref) {
|
|
|
1567
1580
|
}
|
|
1568
1581
|
return STANDARD_PROVIDER_MODEL_REFS.has(value.toLowerCase());
|
|
1569
1582
|
}
|
|
1583
|
+
function providerModelRecommendationRank(provider, model) {
|
|
1584
|
+
const manifest = getProviderBrandManifestForRoute(provider);
|
|
1585
|
+
if (!manifest) {
|
|
1586
|
+
return undefined;
|
|
1587
|
+
}
|
|
1588
|
+
const normalizedProvider = provider.trim().toLowerCase();
|
|
1589
|
+
const normalizedRef = `${normalizedProvider}/${model.trim().toLowerCase()}`;
|
|
1590
|
+
const routeRecommendations = manifest.models.recommended.filter((ref) => ref.trim().toLowerCase().startsWith(`${normalizedProvider}/`));
|
|
1591
|
+
const index = routeRecommendations.findIndex((ref) => ref.trim().toLowerCase() === normalizedRef);
|
|
1592
|
+
return index >= 0 ? index + 1 : undefined;
|
|
1593
|
+
}
|
|
1570
1594
|
function isStandardProviderCatalogEntry(entry) {
|
|
1571
1595
|
const provider = entry.provider.trim();
|
|
1572
1596
|
const id = entry.id.trim();
|
|
@@ -1577,4 +1601,4 @@ function isStandardProviderCatalogEntry(entry) {
|
|
|
1577
1601
|
}
|
|
1578
1602
|
|
|
1579
1603
|
//#endregion
|
|
1580
|
-
export { ANTHROPIC_MODEL_IDS, ANTHROPIC_PROVIDER_BRAND_ID, ANTHROPIC_PROVIDER_MANIFEST, ANTHROPIC_ROUTE_ID, BYTEPLUS_CODING_MODEL_IDS, BYTEPLUS_CODING_MODEL_REFS, BYTEPLUS_CODING_ROUTE_ID, BYTEPLUS_MODEL_IDS, BYTEPLUS_MODEL_REFS, BYTEPLUS_PLAN_ROUTE_ID, BYTEPLUS_PROVIDER_BRAND_ID, BYTEPLUS_ROUTE_ID, CHUTES_MODEL_IDS, CHUTES_PROVIDER_BRAND_ID, CHUTES_ROUTE_ID, COPILOT_PROVIDER_BRAND_ID, COPILOT_PROXY_MODEL_IDS, COPILOT_PROXY_MODEL_REFS, COPILOT_PROXY_ROUTE_ID, CUSTOM_PROVIDER_BRAND_ID, CUSTOM_PROVIDER_ROUTE_ID, GITHUB_COPILOT_DEFAULT_MODEL_REF, GITHUB_COPILOT_MODEL_IDS, GITHUB_COPILOT_MODEL_REFS, GITHUB_COPILOT_ROUTE_ID, GOOGLE_API_MODEL_REFS, GOOGLE_API_ROUTE_ID, GOOGLE_GEMINI_CLI_MODEL_REFS, GOOGLE_GEMINI_CLI_ROUTE_ID, GOOGLE_GEMINI_MODEL_IDS, GOOGLE_PROVIDER_BRAND_ID, HUGGINGFACE_PROVIDER_BRAND_ID, HUGGINGFACE_ROUTE_ID, KIMI_CODING_MODEL_IDS, KIMI_CODING_ROUTE_ID, LITELLM_PROVIDER_BRAND_ID, LITELLM_ROUTE_ID, LMSTUDIO_PROVIDER_BRAND_ID, LMSTUDIO_ROUTE_ID, MINIMAX_API_ROUTE_ID, MINIMAX_CN_ROUTE_ID, MINIMAX_MODEL_IDS, MINIMAX_PORTAL_ROUTE_ID, MINIMAX_PROVIDER_BRAND_ID, MISTRAL_MODEL_IDS, MISTRAL_MODEL_REFS, MISTRAL_PROVIDER_BRAND_ID, MISTRAL_ROUTE_ID, MOONSHOT_MODEL_IDS, MOONSHOT_PROVIDER_BRAND_ID, MOONSHOT_ROUTE_ID, OLLAMA_PROVIDER_BRAND_ID, OLLAMA_ROUTE_ID, OPENAI_API_MODEL_IDS, OPENAI_API_MODEL_REFS, OPENAI_API_ROUTE_ID, OPENAI_CODEX_ROUTE_ID, OPENAI_PROVIDER_BRAND_ID, OPENAI_SIGN_IN_MODEL_IDS, OPENAI_SIGN_IN_MODEL_REFS, OPENCODE_ZEN_PROVIDER_BRAND_ID, OPENCODE_ZEN_ROUTE_ID, OPENROUTER_MODEL_IDS, OPENROUTER_MODEL_REFS, OPENROUTER_PROVIDER_BRAND_ID, OPENROUTER_ROUTE_ID, PROVIDER_BRAND_ORDER, QIANFAN_MODEL_IDS, QIANFAN_MODEL_REFS, QIANFAN_PROVIDER_BRAND_ID, QIANFAN_ROUTE_ID, QWEN_API_MODEL_IDS, QWEN_API_ROUTE_ID, QWEN_CODING_PLAN_MODEL_IDS, QWEN_CODING_PLAN_ROUTE_ID, QWEN_PROVIDER_BRAND_ID, SYNTHETIC_MODEL_REFS, SYNTHETIC_PROVIDER_BRAND_ID, SYNTHETIC_ROUTE_ID, TOGETHER_PROVIDER_BRAND_ID, TOGETHER_ROUTE_ID, VENICE_PROVIDER_BRAND_ID, VENICE_ROUTE_ID, VERCEL_AI_GATEWAY_PROVIDER_BRAND_ID, VERCEL_AI_GATEWAY_ROUTE_ID, VLLM_PROVIDER_BRAND_ID, VLLM_ROUTE_ID, VOLCENGINE_CODING_MODEL_IDS, VOLCENGINE_CODING_MODEL_REFS, VOLCENGINE_CODING_ROUTE_ID, VOLCENGINE_MODEL_IDS, VOLCENGINE_MODEL_REFS, VOLCENGINE_PLAN_ROUTE_ID, VOLCENGINE_PROVIDER_BRAND_ID, VOLCENGINE_ROUTE_ID, XAI_MODEL_IDS, XAI_MODEL_REFS, XAI_PROVIDER_BRAND_ID, XAI_ROUTE_ID, XIAOMI_MODEL_REFS, XIAOMI_PROVIDER_BRAND_ID, XIAOMI_ROUTE_ID, ZAI_MODEL_IDS, ZAI_MODEL_REFS, ZAI_PROVIDER_BRAND_ID, ZAI_ROUTE_ID, getProviderBrandManifestForRoute, isOpenAISignInRuntimeModelSupported, isStandardProviderCatalogEntry, isStandardProviderModelRef, listProviderBrandManifests, lookupProviderManifestModelCapability, resolveProviderRouteModelCapability };
|
|
1604
|
+
export { ANTHROPIC_MODEL_IDS, ANTHROPIC_PROVIDER_BRAND_ID, ANTHROPIC_PROVIDER_MANIFEST, ANTHROPIC_ROUTE_ID, BYTEPLUS_CODING_MODEL_IDS, BYTEPLUS_CODING_MODEL_REFS, BYTEPLUS_CODING_ROUTE_ID, BYTEPLUS_MODEL_IDS, BYTEPLUS_MODEL_REFS, BYTEPLUS_PLAN_ROUTE_ID, BYTEPLUS_PROVIDER_BRAND_ID, BYTEPLUS_ROUTE_ID, CHUTES_MODEL_IDS, CHUTES_PROVIDER_BRAND_ID, CHUTES_ROUTE_ID, COPILOT_PROVIDER_BRAND_ID, COPILOT_PROXY_MODEL_IDS, COPILOT_PROXY_MODEL_REFS, COPILOT_PROXY_ROUTE_ID, CUSTOM_PROVIDER_BRAND_ID, CUSTOM_PROVIDER_ROUTE_ID, GITHUB_COPILOT_DEFAULT_MODEL_REF, GITHUB_COPILOT_MODEL_IDS, GITHUB_COPILOT_MODEL_REFS, GITHUB_COPILOT_ROUTE_ID, GOOGLE_API_MODEL_REFS, GOOGLE_API_ROUTE_ID, GOOGLE_GEMINI_CLI_MODEL_REFS, GOOGLE_GEMINI_CLI_ROUTE_ID, GOOGLE_GEMINI_MODEL_IDS, GOOGLE_PROVIDER_BRAND_ID, HUGGINGFACE_PROVIDER_BRAND_ID, HUGGINGFACE_ROUTE_ID, KIMI_CODING_MODEL_IDS, KIMI_CODING_ROUTE_ID, LITELLM_PROVIDER_BRAND_ID, LITELLM_ROUTE_ID, LMSTUDIO_PROVIDER_BRAND_ID, LMSTUDIO_ROUTE_ID, MINIMAX_API_ROUTE_ID, MINIMAX_CN_ROUTE_ID, MINIMAX_MODEL_IDS, MINIMAX_PORTAL_ROUTE_ID, MINIMAX_PROVIDER_BRAND_ID, MISTRAL_MODEL_IDS, MISTRAL_MODEL_REFS, MISTRAL_PROVIDER_BRAND_ID, MISTRAL_ROUTE_ID, MOONSHOT_MODEL_IDS, MOONSHOT_PROVIDER_BRAND_ID, MOONSHOT_ROUTE_ID, OLLAMA_PROVIDER_BRAND_ID, OLLAMA_ROUTE_ID, OPENAI_API_MODEL_IDS, OPENAI_API_MODEL_REFS, OPENAI_API_ROUTE_ID, OPENAI_CODEX_ROUTE_ID, OPENAI_PROVIDER_BRAND_ID, OPENAI_SIGN_IN_MODEL_IDS, OPENAI_SIGN_IN_MODEL_REFS, OPENCODE_ZEN_PROVIDER_BRAND_ID, OPENCODE_ZEN_ROUTE_ID, OPENROUTER_MODEL_IDS, OPENROUTER_MODEL_REFS, OPENROUTER_PROVIDER_BRAND_ID, OPENROUTER_ROUTE_ID, PROVIDER_BRAND_ORDER, QIANFAN_MODEL_IDS, QIANFAN_MODEL_REFS, QIANFAN_PROVIDER_BRAND_ID, QIANFAN_ROUTE_ID, QWEN_API_MODEL_IDS, QWEN_API_ROUTE_ID, QWEN_CODING_PLAN_MODEL_IDS, QWEN_CODING_PLAN_ROUTE_ID, QWEN_PROVIDER_BRAND_ID, SYNTHETIC_MODEL_REFS, SYNTHETIC_PROVIDER_BRAND_ID, SYNTHETIC_ROUTE_ID, TOGETHER_PROVIDER_BRAND_ID, TOGETHER_ROUTE_ID, VENICE_PROVIDER_BRAND_ID, VENICE_ROUTE_ID, VERCEL_AI_GATEWAY_PROVIDER_BRAND_ID, VERCEL_AI_GATEWAY_ROUTE_ID, VLLM_PROVIDER_BRAND_ID, VLLM_ROUTE_ID, VOLCENGINE_CODING_MODEL_IDS, VOLCENGINE_CODING_MODEL_REFS, VOLCENGINE_CODING_ROUTE_ID, VOLCENGINE_MODEL_IDS, VOLCENGINE_MODEL_REFS, VOLCENGINE_PLAN_ROUTE_ID, VOLCENGINE_PROVIDER_BRAND_ID, VOLCENGINE_ROUTE_ID, XAI_MODEL_IDS, XAI_MODEL_REFS, XAI_PROVIDER_BRAND_ID, XAI_ROUTE_ID, XIAOMI_MODEL_REFS, XIAOMI_PROVIDER_BRAND_ID, XIAOMI_ROUTE_ID, ZAI_MODEL_IDS, ZAI_MODEL_REFS, ZAI_PROVIDER_BRAND_ID, ZAI_ROUTE_ID, getProviderBrandManifestForRoute, isOpenAISignInCatalogModel, isOpenAISignInRuntimeModelSupported, isStandardProviderCatalogEntry, isStandardProviderModelRef, listProviderBrandManifests, lookupProviderManifestModelCapability, providerModelRecommendationRank, resolveProviderRouteModelCapability };
|