//! harnessd — the Lantern Systems daemon skeleton (seed v1). //! //! Compiles and serves /healthz; the route table below is the API contract //! the whole company commits against. Macros/TODO markers are intentional: //! that's the backlog. mod agent; mod browser; mod events; mod mock; use axum::routing::{get, post}; use axum::{Json, Router}; #[tokio::main] async fn main() { let app = Router::new() .route("/healthz", get(healthz)) .route("/sessions", post(create_session)) .nest("/", Router::new()); let listener = tokio::net::TcpListener::bind("0.0.0.0:7777") .await .expect("bind 0.0.0.0:7777 (LAN/Tailscale reachable)"); println!("harnessd seed: listening on 0.0.0.0:7777"); axum::serve(listener, app).await.unwrap(); } async fn healthz() -> &'static str { "ok" } /// POST /sessions — create a browsing session (seed: accepts anything, TODO). async fn create_session() -> Json { Json(serde_json::json!({ "session": "seed-stub", "note": "not implemented yet — see backlog T1..T8" })) }