use bamboo_agent_core::AgentEvent;
use tokio::sync::broadcast;
use crate::app_state::{AgentRunner, AppState};
pub(crate) async fn subscribe_with_runner_snapshot(
state: &AppState,
session_id: &str,
) -> (
broadcast::Sender<AgentEvent>,
broadcast::Receiver<AgentEvent>,
Option<AgentRunner>,
) {
let sender = state.get_session_event_sender(session_id).await;
let runners = state.agent_runners.read().await;
let receiver = sender.subscribe();
let runner_snapshot = runners.get(session_id).cloned();
drop(runners);
(sender, receiver, runner_snapshot)
}