From 15a7addd30dba691e9f1839ea0ec2564f7185bd9 Mon Sep 17 00:00:00 2001 From: Dylan Hurd Date: Mon, 2 Mar 2026 14:10:14 -0700 Subject: [PATCH] fix rebase and compaction --- codex-rs/core/src/codex.rs | 6 +++--- codex-rs/core/src/codex/rollout_reconstruction_tests.rs | 8 ++++++++ codex-rs/core/src/compact.rs | 6 +++++- codex-rs/core/src/compact_remote.rs | 6 +++++- codex-rs/core/src/rollout/recorder.rs | 1 + codex-rs/state/src/extract.rs | 2 ++ 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/codex-rs/core/src/codex.rs b/codex-rs/core/src/codex.rs index f34874b791..529d68aaec 100644 --- a/codex-rs/core/src/codex.rs +++ b/codex-rs/core/src/codex.rs @@ -771,6 +771,7 @@ impl TurnContext { .unwrap_or(compact::SUMMARIZATION_PROMPT) } + #[cfg(test)] pub(crate) fn to_turn_context_item(&self) -> TurnContextItem { self.to_turn_context_item_with_approved_prefix_rules(None) } @@ -3187,9 +3188,8 @@ impl Session { self.build_settings_update_items(reference_context_item.as_ref(), turn_context) .await }; - let turn_context_item = turn_context.to_turn_context_item_with_exec_policy( - self.services.exec_policy.current().as_ref(), - ); + let turn_context_item = turn_context + .to_turn_context_item_with_exec_policy(self.services.exec_policy.current().as_ref()); if !context_items.is_empty() { self.record_conversation_items(turn_context, &context_items) .await; diff --git a/codex-rs/core/src/codex/rollout_reconstruction_tests.rs b/codex-rs/core/src/codex/rollout_reconstruction_tests.rs index 97dbcdd9c5..0371e1a463 100644 --- a/codex-rs/core/src/codex/rollout_reconstruction_tests.rs +++ b/codex-rs/core/src/codex/rollout_reconstruction_tests.rs @@ -46,6 +46,7 @@ async fn record_initial_history_resumed_bare_turn_context_does_not_hydrate_previ approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -84,6 +85,7 @@ async fn record_initial_history_resumed_hydrates_previous_turn_settings_from_lif approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -745,6 +747,7 @@ async fn record_initial_history_resumed_turn_context_after_compaction_reestablis approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -816,6 +819,7 @@ async fn record_initial_history_resumed_turn_context_after_compaction_reestablis approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -844,6 +848,7 @@ async fn record_initial_history_resumed_aborted_turn_without_id_clears_active_tu approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -949,6 +954,7 @@ async fn record_initial_history_resumed_unmatched_abort_preserves_active_turn_fo approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: current_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -1050,6 +1056,7 @@ async fn record_initial_history_resumed_trailing_incomplete_turn_compaction_clea approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), @@ -1193,6 +1200,7 @@ async fn record_initial_history_resumed_replaced_incomplete_compacted_turn_clear approval_policy: turn_context.approval_policy.value(), sandbox_policy: turn_context.sandbox_policy.get().clone(), network: None, + approved_prefix_rules: None, model: previous_model.to_string(), personality: turn_context.personality, collaboration_mode: Some(turn_context.collaboration_mode.clone()), diff --git a/codex-rs/core/src/compact.rs b/codex-rs/core/src/compact.rs index 11500e27cf..3de015e650 100644 --- a/codex-rs/core/src/compact.rs +++ b/codex-rs/core/src/compact.rs @@ -211,7 +211,11 @@ async fn run_compact_task_inner( new_history.extend(ghost_snapshots); let reference_context_item = match initial_context_injection { InitialContextInjection::DoNotInject => None, - InitialContextInjection::BeforeLastUserMessage => Some(turn_context.to_turn_context_item()), + InitialContextInjection::BeforeLastUserMessage => { + Some(turn_context.to_turn_context_item_with_exec_policy( + sess.services.exec_policy.current().as_ref(), + )) + } }; let compacted_item = CompactedItem { message: summary_text.clone(), diff --git a/codex-rs/core/src/compact_remote.rs b/codex-rs/core/src/compact_remote.rs index 6d8368bce4..1d6bd7309b 100644 --- a/codex-rs/core/src/compact_remote.rs +++ b/codex-rs/core/src/compact_remote.rs @@ -135,7 +135,11 @@ async fn run_remote_compact_task_inner_impl( } let reference_context_item = match initial_context_injection { InitialContextInjection::DoNotInject => None, - InitialContextInjection::BeforeLastUserMessage => Some(turn_context.to_turn_context_item()), + InitialContextInjection::BeforeLastUserMessage => { + Some(turn_context.to_turn_context_item_with_exec_policy( + sess.services.exec_policy.current().as_ref(), + )) + } }; let compacted_item = CompactedItem { message: String::new(), diff --git a/codex-rs/core/src/rollout/recorder.rs b/codex-rs/core/src/rollout/recorder.rs index 7602b75c6a..eddec89bca 100644 --- a/codex-rs/core/src/rollout/recorder.rs +++ b/codex-rs/core/src/rollout/recorder.rs @@ -1401,6 +1401,7 @@ mod tests { approval_policy: AskForApproval::Never, sandbox_policy: SandboxPolicy::new_read_only_policy(), network: None, + approved_prefix_rules: None, model: "test-model".to_string(), personality: None, collaboration_mode: None, diff --git a/codex-rs/state/src/extract.rs b/codex-rs/state/src/extract.rs index 54ef7ea662..4b26032e67 100644 --- a/codex-rs/state/src/extract.rs +++ b/codex-rs/state/src/extract.rs @@ -258,6 +258,7 @@ mod tests { approval_policy: AskForApproval::Never, sandbox_policy: SandboxPolicy::DangerFullAccess, network: None, + approved_prefix_rules: None, model: "gpt-5".to_string(), personality: None, collaboration_mode: None, @@ -295,6 +296,7 @@ mod tests { approval_policy: AskForApproval::OnRequest, sandbox_policy: SandboxPolicy::new_read_only_policy(), network: None, + approved_prefix_rules: None, model: "gpt-5".to_string(), personality: None, collaboration_mode: None,