From f07b6015af7b45f82b12315dd3ff15c7947b1229 Mon Sep 17 00:00:00 2001 From: 5OCWorkshop <5OCWorkshop@users.noreply.github.com> Date: Fri, 14 Aug 2026 22:50:07 +0100 Subject: [PATCH] fix(core): omit stale responses lite include --- code-rs/core/src/client.rs | 50 +++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 20 deletions(-) diff --git a/code-rs/core/src/client.rs b/code-rs/core/src/client.rs index b68523dc4862..0313ecffc77b 100644 --- a/code-rs/core/src/client.rs +++ b/code-rs/core/src/client.rs @@ -224,6 +224,18 @@ fn should_store_responses( !request_family.use_responses_lite && prompt.store } +fn response_include_for_request( + store: bool, + use_responses_lite: bool, + has_reasoning: bool, +) -> Vec { + if (!store || use_responses_lite) && has_reasoning { + vec!["reasoning.encrypted_content".to_string()] + } else { + Vec::new() + } +} + fn is_server_overloaded_error(error: &Error) -> bool { matches!( error.code.as_deref(), @@ -839,16 +851,11 @@ impl ModelClient { attempt += 1; let reasoning = self.current_reasoning_param(&request_family, effective_effort); - let mut include: Vec = if (!store || request_family.use_responses_lite) - && reasoning.is_some() - { - vec!["reasoning.encrypted_content".to_string()] - } else { - Vec::new() - }; - if request_family.use_responses_lite { - include.push("codex-lite".to_string()); - } + let include = response_include_for_request( + store, + request_family.use_responses_lite, + reasoning.is_some(), + ); let service_tier = self .config @@ -1346,16 +1353,11 @@ impl ModelClient { let reasoning = self.current_reasoning_param(&request_family, effective_effort); // Request encrypted COT if we are not storing responses, // otherwise reasoning items will be referenced by ID - let mut include: Vec = if (!store || request_family.use_responses_lite) - && reasoning.is_some() - { - vec!["reasoning.encrypted_content".to_string()] - } else { - Vec::new() - }; - if request_family.use_responses_lite { - include.push("codex-lite".to_string()); - } + let include = response_include_for_request( + store, + request_family.use_responses_lite, + reasoning.is_some(), + ); let text = text_template.clone(); @@ -3315,6 +3317,14 @@ mod tests { assert!(!should_store_responses(&prompt, &provider, &family)); } + #[test] + fn responses_lite_include_uses_public_response_fields_only() { + let include = response_include_for_request(false, true, true); + + assert_eq!(include, vec!["reasoning.encrypted_content".to_string()]); + assert!(!include.iter().any(|field| field == "codex-lite")); + } + #[test] fn responses_storage_is_not_forced_for_azure_provider() { let prompt = Prompt::default();