1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
4pub struct Session {
5 pub id: String,
6 pub started_at: i64,
7 pub ended_at: Option<i64>,
8 pub cwd: String,
9 pub model: Option<String>,
10 pub permission_mode: Option<String>,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct Event {
15 pub id: i64,
16 pub session_id: String,
17 pub timestamp: i64,
18 pub event_type: String,
19 pub tool_name: Option<String>,
20 pub tool_use_id: Option<String>,
21 pub agent_id: Option<String>,
22 pub agent_type: Option<String>,
23 pub input_json: Option<Vec<u8>>,
24 pub output_json: Option<Vec<u8>>,
25}
26
27#[derive(Debug, Clone)]
28pub struct Snapshot {
29 pub id: i64,
30 pub event_id: i64,
31 pub file_path: String,
32 pub content_before: Option<Vec<u8>>,
33 pub content_after: Option<Vec<u8>>,
34 pub diff_unified: String,
35}
36
37#[derive(Debug, Clone, Deserialize)]
39pub struct HookPayload {
40 pub session_id: Option<String>,
41 pub hook_event_name: Option<String>,
42 pub cwd: Option<String>,
43 pub permission_mode: Option<String>,
44 pub model: Option<String>,
45 pub agent_id: Option<String>,
46 pub agent_type: Option<String>,
47 pub tool_name: Option<String>,
48 pub tool_input: Option<serde_json::Value>,
49 pub tool_use_id: Option<String>,
50 pub tool_response: Option<String>,
51 pub tool_error: Option<String>,
52 pub prompt: Option<String>,
53 pub last_assistant_message: Option<String>,
54 pub source: Option<String>,
55}