Skip to main content

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}