summaryrefslogtreecommitdiffhomepage
path: root/.rules/changelog/2026-03/31/01.md
blob: 78cf9ef5a2b936c57e48450cd86c7a0b577a529b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 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`