//! `brahman-status` — CLI para inspeccionar el estado del Init. //! //! Conecta al socket admin (default `$XDG_RUNTIME_DIR/brahman-admin.sock`, //! override con `$BRAHMAN_ADMIN_SOCKET`), recibe el snapshot, y lo imprime. use brahman_admin::{client, transport}; #[tokio::main(flavor = "current_thread")] async fn main() -> anyhow::Result<()> { let path = transport::default_socket_path(); let snap = client::query(&path).await?; println!( "Init: server={} protocol={} attached={}", snap.server_version, snap.protocol_version, snap.init_attached ); if let Some(ctx) = &snap.current_context { println!("Context: {}", ctx); } println!(); println!("Sessions ({}):", snap.sessions.len()); if snap.sessions.is_empty() { println!(" (ninguna)"); } else { for s in &snap.sessions { let conscious_marker = if s.wit.is_some() { " 🧠" } else { "" }; println!( " {} {}{} lifecycle={:?} priority={:?}", s.session, s.label, conscious_marker, s.lifecycle, s.priority ); if let Some(wit) = &s.wit { println!(" wit: {} / {}", wit.package, wit.world); if !wit.imports.is_empty() { println!(" imports: {}", wit.imports.join(", ")); } if !wit.exports.is_empty() { println!(" exports: {}", wit.exports.join(", ")); } } for f in &s.inputs { println!(" in {}: {:?}", f.name, f.ty); } for f in &s.outputs { println!(" out {}: {:?}", f.name, f.ty); } } } println!(); println!("Matches ({}):", snap.matches.len()); if snap.matches.is_empty() { println!(" (ninguno)"); } else { for m in &snap.matches { let pin_marker = if m.pinned { "📌" } else { " " }; println!( " {} {}.{} ← {}.{} via {:?}", pin_marker, m.consumer_label, m.consumer.flow_name, m.producer_label, m.producer.flow_name, m.via ); } } Ok(()) }