use mcpmesh_local_api::connect_control_default;
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut mesh = connect_control_default().await?;
let status = mesh.status().await?;
println!("mcpmesh {}", status.stack_version);
println!("serving:");
for svc in &status.services {
let allow = if svc.allow.is_empty() {
"nobody yet".into()
} else {
svc.allow.join(", ")
};
println!(" {} -> {allow}", svc.name);
}
println!("peers:");
for peer in &status.peers {
println!(" {} shares: {}", peer.name, peer.services.join(", "));
}
for r in &status.reachability {
let state = match (r.age_secs, r.reachable, r.rtt_ms) {
(None, ..) => "checking…".into(),
(Some(_), true, Some(ms)) => format!("online · {ms} ms"),
(Some(_), true, None) => "online".into(),
(Some(_), false, _) => "offline".into(),
};
println!(" {} is {state}", r.name);
}
Ok(())
}