codetether_agent/tui/chat/
message.rs1use 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}