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//! - `MAX_THINKING_TOKENS`: Maximum tokens for extended thinking mode
33//!
34//! ## Configuration Loading Priority
35//!
36//! The agent loads configuration from multiple sources with the following priority (highest to lowest):
37//!
38//! 1. **Environment Variables** - Override all other sources
39//! 2. **Settings Files - Top-level fields** - Used when environment variables are not set
40//! 3. **Settings Files - `env` object** - Fallback compatible with Claude Code CLI format
41//! 4. **Defaults** - Fallback values
42//!
43//! Settings files are loaded from:
44//! - `~/.claude/settings.json` (user settings)
45//! - `.claude/settings.json` (project settings)
46//! - `.claude/settings.local.json` (local settings, highest priority among settings files)
47//!
48//! ### Example settings.json
49//!
50//! Using top-level fields:
51//! ```json
52//! {
53//!   "model": "claude-opus-4-20250514",
54//!   "smallFastModel": "claude-haiku-4-20250514",
55//!   "apiBaseUrl": "https://api.anthropic.com"
56//! }
57//! ```
58//!
59//! Using `env` object (compatible with Claude Code CLI):
60//! ```json
61//! {
62//!   "env": {
63//!     "ANTHROPIC_MODEL": "claude-opus-4-20250514",
64//!     "ANTHROPIC_SMALL_FAST_MODEL": "claude-haiku-4-20250514",
65//!     "ANTHROPIC_BASE_URL": "https://api.anthropic.com"
66//!   }
67//! }
68//! ```
69
70pub mod agent;
71pub mod cli;
72pub mod converter;
73pub mod hooks;
74pub mod mcp;
75pub mod session;
76pub mod settings;
77pub mod terminal;
78pub mod tracing;
79pub mod types;
80
81pub use agent::{run_acp, run_acp_with_cli, shutdown_otel};
82pub use cli::Cli;
83pub use hooks::{HookCallbackRegistry, create_post_tool_use_hook, create_pre_tool_use_hook};
84pub use mcp::{
85    AcpMcpServer, McpServer, ToolContext, ToolRegistry, ToolResult, get_disallowed_tools,
86};
87pub use settings::{Settings, SettingsManager};
88pub use terminal::{TerminalClient, TerminalHandle};
89pub use types::{AgentConfig, AgentError, NewSessionMeta, Result};