The file C:\Users\MikeSwanson\Claude\guru-connect\server\src\session\mod.rs has been updated. Here's the result of running `cat -n` on a snippet of the edited file: 286→ let _ = session_data.input_tx.send(buf).await; 287→ } 288→ } 289→ 290→ /// Mark agent as disconnected 291→ /// For persistent agents: keep session but mark as offline 292→ /// For support sessions: remove session entirely 293→ pub async fn mark_agent_disconnected(&self, session_id: SessionId) { 294→ let mut sessions = self.sessions.write().await; 295→ if let Some(session_data) = sessions.get_mut(&session_id) { 296→ if session_data.info.is_persistent { 297→ // Persistent agent - keep session but mark as offline 298→ tracing::info!("Persistent agent {} marked offline (session {} preserved)", 299→ session_data.info.agent_id, session_id); 300→ session_data.info.is_online = false; 301→ session_data.info.is_streaming = false; 302→ session_data.info.viewer_count = 0; 303→ session_data.viewers.clear(); 304→ } else { 305→ // Support session - remove entirely 306→ let agent_id = session_data.info.agent_id.clone(); 307→ sessions.remove(&session_id); 308→ drop(sessions); // Release sessions lock before acquiring agents lock 309→ let mut agents = self.agents.write().await; 310→ agents.remove(&agent_id); 311→ tracing::info!("Support session {} removed", session_id); 312→ } 313→ } 314→ } 315→ 316→ /// Remove a session entirely (for cleanup) 317→ pub async fn remove_session(&self, session_id: SessionId) { 318→ let mut sessions = self.sessions.write().await; 319→ if let Some(session_data) = sessions.remove(&session_id) { 320→ drop(sessions); 321→ let mut agents = self.agents.write().await; 322→ agents.remove(&session_data.info.agent_id); 323→ } 324→ } 325→ 326→ /// Disconnect a session by sending a disconnect message to the agent 327→ /// Returns true if the message was sent successfully 328→ pub async fn disconnect_session(&self, session_id: SessionId, reason: &str) -> bool {