use std::sync::Arc;
use cpm_planner::audit::{AuditSink, NullAuditSink};
use cpm_planner::{BasicCpmPlanner, PlanServer};
use tracing_subscriber::EnvFilter;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
init_tracing();
let audit: Arc<dyn AuditSink> = Arc::new(NullAuditSink);
let planner = Arc::new(BasicCpmPlanner::with_audit(audit));
tracing::info!("starting cpm-planner stdio server");
let server = PlanServer::new(planner);
server.serve_stdio().await?;
Ok(())
}
fn init_tracing() {
let filter = EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"));
let _ = tracing_subscriber::fmt()
.with_env_filter(filter)
.with_writer(std::io::stderr)
.with_ansi(false)
.try_init();
}