• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

azmaveth / ex_mcp / fd97953bf14ac558be3656e448c5e191b1e5ca2e
65%

Build:
DEFAULT BRANCH: master
Ran 07 Jun 2026 03:21PM UTC
Jobs 1
Files 258
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

07 Jun 2026 03:19PM UTC coverage: 8.936% (+0.07%) from 8.868%
fd97953bf14ac558be3656e448c5e191b1e5ca2e

push

github

azmaveth
feat(acp)!: close spec-violation and bug-class gaps across protocol, adapters, client

Inventory pass against https://agentclientprotocol.com found 11 issues —
spec violations that broke cross-compatibility with other ACP libraries,
bug-class regressions (caller passes value, adapter returns :ok, wire
carries something different), and missing features. 15 spec-regression
tests added to pin each behavior; all green.

BREAKING:
- Protocol.encode_session_{new,load,resume} now require non-nil cwd
  (spec marks cwd as required for these methods). Callers passing nil
  now raise FunctionClauseError instead of silently producing off-spec
  requests.
- Client.{new,load,resume}_session/3-4 require non-nil cwd for the
  same reason.

Spec violations fixed:
- Protocol encoders no longer drop cwd when nil
- Claude/Codex no longer emit non-spec sessionUpdate:"usage" — token
  billing rides on the prompt response result's usage extension instead
  (spec's usage_update discriminator is for context-window fill, not
  input/output token counting)
- Codex session/set_mode actually persists modeId in state, and
  session/new forwards it as approvalPolicy on the wire so the three
  advertised modes (suggest/auto-edit/full-auto) finally do something
- PermissionOption.kind validated against the spec enum
  (allow_once|allow_always|reject_once|reject_always) in
  encode_permission_request

Bug class closed:
- Pi thinking_level invalid values now return {:error, reason, state}
  instead of silent {:ok, :skip, state} (caller gets JSON-RPC -32602
  via AdapterBridge's new error-synthesis path)
- Codex caller-supplied session/new params.model wins over state.model
  (was reversed)
- Claude session/prompt with image content blocks now forwards them
  using Anthropic Messages API content-block format; audio/resource
  blocks return {:error, ...} instead of silently dropping

Missing features:
- Protocol.encode_session_delete/1 added (gated by
  agentCapabilities.delete per spec)... (continued)

0 of 64 new or added lines in 6 files covered. (0.0%)

195 existing lines in 5 files now uncovered.

1434 of 16048 relevant lines covered (8.94%)

5.84 hits per line

Uncovered Changes

Lines Coverage ∆ File
20
0.0
0.0% lib/ex_mcp/acp/adapters/claude.ex
16
0.0
0.0% lib/ex_mcp/acp/client.ex
13
0.0
0.0% lib/ex_mcp/acp/adapters/codex.ex
8
0.0
0.0% lib/ex_mcp/acp/protocol.ex
5
0.0
0.0% lib/ex_mcp/acp/adapter_bridge.ex
2
0.0
0.0% lib/ex_mcp/acp/adapters/pi.ex

Coverage Regressions

Lines Coverage ∆ File
189
0.0
0.0% lib/ex_mcp/acp/adapters/claude.ex
3
0.0
0.0% lib/ex_mcp/acp/protocol.ex
1
0.0
0.0% lib/ex_mcp/acp/adapters/codex.ex
1
48.15
-3.7% lib/ex_mcp/internal/consent_cache.ex
1
68.75
-3.13% lib/ex_mcp/security/consent.ex
Jobs
ID Job ID Ran Files Coverage
1 fd97953bf14ac558be3656e448c5e191b1e5ca2e.1 07 Jun 2026 03:21PM UTC 258
8.94
GitHub Action Run
Source Files on build fd97953bf14ac558be3656e448c5e191b1e5ca2e
  • Tree
  • List 258
  • Changed 10
  • Source Changed 0
  • Coverage Changed 10
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • fd97953b on github
  • Prev Build on master (#9A4B0411...)
  • Next Build on master (#B985FE43...)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc