| 1 | //! Static provider model-name and base-URL constants. |
| 2 | //! |
| 3 | //! These are pure data tables (default model identifiers, base URLs, and |
| 4 | //! curated model lists) extracted verbatim from `config.rs` to keep the |
| 5 | //! configuration monolith focused on loading/normalization logic. They are |
| 6 | //! re-exported from `crate::config` via `pub use models::*;`, so every existing |
| 7 | //! `crate::config::<CONST>` path keeps resolving unchanged (#3311). |
| 8 | |
| 9 | pub const DEFAULT_TEXT_MODEL: &str = "deepseek-flash"; |
| 10 | pub const DEFAULT_DEEPSEEK_BASE_URL: &str = "https://api.deepseek.com/beta"; |
| 11 | pub const DEFAULT_DEEPSEEK_ANTHROPIC_MODEL: &str = DEFAULT_TEXT_MODEL; |
| 12 | pub const DEFAULT_DEEPSEEK_ANTHROPIC_BASE_URL: &str = "https://api.deepseek.com/anthropic"; |
| 13 | pub const DEFAULT_NVIDIA_NIM_MODEL: &str = "deepseek-ai/deepseek-v4-pro"; |
| 14 | pub const DEFAULT_NVIDIA_NIM_FLASH_MODEL: &str = "deepseek-ai/deepseek-v4-flash"; |
| 15 | pub const DEFAULT_NVIDIA_NIM_BASE_URL: &str = "https://integrate.api.nvidia.com/v1"; |
| 16 | pub const DEFAULT_OPENAI_MODEL: &str = codewhale_config::provider::OPENAI_DEFAULT_MODEL; |
| 17 | pub const DEFAULT_OPENAI_BASE_URL: &str = "https://api.openai.com/v1"; |
| 18 | pub const DEFAULT_ATLASCLOUD_MODEL: &str = "deepseek-ai/deepseek-v4-flash"; |
| 19 | pub const DEFAULT_ATLASCLOUD_BASE_URL: &str = "https://api.atlascloud.ai/v1"; |
| 20 | pub const DEFAULT_WANJIE_ARK_MODEL: &str = "deepseek-reasoner"; |
| 21 | pub const DEFAULT_VOLCENGINE_MODEL: &str = "DeepSeek-V4-Pro"; |
| 22 | pub const DEFAULT_VOLCENGINE_FLASH_MODEL: &str = "DeepSeek-V4-Flash"; |
| 23 | pub const DEFAULT_VOLCENGINE_BASE_URL: &str = "https://ark.cn-beijing.volces.com/api/coding/v3"; |
| 24 | pub const DEFAULT_WANJIE_ARK_BASE_URL: &str = "https://maas-openapi.wanjiedata.com/api/v1"; |
| 25 | pub const DEFAULT_OPENROUTER_MODEL: &str = "deepseek/deepseek-v4-pro"; |
| 26 | pub const DEFAULT_OPENROUTER_FLASH_MODEL: &str = "deepseek/deepseek-v4-flash"; |
| 27 | pub const DEFAULT_ORCAROUTER_MODEL: &str = "deepseek/deepseek-v4-pro"; |
| 28 | pub const DEFAULT_ORCAROUTER_FLASH_MODEL: &str = "deepseek/deepseek-v4-flash"; |
| 29 | pub const OPENROUTER_ARCEE_TRINITY_LARGE_THINKING_MODEL: &str = "arcee-ai/trinity-large-thinking"; |
| 30 | pub const OPENROUTER_GEMMA_4_31B_MODEL: &str = "google/gemma-4-31b-it"; |
| 31 | pub const OPENROUTER_GEMMA_4_26B_A4B_MODEL: &str = "google/gemma-4-26b-a4b-it"; |
| 32 | pub const OPENROUTER_GLM_5_1_MODEL: &str = "z-ai/glm-5.1"; |
| 33 | pub const OPENROUTER_GLM_5_2_MODEL: &str = "z-ai/glm-5.2"; |
| 34 | pub const OPENROUTER_GLM_5_3_MODEL: &str = "z-ai/glm-5.3"; |
| 35 | pub const OPENROUTER_GLM_5_3_FLASH_MODEL: &str = "z-ai/glm-5.3-flash"; |
| 36 | pub const OPENROUTER_GLM_5_TURBO_MODEL: &str = "z-ai/glm-5-turbo"; |
| 37 | pub const OPENROUTER_KIMI_K2_7_CODE_MODEL: &str = "moonshotai/kimi-k2.7-code"; |
| 38 | pub const OPENROUTER_KIMI_K2_6_MODEL: &str = "moonshotai/kimi-k2.6"; |
| 39 | pub const OPENROUTER_MINIMAX_M3_MODEL: &str = "minimax/minimax-m3"; |
| 40 | pub const OPENROUTER_NEMOTRON_3_NANO_OMNI_MODEL: &str = |
| 41 | "nvidia/nemotron-3-nano-omni-30b-a3b-reasoning:free"; |
| 42 | pub const OPENROUTER_QWEN_3_6_FLASH_MODEL: &str = "qwen/qwen3.6-flash"; |
| 43 | pub const OPENROUTER_QWEN_3_6_35B_A3B_MODEL: &str = "qwen/qwen3.6-35b-a3b"; |
| 44 | pub const OPENROUTER_QWEN_3_6_MAX_PREVIEW_MODEL: &str = "qwen/qwen3.6-max-preview"; |
| 45 | pub const OPENROUTER_QWEN_3_6_27B_MODEL: &str = "qwen/qwen3.6-27b"; |
| 46 | pub const OPENROUTER_QWEN_3_6_PLUS_MODEL: &str = "qwen/qwen3.6-plus"; |
| 47 | pub const OPENROUTER_QWEN_3_7_PLUS_MODEL: &str = "qwen/qwen3.7-plus"; |
| 48 | pub const OPENROUTER_QWEN_3_7_MAX_MODEL: &str = "qwen/qwen3.7-max"; |
| 49 | pub const OPENROUTER_QWEN_3_8_FLASH_MODEL: &str = "qwen/qwen3.8-flash"; |
| 50 | pub const OPENROUTER_MINIMAX_M2_7_MODEL: &str = "minimax/minimax-m2.7"; |
| 51 | pub const OPENROUTER_NEMOTRON_3_ULTRA_MODEL: &str = "nvidia/nemotron-3-ultra-550b-a55b"; |
| 52 | pub const OPENROUTER_TENCENT_HY3_PREVIEW_MODEL: &str = "tencent/hy3-preview"; |
| 53 | pub const OPENROUTER_XIAOMI_MIMO_V2_5_PRO_MODEL: &str = "xiaomi/mimo-v2.5-pro"; |
| 54 | pub const OPENROUTER_XIAOMI_MIMO_V2_5_MODEL: &str = "xiaomi/mimo-v2.5"; |
| 55 | pub const RECENT_OPENROUTER_LARGE_MODELS: &[&str] = &[ |
| 56 | OPENROUTER_ARCEE_TRINITY_LARGE_THINKING_MODEL, |
| 57 | OPENROUTER_MINIMAX_M3_MODEL, |
| 58 | OPENROUTER_XIAOMI_MIMO_V2_5_PRO_MODEL, |
| 59 | OPENROUTER_XIAOMI_MIMO_V2_5_MODEL, |
| 60 | OPENROUTER_QWEN_3_6_FLASH_MODEL, |
| 61 | OPENROUTER_QWEN_3_6_35B_A3B_MODEL, |
| 62 | OPENROUTER_QWEN_3_6_MAX_PREVIEW_MODEL, |
| 63 | OPENROUTER_QWEN_3_6_27B_MODEL, |
| 64 | OPENROUTER_QWEN_3_6_PLUS_MODEL, |
| 65 | OPENROUTER_QWEN_3_7_PLUS_MODEL, |
| 66 | OPENROUTER_QWEN_3_7_MAX_MODEL, |
| 67 | OPENROUTER_QWEN_3_8_FLASH_MODEL, |
| 68 | OPENROUTER_MINIMAX_M2_7_MODEL, |
| 69 | OPENROUTER_NEMOTRON_3_ULTRA_MODEL, |
| 70 | OPENROUTER_KIMI_K2_7_CODE_MODEL, |
| 71 | OPENROUTER_KIMI_K2_6_MODEL, |
| 72 | OPENROUTER_GLM_5_1_MODEL, |
| 73 | OPENROUTER_GLM_5_2_MODEL, |
| 74 | OPENROUTER_GLM_5_3_MODEL, |
| 75 | OPENROUTER_GLM_5_3_FLASH_MODEL, |
| 76 | OPENROUTER_TENCENT_HY3_PREVIEW_MODEL, |
| 77 | OPENROUTER_GEMMA_4_31B_MODEL, |
| 78 | OPENROUTER_GEMMA_4_26B_A4B_MODEL, |
| 79 | OPENROUTER_NEMOTRON_3_NANO_OMNI_MODEL, |
| 80 | ]; |
| 81 | pub const DEFAULT_OPENROUTER_BASE_URL: &str = "https://openrouter.ai/api/v1"; |
| 82 | pub const DEFAULT_ORCAROUTER_BASE_URL: &str = "https://api.orcarouter.ai/v1"; |
| 83 | pub const DEFAULT_XIAOMI_MIMO_MODEL: &str = "mimo-v2.5-pro"; |
| 84 | pub const XIAOMI_MIMO_V2_5_PRO_ULTRASPEED_MODEL: &str = "mimo-v2.5-pro-ultraspeed"; |
| 85 | pub const XIAOMI_MIMO_PAY_AS_YOU_GO_BASE_URL: &str = "https://api.xiaomimimo.com/v1"; |
| 86 | pub const DEFAULT_XIAOMI_MIMO_BASE_URL: &str = "https://token-plan-sgp.xiaomimimo.com/v1"; |
| 87 | pub const XIAOMI_MIMO_TOKEN_PLAN_CN_BASE_URL: &str = "https://token-plan-cn.xiaomimimo.com/v1"; |
| 88 | pub const XIAOMI_MIMO_TOKEN_PLAN_SGP_BASE_URL: &str = DEFAULT_XIAOMI_MIMO_BASE_URL; |
| 89 | pub const XIAOMI_MIMO_TOKEN_PLAN_AMS_BASE_URL: &str = "https://token-plan-ams.xiaomimimo.com/v1"; |
| 90 | pub const XIAOMI_MIMO_V2_5_OMNI_MODEL: &str = "mimo-v2.5"; |
| 91 | pub const XIAOMI_MIMO_ASR_MODEL: &str = "mimo-v2.5-asr"; |
| 92 | pub const XIAOMI_MIMO_TTS_MODEL: &str = "mimo-v2.5-tts"; |
| 93 | pub const XIAOMI_MIMO_TTS_VOICE_DESIGN_MODEL: &str = "mimo-v2.5-tts-voicedesign"; |
| 94 | pub const XIAOMI_MIMO_TTS_VOICE_CLONE_MODEL: &str = "mimo-v2.5-tts-voiceclone"; |
| 95 | pub const XIAOMI_MIMO_V2_TTS_MODEL: &str = "mimo-v2-tts"; |
| 96 | pub const DEFAULT_NOVITA_MODEL: &str = "deepseek/deepseek-v4-pro"; |
| 97 | pub const DEFAULT_NOVITA_FLASH_MODEL: &str = "deepseek/deepseek-v4-flash"; |
| 98 | pub const DEFAULT_NOVITA_BASE_URL: &str = "https://api.novita.ai/openai/v1"; |
| 99 | pub const DEFAULT_FIREWORKS_MODEL: &str = "accounts/fireworks/models/deepseek-v4-pro"; |
| 100 | pub const DEFAULT_FIREWORKS_BASE_URL: &str = "https://api.fireworks.ai/inference/v1"; |
| 101 | pub const DEFAULT_SILICONFLOW_MODEL: &str = "deepseek-ai/DeepSeek-V4-Pro"; |
| 102 | pub const DEFAULT_SILICONFLOW_FLASH_MODEL: &str = "deepseek-ai/DeepSeek-V4-Flash"; |
| 103 | pub const DEFAULT_SILICONFLOW_BASE_URL: &str = "https://api.siliconflow.com/v1"; |
| 104 | pub const DEFAULT_SILICONFLOW_CN_BASE_URL: &str = "https://api.siliconflow.cn/v1"; |
| 105 | pub const DEFAULT_ARCEE_MODEL: &str = "trinity-large-thinking"; |
| 106 | pub const ARCEE_TRINITY_LARGE_PREVIEW_MODEL: &str = "trinity-large-preview"; |
| 107 | pub const ARCEE_TRINITY_MINI_MODEL: &str = "trinity-mini"; |
| 108 | pub const DEFAULT_ARCEE_BASE_URL: &str = "https://api.arcee.ai/api/v1"; |
| 109 | pub const DEFAULT_MOONSHOT_MODEL: &str = "kimi-k2.7-code"; |
| 110 | /// Moonshot's direct pay-as-you-go K3 wire model id. |
| 111 | pub const MOONSHOT_KIMI_K3_MODEL: &str = "kimi-k3"; |
| 112 | pub const MOONSHOT_KIMI_K2_6_MODEL: &str = "kimi-k2.6"; |
| 113 | pub const DEFAULT_MOONSHOT_BASE_URL: &str = "https://api.moonshot.ai/v1"; |
| 114 | pub const DEFAULT_KIMI_CODE_MODEL: &str = "kimi-for-coding"; |
| 115 | pub const DEFAULT_KIMI_CODE_BASE_URL: &str = "https://api.kimi.com/coding/v1"; |
| 116 | pub const KIMI_CODE_MEMBERSHIP_PLAN_CONSOLE_URL: &str = |
| 117 | codewhale_config::provider::KIMI_CODE_MEMBERSHIP_PLAN_CONSOLE_URL; |
| 118 | /// Official Kimi Code route model id. It is deliberately distinct from |
| 119 | /// Moonshot's pay-as-you-go `kimi-k3` catalog id. |
| 120 | pub const KIMI_CODE_K3_MODEL: &str = "k3"; |
| 121 | /// Official fixed-256K Kimi Code K3 wire model id. This is a distinct |
| 122 | /// membership-route model, not a client-side context alias for `k3`. |
| 123 | pub const KIMI_CODE_K3_256K_MODEL: &str = "k3-256k"; |
| 124 | /// Kimi Code membership high-speed wire model id. Membership route only, not |
| 125 | /// a direct Moonshot platform catalog model. |
| 126 | pub const KIMI_CODE_HIGHSPEED_MODEL: &str = "kimi-for-coding-highspeed"; |
| 127 | // The K3 contract constants (`KIMI_CODE_K3_CONTEXT_WINDOW_TOKENS`, |
| 128 | // `KIMI_K3_CONTEXT_WINDOW_TOKENS`, and the distinct default/direct output |
| 129 | // limits) live in `codewhale_models` — the model-facts table, which also compiles |
| 130 | // standalone in integration tests — so the facts have exactly one home. |
| 131 | // Re-export only the route-owned floor, which existing `crate::config` call |
| 132 | // sites import. |
| 133 | pub use codewhale_models::KIMI_CODE_K3_CONTEXT_WINDOW_TOKENS; |
| 134 | pub const DEFAULT_SGLANG_MODEL: &str = "deepseek-ai/DeepSeek-V4-Pro"; |
| 135 | pub const DEFAULT_SGLANG_FLASH_MODEL: &str = "deepseek-ai/DeepSeek-V4-Flash"; |
| 136 | pub const DEFAULT_SGLANG_BASE_URL: &str = "http://localhost:30000/v1"; |
| 137 | pub const DEFAULT_VLLM_MODEL: &str = "deepseek-ai/DeepSeek-V4-Pro"; |
| 138 | pub const DEFAULT_VLLM_FLASH_MODEL: &str = "deepseek-ai/DeepSeek-V4-Flash"; |
| 139 | pub const DEFAULT_VLLM_BASE_URL: &str = "http://localhost:8000/v1"; |
| 140 | /// Unresolved local-Ollama default. A live provider-catalog refresh must |
| 141 | /// replace this with a tag `GET /v1/models` actually returned. Do not send |
| 142 | /// this string as a model id. |
| 143 | pub const DEFAULT_OLLAMA_MODEL: &str = "unknown"; |
| 144 | |
| 145 | /// True when `model` is the pre-refresh local-Ollama placeholder, not a tag. |
| 146 | #[must_use] |
| 147 | pub fn is_unresolved_local_ollama_model(model: &str) -> bool { |
| 148 | model.trim().eq_ignore_ascii_case(DEFAULT_OLLAMA_MODEL) |
| 149 | } |
| 150 | pub const DEFAULT_OLLAMA_BASE_URL: &str = "http://localhost:11434/v1"; |
| 151 | pub const DEFAULT_OLLAMA_CLOUD_MODEL: &str = "gpt-oss:120b"; |
| 152 | pub const DEFAULT_OLLAMA_CLOUD_BASE_URL: &str = codewhale_config::provider::OLLAMA_CLOUD_BASE_URL; |
| 153 | pub const DEFAULT_HUGGINGFACE_MODEL: &str = "deepseek-ai/DeepSeek-V4-Pro"; |
| 154 | pub const DEFAULT_HUGGINGFACE_FLASH_MODEL: &str = "deepseek-ai/DeepSeek-V4-Flash"; |
| 155 | pub const DEFAULT_HUGGINGFACE_BASE_URL: &str = "https://router.huggingface.co/v1"; |
| 156 | pub const DEFAULT_MODELSCOPE_MODEL: &str = "Qwen/Qwen3.5-397B-A17B"; |
| 157 | pub const DEFAULT_MODELSCOPE_BASE_URL: &str = "https://api-inference.modelscope.cn/v1"; |
| 158 | pub const DEFAULT_DEEPINFRA_MODEL: &str = "deepseek-ai/DeepSeek-V4-Pro"; |
| 159 | pub const DEFAULT_DEEPINFRA_FLASH_MODEL: &str = "deepseek-ai/DeepSeek-V4-Flash"; |
| 160 | pub const DEFAULT_DEEPINFRA_BASE_URL: &str = "https://api.deepinfra.com/v1/openai"; |
| 161 | pub const DEFAULT_TOGETHER_MODEL: &str = "deepseek-ai/DeepSeek-V4-Pro"; |
| 162 | pub const DEFAULT_TOGETHER_FLASH_MODEL: &str = "deepseek-ai/DeepSeek-V4-Flash"; |
| 163 | pub const TOGETHER_INKLING_MODEL: &str = "thinkingmachines/inkling"; |
| 164 | pub const DEFAULT_TOGETHER_BASE_URL: &str = "https://api.together.xyz/v1"; |
| 165 | pub const DEFAULT_QIANFAN_MODEL: &str = "ernie-4.0-turbo-8k"; |
| 166 | pub const DEFAULT_QIANFAN_BASE_URL: &str = "https://api.baiduqianfan.ai/v1"; |
| 167 | pub const DEFAULT_OPENAI_CODEX_MODEL: &str = "gpt-5.6"; |
| 168 | pub const DEFAULT_OPENAI_CODEX_BASE_URL: &str = "https://chatgpt.com/backend-api"; |
| 169 | /// Conservative offline floor for an OAuth model absent from a fresh Codex |
| 170 | /// roster. Fresh account-scoped cache metadata overrides this in route_runtime. |
| 171 | pub const OPENAI_CODEX_EFFECTIVE_CONTEXT_WINDOW_TOKENS: u32 = 128_000; |
| 172 | /// Legacy `deepseek-cn` provider alias. |
| 173 | /// |
| 174 | /// DeepSeek's official API host is the same worldwide. Keep this alias for |
| 175 | /// old configs, but route it through the normal beta-enabled DeepSeek default. |
| 176 | /// Legacy typo hostname `api.deepseeki.com` remains recognized in URL |
| 177 | /// heuristics for backward compatibility. |
| 178 | pub const DEFAULT_DEEPSEEKCN_BASE_URL: &str = DEFAULT_DEEPSEEK_BASE_URL; |
| 179 | pub const COMMON_DEEPSEEK_MODELS: &[&str] = &[ |
| 180 | "deepseek-v4-pro", |
| 181 | "deepseek-v4-flash", |
| 182 | "deepseek-v4-flash-vision-exp", |
| 183 | "deepseek-ai/deepseek-v4-pro", |
| 184 | "deepseek-ai/deepseek-v4-flash", |
| 185 | "deepseek/deepseek-v4-pro", |
| 186 | "deepseek/deepseek-v4-flash", |
| 187 | ]; |
| 188 | pub const OFFICIAL_DEEPSEEK_MODELS: &[&str] = &[ |
| 189 | "deepseek-v4-pro", |
| 190 | // V4.1 Flash ships as the unversioned id `deepseek-flash`, verified live on |
| 191 | // api.deepseek.com /v1/models 2026-09-10 — the account roster returns |
| 192 | // exactly `deepseek-flash` and `deepseek-v4-pro`. The version number was |
| 193 | // dropped, so guessing `deepseek-v4.1-flash` would have been a dead route. |
| 194 | "deepseek-flash", |
| 195 | "deepseek-v4-flash", |
| 196 | // Vision-experimental sibling of v4-flash; verified live on |
| 197 | // api.deepseek.com /models 2026-08-21. Same family aliases apply. |
| 198 | "deepseek-v4-flash-vision-exp", |
| 199 | ]; |
| 200 | pub const OFFICIAL_OPENAI_MODELS: &[&str] = &[ |
| 201 | DEFAULT_OPENAI_MODEL, |
| 202 | "gpt-5.6-sol", |
| 203 | "gpt-5.6-terra", |
| 204 | "gpt-5.6-luna", |
| 205 | ]; |
| 206 | // GLM-5.3 is live on the Z.ai Coding Plan (2026-08-13) and is the default |
| 207 | // for new Z.ai routes. Limits and reasoning options still inherit from |
| 208 | // glm-5.2 until Z.ai publishes distinct 5.3 numbers; no USD price is |
| 209 | // claimed. Scope is first-party Z.ai plus its OpenRouter mirror only. |
| 210 | // Correct at crates/config/assets/models_dev.bundled.json |
| 211 | // `_meta.pending_release_metadata` when distinct 5.3 facts exist. |
| 212 | // Explicit GLM-5.2 selections keep their own id: only the default moved. |
| 213 | pub const DEFAULT_ZAI_MODEL: &str = ZAI_GLM_5_3_MODEL; |
| 214 | pub const ZAI_GLM_5_1_MODEL: &str = "GLM-5.1"; |
| 215 | pub const ZAI_GLM_5_2_MODEL: &str = "GLM-5.2"; |
| 216 | pub const ZAI_GLM_5_3_MODEL: &str = "GLM-5.3"; |
| 217 | pub const ZAI_GLM_5_3_FLASH_MODEL: &str = "GLM-5.3-Flash"; |
| 218 | pub const ZAI_GLM_5_TURBO_MODEL: &str = "GLM-5-Turbo"; |
| 219 | pub const DEFAULT_ZAI_BASE_URL: &str = "https://api.z.ai/api/coding/paas/v4"; |
| 220 | pub const DEFAULT_STEPFUN_MODEL: &str = "step-3.7-flash"; |
| 221 | pub const DEFAULT_STEPFUN_BASE_URL: &str = "https://api.stepfun.ai/v1"; |
| 222 | /// StepFun's Step Plan subscription endpoint. Billed against a plan allowance |
| 223 | /// rather than per-token, so it is a separate route from pay-as-you-go and is |
| 224 | /// never inferred — the user picks it during provider setup (#4526). |
| 225 | pub const DEFAULT_STEPFUN_PLAN_BASE_URL: &str = "https://api.stepfun.ai/step_plan/v1"; |
| 226 | pub const DEFAULT_ANTHROPIC_MODEL: &str = "claude-sonnet-4-6"; |
| 227 | pub const ANTHROPIC_OPUS_MODEL: &str = "claude-opus-4-8"; |
| 228 | pub const ANTHROPIC_HAIKU_MODEL: &str = "claude-haiku-4-5"; |
| 229 | pub const DEFAULT_ANTHROPIC_BASE_URL: &str = "https://api.anthropic.com"; |
| 230 | pub const DEFAULT_OPENMODEL_MODEL: &str = "deepseek-v4-flash"; |
| 231 | pub const DEFAULT_OPENMODEL_BASE_URL: &str = "https://api.openmodel.ai"; |
| 232 | pub const DEFAULT_MINIMAX_MODEL: &str = "MiniMax-M3"; |
| 233 | pub const MINIMAX_M2_7_MODEL: &str = "MiniMax-M2.7"; |
| 234 | pub const MINIMAX_M2_7_HIGHSPEED_MODEL: &str = "MiniMax-M2.7-highspeed"; |
| 235 | pub const MINIMAX_M2_5_MODEL: &str = "MiniMax-M2.5"; |
| 236 | pub const MINIMAX_M2_5_HIGHSPEED_MODEL: &str = "MiniMax-M2.5-highspeed"; |
| 237 | pub const MINIMAX_M2_1_MODEL: &str = "MiniMax-M2.1"; |
| 238 | pub const MINIMAX_M2_1_HIGHSPEED_MODEL: &str = "MiniMax-M2.1-highspeed"; |
| 239 | pub const MINIMAX_M2_MODEL: &str = "MiniMax-M2"; |
| 240 | pub const DEFAULT_MINIMAX_BASE_URL: &str = "https://api.minimax.io/v1"; |
| 241 | pub const DEFAULT_MINIMAX_ANTHROPIC_BASE_URL: &str = "https://api.minimax.io/anthropic"; |
| 242 | pub const DEFAULT_SAKANA_MODEL: &str = "fugu"; |
| 243 | pub const SAKANA_FUGU_ULTRA_MODEL: &str = "fugu-ultra-20260615"; |
| 244 | pub const DEFAULT_SAKANA_BASE_URL: &str = "https://api.sakana.ai/v1"; |
| 245 | pub const DEFAULT_LONGCAT_MODEL: &str = "LongCat-2.0"; |
| 246 | pub const DEFAULT_LONGCAT_BASE_URL: &str = "https://api.longcat.chat/openai/v1"; |
| 247 | pub const DEFAULT_OPENCODE_GO_MODEL: &str = "deepseek-v4-pro"; |
| 248 | pub const DEFAULT_OPENCODE_GO_BASE_URL: &str = "https://opencode.ai/zen/go/v1"; |
| 249 | pub use codewhale_config::opencode_go_models; |
| 250 | pub const DEFAULT_OPENCODE_ZEN_MODEL: &str = "gpt-5.6"; |
| 251 | pub const DEFAULT_OPENCODE_ZEN_BASE_URL: &str = "https://opencode.ai/zen/v1"; |
| 252 | pub const DEFAULT_META_MODEL: &str = "muse-spark-1.2"; |
| 253 | pub const DEFAULT_META_BASE_URL: &str = "https://api.meta.ai/v1"; |
| 254 | pub const XAI_GROK_4_6_MODEL: &str = "grok-4.6"; |
| 255 | pub const DEFAULT_XAI_MODEL: &str = XAI_GROK_4_6_MODEL; |
| 256 | pub const XAI_GROK_4_5_MODEL: &str = "grok-4.5"; |
| 257 | pub const XAI_GROK_4_3_MODEL: &str = "grok-4.3"; |
| 258 | pub const XAI_GROK_BUILD_MODEL: &str = "grok-build"; |
| 259 | pub const XAI_GROK_COMPOSER_2_5_FAST_MODEL: &str = "grok-composer-2.5-fast"; |
| 260 | pub const XAI_GROK_4_20_0309_REASONING_MODEL: &str = "grok-4.20-0309-reasoning"; |
| 261 | pub const XAI_GROK_4_20_0309_NON_REASONING_MODEL: &str = "grok-4.20-0309-non-reasoning"; |
| 262 | pub const DEFAULT_XAI_BASE_URL: &str = "https://api.x.ai/v1"; |
| 263 | pub const DEFAULT_MISTRAL_MODEL: &str = "mistral-code-latest"; |
| 264 | pub const DEFAULT_MISTRAL_BASE_URL: &str = "https://api.mistral.ai/v1"; |
| 265 | pub const DEFAULT_ANTIGRAVITY_MODEL: &str = "legacy-antigravity-disabled"; |
| 266 | pub const DEFAULT_ANTIGRAVITY_BASE_URL: &str = "https://legacy-antigravity.invalid"; |
| 267 | pub const DEFAULT_GOOGLE_MODEL: &str = "gemini-3.1-pro-preview"; |
| 268 | pub const DEFAULT_GOOGLE_BASE_URL: &str = |
| 269 | "https://generativelanguage.googleapis.com/v1beta/openai/"; |
| 270 | pub const DEFAULT_TELECOMJS_MODEL: &str = "deepseek-v4-pro"; |
| 271 | pub const DEFAULT_TELECOMJS_BASE_URL: &str = "https://aigw.telecomjs.com/v1"; |
| 272 | pub const DEFAULT_EDENAI_MODEL: &str = "deepseek/deepseek-v4-pro"; |
| 273 | pub const DEFAULT_EDENAI_BASE_URL: &str = "https://api.edenai.run/v3"; |
| 274 | pub const DEFAULT_ZENMUX_MODEL: &str = "deepseek/deepseek-v4.1-flash"; |
| 275 | pub const DEFAULT_ZENMUX_BASE_URL: &str = "https://zenmux.ai/api/v1"; |
| 276 | pub const DEFAULT_CSDN_MODEL: &str = "glm_for_coding"; |
| 277 | pub const DEFAULT_CSDN_BASE_URL: &str = "https://ai.csdn.net/api/model/v1"; |
| 278 | // Concentrate (OpenAI Responses-compatible AI gateway) defaults; mirrors |
| 279 | // crates/config/src/provider_defaults.rs for the docs drift check. |
| 280 | pub const DEFAULT_CONCENTRATE_MODEL: &str = "deepseek-v4-pro"; |
| 281 | pub const DEFAULT_CONCENTRATE_BASE_URL: &str = "https://api.concentrate.ai/v1"; |
| 282 | // Codewhale API (account-backed model access) defaults; mirrors |
| 283 | // codewhale_config::DEFAULT_CODEWHALE_*. |
| 284 | pub const DEFAULT_CODEWHALE_MODEL: &str = "deepseek/deepseek-v4-pro"; |
| 285 | pub const DEFAULT_CODEWHALE_BASE_URL: &str = "https://api.codewhale.net/v1"; |
| 286 | // Alibaba Cloud Model Studio (DashScope) defaults |
| 287 | pub const DEFAULT_MODELSTUDIO_TOKEN_PLAN_MODEL: &str = "qwen3.8-max"; |
| 288 | pub const DEFAULT_MODELSTUDIO_TOKEN_PLAN_BASE_URL: &str = |
| 289 | "https://token-plan.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"; |
| 290 | pub const MODELSTUDIO_TOKEN_PLAN_ANTHROPIC_BASE_URL: &str = |
| 291 | "https://token-plan.ap-southeast-1.maas.aliyuncs.com/apps/anthropic"; |
| 292 | pub const DEFAULT_MODELSTUDIO_CODING_PLAN_BASE_URL: &str = |
| 293 | "https://coding-intl.dashscope.aliyuncs.com/v1"; |
| 294 | pub const MODELSTUDIO_CODING_PLAN_ANTHROPIC_BASE_URL: &str = |
| 295 | "https://coding-intl.dashscope.aliyuncs.com/apps/anthropic"; |
| 296 |