Skip to main content

chronicle/db/
models.rs

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/// The raw JSON payload from a Claude Code hook (common fields).
38#[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}