# sacp-tokio Tokio-specific utilities for working with ACP agents. ## What's in this crate? This crate provides helpers for spawning and connecting to ACP agents using the Tokio async runtime: - **`AcpAgent`** - Configuration for spawning agent processes - **`JrConnectionExt`** - Extension trait that adds `JrConnection::to_agent()` for easy agent spawning ## Usage The main use case is spawning an agent process and creating a connection to it in one step: ```rust use sacp::JrConnection; use sacp_tokio::{AcpAgent, JrConnectionExt}; let agent = AcpAgent::from_str("python my_agent.py")?; JrConnection::to_agent(agent)? .on_receive_notification(|notif: SessionNotification, _cx| async move { println!("Agent update: {:?}", notif); Ok(()) }) .run_until(|cx| async move { // Initialize and interact with the agent let response = cx.send_request(InitializeRequest { ... }) .block_task() .await?; Ok(()) }) .await?; ``` The agent process is managed automatically - it's spawned when you call `to_agent()`, and killed when the connection is dropped. ## When to use this crate Use `sacp-tokio` when you need to: - Spawn agent processes from your code - Test agents by programmatically launching them - Build tools that orchestrate multiple agents If you're implementing an agent that listens on stdin/stdout, you only need the core `sacp` crate. ## Related Crates - **[sacp](../sacp/)** - Core ACP SDK (use this for building agents) - **[sacp-proxy](../sacp-proxy/)** - Framework for building ACP proxies - **[sacp-conductor](../sacp-conductor/)** - Binary for orchestrating proxy chains ## License MIT OR Apache-2.0