use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum ArtifactMessagesInner {
ToolCallsMessage(Box<ToolCallsMessage>),
ToolCallResultMessageSimple(Box<ToolCallResultMessageSimple>),
UserMessage(models::UserMessage),
SystemMessage(models::SystemMessage),
BotMessage(models::BotMessage),
ToolCallMessage(models::ToolCallMessage),
ToolCallResultMessage(models::ToolCallResultMessage),
}
impl Default for ArtifactMessagesInner {
fn default() -> Self {
Self::UserMessage(Default::default())
}
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ToolCallsMessage {
#[serde(rename = "role")]
pub role: String,
#[serde(rename = "message")]
pub message: String,
#[serde(rename = "secondsFromStart")]
pub seconds_from_start: f64,
#[serde(rename = "time")]
pub time: f64,
#[serde(rename = "toolCalls")]
pub tool_calls: Vec<serde_json::Value>,
}
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ToolCallResultMessageSimple {
#[serde(rename = "role")]
pub role: String,
#[serde(rename = "name")]
pub name: String,
#[serde(rename = "result")]
pub result: String,
#[serde(rename = "secondsFromStart")]
pub seconds_from_start: f64,
#[serde(rename = "time")]
pub time: f64,
#[serde(rename = "toolCallId")]
pub tool_call_id: String,
}