use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum SessionTurnItemResource {
MessageItemResource(Box<models::MessageItemResource>),
ReasoningItemResource(Box<models::ReasoningItemResource>),
FunctionCallItemResource(Box<models::FunctionCallItemResource>),
FunctionCallOutputItemResource(Box<models::FunctionCallOutputItemResource>),
AgentMessageItemResource(Box<models::AgentMessageItemResource>),
McpCallItemResource(Box<models::McpCallItemResource>),
ComputerUseCallItemResource(Box<models::ComputerUseCallItemResource>),
BrowserAuthenticationRequestItemResource(Box<models::BrowserAuthenticationRequestItemResource>),
ComputerUseApprovalRequestResultItemResource(
Box<models::ComputerUseApprovalRequestResultItemResource>,
),
WebSearchCallItemResource(Box<models::WebSearchCallItemResource>),
CommandExecutionItemResource(Box<models::CommandExecutionItemResource>),
CreateSubagentCallItemResource(Box<models::CreateSubagentCallItemResource>),
SendSubagentInputCallItemResource(Box<models::SendSubagentInputCallItemResource>),
ResumeSubagentCallItemResource(Box<models::ResumeSubagentCallItemResource>),
WaitForSubagentsCallItemResource(Box<models::WaitForSubagentsCallItemResource>),
InterruptSubagentCallItemResource(Box<models::InterruptSubagentCallItemResource>),
CloseSubagentCallItemResource(Box<models::CloseSubagentCallItemResource>),
}