diff --git a/crates/jcode-provider-metadata/src/catalog.rs b/crates/jcode-provider-metadata/src/catalog.rs index 018ee29b6..111e18c6f 100644 --- a/crates/jcode-provider-metadata/src/catalog.rs +++ b/crates/jcode-provider-metadata/src/catalog.rs @@ -36,6 +36,19 @@ pub const ZAI_PROFILE: OpenAiCompatibleProfile = OpenAiCompatibleProfile { requires_api_key: true, }; +pub const BIGMODEL_PROFILE: OpenAiCompatibleProfile = OpenAiCompatibleProfile { + id: "bigmodel", + display_name: "Zhipu BigModel", + // Mainland China endpoint (api.z.ai is the international/Code-Plan + // mirror, open.bigmodel.cn is the consumer-facing API gateway). + api_base: "https://open.bigmodel.cn/api/paas/v4", + api_key_env: "ZHIPU_API_KEY", + env_file: "bigmodel.env", + setup_url: "https://bigmodel.cn/dev/howuse/model", + default_model: Some("glm-5.1"), + requires_api_key: true, +}; + pub const KIMI_PROFILE: OpenAiCompatibleProfile = OpenAiCompatibleProfile { id: "kimi", display_name: "Kimi Code", @@ -389,10 +402,11 @@ pub const OPENAI_COMPAT_PROFILE: OpenAiCompatibleProfile = OpenAiCompatibleProfi requires_api_key: true, }; -pub(crate) const OPENAI_COMPAT_PROFILES: [OpenAiCompatibleProfile; 34] = [ +pub(crate) const OPENAI_COMPAT_PROFILES: [OpenAiCompatibleProfile; 35] = [ OPENCODE_PROFILE, OPENCODE_GO_PROFILE, ZAI_PROFILE, + BIGMODEL_PROFILE, KIMI_PROFILE, CHUTES_PROFILE, CEREBRAS_PROFILE, @@ -582,6 +596,22 @@ pub const ZAI_LOGIN_PROVIDER: LoginProviderDescriptor = LoginProviderDescriptor order: LoginProviderSurfaceOrder::new(Some(7), Some(6), Some(7), Some(6), Some(6)), }; +pub const BIGMODEL_LOGIN_PROVIDER: LoginProviderDescriptor = LoginProviderDescriptor { + id: "bigmodel", + display_name: "Zhipu BigModel", + auth_kind: LoginProviderAuthKind::ApiKey, + auth_state_key: LoginProviderAuthStateKey::OpenRouterLike, + auth_status_method: "API key", + // Distinct aliases from ZAI: bigmodel-cn / zhipu-cn / glm-cn + // explicitly target the mainland China endpoint. Bare 'bigmodel' + // and 'zhipu' continue to resolve to Z.AI for backward compat. + aliases: &["bigmodel-cn", "zhipu-cn", "glm-cn"], + menu_detail: "API key, mainland China endpoint", + recommended: false, + target: LoginProviderTarget::OpenAiCompatible(BIGMODEL_PROFILE), + order: LoginProviderSurfaceOrder::new(Some(8), Some(7), Some(8), Some(7), Some(7)), +}; + pub const KIMI_LOGIN_PROVIDER: LoginProviderDescriptor = LoginProviderDescriptor { id: "kimi", display_name: "Kimi Code", @@ -1057,7 +1087,7 @@ pub const GOOGLE_LOGIN_PROVIDER: LoginProviderDescriptor = LoginProviderDescript order: LoginProviderSurfaceOrder::new(Some(13), None, None, None, None), }; -pub(crate) const LOGIN_PROVIDERS: [LoginProviderDescriptor; 47] = [ +pub(crate) const LOGIN_PROVIDERS: [LoginProviderDescriptor; 48] = [ AUTO_IMPORT_LOGIN_PROVIDER, CLAUDE_LOGIN_PROVIDER, OPENAI_LOGIN_PROVIDER, @@ -1069,6 +1099,7 @@ pub(crate) const LOGIN_PROVIDERS: [LoginProviderDescriptor; 47] = [ OPENCODE_LOGIN_PROVIDER, OPENCODE_GO_LOGIN_PROVIDER, ZAI_LOGIN_PROVIDER, + BIGMODEL_LOGIN_PROVIDER, KIMI_LOGIN_PROVIDER, CHUTES_LOGIN_PROVIDER, CEREBRAS_LOGIN_PROVIDER,