use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
#[serde(untagged)]
pub enum ThreadItem {
Known(KnownThreadItem),
Unknown(UnknownThreadItem),
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq)]
#[serde(untagged)]
pub enum KnownThreadItem {
AgentMessage(super::AgentMessageItem),
Reasoning(super::ReasoningItem),
CommandExecution(super::CommandExecutionItem),
FileChange(super::FileChangeItem),
McpToolCall(super::McpToolCallItem),
WebSearch(super::WebSearchItem),
TodoList(super::TodoListItem),
Error(super::ErrorItem),
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub struct UnknownThreadItem {
pub id: String,
pub r#type: String,
}