@@ -128,6 +128,7 @@ impl ModelCapabilitiesManager {
128128 match model {
129129 LLMProviderInterface :: OpenAI ( openai) => match openai. model_type . as_str ( ) {
130130 "gpt-5" => vec ! [ ModelCapability :: ImageAnalysis , ModelCapability :: TextInference ] ,
131+ "gpt-5.1" => vec ! [ ModelCapability :: ImageAnalysis , ModelCapability :: TextInference ] ,
131132 "gpt-5-mini" => vec ! [ ModelCapability :: ImageAnalysis , ModelCapability :: TextInference ] ,
132133 "gpt-5-nano" => vec ! [ ModelCapability :: ImageAnalysis , ModelCapability :: TextInference ] ,
133134 "gpt-5-chat-latest" => vec ! [ ModelCapability :: ImageAnalysis , ModelCapability :: TextInference ] ,
@@ -242,6 +243,15 @@ impl ModelCapabilitiesManager {
242243
243244 fn get_gemini_capabilities ( model_type : & str ) -> Vec < ModelCapability > {
244245 match model_type {
246+ // Gemini 3 models
247+ model_type if model_type. starts_with ( "gemini-3-pro" ) => {
248+ vec ! [
249+ ModelCapability :: TextInference ,
250+ ModelCapability :: ImageAnalysis ,
251+ ModelCapability :: VideoAnalysis ,
252+ ModelCapability :: AudioAnalysis ,
253+ ]
254+ }
245255 // Gemini 2.5 models
246256 model_type if model_type. starts_with ( "gemini-2.5-flash-preview-tts" ) => {
247257 vec ! [ ModelCapability :: TextInference ]
@@ -350,6 +360,8 @@ impl ModelCapabilitiesManager {
350360
351361 fn get_gemini_cost ( model_type : & str ) -> ModelCost {
352362 match model_type {
363+ // Gemini 3 models
364+ model_type if model_type. starts_with ( "gemini-3-pro" ) => ModelCost :: Expensive ,
353365 // Gemini 2.5 models (preview/experimental - more expensive due to restricted limits)
354366 model_type if model_type. starts_with ( "gemini-2.5-flash-preview" ) => ModelCost :: GoodValue ,
355367 model_type if model_type. starts_with ( "gemini-2.5-pro-preview" ) => ModelCost :: Expensive ,
@@ -370,6 +382,8 @@ impl ModelCapabilitiesManager {
370382
371383 fn get_gemini_max_tokens ( model_type : & str ) -> usize {
372384 match model_type {
385+ // Gemini 3 models
386+ model_type if model_type. starts_with ( "gemini-3-pro" ) => 2_097_152 ,
373387 // Gemini 2.5 models
374388 model_type if model_type. starts_with ( "gemini-2.5-flash-preview-05-20" ) => 1_048_576 ,
375389 model_type if model_type. starts_with ( "gemini-2.5-flash-preview-native-audio-dialog" ) => 128_000 ,
@@ -394,6 +408,8 @@ impl ModelCapabilitiesManager {
394408
395409 fn get_gemini_max_output_tokens ( model_type : & str ) -> usize {
396410 match model_type {
411+ // Gemini 3 models
412+ model_type if model_type. starts_with ( "gemini-3-pro" ) => 65_536 ,
397413 // Gemini 2.5 models
398414 model_type if model_type. starts_with ( "gemini-2.5-flash-preview-05-20" ) => 65_536 ,
399415 model_type if model_type. starts_with ( "gemini-2.5-flash-preview-native-audio-dialog" ) => 8_000 ,
@@ -418,6 +434,8 @@ impl ModelCapabilitiesManager {
418434
419435 fn gemini_has_tool_capabilities ( model_type : & str ) -> bool {
420436 match model_type {
437+ // Gemini 3 models
438+ model_type if model_type. starts_with ( "gemini-3-pro" ) => true ,
421439 // Gemini 2.5 models - TTS models don't support function calling
422440 model_type if model_type. starts_with ( "gemini-2.5-flash-preview-tts" ) => false ,
423441 model_type if model_type. starts_with ( "gemini-2.5-flash-image-preview" ) => false ,
@@ -445,6 +463,7 @@ impl ModelCapabilitiesManager {
445463 match model {
446464 LLMProviderInterface :: OpenAI ( openai) => match openai. model_type . as_str ( ) {
447465 "gpt-5" => ModelCost :: GoodValue ,
466+ "gpt-5.1" => ModelCost :: GoodValue ,
448467 "gpt-5-mini" => ModelCost :: Cheap ,
449468 "gpt-5-nano" => ModelCost :: VeryCheap ,
450469 "gpt-5-chat-latest" => ModelCost :: GoodValue ,
@@ -1164,13 +1183,19 @@ impl ModelCapabilitiesManager {
11641183 || claude. model_type . starts_with ( "claude-3-7-sonnet" )
11651184 }
11661185 LLMProviderInterface :: Gemini ( gemini) => {
1167- gemini. model_type == "gemini-2.5-flash-preview-05-20"
1186+ gemini. model_type . starts_with ( "gemini-3-pro" )
1187+ || gemini. model_type == "gemini-2.5-flash-preview-05-20"
11681188 || gemini. model_type == "gemini-2.5-flash-lite-preview-06-17"
11691189 || gemini. model_type == "gemini-2.5-flash-lite"
11701190 || gemini. model_type == "gemini-2.5-flash"
11711191 || gemini. model_type == "gemini-2.5-pro"
11721192 || gemini. model_type == "gemini-2.0-flash-exp"
11731193 }
1194+ LLMProviderInterface :: ZooBackend ( zoo_backend) => {
1195+ zoo_backend. model_type ( ) . starts_with ( "FREE_TEXT_INFERENCE" )
1196+ || zoo_backend. model_type ( ) . starts_with ( "STANDARD_TEXT_INFERENCE" )
1197+ || zoo_backend. model_type ( ) . starts_with ( "PREMIUM_TEXT_INFERENCE" )
1198+ }
11741199 _ => false ,
11751200 }
11761201 }
0 commit comments