diff --git a/codex-rs/core/src/chat_completions.rs b/codex-rs/core/src/chat_completions.rs index ed764ef7b8..893050992a 100644 --- a/codex-rs/core/src/chat_completions.rs +++ b/codex-rs/core/src/chat_completions.rs @@ -58,7 +58,7 @@ pub(crate) async fn stream_chat_completions( ResponseItem::Message { role, .. } => last_emitted_role = Some(role.as_str()), ResponseItem::FunctionCall { .. } | ResponseItem::LocalShellCall { .. } - | ResponseItem::IShell { .. } => last_emitted_role = Some("assistant"), + | ResponseItem::UnifiedExec { .. } => last_emitted_role = Some("assistant"), ResponseItem::FunctionCallOutput { .. } => last_emitted_role = Some("tool"), ResponseItem::Reasoning { .. } | ResponseItem::Other => {} ResponseItem::CustomToolCall { .. } => {} @@ -121,7 +121,7 @@ pub(crate) async fn stream_chat_completions( match &input[idx + 1] { ResponseItem::FunctionCall { .. } | ResponseItem::LocalShellCall { .. } - | ResponseItem::IShell { .. } => { + | ResponseItem::UnifiedExec { .. } => { reasoning_by_anchor_index .entry(idx + 1) .and_modify(|v| v.push_str(&text)) @@ -226,7 +226,7 @@ pub(crate) async fn stream_chat_completions( } messages.push(msg); } - ResponseItem::IShell { .. } => { + ResponseItem::UnifiedExec { .. } => { // The interactive shell tool is currently exposed only via the // Responses API. Ignore these items when using Chat // Completions to maintain feature parity with existing diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 5660317679..5a3257f2ed 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -1988,7 +1988,7 @@ async fn handle_response_item( .await, ) } - ResponseItem::IShell { + ResponseItem::UnifiedExec { id, session_id, arguments, diff --git a/codex-rs/core/src/conversation_history.rs b/codex-rs/core/src/conversation_history.rs index 783aa3df20..eb7b916cd2 100644 --- a/codex-rs/core/src/conversation_history.rs +++ b/codex-rs/core/src/conversation_history.rs @@ -71,7 +71,7 @@ fn is_api_message(message: &ResponseItem) -> bool { | ResponseItem::CustomToolCall { .. } | ResponseItem::CustomToolCallOutput { .. } | ResponseItem::LocalShellCall { .. } - | ResponseItem::IShell { .. } + | ResponseItem::UnifiedExec { .. } | ResponseItem::Reasoning { .. } => true, ResponseItem::WebSearchCall { .. } | ResponseItem::Other => false, } diff --git a/codex-rs/core/src/event_mapping.rs b/codex-rs/core/src/event_mapping.rs index 3d0097e502..ab13afa698 100644 --- a/codex-rs/core/src/event_mapping.rs +++ b/codex-rs/core/src/event_mapping.rs @@ -91,7 +91,7 @@ pub(crate) fn map_response_item_to_event_messages( ResponseItem::FunctionCall { .. } | ResponseItem::FunctionCallOutput { .. } | ResponseItem::LocalShellCall { .. } - | ResponseItem::IShell { .. } + | ResponseItem::UnifiedExec { .. } | ResponseItem::CustomToolCall { .. } | ResponseItem::CustomToolCallOutput { .. } | ResponseItem::Other => Vec::new(), diff --git a/codex-rs/core/src/rollout/policy.rs b/codex-rs/core/src/rollout/policy.rs index 8e827d1b56..4596d95a75 100644 --- a/codex-rs/core/src/rollout/policy.rs +++ b/codex-rs/core/src/rollout/policy.rs @@ -7,7 +7,7 @@ pub(crate) fn is_persisted_response_item(item: &ResponseItem) -> bool { ResponseItem::Message { .. } | ResponseItem::Reasoning { .. } | ResponseItem::LocalShellCall { .. } - | ResponseItem::IShell { .. } + | ResponseItem::UnifiedExec { .. } | ResponseItem::FunctionCall { .. } | ResponseItem::FunctionCallOutput { .. } | ResponseItem::CustomToolCall { .. } diff --git a/codex-rs/protocol/src/models.rs b/codex-rs/protocol/src/models.rs index 9e3f4ec87f..83a62b3db2 100644 --- a/codex-rs/protocol/src/models.rs +++ b/codex-rs/protocol/src/models.rs @@ -114,7 +114,7 @@ pub enum ResponseItem { status: Option, action: WebSearchAction, }, - IShell { + UnifiedExec { #[serde(skip_serializing)] id: Option, /// Identifier for the interactive shell session. When absent, a new