From a8324c5d948707b94f11885676cb33288845df3d Mon Sep 17 00:00:00 2001 From: Ahmed Ibrahim Date: Tue, 2 Sep 2025 14:52:44 -0700 Subject: [PATCH] progress --- codex-rs/core/src/chat_completions.rs | 21 +++++++++++++++++---- codex-rs/core/src/codex.rs | 6 ++++++ 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/codex-rs/core/src/chat_completions.rs b/codex-rs/core/src/chat_completions.rs index 6eca119f3e..f253d5ae84 100644 --- a/codex-rs/core/src/chat_completions.rs +++ b/codex-rs/core/src/chat_completions.rs @@ -129,10 +129,21 @@ pub(crate) async fn stream_chat_completions( "content": output, })); } - ResponseItem::Reasoning { .. } - | ResponseItem::WebSearchCall { .. } - | ResponseItem::Other => { - // Omit these items from the conversation history. + ResponseItem::Reasoning { + id, + summary, + content, + encrypted_content, + } => { + tracing::info!("reasoning item: {:?}", item); + messages.push(json!({ + "role": "assistant", + "content": null, + "reasoning": content, + })); + } + ResponseItem::WebSearchCall { .. } | ResponseItem::Other => { + tracing::info!("omitting item from chat completions: {:?}", item); continue; } } @@ -350,6 +361,8 @@ async fn process_chat_sse( } if let Some(reasoning) = maybe_text { + // Accumulate so we can emit a terminal Reasoning item at end-of-turn. + reasoning_text.push_str(&reasoning); let _ = tx_event .send(Ok(ResponseEvent::ReasoningContentDelta(reasoning))) .await; diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index d7c39c14a5..2773548ca0 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -883,6 +883,10 @@ impl Session { /// Build the full turn input by concatenating the current conversation /// history with additional items for this turn. pub fn turn_input_with_history(&self, extra: Vec) -> Vec { + tracing::info!( + "history: {:?}", + self.state.lock_unchecked().history.contents() + ); [self.state.lock_unchecked().history.contents(), extra].concat() } @@ -1409,6 +1413,7 @@ async fn run_task( sub_id: String, input: Vec, ) { + tracing::info!("running task with input: {:?}", input); if input.is_empty() { return; } @@ -1549,6 +1554,7 @@ async fn run_task( }, None, ) => { + tracing::info!("reasoning item: {:?}", item); items_to_record_in_conversation_history.push(ResponseItem::Reasoning { id: id.clone(), summary: summary.clone(),