use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ItemField {
Message(Box<models::Message>),
FunctionToolCall(Box<models::FunctionToolCall>),
ToolSearchCall(Box<models::ToolSearchCall>),
ToolSearchOutput(Box<models::ToolSearchOutput>),
FunctionToolCallOutput(Box<models::FunctionToolCallOutput>),
FileSearchToolCall(Box<models::FileSearchToolCall>),
WebSearchToolCall(Box<models::WebSearchToolCall>),
ImageGenToolCall(Box<models::ImageGenToolCall>),
ComputerToolCall(Box<models::ComputerToolCall>),
ComputerToolCallOutputResource(Box<models::ComputerToolCallOutputResource>),
ReasoningItem(Box<models::ReasoningItem>),
CompactionBody(Box<models::CompactionBody>),
CodeInterpreterToolCall(Box<models::CodeInterpreterToolCall>),
LocalShellToolCall(Box<models::LocalShellToolCall>),
LocalShellToolCallOutput(Box<models::LocalShellToolCallOutput>),
FunctionShellCall(Box<models::FunctionShellCall>),
FunctionShellCallOutput(Box<models::FunctionShellCallOutput>),
ApplyPatchToolCall(Box<models::ApplyPatchToolCall>),
ApplyPatchToolCallOutput(Box<models::ApplyPatchToolCallOutput>),
McpListTools(Box<models::McpListTools>),
McpApprovalRequest(Box<models::McpApprovalRequest>),
McpApprovalResponseResource(Box<models::McpApprovalResponseResource>),
McpToolCall(Box<models::McpToolCall>),
CustomToolCall(Box<models::CustomToolCall>),
CustomToolCallOutput(Box<models::CustomToolCallOutput>),
}