Skip to main content

codetether_agent/tui/chat/
message.rs

1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub enum MessageType {
5    User,
6    Assistant,
7    System,
8    Error,
9    ToolCall {
10        name: String,
11        arguments: String,
12    },
13    ToolResult {
14        name: String,
15        output: String,
16        success: bool,
17        #[serde(default)]
18        duration_ms: Option<u64>,
19    },
20    Thinking(String),
21    Image {
22        url: String,
23    },
24    File {
25        path: String,
26        #[serde(default)]
27        size: Option<u64>,
28    },
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
32pub struct ChatMessage {
33    pub message_type: MessageType,
34    pub content: String,
35    pub timestamp: std::time::SystemTime,
36}
37
38impl ChatMessage {
39    pub fn new(message_type: MessageType, content: impl Into<String>) -> Self {
40        Self {
41            message_type,
42            content: content.into(),
43            timestamp: std::time::SystemTime::now(),
44        }
45    }
46}