claude_code_acp/lib.rs
1//! Claude Code ACP Agent
2//!
3//! A Rust implementation of the ACP (Agent Client Protocol) Agent for Claude Code,
4//! enabling editors like Zed to use Claude Code capabilities.
5//!
6//! ## Features
7//!
8//! - ACP protocol support over stdio
9//! - Session management with token usage tracking
10//! - Streaming responses
11//! - Permission mode handling
12//!
13//! ## Quick Start
14//!
15//! ```no_run
16//! use claude_code_acp::run_acp;
17//!
18//! #[tokio::main]
19//! async fn main() -> anyhow::Result<()> {
20//! run_acp().await?;
21//! Ok(())
22//! }
23//! ```
24//!
25//! ## Environment Variables
26//!
27//! - `ANTHROPIC_BASE_URL`: Custom API base URL
28//! - `ANTHROPIC_API_KEY`: API key (preferred)
29//! - `ANTHROPIC_AUTH_TOKEN`: Auth token (legacy, fallback)
30//! - `ANTHROPIC_MODEL`: Model to use (default: claude-sonnet-4-20250514)
31//! - `ANTHROPIC_SMALL_FAST_MODEL`: Model for fast operations
32
33pub mod agent;
34pub mod cli;
35pub mod converter;
36pub mod hooks;
37pub mod mcp;
38pub mod session;
39pub mod settings;
40pub mod terminal;
41pub mod types;
42
43pub use agent::{run_acp, run_acp_with_cli, shutdown_otel};
44pub use cli::Cli;
45pub use hooks::{create_post_tool_use_hook, create_pre_tool_use_hook, HookCallbackRegistry};
46pub use mcp::{AcpMcpServer, McpServer, ToolContext, ToolRegistry, ToolResult, get_disallowed_tools};
47pub use settings::{Settings, SettingsManager};
48pub use terminal::{TerminalClient, TerminalHandle};
49pub use types::{AgentConfig, AgentError, NewSessionMeta, Result};