par-term-acp: Agent Communication Protocol (ACP) implementation.
This crate provides the core ACP protocol implementation for communicating with AI coding agents (Claude Code, Codex CLI, Gemini CLI, etc.) via JSON-RPC.
Architecture
The crate is organized into several modules:
- [
agent] - Agent lifecycle management (spawn, handshake, message routing) - [
agents] - Agent discovery and configuration loading - [
protocol] - ACP message types (initialize, session, permission, etc.) - [
jsonrpc] - JSON-RPC 2.0 client implementation - [
fs_ops] - Filesystem operations for agent requests
Example
use par_term_acp::{Agent, AgentConfig, AgentMessage, SafePaths, discover_agents};
use tokio::sync::mpsc;
// Discover available agents
let agents = discover_agents(&config_dir);
let config = agents.into_iter().next().unwrap();
// Create agent manager
let (tx, mut rx) = mpsc::unbounded_channel();
let safe_paths = SafePaths {
config_dir: PathBuf::from("/path/to/config"),
shaders_dir: PathBuf::from("/path/to/shaders"),
};
let mut agent = Agent::new(config, tx, safe_paths, PathBuf::from("par-term"));
// Connect and handle messages
agent.connect("/working/dir", capabilities).await?;
while let Some(msg) = rx.recv().await {
match msg {
AgentMessage::SessionUpdate(update) => { /* handle */ }
AgentMessage::PermissionRequest { .. } => { /* handle */ }
_ => {}
}
}