a2a-types 0.0.1

A2A Protocol Types
Documentation

a2a-types

Pure Rust implementation of the Agent-to-Agent (A2A) Protocol types.

Overview

This crate provides the complete type definitions for the A2A Protocol, enabling interoperability between AI agents. It includes:

  • JSON-RPC 2.0 message types
  • A2A protocol-specific types (Tasks, Messages, Parts)
  • Error definitions
  • Request/Response structures

Usage

Add this to your Cargo.toml:

[dependencies]
a2a-types = "0.0.2"

Then use the types in your code:

use a2a_types::{Task, Message, MessageRole, Part, TaskState};

// Create a new message
let message = Message {
    role: MessageRole::User,
    content: vec![Part::Text {
        text: "Hello, agent!".to_string(),
        metadata: None,
    }],
    metadata: None,
};

// Work with task states
let state = TaskState::Working;

Types

Core Protocol Types

  • Task - Represents an agent task with status and history
  • Message - Agent communication messages
  • Part - Content parts (text, file, data)
  • TaskState - Task lifecycle states (Submitted, Working, Completed, etc.)

JSON-RPC Types

  • JSONRPCRequest - Standard JSON-RPC 2.0 request
  • JSONRPCResponse - Success and error responses
  • JSONRPCError - Error structure with codes

A2A Request Types

  • SendMessageRequest - Send a message to an agent
  • SendStreamingMessageRequest - Stream messages
  • GetTaskRequest - Retrieve task details
  • CancelTaskRequest - Cancel a running task

License

Apache-2.0