diff --git a/codex-rs/core/src/memories/startup/extract.rs b/codex-rs/core/src/memories/startup/extract.rs index b3833b8a2..efc030592 100644 --- a/codex-rs/core/src/memories/startup/extract.rs +++ b/codex-rs/core/src/memories/startup/extract.rs @@ -17,7 +17,7 @@ use crate::memories::stage_one::RAW_MEMORY_PROMPT; use crate::memories::stage_one::StageOneOutput; use crate::memories::stage_one::parse_stage_one_output; use crate::memories::stage_one::stage_one_output_schema; -use crate::rollout::policy::should_persist_response_item; +use crate::rollout::policy::should_persist_response_item_for_memories; use codex_protocol::protocol::RolloutItem; use std::path::Path; @@ -156,7 +156,7 @@ fn serialize_filtered_rollout_response_items( .iter() .filter_map(|item| { if let RolloutItem::ResponseItem(item) = item - && should_persist_response_item(item) + && should_persist_response_item_for_memories(item) { Some(item.clone()) } else { diff --git a/codex-rs/core/src/rollout/policy.rs b/codex-rs/core/src/rollout/policy.rs index edc3b941c..7f9f4acec 100644 --- a/codex-rs/core/src/rollout/policy.rs +++ b/codex-rs/core/src/rollout/policy.rs @@ -33,6 +33,24 @@ pub(crate) fn should_persist_response_item(item: &ResponseItem) -> bool { } } +/// Whether a `ResponseItem` should be persisted for the memories. +#[inline] +pub(crate) fn should_persist_response_item_for_memories(item: &ResponseItem) -> bool { + match item { + ResponseItem::Message { .. } + | ResponseItem::LocalShellCall { .. } + | ResponseItem::FunctionCall { .. } + | ResponseItem::FunctionCallOutput { .. } + | ResponseItem::CustomToolCall { .. } + | ResponseItem::CustomToolCallOutput { .. } + | ResponseItem::WebSearchCall { .. } => true, + ResponseItem::Reasoning { .. } + | ResponseItem::GhostSnapshot { .. } + | ResponseItem::Compaction { .. } + | ResponseItem::Other => false, + } +} + /// Whether an `EventMsg` should be persisted in rollout files. #[inline] pub(crate) fn should_persist_event_msg(ev: &EventMsg) -> bool {