Skip to main content

lash_sansio/
causal.rs

1use serde::{Deserialize, Serialize};
2
3/// Stable semantic reference to the runtime fact that caused another fact.
4#[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    HostEvent {
29        occurrence_id: String,
30    },
31    SessionNode {
32        session_id: String,
33        node_id: String,
34    },
35}