1use serde::{Deserialize, Serialize};
2use std::collections::HashMap;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub enum Event {
6 Thinking {
7 version: u32,
8 },
9 ToolCall {
10 version: u32,
11 name: String,
12 args: HashMap<String, serde_json::Value>,
13 },
14 ToolResult {
15 version: u32,
16 output: String,
17 },
18 FileChange {
19 version: u32,
20 path: String,
21 diff: String,
22 },
23 Error {
24 version: u32,
25 message: String,
26 },
27 Done {
28 version: u32,
29 },
30}
31
32#[cfg(test)]
33mod tests {
34 use super::*;
35
36 #[test]
37 fn test_event_serialization() {
38 let event = Event::Thinking { version: 1 };
39 let json = serde_json::to_string(&event).unwrap();
40 let deserialized: Event = serde_json::from_str(&json).unwrap();
41 assert!(matches!(deserialized, Event::Thinking { version: 1 }));
42 }
43}