Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion codex-rs/app-server/tests/common/models_cache.rs
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ fn preset_to_info(preset: &ModelPreset, priority: i32) -> ModelInfo {
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/app-server/tests/suite/v2/model_list.rs
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,6 @@ async fn list_models_uses_chatgpt_remote_catalog_as_source_of_truth() -> Result<
"priority": 0,
"upgrade": null,
"base_instructions": "base instructions",
"supports_reasoning_summaries": false,
"support_verbosity": false,
"default_verbosity": null,
"apply_patch_tool_type": null,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/codex-api/src/endpoint/models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,6 @@ mod tests {
"priority": 1,
"upgrade": null,
"base_instructions": "base instructions",
"supports_reasoning_summaries": false,
"support_verbosity": false,
"default_verbosity": null,
"apply_patch_tool_type": null,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/codex-api/tests/models_integration.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,6 @@ async fn models_client_hits_models_endpoint() {
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
3 changes: 0 additions & 3 deletions codex-rs/config/src/config_toml.rs
Original file line number Diff line number Diff line change
Expand Up @@ -355,9 +355,6 @@ pub struct ConfigToml {
/// Optional verbosity control for GPT-5 models (Responses API `text.verbosity`).
pub model_verbosity: Option<Verbosity>,

/// Override to force-enable reasoning summaries for the configured model.
pub model_supports_reasoning_summaries: Option<bool>,

/// Optional path to a JSON model catalog (applied on startup only).
/// Per-thread `config` overrides are accepted but do not reapply this (no-ops).
pub model_catalog_json: Option<AbsolutePathBuf>,
Expand Down
4 changes: 0 additions & 4 deletions codex-rs/core/config.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -5292,10 +5292,6 @@
"model_reasoning_summary": {
"$ref": "#/definitions/ReasoningSummary"
},
"model_supports_reasoning_summaries": {
"description": "Override to force-enable reasoning summaries for the configured model.",
"type": "boolean"
},
"model_verbosity": {
"allOf": [
{
Expand Down
42 changes: 17 additions & 25 deletions codex-rs/core/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -804,25 +804,21 @@ impl ModelClient {
model_info: &ModelInfo,
effort: Option<ReasoningEffortConfig>,
summary: ReasoningSummaryConfig,
) -> Option<Reasoning> {
if model_info.supports_reasoning_summaries {
Some(Reasoning {
effort: effort
.or_else(|| model_info.default_reasoning_level.clone())
.map(reasoning_effort_for_request),
summary: if summary == ReasoningSummaryConfig::None {
None
} else {
Some(summary)
},
// When Responses Lite is disabled, omit context so Responses uses the default,
// which is currently `current_turn`.
context: model_info
.use_responses_lite
.then_some(ReasoningContext::AllTurns),
})
} else {
None
) -> Reasoning {
Reasoning {
effort: effort
.or_else(|| model_info.default_reasoning_level.clone())
.map(reasoning_effort_for_request),
summary: if summary == ReasoningSummaryConfig::None {
None
} else {
Some(summary)
},
// When Responses Lite is disabled, omit context so Responses uses the default,
// which is currently `current_turn`.
context: model_info
.use_responses_lite
.then_some(ReasoningContext::AllTurns),
}
}

Expand Down Expand Up @@ -871,12 +867,8 @@ impl ModelClient {
.then_some(StreamOptions {
reasoning_summary_delivery: codex_api::ReasoningSummaryDelivery::SequentialCutoff,
});
let reasoning = Self::build_reasoning(model_info, effort, summary);
let include = if reasoning.is_some() {
vec!["reasoning.encrypted_content".to_string()]
} else {
Vec::new()
};
let reasoning = Some(Self::build_reasoning(model_info, effort, summary));
let include = vec!["reasoning.encrypted_content".to_string()];
let verbosity = if model_info.support_verbosity {
self.state.model_verbosity.or(model_info.default_verbosity)
} else {
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/src/client_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -262,7 +262,6 @@ fn test_model_info() -> ModelInfo {
"upgrade": null,
"base_instructions": "base instructions",
"model_messages": null,
"supports_reasoning_summaries": false,
"support_verbosity": false,
"default_verbosity": null,
"apply_patch_tool_type": null,
Expand Down
5 changes: 0 additions & 5 deletions codex-rs/core/src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -952,9 +952,6 @@ pub struct Config {
/// using the Responses API. When unset, the model catalog default is used.
pub model_reasoning_summary: Option<ReasoningSummary>,

/// Optional override to force-enable reasoning summaries for the configured model.
pub model_supports_reasoning_summaries: Option<bool>,

/// Optional full model catalog loaded from `model_catalog_json`.
/// When set, this replaces the bundled catalog for the current process.
pub model_catalog: Option<ModelsResponse>,
Expand Down Expand Up @@ -1476,7 +1473,6 @@ impl Config {
tool_output_token_limit: self.tool_output_token_limit,
base_instructions: self.base_instructions.clone(),
personality_enabled: self.features.enabled(Feature::Personality),
model_supports_reasoning_summaries: self.model_supports_reasoning_summaries,
model_catalog: self.model_catalog.clone(),
}
}
Expand Down Expand Up @@ -3903,7 +3899,6 @@ impl Config {
model_reasoning_effort: cfg.model_reasoning_effort,
plan_mode_reasoning_effort: cfg.plan_mode_reasoning_effort,
model_reasoning_summary: cfg.model_reasoning_summary,
model_supports_reasoning_summaries: cfg.model_supports_reasoning_summaries,
model_catalog,
model_verbosity: cfg.model_verbosity,
chatgpt_base_url: cfg
Expand Down
12 changes: 4 additions & 8 deletions codex-rs/core/src/guardian/review_session.rs
Original file line number Diff line number Diff line change
Expand Up @@ -720,14 +720,10 @@ async fn run_review_on_session(
&params.spawn_config.to_models_manager_config(),
)
.await;
let guardian_reasoning_effort = if model_info.supports_reasoning_summaries {
params
.reasoning_effort
.clone()
.or_else(|| model_info.default_reasoning_level.clone())
} else {
None
};
let guardian_reasoning_effort = params
.reasoning_effort
.clone()
.or_else(|| model_info.default_reasoning_level.clone());
let mut analytics_result =
GuardianReviewAnalyticsResult::from_session(GuardianReviewSessionAnalyticsParams {
guardian_thread_id: review_session.codex.session.thread_id.to_string(),
Expand Down
10 changes: 3 additions & 7 deletions codex-rs/core/src/session/turn_context.rs
Original file line number Diff line number Diff line change
Expand Up @@ -177,13 +177,9 @@ impl TurnContext {
}

pub(crate) fn effective_reasoning_effort(&self) -> Option<ReasoningEffortConfig> {
if self.model_info.supports_reasoning_summaries {
self.reasoning_effort
.clone()
.or_else(|| self.model_info.default_reasoning_level.clone())
} else {
None
}
self.reasoning_effort
.clone()
.or_else(|| self.model_info.default_reasoning_level.clone())
}

pub(crate) fn effective_reasoning_effort_for_tracing(&self) -> String {
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/responses_headers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -348,7 +348,6 @@ async fn responses_respects_model_info_overrides_from_config() {
config.model = Some("gpt-3.5-turbo".to_string());
config.model_provider_id = provider.name.clone();
config.model_provider = provider.clone();
config.model_supports_reasoning_summaries = Some(true);
config.model_reasoning_summary = Some(ReasoningSummary::Detailed);
let effort = config.model_reasoning_effort.clone();
let summary = config.model_reasoning_summary;
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/suite/auto_review.rs
Original file line number Diff line number Diff line change
Expand Up @@ -245,7 +245,6 @@ fn remote_model_with_auto_review_override(slug: &str, review_model: &str) -> Mod
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
2 changes: 0 additions & 2 deletions codex-rs/core/tests/suite/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2539,7 +2539,6 @@ async fn user_turn_explicit_reasoning_summary_overrides_model_catalog_default()
.iter_mut()
.find(|model| model.slug == "gpt-5.4")
.expect("gpt-5.4 exists in bundled models.json");
model.supports_reasoning_summaries = true;
model.default_reasoning_summary = ReasoningSummary::Detailed;

let TestCodex {
Expand Down Expand Up @@ -2662,7 +2661,6 @@ async fn reasoning_summary_none_overrides_model_catalog_default() -> anyhow::Res
.iter_mut()
.find(|model| model.slug == "gpt-5.4")
.expect("gpt-5.4 exists in bundled models.json");
model.supports_reasoning_summaries = true;
model.default_reasoning_summary = ReasoningSummary::Detailed;

let TestCodex { codex, .. } = test_codex()
Expand Down
3 changes: 1 addition & 2 deletions codex-rs/core/tests/suite/client_websockets.rs
Original file line number Diff line number Diff line change
Expand Up @@ -681,8 +681,7 @@ async fn responses_websocket_sends_responses_lite_metadata_per_request() {
.await;

let harness = websocket_harness(&server).await;
let mut normal_model_info = harness.model_info.clone();
normal_model_info.supports_reasoning_summaries = true;
let normal_model_info = harness.model_info.clone();
let mut lite_model_info = normal_model_info.clone();
lite_model_info.use_responses_lite = true;
let mut session = harness.client.new_session();
Expand Down
2 changes: 0 additions & 2 deletions codex-rs/core/tests/suite/model_switching.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,6 @@ fn test_model_info(
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down Expand Up @@ -926,7 +925,6 @@ async fn model_switch_to_smaller_model_updates_token_context_window() -> Result<
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/suite/models_cache_ttl.rs
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,6 @@ fn test_remote_model(slug: &str, priority: i32) -> ModelInfo {
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/suite/multi_agent_mode.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ const PROACTIVE_TEXT: &str = "Proactive multi-agent delegation is active.";
const CUSTOM_MODE_HINT_TEXT: &str = "Use the configured delegation policy.";

fn add_ultra_reasoning(model_info: &mut ModelInfo) {
model_info.supports_reasoning_summaries = true;
model_info
.supported_reasoning_levels
.push(ReasoningEffortPreset {
Expand Down
2 changes: 0 additions & 2 deletions codex-rs/core/tests/suite/personality.rs
Original file line number Diff line number Diff line change
Expand Up @@ -566,7 +566,6 @@ async fn remote_model_friendly_personality_instructions_with_feature() -> anyhow
approvals: None,
}),
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down Expand Up @@ -683,7 +682,6 @@ async fn user_turn_personality_remote_model_template_includes_update_message() -
approvals: None,
}),
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
4 changes: 0 additions & 4 deletions codex-rs/core/tests/suite/remote_models.rs
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,6 @@ async fn remote_models_long_model_slug_is_sent_with_custom_reasoning() -> Result
description: custom_reasoning_effort.to_string(),
},
];
remote_model.supports_reasoning_summaries = true;
remote_model.default_reasoning_summary = ReasoningSummary::Detailed;
mount_models_once(
&server,
Expand Down Expand Up @@ -491,7 +490,6 @@ async fn remote_models_remote_model_uses_unified_exec() -> Result<()> {
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down Expand Up @@ -745,7 +743,6 @@ async fn remote_models_apply_remote_base_instructions() -> Result<()> {
base_instructions: remote_base.to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down Expand Up @@ -1272,7 +1269,6 @@ fn test_remote_model_with_policy(
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/suite/rmcp_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1653,7 +1653,6 @@ async fn stdio_image_responses_are_sanitized_for_text_only_model() -> anyhow::Re
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/suite/spawn_agent_description.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,6 @@ fn test_model_info(
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/core/tests/suite/view_image.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1375,7 +1375,6 @@ async fn view_image_tool_returns_unsupported_message_for_text_only_model() -> an
base_instructions: "base instructions".to_string(),
model_messages: None,
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
1 change: 0 additions & 1 deletion codex-rs/model-provider/src/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -421,7 +421,6 @@ mod tests {
"priority": 0,
"upgrade": null,
"base_instructions": "base instructions",
"supports_reasoning_summaries": false,
"support_verbosity": false,
"default_verbosity": null,
"apply_patch_tool_type": null,
Expand Down
8 changes: 0 additions & 8 deletions codex-rs/models-manager/models.json

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion codex-rs/models-manager/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,5 @@ pub struct ModelsManagerConfig {
pub tool_output_token_limit: Option<usize>,
pub base_instructions: Option<String>,
pub personality_enabled: bool,
pub model_supports_reasoning_summaries: Option<bool>,
pub model_catalog: Option<ModelsResponse>,
}
1 change: 0 additions & 1 deletion codex-rs/models-manager/src/manager_tests.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,6 @@ fn remote_model_with_visibility(
"priority": priority,
"upgrade": null,
"base_instructions": "base instructions",
"supports_reasoning_summaries": false,
"support_verbosity": false,
"default_verbosity": null,
"apply_patch_tool_type": null,
Expand Down
6 changes: 0 additions & 6 deletions codex-rs/models-manager/src/model_info.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,6 @@ const LOCAL_PRAGMATIC_TEMPLATE: &str = "You are a deeply pragmatic, effective so
const PERSONALITY_PLACEHOLDER: &str = "{{ personality }}";

pub fn with_config_overrides(mut model: ModelInfo, config: &ModelsManagerConfig) -> ModelInfo {
if let Some(supports_reasoning_summaries) = config.model_supports_reasoning_summaries
&& supports_reasoning_summaries
{
model.supports_reasoning_summaries = true;
}
if let Some(context_window) = config.model_context_window {
model.context_window = Some(
model
Expand Down Expand Up @@ -93,7 +88,6 @@ pub fn model_info_from_slug(slug: &str) -> ModelInfo {
base_instructions: BASE_INSTRUCTIONS.to_string(),
model_messages: local_personality_messages_for_slug(slug),
include_skills_usage_instructions: false,
supports_reasoning_summaries: false,
default_reasoning_summary: ReasoningSummary::Auto,
support_verbosity: false,
default_verbosity: None,
Expand Down
Loading
Loading