# Changelog

All notable changes to `cmdc_gateway` are documented in this file.

## [0.2.0] - 2026-04-24

### Added — A2A Inter-Agent Communication（ADP Ch15）

- `CMDCGateway.AgentCard` — 生成 A2A 兼容的 Agent Card JSON（capabilities + endpoints）
- `GET /.well-known/agent.json` — 免认证暴露 Agent Card，供其他 A2A Agent 发现

### Added — Guardrails & Safety Control Plane（ADP Ch18 + CMDC v0.2 RFC）

- `POST /v1/sessions/:id/switch_model` — 运行时切模型（RFC C8，async 202）
- `POST /v1/sessions/:id/attach_tool` — 运行时加载工具（RFC C9）
- `DELETE /v1/sessions/:id/tools/:name` — 运行时卸载工具（RFC C9）
- `POST /v1/sessions/:id/steer` — 中段注入指令（Phase 10A）
- `POST /v1/sessions/:id/abort` — 结构化 abort，支持 reason/kill_tools（RFC B6，async 202）
- `GET /v1/sessions/:id/status` — 扩展 session status（pending + queue_sizes，RFC C11）
- `POST /v1/sessions` 新增 userData + promptMode 透传（RFC A1 / Phase 10B）

### Fixed — Meter 自动订阅修复（P0）

- `Meter.init/1` 启动时 `EventBus.subscribe_all/0` 全局订阅
- 自动 `record_token_usage/2` on `{:agent_end, _, %CMDC.TokenUsage{}}` 事件
  （支持 cached/reasoning/cost_usd 细粒度字段）
- 移除对 `{:prompt_received}` 的订阅，避免与 Router 手动 `record_prompt/1` 重复计数

### Changed — EventTranslator 白名单扩容

- 新增 7 种事件翻译：`model_switched`、`tool_attached`、`tool_detached`、
  `tool_call_unknown`、`memory_flushed`、`plugin_event`、`steering`

### Changed — 依赖与质量

- `{:cmdc, "~> 0.2"}` 依赖升级
- 新增 `excoveralls` 开发依赖
- Router 的 `CMDC.steer/2` 返回值修正（移除永不匹配的 `:ok` 子句）
- `switch_model`/`abort` 改为 202 Accepted + `async: true`（cast 语义）
- 代码质量 lift：`mix credo --strict` 零 issue（修 `with/else` 单子句 + `try/rescue` 显式 +
  cyclomatic complexity + alias 字母序）

### Stats

- 107 个单元 + 集成测试，全部通过（其中 13 个 v0.2 新端点测试）
- `mix compile --warnings-as-errors` 通过
- `mix credo --strict` 0 issue

## [0.1.0] - 2026-04-08

### Added

- `CMDCGateway.Router` — Plug/Cowboy HTTP 路由，13 个 REST 端点
- `CMDCGateway.SessionStore` — ETS Session 注册表，含 tenant_id/api_key 多租户字段
- `CMDCGateway.RateLimiter` — per-api-key 令牌桶限流
- `CMDCGateway.Plugs.Auth` — API Key 认证中间件（X-API-Key / Bearer Token）
- `CMDCGateway.Plugs.RateLimitPlug` — 限流 Plug，返回标准 429 + Retry-After
- `CMDCGateway.Meter` — per-api-key 用量计量（prompt 次数 + token 统计）
- `CMDCGateway.EventTranslator` — 内部 CMDC 事件 → 对外 JSON schema（15 种事件）
- `CMDCGateway.SSEHandler` — Server-Sent Events 流式推送 + 30 秒心跳
- `CMDCGateway.WSHandler` — Cowboy WebSocket 双向通信（事件推送 + 控制消息）
- `CMDCGateway.CallbackTool` — HTTP 回调工具动态注册与代理执行
- `GET /healthz` 健康检查端点（无需认证）
- 84 个单元测试 + 集成测试，全部通过
