From 8f0b38362141a02c73f2d94459198452d8a5fb0d Mon Sep 17 00:00:00 2001 From: pakrym-oai Date: Thu, 18 Dec 2025 14:13:49 -0800 Subject: [PATCH] model list (#8286) 7ff2254b-e96f-42fc-8232-b4e76cb26248 --- .../core/src/openai_models/model_family.rs | 29 +++++++++- .../core/src/openai_models/model_presets.rs | 58 +++++++++++++++++++ 2 files changed, 86 insertions(+), 1 deletion(-) diff --git a/codex-rs/core/src/openai_models/model_family.rs b/codex-rs/core/src/openai_models/model_family.rs index 06aa88655..21e20bcc0 100644 --- a/codex-rs/core/src/openai_models/model_family.rs +++ b/codex-rs/core/src/openai_models/model_family.rs @@ -199,6 +199,7 @@ macro_rules! model_family { /// Internal offline helper for `ModelsManager` that returns a `ModelFamily` for the given /// model slug. +#[allow(clippy::if_same_then_else)] pub(super) fn find_family_for_model(slug: &str) -> ModelFamily { if slug.starts_with("o3") { model_family!( @@ -296,7 +297,19 @@ pub(super) fn find_family_for_model(slug: &str) -> ModelFamily { // Production models. } else if slug.starts_with("gpt-5.2-codex") { - // Same as gpt-5.1-codex-max. + model_family!( + slug, slug, + supports_reasoning_summaries: true, + reasoning_summary_format: ReasoningSummaryFormat::Experimental, + base_instructions: GPT_5_2_CODEX_INSTRUCTIONS.to_string(), + apply_patch_tool_type: Some(ApplyPatchToolType::Freeform), + shell_type: ConfigShellToolType::ShellCommand, + supports_parallel_tool_calls: true, + support_verbosity: false, + truncation_policy: TruncationPolicy::Tokens(10_000), + context_window: Some(CONTEXT_WINDOW_272K), + ) + } else if slug.starts_with("bengalfox") { model_family!( slug, slug, supports_reasoning_summaries: true, @@ -352,6 +365,20 @@ pub(super) fn find_family_for_model(slug: &str) -> ModelFamily { supports_parallel_tool_calls: true, context_window: Some(CONTEXT_WINDOW_272K), ) + } else if slug.starts_with("boomslang") { + model_family!( + slug, slug, + supports_reasoning_summaries: true, + apply_patch_tool_type: Some(ApplyPatchToolType::Freeform), + support_verbosity: true, + default_verbosity: Some(Verbosity::Low), + base_instructions: GPT_5_2_INSTRUCTIONS.to_string(), + default_reasoning_effort: Some(ReasoningEffort::Medium), + truncation_policy: TruncationPolicy::Bytes(10_000), + shell_type: ConfigShellToolType::ShellCommand, + supports_parallel_tool_calls: true, + context_window: Some(CONTEXT_WINDOW_272K), + ) } else if slug.starts_with("gpt-5.1") { model_family!( slug, "gpt-5.1", diff --git a/codex-rs/core/src/openai_models/model_presets.rs b/codex-rs/core/src/openai_models/model_presets.rs index da0048ce4..0a7e78578 100644 --- a/codex-rs/core/src/openai_models/model_presets.rs +++ b/codex-rs/core/src/openai_models/model_presets.rs @@ -120,6 +120,64 @@ static PRESETS: Lazy> = Lazy::new(|| { show_in_picker: true, supported_in_api: true, }, + ModelPreset { + id: "bengalfox".to_string(), + model: "bengalfox".to_string(), + display_name: "bengalfox".to_string(), + description: "bengalfox".to_string(), + default_reasoning_effort: ReasoningEffort::Medium, + supported_reasoning_efforts: vec![ + ReasoningEffortPreset { + effort: ReasoningEffort::Low, + description: "Fast responses with lighter reasoning".to_string(), + }, + ReasoningEffortPreset { + effort: ReasoningEffort::Medium, + description: "Balances speed and reasoning depth for everyday tasks".to_string(), + }, + ReasoningEffortPreset { + effort: ReasoningEffort::High, + description: "Greater reasoning depth for complex problems".to_string(), + }, + ReasoningEffortPreset { + effort: ReasoningEffort::XHigh, + description: "Extra high reasoning depth for complex problems".to_string(), + }, + ], + is_default: false, + upgrade: None, + show_in_picker: false, + supported_in_api: true, + }, + ModelPreset { + id: "boomslang".to_string(), + model: "boomslang".to_string(), + display_name: "boomslang".to_string(), + description: "boomslang".to_string(), + default_reasoning_effort: ReasoningEffort::Medium, + supported_reasoning_efforts: vec![ + ReasoningEffortPreset { + effort: ReasoningEffort::Low, + description: "Balances speed with some reasoning; useful for straightforward queries and short explanations".to_string(), + }, + ReasoningEffortPreset { + effort: ReasoningEffort::Medium, + description: "Provides a solid balance of reasoning depth and latency for general-purpose tasks".to_string(), + }, + ReasoningEffortPreset { + effort: ReasoningEffort::High, + description: "Maximizes reasoning depth for complex or ambiguous problems".to_string(), + }, + ReasoningEffortPreset { + effort: ReasoningEffort::XHigh, + description: "Extra high reasoning for complex problems".to_string(), + }, + ], + is_default: false, + upgrade: None, + show_in_picker: false, + supported_in_api: true, + }, // Deprecated models. ModelPreset { id: "gpt-5-codex".to_string(),