# Changelog — 2026-03-31 #01 ## Full gem implementation of dispatch-adapter-copilot ### New Files - `lib/dispatch/adapter/errors.rb` — Error hierarchy (Error, AuthenticationError, RateLimitError, ServerError, RequestError, ConnectionError) - `lib/dispatch/adapter/message.rb` — Message, TextBlock, ImageBlock, ToolUseBlock, ToolResultBlock structs - `lib/dispatch/adapter/response.rb` — Response, Usage, StreamDelta structs - `lib/dispatch/adapter/tool_definition.rb` — ToolDefinition struct - `lib/dispatch/adapter/model_info.rb` — ModelInfo struct - `lib/dispatch/adapter/base.rb` — Abstract adapter base class with interface contract - `lib/dispatch/adapter/version.rb` — CopilotVersion module for gemspec version reference - `spec/dispatch/adapter/structs_spec.rb` — Tests for all canonical structs - `spec/dispatch/adapter/base_spec.rb` — Tests for Base interface defaults and NotImplementedError - `spec/dispatch/adapter/errors_spec.rb` — Tests for error hierarchy and attributes ### Modified Files - `lib/dispatch/adapter/copilot.rb` — Rewrote from empty module to full Copilot adapter class inheriting from Base, with HTTP auth (device flow + Copilot token exchange), chat (non-streaming and SSE streaming), tool conversion, message merging, error mapping, list_models, and thinking/reasoning_effort support - `spec/dispatch/adapter/copilot_spec.rb` — Comprehensive WebMock-based tests covering text responses, tool calls, mixed responses, system param, max_tokens override, tool definitions, ToolUseBlock/ToolResultBlock wire conversion, ImageBlock error, consecutive message merging, streaming text deltas, streaming tool call deltas, list_models, thinking parameter (constructor default, per-call override, validation, nil disable), and error mapping for all HTTP status codes and connection failures - `spec/spec_helper.rb` — Cleaned up config - `dispatch-adapter-copilot.gemspec` — Updated version reference, summary, description, homepage, removed TODOs - `Gemfile` — Added webmock dependency - `README.md` — Replaced with actual gem documentation and usage examples - `.rubocop.yml` — Added NewCops, FrozenStringLiteralComment enforcement, and method/class length limits ### Deleted Files - `lib/dispatch/adapter/copilot/version.rb` — Replaced by `lib/dispatch/adapter/version.rb`