Skip to main content

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
35/// CLI download and management utilities
36pub mod cli_download;
37mod client;
38// mod client_v2;  // Has compilation errors
39// mod client_final;  // Has compilation errors
40mod client_working;
41mod errors;
42mod interactive;
43mod internal_query;
44mod message_parser;
45pub mod model_recommendation;
46mod optimized_client;
47mod perf_utils;
48mod query;
49mod sdk_mcp;
50pub mod token_tracker;
51pub mod transport;
52mod types;
53
54// Re-export main types and functions
55pub use client::ClaudeSDKClient;
56// pub use client_v2::ClaudeSDKClientV2;  // Has compilation errors
57// pub use client_final::ClaudeSDKClientFinal;  // Has compilation errors
58pub use client_working::ClaudeSDKClientWorking;
59pub use errors::{Result, SdkError};
60pub use interactive::InteractiveClient;
61pub use internal_query::Query;
62pub use query::query;
63// Keep the old name as an alias for backward compatibility
64pub use interactive::InteractiveClient as SimpleInteractiveClient;
65pub use model_recommendation::ModelRecommendation;
66pub use optimized_client::{ClientMode, OptimizedClient};
67pub use perf_utils::{MessageBatcher, PerformanceMetrics, RetryConfig};
68pub use token_tracker::{BudgetLimit, BudgetManager, BudgetStatus, TokenUsageTracker};
69/// Default interactive client - the recommended client for interactive use
70pub type ClaudeSDKClientDefault = InteractiveClient;
71pub use types::{
72    AssistantContent, AssistantMessage, ClaudeCodeOptions, ContentBlock, ContentValue,
73    ControlProtocolFormat, ControlRequest, ControlResponse, McpServerConfig, Message,
74    PermissionMode, ResultMessage, SystemMessage, TextContent, ThinkingContent,
75    ToolResultContent, ToolUseContent, UserContent, UserMessage,
76    // Permission types
77    PermissionBehavior, PermissionResult, PermissionResultAllow, PermissionResultDeny,
78    PermissionRuleValue, PermissionUpdate, PermissionUpdateDestination, PermissionUpdateType,
79    ToolPermissionContext, CanUseTool,
80    // Hook types (v0.3.0 - strongly-typed hooks)
81    HookCallback, HookContext, HookMatcher,
82    // Hook Input types (strongly-typed)
83    BaseHookInput, HookInput, PreToolUseHookInput, PostToolUseHookInput,
84    PostToolUseFailureHookInput, UserPromptSubmitHookInput, StopHookInput,
85    SubagentStopHookInput, PreCompactHookInput,
86    NotificationHookInput, SubagentStartHookInput, PermissionRequestHookInput,
87    // Hook Output types (strongly-typed)
88    HookJSONOutput, AsyncHookJSONOutput, SyncHookJSONOutput,
89    HookSpecificOutput, PreToolUseHookSpecificOutput, PostToolUseHookSpecificOutput,
90    PostToolUseFailureHookSpecificOutput, UserPromptSubmitHookSpecificOutput,
91    SessionStartHookSpecificOutput, NotificationHookSpecificOutput,
92    SubagentStartHookSpecificOutput, PermissionRequestHookSpecificOutput,
93    // SDK Control Protocol types
94    SDKControlInitializeRequest, SDKControlInterruptRequest, SDKControlMcpMessageRequest,
95    SDKControlPermissionRequest, SDKControlRequest, SDKControlSetPermissionModeRequest,
96    SDKHookCallbackRequest, SDKControlRewindFilesRequest,
97    // Phase 2 enhancements
98    SettingSource, AgentDefinition, SystemPrompt,
99    // Phase 3 enhancements (Python SDK v0.1.12+ sync)
100    ToolsConfig, ToolsPreset, SdkBeta,
101    SandboxSettings, SandboxNetworkConfig, SandboxIgnoreViolations,
102    SdkPluginConfig,
103};
104
105// Phase 3: Type aliases for naming consistency
106/// Alias for ClaudeCodeOptions (matches Python SDK naming)
107pub type ClaudeAgentOptions = ClaudeCodeOptions;
108/// Alias for ClaudeCodeOptionsBuilder (matches Python SDK naming)
109pub type ClaudeAgentOptionsBuilder = ClaudeCodeOptionsBuilder;
110
111// Re-export builder
112pub use types::ClaudeCodeOptionsBuilder;
113
114// Re-export transport types for convenience
115pub use transport::SubprocessTransport;
116
117// Re-export SDK MCP types
118pub use sdk_mcp::{
119    SdkMcpServer, SdkMcpServerBuilder, ToolDefinition, ToolHandler, ToolInputSchema,
120    ToolResult, create_simple_tool,
121    ToolResultContent as SdkToolResultContent,
122};
123
124/// Prelude module for convenient imports
125pub mod prelude {
126    pub use crate::{
127        ClaudeCodeOptions, ClaudeSDKClient, ClaudeSDKClientWorking, Message, PermissionMode,
128        Result, SdkError, query,
129    };
130}