Crate turboclaude_protocol

Crate turboclaude_protocol 

Source
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