@@ -133,6 +133,7 @@ use crate::auth::AuthError;
133133use crate :: auth:: builder_id:: is_idc_user;
134134use crate :: cli:: agent:: Agents ;
135135use crate :: cli:: chat:: cli:: SlashCommand ;
136+ use crate :: cli:: chat:: cli:: model:: find_model;
136137use crate :: cli:: chat:: cli:: prompts:: {
137138 GetPromptError ,
138139 PromptsSubcommand ,
@@ -315,13 +316,7 @@ impl ChatArgs {
315316 // Otherwise, CLI will use a default model when starting chat
316317 let ( models, default_model_opt) = get_available_models ( os) . await ?;
317318 let model_id: Option < String > = if let Some ( requested) = self . model . as_ref ( ) {
318- let requested_lower = requested. to_lowercase ( ) ;
319- if let Some ( m) = models. iter ( ) . find ( |m| {
320- m. model_name
321- . as_deref ( )
322- . is_some_and ( |n| n. eq_ignore_ascii_case ( & requested_lower) )
323- || m. model_id . eq_ignore_ascii_case ( & requested_lower)
324- } ) {
319+ if let Some ( m) = find_model ( & models, requested) {
325320 Some ( m. model_id . clone ( ) )
326321 } else {
327322 let available = models
@@ -332,14 +327,9 @@ impl ChatArgs {
332327 bail ! ( "Model '{}' does not exist. Available models: {}" , requested, available) ;
333328 }
334329 } else if let Some ( saved) = os. database . settings . get_string ( Setting :: ChatDefaultModel ) {
335- if let Some ( m) = models. iter ( ) . find ( |m| {
336- m. model_name . as_deref ( ) . is_some_and ( |n| n. eq_ignore_ascii_case ( & saved) )
337- || m. model_id . eq_ignore_ascii_case ( & saved)
338- } ) {
339- Some ( m. model_id . clone ( ) )
340- } else {
341- Some ( default_model_opt. model_id . clone ( ) )
342- }
330+ find_model ( & models, & saved)
331+ . map ( |m| m. model_id . clone ( ) )
332+ . or ( Some ( default_model_opt. model_id . clone ( ) ) )
343333 } else {
344334 Some ( default_model_opt. model_id . clone ( ) )
345335 } ;
0 commit comments