dirge-agent 0.13.9

Minimalistic coding agent written in Rust, optimized for memory footprint and performance
use crate::ui::slash::{SlashCtx, c_agent, c_error, c_result};

use super::get_manager;

pub(super) async fn cmd_sessions(ctx: &mut SlashCtx<'_>) -> anyhow::Result<()> {
    let mgr = match get_manager() {
        Some(m) => m,
        None => {
            ctx.renderer
                .write_line("no debug session manager", c_error())?;
            return Ok(());
        }
    };
    match mgr.active_summary().await {
        Some(s) => {
            ctx.renderer.write_line(
                &format!(
                    "active session: id={} adapter={} status={:?}",
                    s.id, s.adapter_name, s.status,
                ),
                c_result(),
            )?;
            if let Some(reason) = &s.stop_reason {
                ctx.renderer
                    .write_line(&format!("  stop reason: {reason}"), c_result())?;
            }
            if let Some(tid) = s.thread_id {
                ctx.renderer
                    .write_line(&format!("  thread: {tid}"), c_result())?;
            }
        }
        None => {
            ctx.renderer
                .write_line("no active debug session", c_agent())?;
        }
    }
    Ok(())
}