use opencode_rs::ClientBuilder;
use opencode_rs::server::{ManagedServer, ServerOptions};
use std::time::Duration;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let opts = ServerOptions::new()
.hostname("127.0.0.1")
.startup_timeout_ms(10000) .directory(std::env::current_dir()?);
println!("Starting managed OpenCode server...");
let server = ManagedServer::start(opts).await?;
println!("Server started at: {}", server.url());
println!("Server localhost URL: http://localhost:{}", server.port());
println!("Port: {}", server.port());
let client = ClientBuilder::new()
.base_url(server.url().to_string())
.directory(std::env::current_dir()?.to_string_lossy())
.build()?;
let health = client.misc().health().await?;
println!("Server health: {:?}", health);
let sessions = client.sessions().list().await?;
println!("Existing sessions: {}", sessions.len());
println!("\nServer running for 5 seconds...");
tokio::time::sleep(Duration::from_secs(5)).await;
println!("Stopping server...");
server.stop().await?;
println!("Server stopped.");
Ok(())
}