Files
dev/hanzo-dev/protocol
zeekay 3a22216b47 fix: resolve all compile errors after upstream merge
- Remove McpServerTransportConfig::Zap (variant removed upstream)
- Fix ratatui 0.29 Color type conversions (ratatui::Color vs crossterm::Color)
- Fix Cell<u16> scroll_offset API in layout_scroll.rs
- Add missing modules (intro_art_variants, request_user_input_view, external_editor)
- Fix zen field type (bool → Option<ZenThemeConfig>)
- Add GutterMode::next() method
- Remove deleted SlashCommand::Rename, add Provider/Share stubs
- Fix schedule_cli_prompt signature (3 args, store overrides on controller)
- Fix ModelInfoUpgrade field access and default_reasoning_level Option handling
- Align cloud-tasks deps with workspace (ratatui 0.29, throbber-widgets-tui 0.8)
- Add missing auth constants and version functions
- Replace wire_api with dynamic_tools in ConfigOverrides
- Add end_turn/phase fields to ResponseItem::Message
- Fix format_with_separators to accept i64
2026-03-09 17:49:47 -07:00
..

hanzo-protocol

Crates.io Documentation License: MIT

Core protocol types for Hanzo AI agents.

Overview

This crate defines the fundamental types used throughout the Hanzo AI ecosystem, including:

  • AskForApproval - Human-in-the-loop approval policies
  • SandboxPolicy - Filesystem and execution sandboxing
  • Protocol messages - Internal communication types
  • Configuration - Agent configuration schemas

Installation

[dependencies]
hanzo-protocol = "0.6"

Key Types

AskForApproval

Controls when the agent pauses to request human confirmation:

use hanzo_protocol::AskForApproval;

let policy = AskForApproval::OnRequest; // Model decides when to ask

match policy {
    AskForApproval::Never => { /* Full autonomy */ }
    AskForApproval::OnFailure => { /* Ask only on errors */ }
    AskForApproval::OnRequest => { /* Model decides */ }
    AskForApproval::UnlessTrusted => { /* Ask for risky operations */ }
}
Policy Description
Never Full autonomy - never ask
OnFailure Ask only when operations fail
OnRequest Model decides based on risk assessment
UnlessTrusted Ask unless operation is known-safe

SandboxPolicy

Controls what operations are physically allowed:

use hanzo_protocol::SandboxPolicy;

let policy = SandboxPolicy::WorkspaceWrite {
    writable_roots: vec![],
    network_access: true,
    exclude_tmpdir_env_var: false,
    exclude_slash_tmp: false,
    allow_git_writes: true,
};

match policy {
    SandboxPolicy::DangerFullAccess => { /* No restrictions */ }
    SandboxPolicy::ReadOnly => { /* Read-only filesystem */ }
    SandboxPolicy::WorkspaceWrite { .. } => { /* Write to workspace only */ }
}
Policy Filesystem Network Processes
DangerFullAccess Full Full Full
WorkspaceWrite Read all, write workspace Configurable Allowed
ReadOnly Read only Blocked Limited

Modules

Module Description
config_types Configuration schemas
protocol Core protocol definitions
models Data models
mcp_protocol MCP-specific types
responses Response structures
tool_config Tool configuration

Example: Agent Configuration

use hanzo_protocol::{AskForApproval, SandboxPolicy, AgentConfig};

let config = AgentConfig {
    approval_policy: AskForApproval::OnRequest,
    sandbox_policy: SandboxPolicy::WorkspaceWrite {
        writable_roots: vec!["/home/user/project".into()],
        network_access: true,
        exclude_tmpdir_env_var: false,
        exclude_slash_tmp: false,
        allow_git_writes: true,
    },
    timeout_ms: 30000,
    ..Default::default()
};

TypeScript Bindings

This crate uses ts-rs to generate TypeScript type definitions:

cargo test --features ts-rs
# Generates TypeScript bindings in ./bindings/

License

MIT License - Copyright 2025 Hanzo AI Inc.