diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index 6fec45e1dc..eb81b7e952 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -4720,6 +4720,14 @@ async fn persist_pre_turn_items_for_compaction_outcome( response_item: ResponseItem, ) { match outcome { + PreTurnCompactionOutcome::NotNeeded => { + if !pre_turn_context_items.is_empty() { + sess.record_conversation_items(turn_context, pre_turn_context_items) + .await; + } + sess.record_user_prompt_and_emit_turn_item(turn_context.as_ref(), input, response_item) + .await; + } PreTurnCompactionOutcome::CompactedWithIncomingItems => { // Pre-turn compaction includes incoming items only for the compaction request itself. // Persist canonical turn context directly above the incoming user item so context @@ -4732,14 +4740,6 @@ async fn persist_pre_turn_items_for_compaction_outcome( sess.record_user_prompt_and_emit_turn_item(turn_context.as_ref(), input, response_item) .await; } - PreTurnCompactionOutcome::NotNeeded => { - if !pre_turn_context_items.is_empty() { - sess.record_conversation_items(turn_context, pre_turn_context_items) - .await; - } - sess.record_user_prompt_and_emit_turn_item(turn_context.as_ref(), input, response_item) - .await; - } // TODO(ccunningham): Followup PR will use compacting excluding incoming items as a fallback // (even though it is out of distribution for current models). // Also future models may prefer compacting pre-turn history without incoming turn items.