Skip to main content

adk_acp/
lib.rs

1//! # adk-acp — Agent Client Protocol integration for ADK-Rust
2//!
3//! Connect ADK agents to external ACP agents (Claude Code, Codex, etc.) and
4//! optionally expose ADK agents as ACP-compatible agents for IDE connections.
5//!
6//! ## Quick Start
7//!
8//! ```rust,ignore
9//! use adk_acp::AcpAgentTool;
10//! use adk_agent::LlmAgentBuilder;
11//! use std::sync::Arc;
12//!
13//! // Wrap Claude Code as a tool your agent can delegate to
14//! let claude = AcpAgentTool::new("claude-code")
15//!     .description("Delegate complex coding tasks to Claude Code");
16//!
17//! let agent = LlmAgentBuilder::new("orchestrator")
18//!     .instruction("Use claude-code for complex refactoring tasks.")
19//!     .model(model)
20//!     .tool(Arc::new(claude))
21//!     .build()?;
22//! ```
23//!
24//! ## What is ACP?
25//!
26//! The [Agent Client Protocol](https://agentclientprotocol.com/) standardizes
27//! communication between code editors (IDEs, CLIs) and coding agents. It enables:
28//!
29//! - **Tool use**: Agents can request permission to use tools
30//! - **Streaming responses**: Real-time content delivery
31//! - **Session management**: Multi-turn conversations with context
32//! - **Proxy chains**: Middleware that intercepts/transforms messages
33//!
34//! ## Features
35//!
36//! - **`default`**: Client-side only (connect to ACP agents)
37//! - **`server`**: Expose ADK agents as ACP-compatible agents
38
39#![warn(missing_docs)]
40
41pub mod connection;
42pub mod error;
43pub mod permissions;
44pub mod session;
45pub mod status;
46pub mod streaming;
47pub mod tool;
48pub mod toolset;
49pub mod usage;
50
51/// ACP Server: expose ADK agents as ACP-compatible agents for IDE connections.
52///
53/// Enabled with the `server` feature flag. See [`server::AcpServer`] for usage.
54#[cfg(feature = "server")]
55pub mod server;
56
57pub use connection::{AcpAgentConfig, prompt_agent, prompt_agent_with_policy};
58pub use error::{AcpError, Result};
59pub use permissions::{PermissionDecision, PermissionPolicy, PermissionRequest};
60pub use session::{AcpSession, PromptResult};
61pub use status::{AgentStatus, StatusTracker};
62pub use streaming::{OutputChunk, OutputStream, stream_prompt};
63pub use tool::AcpAgentTool;
64pub use toolset::AcpToolset;
65pub use usage::{AcpUsage, AcpUsageStats, UsageTracker};
66
67// Server re-exports (gated behind `server` feature)
68#[cfg(feature = "server")]
69pub use server::{AcpServer, AcpServerConfig, AcpServerConfigBuilder, AcpServerHandle};
70
71// Re-export the SDK for advanced usage
72pub use agent_client_protocol;