pub struct SessionDomain {Show 13 fields
pub id: SessionId,
pub agent_type: AgentType,
pub model: Model,
pub status: SessionStatus,
pub context: ContextUsage,
pub cost: Money,
pub duration: SessionDuration,
pub lines_changed: LinesChanged,
pub started_at: DateTime<Utc>,
pub last_activity: DateTime<Utc>,
pub working_directory: Option<String>,
pub claude_code_version: Option<String>,
pub tmux_pane: Option<String>,
}Expand description
Core domain model for a Claude Code session.
Contains pure business logic and state. Does NOT include infrastructure concerns (PIDs, sockets, file paths).
Consistent with CONCURRENCY_MODEL.md RegistryActor ownership.
Fields§
§id: SessionIdUnique session identifier
agent_type: AgentTypeType of agent (main, subagent, etc.)
model: ModelClaude model being used
status: SessionStatusCurrent session status
context: ContextUsageContext window usage
cost: MoneyAccumulated cost
duration: SessionDurationSession duration tracking
lines_changed: LinesChangedLines of code changed
started_at: DateTime<Utc>When the session started
last_activity: DateTime<Utc>Last activity timestamp
working_directory: Option<String>Working directory (project root)
claude_code_version: Option<String>Claude Code version
tmux_pane: Option<String>Tmux pane ID (e.g., “%5”) if session is running in tmux
Implementations§
Source§impl SessionDomain
impl SessionDomain
Sourcepub fn new(id: SessionId, agent_type: AgentType, model: Model) -> Self
pub fn new(id: SessionId, agent_type: AgentType, model: Model) -> Self
Creates a new SessionDomain with required fields.
Sourcepub fn from_status_line(
session_id: &str,
model_id: &str,
cost_usd: f64,
total_duration_ms: u64,
api_duration_ms: u64,
lines_added: u64,
lines_removed: u64,
total_input_tokens: u64,
total_output_tokens: u64,
context_window_size: u32,
current_input_tokens: u64,
current_output_tokens: u64,
cache_creation_tokens: u64,
cache_read_tokens: u64,
cwd: Option<&str>,
version: Option<&str>,
) -> Self
pub fn from_status_line( session_id: &str, model_id: &str, cost_usd: f64, total_duration_ms: u64, api_duration_ms: u64, lines_added: u64, lines_removed: u64, total_input_tokens: u64, total_output_tokens: u64, context_window_size: u32, current_input_tokens: u64, current_output_tokens: u64, cache_creation_tokens: u64, cache_read_tokens: u64, cwd: Option<&str>, version: Option<&str>, ) -> Self
Creates a SessionDomain from Claude Code status line data.
Sourcepub fn update_from_status_line(
&mut self,
cost_usd: f64,
total_duration_ms: u64,
api_duration_ms: u64,
lines_added: u64,
lines_removed: u64,
total_input_tokens: u64,
total_output_tokens: u64,
current_input_tokens: u64,
current_output_tokens: u64,
cache_creation_tokens: u64,
cache_read_tokens: u64,
)
pub fn update_from_status_line( &mut self, cost_usd: f64, total_duration_ms: u64, api_duration_ms: u64, lines_added: u64, lines_removed: u64, total_input_tokens: u64, total_output_tokens: u64, current_input_tokens: u64, current_output_tokens: u64, cache_creation_tokens: u64, cache_read_tokens: u64, )
Updates the session with new status line data.
When current_usage is null in Claude’s status line, all current_* values
will be 0, which correctly resets context percentage to 0%.
Sourcepub fn apply_hook_event(
&mut self,
event_type: HookEventType,
tool_name: Option<&str>,
)
pub fn apply_hook_event( &mut self, event_type: HookEventType, tool_name: Option<&str>, )
Updates status based on a hook event.
Sourcepub fn set_waiting_for_permission(&mut self, tool_name: &str)
pub fn set_waiting_for_permission(&mut self, tool_name: &str)
Marks the session as waiting for permission.
Sourcepub fn time_since_activity(&self) -> Duration
pub fn time_since_activity(&self) -> Duration
Returns time since last activity.
Sourcepub fn is_stale(&self) -> bool
pub fn is_stale(&self) -> bool
Returns true if the session should be considered stale.
A session is stale if no activity for 8 hours.
Sourcepub fn needs_context_attention(&self) -> bool
pub fn needs_context_attention(&self) -> bool
Returns true if context usage needs attention.
Trait Implementations§
Source§impl Clone for SessionDomain
impl Clone for SessionDomain
Source§fn clone(&self) -> SessionDomain
fn clone(&self) -> SessionDomain
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more