#![warn(missing_docs)]
#![warn(rustdoc::missing_crate_level_docs)]
pub mod cli_download;
mod client;
mod client_working;
mod errors;
mod interactive;
mod internal_query;
mod message_parser;
pub mod model_recommendation;
mod optimized_client;
pub mod sessions;
mod perf_utils;
mod query;
mod sdk_mcp;
pub mod token_tracker;
pub mod transport;
mod types;
pub use client::ClaudeSDKClient;
pub use client_working::ClaudeSDKClientWorking;
pub use errors::{Result, SdkError};
pub use interactive::InteractiveClient;
pub use internal_query::Query;
pub use query::query;
pub use interactive::InteractiveClient as SimpleInteractiveClient;
pub use model_recommendation::ModelRecommendation;
pub use optimized_client::{ClientMode, OptimizedClient};
pub use sessions::{SessionInfo, SessionMessage, list_sessions, get_session_messages, rename_session, tag_session, delete_session, fork_session};
pub use perf_utils::{MessageBatcher, PerformanceMetrics, RetryConfig};
pub use token_tracker::{BudgetLimit, BudgetManager, BudgetStatus, TokenUsageTracker};
pub type ClaudeSDKClientDefault = InteractiveClient;
pub use types::{
AssistantContent, AssistantMessage, ClaudeCodeOptions, ContentBlock, ContentValue,
ControlProtocolFormat, ControlRequest, ControlResponse, McpServerConfig, Message,
PermissionMode, ResultMessage, SystemMessage, TextContent, ThinkingContent,
ToolResultContent, ToolUseContent, UserContent, UserMessage,
PermissionBehavior, PermissionResult, PermissionResultAllow, PermissionResultDeny,
PermissionRuleValue, PermissionUpdate, PermissionUpdateDestination, PermissionUpdateType,
ToolPermissionContext, CanUseTool,
HookCallback, HookContext, HookMatcher,
BaseHookInput, HookInput, PreToolUseHookInput, PostToolUseHookInput,
PostToolUseFailureHookInput, UserPromptSubmitHookInput, StopHookInput,
SubagentStopHookInput, PreCompactHookInput,
NotificationHookInput, SubagentStartHookInput, PermissionRequestHookInput,
HookJSONOutput, AsyncHookJSONOutput, SyncHookJSONOutput,
HookSpecificOutput, PreToolUseHookSpecificOutput, PostToolUseHookSpecificOutput,
PostToolUseFailureHookSpecificOutput, UserPromptSubmitHookSpecificOutput,
SessionStartHookSpecificOutput, NotificationHookSpecificOutput,
SubagentStartHookSpecificOutput, PermissionRequestHookSpecificOutput,
SDKControlInitializeRequest, SDKControlInterruptRequest, SDKControlMcpMessageRequest,
SDKControlPermissionRequest, SDKControlRequest, SDKControlSetPermissionModeRequest,
SDKHookCallbackRequest, SDKControlRewindFilesRequest,
SDKControlGetContextUsageRequest, SDKControlStopTaskRequest,
SDKControlMcpStatusRequest, SDKControlMcpReconnectRequest, SDKControlMcpToggleRequest,
SettingSource, AgentDefinition, SystemPrompt,
TaskUsage, TaskStatus, TaskStartedMessage, TaskProgressMessage, TaskNotificationMessage,
ToolsConfig, ToolsPreset, SdkBeta,
Effort, RateLimitStatus, RateLimitType, RateLimitInfo, AssistantMessageError,
McpConnectionStatus, McpToolAnnotations, McpToolInfo, McpServerInfo, McpServerStatus,
ThinkingConfig,
SandboxSettings, SandboxNetworkConfig, SandboxIgnoreViolations,
SdkPluginConfig,
ContextUsageResponse, ContextUsageCategory, ApiUsage,
TaskBudget, ForkSessionResult,
};
pub type ClaudeAgentOptions = ClaudeCodeOptions;
pub type ClaudeAgentOptionsBuilder = ClaudeCodeOptionsBuilder;
pub use types::ClaudeCodeOptionsBuilder;
pub use transport::SubprocessTransport;
#[cfg(feature = "websocket")]
pub use transport::websocket::{WebSocketTransport, WebSocketConfig};
pub use sdk_mcp::{
SdkMcpServer, SdkMcpServerBuilder, ToolDefinition, ToolHandler, ToolInputSchema,
ToolResult, create_simple_tool,
ToolResultContent as SdkToolResultContent,
};
pub mod prelude {
pub use crate::{
ClaudeCodeOptions, ClaudeSDKClient, ClaudeSDKClientWorking, Message, PermissionMode,
Result, SdkError, query,
};
}