# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.2.0] - 2025-11-10 ### BREAKING CHANGES #### Removed Deprecated Event Variants The `MessagePartAdded` event variant has been removed from the `Event` enum. This variant was part of the old streaming system and has been replaced by the new ACP-style `SessionUpdate` event. **Migration Guide:** If you were using `MessagePartAdded`, you should migrate to using `SessionUpdate` instead: **Old code:** ```rust match event { Event::MessagePartAdded { session_id, message_id, part } => { // Handle message part } // ... } ``` **New code:** ```rust match event { Event::SessionUpdate { session_id, update } => { match update { SessionUpdate::UserMessageChunk { message_id, content, .. } => { // Handle user message content } SessionUpdate::AgentMessageChunk { message_id, content, .. } => { // Handle agent message content } SessionUpdate::AgentThoughtChunk { message_id, content, .. } => { // Handle agent thinking/reasoning } SessionUpdate::ToolCall { message_id, tool_call, .. } => { // Handle tool call initiated } SessionUpdate::ToolCallUpdate { message_id, tool_call_id, tool_call, .. } => { // Handle tool call updates } } } // ... } ``` **Key Differences:** 1. `SessionUpdate` uses typed `ContentBlock` instead of generic `MessagePart` 2. Updates are categorized by type (user/agent/thought/tool) 3. Better separation of concerns for streaming content 4. Aligns with Agent-Client Protocol (ACP) standards **What This Means:** - The protocol now uses a unified streaming model via `SessionUpdate` - Better alignment with ACP specification - Clearer separation between message lifecycle events and streaming updates - More structured content representation with `ContentBlock` ### Added - `SessionUpdate` event variant with ACP-style streaming updates - `SessionUpdate` enum with variants: - `UserMessageChunk`: User message content streaming - `AgentMessageChunk`: Agent message content streaming - `AgentThoughtChunk`: Agent reasoning/thinking streaming - `ToolCall`: Tool call initiated - `ToolCallUpdate`: Tool call status/content updates - `ContentBlock` enum for structured content representation - `ToolCall` type with status tracking and metadata ### Changed - Streaming events now use `SessionUpdate` instead of `MessagePartAdded` - Version bumped from 0.1.0 to 0.2.0 (breaking change) ## [0.1.0] - 2025-11-09 ### Added - Initial protocol definition - `Event` enum with session, message, connector, and system events - `Session` and `SessionMetadata` types - `Message`, `MessageMetadata`, `MessageRole`, `MessageStatus` types - `MessagePart` enum for message content - OpenCode adapter for translating OpenCode events to Dirigent protocol - REST adapter for converting REST API responses - Comprehensive test suite