Module io

Module io 

Source
Expand description

Core message types for Claude communication.

This module defines the primary message structures used in the Claude protocol:

§Message Flow

  1. Create a ClaudeInput with your query
  2. Send it to Claude via a client
  3. Receive ClaudeOutput messages in response
  4. Handle different output types (System, Assistant, Result)

§Example

use claude_codes::{ClaudeInput, ClaudeOutput};

// Create an input message
let input = ClaudeInput::user_message("Hello, Claude!", uuid::Uuid::new_v4());

// Parse an output message
let json = r#"{"type":"assistant","message":{"role":"assistant","content":[]}}"#;
match ClaudeOutput::parse_json(json) {
    Ok(output) => println!("Got: {}", output.message_type()),
    Err(e) => eprintln!("Parse error: {}", e),
}

Structs§

AssistantMessage
Assistant message
AssistantMessageContent
Nested message content for assistant messages
ImageBlock
Image content block (follows Anthropic API structure)
ImageSource
Image source information
McpHttpServerConfig
MCP HTTP server configuration
McpSseServerConfig
MCP SSE server configuration
McpStdioServerConfig
MCP stdio server configuration
MessageContent
Message content with role
ParseError
Error type for parsing failures that preserves the raw JSON
ResultMessage
Result message for completed queries
ServerToolUse
Server tool usage information
SystemMessage
System message with metadata
TextBlock
Text content block
ThinkingBlock
Thinking content block
ToolResultBlock
Tool result content block
ToolUseBlock
Tool use content block
UsageInfo
Usage information for the request
UserMessage
User message

Enums§

ClaudeInput
Top-level enum for all possible Claude input messages
ClaudeOutput
Top-level enum for all possible Claude output messages
ContentBlock
Content blocks for messages
McpServerConfig
MCP Server configuration types
PermissionMode
Permission mode for Claude operations
ResultSubtype
Result subtypes
ToolResultContent
Tool result content type