1use serde::{Deserialize, Serialize};
2
3#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
5#[serde(tag = "type", rename_all = "snake_case")]
6pub enum CausalRef {
7 Turn {
8 session_id: String,
9 turn_id: String,
10 },
11 Effect {
12 session_id: String,
13 #[serde(default, skip_serializing_if = "Option::is_none")]
14 turn_id: Option<String>,
15 effect_id: String,
16 },
17 ToolCall {
18 session_id: String,
19 call_id: String,
20 },
21 Process {
22 process_id: String,
23 },
24 ProcessEvent {
25 process_id: String,
26 sequence: u64,
27 },
28 SessionNode {
29 session_id: String,
30 node_id: String,
31 },
32}