Expand description
Shared protocol types and definitions for TurboClaude REST and Agent SDKs
This crate provides the core type definitions and protocol structures used by both the REST client (turboclaude) and the Agent client (turboclaudeagent). By centralizing these types, we achieve DRY principles and ensure consistency across the ecosystem.
§Type Organization
- Content types:
content- Text, images, tool use/results - Message types:
message- Messages, content blocks - Common types:
types- Models, usage, cache info - Agent protocol:
agent- Control requests, hooks, permissions - Error types:
error- Protocol and message errors
§Design Principles
- Zero I/O: All types are pure data structures
- Serialization: serde-based for both JSON and future formats
- Idiomatic Rust: Owned types,
Result<T>for errors,Option<T>for optional values - No circular dependencies: turboclaude-protocol depends only on serde/chrono
§Usage
ⓘ
use turboclaude_protocol::message::Message;
use turboclaude_protocol::content::ContentBlock;
let msg = Message {
id: "msg_123".to_string(),
content: vec![ContentBlock::Text { text: "Hello".to_string() }],
// ...
};Re-exports§
pub use agent::AgentDefinition;pub use agent::ControlRequest;pub use agent::HookEvent;pub use agent::ToolPermissionRequest;pub use content::ContentBlock;pub use error::ProtocolError;pub use error::Result;pub use hooks::ContinueReason;pub use hooks::HookContext;pub use hooks::HookMatcher;pub use hooks::PermissionDecision;pub use hooks::StopReason;pub use message::AssistantMessage;pub use message::AssistantMessageError;pub use message::Message;pub use message::MessageRequest;pub use message::MessageRole;pub use message::ResultMessage;pub use message::StreamEvent;pub use message::SystemMessage;pub use message::UserMessage;pub use permissions::AddDirectoriesUpdate;pub use permissions::AddRulesUpdate;pub use permissions::PermissionBehavior;pub use permissions::PermissionRuleValue;pub use permissions::PermissionUpdate;pub use permissions::PermissionUpdateDestination;pub use permissions::RemoveDirectoriesUpdate;pub use permissions::RemoveRulesUpdate;pub use permissions::ReplaceRulesUpdate;pub use permissions::SetModeUpdate;pub use protocol::ControlCommand;pub use protocol::ControlResponse;pub use protocol::HookRequest;pub use protocol::HookResponse;pub use protocol::ModifiedInputs;pub use protocol::PermissionCheckRequest;pub use protocol::PermissionResponse;pub use protocol::ProtocolErrorMessage;pub use protocol::ProtocolMessage;pub use protocol::QueryRequest;pub use protocol::QueryResponse;pub use protocol::RequestId;pub use types::Model;pub use types::PermissionMode;pub use types::ToolDefinition;pub use types::Usage;
Modules§
- agent
- Agent protocol types and definitions
- content
- Content block types
- error
- Error types for protocol operations
- hooks
- Hook system types and matching for agent SDK
- message
- Message types for the protocol
- permissions
- Permission update types and definitions
- protocol
- Protocol message types for bidirectional Agent SDK communication
- types
- Common type definitions used across the protocol