agtrace_runtime/runtime/
events.rs

1use agtrace_engine::AgentSession;
2use agtrace_index::SessionSummary;
3use agtrace_types::AgentEvent;
4use std::path::PathBuf;
5
6/// NOTE: DiscoveryEvent design for real-time session tracking
7/// - SessionUpdated.is_new: True if first time seeing this session_id in this process
8/// - SessionUpdated.mod_time: File modification timestamp for "most recently updated" detection
9/// - Watch handlers use mod_time to switch to actively updated sessions, not just is_new
10#[derive(Debug, Clone)]
11pub enum DiscoveryEvent {
12    NewSession {
13        summary: SessionSummary,
14    },
15    SessionUpdated {
16        session_id: String,
17        provider_name: String,
18        is_new: bool,
19        mod_time: Option<String>,
20    },
21    SessionRemoved {
22        session_id: String,
23    },
24}
25
26#[derive(Debug, Clone)]
27pub enum StreamEvent {
28    Attached {
29        session_id: String,
30        path: PathBuf,
31    },
32    Events {
33        events: Vec<AgentEvent>,
34        session: Option<AgentSession>,
35    },
36    Disconnected {
37        reason: String,
38    },
39}
40
41#[derive(Debug, Clone)]
42pub enum WorkspaceEvent {
43    Discovery(DiscoveryEvent),
44    Stream(StreamEvent),
45    Error(String),
46}