Codex Handbook
codex-api/src/requests/responses.rs 37 lines
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::ToolSearchCall { 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()));            }        }    }}