@@ -440,7 +440,6 @@ impl ModelProviderInfo {
440440 }
441441 }
442442
443-
444443 pub fn is_openai ( & self ) -> bool {
445444 self . name == OPENAI_PROVIDER_NAME
446445 }
@@ -449,7 +448,9 @@ impl ModelProviderInfo {
449448 if self . name == GEMINI_PROVIDER_NAME {
450449 slug. strip_prefix ( "google/" ) . unwrap_or ( slug)
451450 } else if self . name == ZHIPU_PROVIDER_NAME {
452- slug. strip_prefix ( "zhipu/" ) . unwrap_or ( slug)
451+ slug. strip_prefix ( "zhipu/" )
452+ . or_else ( || slug. strip_prefix ( "z-ai/" ) )
453+ . unwrap_or ( slug)
453454 } else {
454455 slug
455456 }
@@ -459,12 +460,10 @@ impl ModelProviderInfo {
459460 self . name == AMAZON_BEDROCK_PROVIDER_NAME
460461 }
461462
462-
463463 pub fn supports_remote_compaction ( & self ) -> bool {
464464 self . is_openai ( ) || is_azure_responses_provider ( & self . name , self . base_url . as_deref ( ) )
465465 }
466466
467-
468467 pub fn has_command_auth ( & self ) -> bool {
469468 self . auth . is_some ( )
470469 }
@@ -515,7 +514,15 @@ fn non_empty_env_var(name: &str) -> bool {
515514
516515pub fn infer_builtin_provider_id_for_model ( model : & str ) -> Option < & ' static str > {
517516 let lower = model. to_lowercase ( ) ;
518- if lower. starts_with ( "glm-" ) && non_empty_env_var ( "ZAI_API_KEY" ) {
517+ if ( lower. starts_with ( "glm-" )
518+ || lower
519+ . strip_prefix ( "z-ai/" )
520+ . is_some_and ( |slug| slug. starts_with ( "glm-" ) )
521+ || lower
522+ . strip_prefix ( "zhipu/" )
523+ . is_some_and ( |slug| slug. starts_with ( "glm-" ) ) )
524+ && non_empty_env_var ( "ZAI_API_KEY" )
525+ {
519526 return Some ( ZHIPU_PROVIDER_ID ) ;
520527 }
521528 match model. split_once ( '/' ) {
@@ -560,7 +567,6 @@ pub fn merge_configured_model_providers(
560567 Ok ( model_providers)
561568}
562569
563-
564570pub fn create_oss_provider ( default_provider_port : u16 , wire_api : WireApi ) -> ModelProviderInfo {
565571 // These CODEX_OSS_ environment variables are experimental: we may
566572 // switch to reading values from config.toml instead.
0 commit comments