From 9b3ae761f30cecf1575de8ad56e5817c51a8b3ef Mon Sep 17 00:00:00 2001 From: Alex Clarke Date: Thu, 16 Jul 2026 13:18:28 -0600 Subject: [PATCH] feat: Add reasoning_effort validation for the main configuration file --- src/config/app_config.rs | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/config/app_config.rs b/src/config/app_config.rs index 29b4efe..de9377a 100644 --- a/src/config/app_config.rs +++ b/src/config/app_config.rs @@ -1,4 +1,4 @@ -use crate::client::{ClientConfig, list_models}; +use crate::client::{ClientConfig, Model, ModelType, list_models}; use crate::render::{MarkdownRender, RenderOptions}; use crate::utils::{IS_STDOUT_TERMINAL, NO_COLOR, decode_bin, get_env_name}; @@ -256,6 +256,7 @@ impl AppConfig { app_config.setup_document_loaders(); app_config.setup_user_agent(); app_config.resolve_model()?; + app_config.validate_reasoning_effort()?; Ok(app_config) } @@ -276,6 +277,31 @@ impl AppConfig { Ok(()) } + fn validate_reasoning_effort(&self) -> Result<()> { + let Some(ref effort) = self.reasoning_effort else { + return Ok(()); + }; + let model = Model::retrieve_model(self, &self.model_id, ModelType::Chat)?; + let levels = model.reasoning_levels(); + + if levels.is_empty() { + bail!( + "reasoning_effort '{}' is configured but the model does not support reasoning effort", + effort + ); + } + + if !levels.iter().any(|l| l == effort) { + bail!( + "reasoning_effort '{}' is not valid for the model. Supported levels: {}", + effort, + levels.join(", ") + ); + } + + Ok(()) + } + pub fn resolve_model(&mut self) -> Result<()> { if self.model_id.is_empty() { let models = list_models(self, crate::client::ModelType::Chat);