Skip to content

Commit c9963b5

Browse files
authored
consolidate reasoning enums into one (#2428)
We have three enums for each of reasoning summaries and reasoning effort with same values. They can be consolidated into one.
1 parent a4f76bd commit c9963b5

File tree

7 files changed

+16
-122
lines changed

7 files changed

+16
-122
lines changed

codex-rs/core/src/client.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,6 @@ use crate::client_common::ResponseStream;
2929
use crate::client_common::ResponsesApiRequest;
3030
use crate::client_common::create_reasoning_param_for_request;
3131
use crate::config::Config;
32-
use crate::config_types::ReasoningEffort as ReasoningEffortConfig;
33-
use crate::config_types::ReasoningSummary as ReasoningSummaryConfig;
3432
use crate::error::CodexErr;
3533
use crate::error::Result;
3634
use crate::error::UsageLimitReachedError;
@@ -42,6 +40,8 @@ use crate::openai_tools::create_tools_json_for_responses_api;
4240
use crate::protocol::TokenUsage;
4341
use crate::user_agent::get_codex_user_agent;
4442
use crate::util::backoff;
43+
use codex_protocol::config_types::ReasoningEffort as ReasoningEffortConfig;
44+
use codex_protocol::config_types::ReasoningSummary as ReasoningSummaryConfig;
4545
use std::sync::Arc;
4646

4747
#[derive(Debug, Deserialize)]

codex-rs/core/src/client_common.rs

Lines changed: 5 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
use crate::config_types::ReasoningEffort as ReasoningEffortConfig;
2-
use crate::config_types::ReasoningSummary as ReasoningSummaryConfig;
31
use crate::error::Result;
42
use crate::model_family::ModelFamily;
53
use crate::models::ContentItem;
64
use crate::models::ResponseItem;
75
use crate::openai_tools::OpenAiTool;
86
use crate::protocol::TokenUsage;
97
use codex_apply_patch::APPLY_PATCH_TOOL_INSTRUCTIONS;
8+
use codex_protocol::config_types::ReasoningEffort as ReasoningEffortConfig;
9+
use codex_protocol::config_types::ReasoningSummary as ReasoningSummaryConfig;
1010
use futures::Stream;
1111
use serde::Serialize;
1212
use std::borrow::Cow;
@@ -85,55 +85,8 @@ pub enum ResponseEvent {
8585

8686
#[derive(Debug, Serialize)]
8787
pub(crate) struct Reasoning {
88-
pub(crate) effort: OpenAiReasoningEffort,
89-
#[serde(skip_serializing_if = "Option::is_none")]
90-
pub(crate) summary: Option<OpenAiReasoningSummary>,
91-
}
92-
93-
/// See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning
94-
#[derive(Debug, Serialize, Default, Clone, Copy)]
95-
#[serde(rename_all = "lowercase")]
96-
pub(crate) enum OpenAiReasoningEffort {
97-
Minimal,
98-
Low,
99-
#[default]
100-
Medium,
101-
High,
102-
}
103-
104-
impl From<ReasoningEffortConfig> for Option<OpenAiReasoningEffort> {
105-
fn from(effort: ReasoningEffortConfig) -> Self {
106-
match effort {
107-
ReasoningEffortConfig::Minimal => Some(OpenAiReasoningEffort::Minimal),
108-
ReasoningEffortConfig::Low => Some(OpenAiReasoningEffort::Low),
109-
ReasoningEffortConfig::Medium => Some(OpenAiReasoningEffort::Medium),
110-
ReasoningEffortConfig::High => Some(OpenAiReasoningEffort::High),
111-
ReasoningEffortConfig::None => None,
112-
}
113-
}
114-
}
115-
116-
/// A summary of the reasoning performed by the model. This can be useful for
117-
/// debugging and understanding the model's reasoning process.
118-
/// See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries
119-
#[derive(Debug, Serialize, Default, Clone, Copy)]
120-
#[serde(rename_all = "lowercase")]
121-
pub(crate) enum OpenAiReasoningSummary {
122-
#[default]
123-
Auto,
124-
Concise,
125-
Detailed,
126-
}
127-
128-
impl From<ReasoningSummaryConfig> for Option<OpenAiReasoningSummary> {
129-
fn from(summary: ReasoningSummaryConfig) -> Self {
130-
match summary {
131-
ReasoningSummaryConfig::Auto => Some(OpenAiReasoningSummary::Auto),
132-
ReasoningSummaryConfig::Concise => Some(OpenAiReasoningSummary::Concise),
133-
ReasoningSummaryConfig::Detailed => Some(OpenAiReasoningSummary::Detailed),
134-
ReasoningSummaryConfig::None => None,
135-
}
136-
}
88+
pub(crate) effort: ReasoningEffortConfig,
89+
pub(crate) summary: ReasoningSummaryConfig,
13790
}
13891

13992
/// Request object that is serialized as JSON and POST'ed when using the
@@ -164,12 +117,7 @@ pub(crate) fn create_reasoning_param_for_request(
164117
summary: ReasoningSummaryConfig,
165118
) -> Option<Reasoning> {
166119
if model_family.supports_reasoning_summaries {
167-
let effort: Option<OpenAiReasoningEffort> = effort.into();
168-
let effort = effort?;
169-
Some(Reasoning {
170-
effort,
171-
summary: summary.into(),
172-
})
120+
Some(Reasoning { effort, summary })
173121
} else {
174122
None
175123
}

codex-rs/core/src/codex.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,6 @@ use crate::client::ModelClient;
3939
use crate::client_common::Prompt;
4040
use crate::client_common::ResponseEvent;
4141
use crate::config::Config;
42-
use crate::config_types::ReasoningEffort as ReasoningEffortConfig;
43-
use crate::config_types::ReasoningSummary as ReasoningSummaryConfig;
4442
use crate::config_types::ShellEnvironmentPolicy;
4543
use crate::conversation_history::ConversationHistory;
4644
use crate::environment_context::EnvironmentContext;
@@ -107,6 +105,8 @@ use crate::shell;
107105
use crate::turn_diff_tracker::TurnDiffTracker;
108106
use crate::user_notification::UserNotification;
109107
use crate::util::backoff;
108+
use codex_protocol::config_types::ReasoningEffort as ReasoningEffortConfig;
109+
use codex_protocol::config_types::ReasoningSummary as ReasoningSummaryConfig;
110110

111111
// A convenience extension trait for acquiring mutex locks where poisoning is
112112
// unrecoverable and should abort the program. This avoids scattered `.unwrap()`
@@ -1035,8 +1035,8 @@ async fn submission_loop(
10351035
Arc::new(per_turn_config),
10361036
None,
10371037
provider,
1038-
effort.into(),
1039-
summary.into(),
1038+
effort,
1039+
summary,
10401040
sess.session_id,
10411041
);
10421042

codex-rs/core/src/config.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
use crate::config_profile::ConfigProfile;
22
use crate::config_types::History;
33
use crate::config_types::McpServerConfig;
4-
use crate::config_types::ReasoningEffort;
5-
use crate::config_types::ReasoningSummary;
64
use crate::config_types::SandboxWorkspaceWrite;
75
use crate::config_types::ShellEnvironmentPolicy;
86
use crate::config_types::ShellEnvironmentPolicyToml;
@@ -15,6 +13,8 @@ use crate::model_provider_info::built_in_model_providers;
1513
use crate::openai_model_info::get_model_info;
1614
use crate::protocol::AskForApproval;
1715
use crate::protocol::SandboxPolicy;
16+
use codex_protocol::config_types::ReasoningEffort;
17+
use codex_protocol::config_types::ReasoningSummary;
1818
use codex_protocol::config_types::SandboxMode;
1919
use dirs::home_dir;
2020
use serde::Deserialize;

codex-rs/core/src/config_profile.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
use serde::Deserialize;
22
use std::path::PathBuf;
33

4-
use crate::config_types::ReasoningEffort;
5-
use crate::config_types::ReasoningSummary;
64
use crate::protocol::AskForApproval;
5+
use codex_protocol::config_types::ReasoningEffort;
6+
use codex_protocol::config_types::ReasoningSummary;
77

88
/// Collection of common configuration options that a user can define as a unit
99
/// in `config.toml`.

codex-rs/core/src/config_types.rs

Lines changed: 0 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,9 @@
55

66
use std::collections::HashMap;
77
use std::path::PathBuf;
8-
use strum_macros::Display;
98
use wildmatch::WildMatchPattern;
109

1110
use serde::Deserialize;
12-
use serde::Serialize;
1311

1412
#[derive(Deserialize, Debug, Clone, PartialEq)]
1513
pub struct McpServerConfig {
@@ -185,56 +183,3 @@ impl From<ShellEnvironmentPolicyToml> for ShellEnvironmentPolicy {
185183
}
186184
}
187185
}
188-
189-
/// See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#get-started-with-reasoning
190-
#[derive(Debug, Serialize, Deserialize, Default, Clone, Copy, PartialEq, Eq, Display)]
191-
#[serde(rename_all = "lowercase")]
192-
#[strum(serialize_all = "lowercase")]
193-
pub enum ReasoningEffort {
194-
Minimal,
195-
Low,
196-
#[default]
197-
Medium,
198-
High,
199-
/// Option to disable reasoning.
200-
None,
201-
}
202-
203-
/// A summary of the reasoning performed by the model. This can be useful for
204-
/// debugging and understanding the model's reasoning process.
205-
/// See https://platform.openai.com/docs/guides/reasoning?api-mode=responses#reasoning-summaries
206-
#[derive(Debug, Serialize, Deserialize, Default, Clone, Copy, PartialEq, Eq, Display)]
207-
#[serde(rename_all = "lowercase")]
208-
#[strum(serialize_all = "lowercase")]
209-
pub enum ReasoningSummary {
210-
#[default]
211-
Auto,
212-
Concise,
213-
Detailed,
214-
/// Option to disable reasoning summaries.
215-
None,
216-
}
217-
218-
// Conversions from protocol enums to core config enums used where protocol
219-
// values are supplied by clients and core needs its internal representations.
220-
impl From<codex_protocol::config_types::ReasoningEffort> for ReasoningEffort {
221-
fn from(v: codex_protocol::config_types::ReasoningEffort) -> Self {
222-
match v {
223-
codex_protocol::config_types::ReasoningEffort::Low => ReasoningEffort::Low,
224-
codex_protocol::config_types::ReasoningEffort::Medium => ReasoningEffort::Medium,
225-
codex_protocol::config_types::ReasoningEffort::High => ReasoningEffort::High,
226-
codex_protocol::config_types::ReasoningEffort::None => ReasoningEffort::None,
227-
}
228-
}
229-
}
230-
231-
impl From<codex_protocol::config_types::ReasoningSummary> for ReasoningSummary {
232-
fn from(v: codex_protocol::config_types::ReasoningSummary) -> Self {
233-
match v {
234-
codex_protocol::config_types::ReasoningSummary::Auto => ReasoningSummary::Auto,
235-
codex_protocol::config_types::ReasoningSummary::Concise => ReasoningSummary::Concise,
236-
codex_protocol::config_types::ReasoningSummary::Detailed => ReasoningSummary::Detailed,
237-
codex_protocol::config_types::ReasoningSummary::None => ReasoningSummary::None,
238-
}
239-
}
240-
}

codex-rs/protocol/src/config_types.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use strum_macros::Display;
77
#[serde(rename_all = "lowercase")]
88
#[strum(serialize_all = "lowercase")]
99
pub enum ReasoningEffort {
10+
Minimal,
1011
Low,
1112
#[default]
1213
Medium,

0 commit comments

Comments
 (0)