use codex_protocol::models::ResponseItem; use serde_json::Value; #[derive(Debug, Clone, Copy, Default, PartialEq, Eq)] pub enum Compression { #[default] None, Zstd, } pub(crate) fn attach_item_ids(payload_json: &mut Value, original_items: &[ResponseItem]) { let Some(input_value) = payload_json.get_mut("input") else { return; }; let Value::Array(items) = input_value else { return; }; for (value, item) in items.iter_mut().zip(original_items.iter()) { if let ResponseItem::Reasoning { id, .. } | ResponseItem::Message { id: Some(id), .. } | ResponseItem::WebSearchCall { id: Some(id), .. } | ResponseItem::FunctionCall { id: Some(id), .. } | ResponseItem::LocalShellCall { id: Some(id), .. } | ResponseItem::CustomToolCall { id: Some(id), .. } = item { if id.is_empty() { continue; } if let Some(obj) = value.as_object_mut() { obj.insert("id".to_string(), Value::String(id.clone())); } } } }