use serde::{Deserialize, Serialize};
use litty::literal;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PromptV1 {
pub messages: Vec<PromptMessageV1>,
pub system: Option<String>,
pub settings: Option<super::llm::LlmSettingsV1>,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PromptMessageV1 {
pub role: PromptMessageV1Role,
pub content: String,
}
#[literal("user")]
pub struct PromptMessageV1RoleUser;
#[literal("assistant")]
pub struct PromptMessageV1RoleAssistant;
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PromptMessageV1Role {
User(PromptMessageV1RoleUser),
Assistant(PromptMessageV1RoleAssistant),
}