bzzz-cli 0.1.0

Bzzz CLI - Command line interface for Agent orchestration
//! Serve command - HTTP server with health endpoint

use bzzz_core::runtime::health::{HealthServer, HealthStatus};
use std::env;

/// Execute the serve command
///
/// Port priority: CLI flag > env var (BZZZ_HEALTH_PORT) > default (8080)
pub async fn execute(port: Option<u16>) -> anyhow::Result<()> {
    // Determine port: CLI flag > env var > default
    let port = port
        .or_else(|| {
            env::var("BZZZ_HEALTH_PORT")
                .ok()
                .and_then(|p| p.parse().ok())
        })
        .unwrap_or(8080);

    let addr = format!("0.0.0.0:{}", port).parse()?;
    let server = HealthServer::new(addr);

    server.set_status(HealthStatus::Healthy).await;
    server.start().await?;

    tracing::info!("Health server listening on 0.0.0.0:{}", port);

    // Wait for shutdown signal
    tokio::signal::ctrl_c().await.ok();
    server.stop().await;

    tracing::info!("Health server stopped");
    Ok(())
}