claude_codes/io/mod.rs
1//! Core message types for Claude communication.
2//!
3//! This module defines the primary message structures used in the Claude protocol:
4//!
5//! - [`ClaudeInput`] - Messages sent to Claude
6//! - [`ClaudeOutput`] - Messages received from Claude
7//! - [`ContentBlock`] - Different types of content within messages
8//!
9//! # Message Flow
10//!
11//! 1. Create a [`ClaudeInput`] with your query
12//! 2. Send it to Claude via a client
13//! 3. Receive [`ClaudeOutput`] messages in response
14//! 4. Handle different output types (System, Assistant, Result)
15//!
16//! # Example
17//!
18//! ```
19//! use claude_codes::{ClaudeInput, ClaudeOutput};
20//!
21//! // Create an input message
22//! let input = ClaudeInput::user_message("Hello, Claude!", uuid::Uuid::new_v4());
23//!
24//! // Parse an output message
25//! let json = r#"{"type":"assistant","message":{"role":"assistant","content":[]}}"#;
26//! match ClaudeOutput::parse_json(json) {
27//! Ok(output) => println!("Got: {}", output.message_type()),
28//! Err(e) => eprintln!("Parse error: {}", e),
29//! }
30//! ```
31
32mod claude_input;
33mod claude_output;
34mod content_blocks;
35mod control;
36mod errors;
37mod mcp;
38mod message_types;
39mod rate_limit;
40mod result;
41
42pub use claude_input::*;
43pub use claude_output::*;
44pub use content_blocks::*;
45pub use control::*;
46pub use errors::*;
47pub use mcp::*;
48pub use message_types::*;
49pub use rate_limit::*;
50pub use result::*;