use serde::{Deserialize, Serialize}; /// A message in the chat history #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ChatMessage { pub role: String, pub content: String, } /// Request body for the chat endpoint #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ChatRequest { pub message: String, #[serde(default)] pub history: Vec, } /// A source reference from the RAG retrieval #[derive(Debug, Clone, Serialize, Deserialize)] pub struct SourceReference { pub file_path: String, pub qualified_name: String, pub start_line: u32, pub end_line: u32, pub language: String, pub snippet: String, pub score: f64, } /// Response from the chat endpoint #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ChatResponse { pub message: String, pub sources: Vec, }