aegon_types/stream.rs
1//! Which event chain a [`crate::LogEvent`] belongs to.
2
3use serde::{Deserialize, Serialize};
4
5/// Identifies whether an event is part of the main session chain or a
6/// sub-agent sidechain.
7///
8/// Claude Code records `isSidechain: true` on events that originate inside
9/// a spawned sub-agent (e.g. via the `Agent` tool). Keeping them separate
10/// is required for correct DAG construction and for meaningful TUI display.
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
12#[serde(rename_all = "snake_case")]
13pub enum StreamId {
14 /// The main session chain — the top-level run the user started.
15 #[default]
16 Main,
17 /// A sub-agent run spawned from the main chain or another sidechain.
18 Sidechain,
19}