cc_sdk/lib.rs
1//! # Claude Code SDK for Rust
2//!
3//! A Rust SDK for interacting with the Claude Code CLI, providing both simple query
4//! and interactive client interfaces.
5//!
6//! ## Features
7//!
8//! - **Simple Query Interface**: One-shot queries with the `query` function
9//! - **Interactive Client**: Stateful conversations with `ClaudeSDKClient`
10//! - **Streaming Support**: Async streaming of responses
11//! - **Type Safety**: Strongly typed messages and errors
12//! - **Flexible Configuration**: Extensive options for customization
13//!
14//! ## Quick Start
15//!
16//! ```rust,no_run
17//! use cc_sdk::{query, Result};
18//! use futures::StreamExt;
19//!
20//! #[tokio::main]
21//! async fn main() -> Result<()> {
22//! let mut messages = query("What is 2 + 2?", None).await?;
23//!
24//! while let Some(msg) = messages.next().await {
25//! println!("{:?}", msg?);
26//! }
27//!
28//! Ok(())
29//! }
30//! ```
31
32#![warn(missing_docs)]
33#![warn(rustdoc::missing_crate_level_docs)]
34
35mod client;
36// mod client_v2; // Has compilation errors
37// mod client_final; // Has compilation errors
38mod client_working;
39mod errors;
40mod interactive;
41mod message_parser;
42mod optimized_client;
43mod perf_utils;
44mod query;
45mod transport;
46mod types;
47
48// Re-export main types and functions
49pub use client::ClaudeSDKClient;
50// pub use client_v2::ClaudeSDKClientV2; // Has compilation errors
51// pub use client_final::ClaudeSDKClientFinal; // Has compilation errors
52pub use client_working::ClaudeSDKClientWorking;
53pub use errors::{Result, SdkError};
54pub use interactive::InteractiveClient;
55pub use query::query;
56// Keep the old name as an alias for backward compatibility
57pub use interactive::InteractiveClient as SimpleInteractiveClient;
58pub use optimized_client::{ClientMode, OptimizedClient};
59pub use perf_utils::{MessageBatcher, PerformanceMetrics, RetryConfig};
60
61/// Default interactive client - the recommended client for interactive use
62pub type ClaudeSDKClientDefault = InteractiveClient;
63pub use types::{
64 AssistantContent, AssistantMessage, ClaudeCodeOptions, ContentBlock, ContentValue,
65 ControlRequest, ControlResponse, McpServerConfig, Message, PermissionMode, ResultMessage,
66 SystemMessage, TextContent, ThinkingContent, ToolResultContent, ToolUseContent, UserContent,
67 UserMessage,
68};
69
70// Re-export builder
71pub use types::ClaudeCodeOptionsBuilder;
72
73/// Prelude module for convenient imports
74pub mod prelude {
75 pub use crate::{
76 ClaudeCodeOptions, ClaudeSDKClient, ClaudeSDKClientWorking, Message, PermissionMode,
77 Result, SdkError, query,
78 };
79}