use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ConversationItem {
Message(Box<models::Message>),
FunctionToolCallResource(Box<models::FunctionToolCallResource>),
FunctionToolCallOutputResource(Box<models::FunctionToolCallOutputResource>),
FileSearchToolCall(Box<models::FileSearchToolCall>),
WebSearchToolCall(Box<models::WebSearchToolCall>),
ImageGenToolCall(Box<models::ImageGenToolCall>),
ComputerToolCall(Box<models::ComputerToolCall>),
ComputerToolCallOutputResource(Box<models::ComputerToolCallOutputResource>),
ToolSearchCall(Box<models::ToolSearchCall>),
ToolSearchOutput(Box<models::ToolSearchOutput>),
AdditionalTools(Box<models::AdditionalTools>),
ResponseConfigurationUpdate(Box<models::ResponseConfigurationUpdate>),
ReasoningItem(Box<models::ReasoningItem>),
Program(Box<models::Program>),
ProgramOutput(Box<models::ProgramOutput>),
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>),
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Quality {
Low,
Medium,
High,
Xhigh,
Max,
Auto,
}
impl Default for Quality {
fn default() -> Quality {
Self::Low
}
}