This closes #6748 by implementing fallback to `model_family.default_reasoning_effort` in `reasoning_effort` display of `/status` when no `model_reasoning_effort` is set in the configuration. ## common/src/config_summary.rs - `create_config_summary_entries` now fills the "reasoning effort" entry with the explicit `config.model_reasoning_effort` when present and falls back to `config.model_family.default_reasoning_effort` when it is `None`, instead of emitting the literal string `none`. - This ensures downstream consumers such as `tui/src/status/helpers.rs` continue to work unchanged while automatically picking up model-family defaults when the user has not selected a reasoning effort. ## tui/src/status/helpers.rs / core/src/model_family.rs `ModelFamily::default_reasoning_effort` metadata is set to `medium` for both `gpt-5*-codex` and `gpt-5` models following the default behaviour of the API and recommendation of the codebase: - per https://platform.openai.com/docs/api-reference/responses/create `gpt-5` defaults to `medium` reasoning when no preset is passed - there is no mention of the preset for `gpt-5.1-codex` in the API docs but `medium` is the default setting for `gpt-5.1-codex` as per `codex-rs/tui/src/chatwidget/snapshots/codex_tui__chatwidget__tests__model_reasoning_selection_popup.snap` --------- Signed-off-by: lionelchg <lionel.cheng@hotmail.fr> Co-authored-by: Eric Traut <etraut@openai.com>
31 lines
1.1 KiB
Rust
31 lines
1.1 KiB
Rust
use codex_core::WireApi;
|
|
use codex_core::config::Config;
|
|
|
|
use crate::sandbox_summary::summarize_sandbox_policy;
|
|
|
|
/// Build a list of key/value pairs summarizing the effective configuration.
|
|
pub fn create_config_summary_entries(config: &Config) -> Vec<(&'static str, String)> {
|
|
let mut entries = vec![
|
|
("workdir", config.cwd.display().to_string()),
|
|
("model", config.model.clone()),
|
|
("provider", config.model_provider_id.clone()),
|
|
("approval", config.approval_policy.to_string()),
|
|
("sandbox", summarize_sandbox_policy(&config.sandbox_policy)),
|
|
];
|
|
if config.model_provider.wire_api == WireApi::Responses
|
|
&& config.model_family.supports_reasoning_summaries
|
|
{
|
|
let reasoning_effort = config
|
|
.model_reasoning_effort
|
|
.or(config.model_family.default_reasoning_effort)
|
|
.map(|effort| effort.to_string())
|
|
.unwrap_or_else(|| "none".to_string());
|
|
entries.push(("reasoning effort", reasoning_effort));
|
|
entries.push((
|
|
"reasoning summaries",
|
|
config.model_reasoning_summary.to_string(),
|
|
));
|
|
}
|
|
|
|
entries
|
|
}
|