Skip to content

fix(schema): follow the upstream schema-v* release tag - #52

Open
lx-wnk wants to merge 1 commit into
coder:mainfrom
lx-wnk:fix/schema-release-tag
Open

fix(schema): follow the upstream schema-v* release tag#52
lx-wnk wants to merge 1 commit into
coder:mainfrom
lx-wnk:fix/schema-release-tag

Conversation

@lx-wnk

@lx-wnk lx-wnk commented Aug 14, 2026

Copy link
Copy Markdown

The protocol repository publishes its schema artifacts under schema-vX.Y.Z tags, but the Makefile still requests them from vX.Y.Z:

$ curl -o /dev/null -w "%{http_code}" -L .../releases/download/v1.20.0/schema.json
404
$ curl -o /dev/null -w "%{http_code}" -L .../releases/download/schema-v1.20.0/schema.json
200

The last release cut under the old scheme is v0.14.0 (2026-06-18). Eleven schema-v* releases have shipped since, up to schema-v1.20.0. Every schema target in the Makefile therefore resolves to a 404, so make version cannot be pointed at any current release.

This changes the four download URLs and nothing else. Verified locally by pointing schema/version at 1.20.0 and running the download targets, which now fetch all four artifacts.

The protocol repository publishes its schema artifacts under `schema-vX.Y.Z`
tags. The Makefile still requested them from `vX.Y.Z`, so every schema target
resolved to a 404 and the generator could not be pointed at any release cut
under the new scheme.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
lx-wnk added a commit to lx-wnk/Agent-Dashboard that referenced this pull request Aug 17, 2026
## Summary

Adds `server/internal/acp`, a client for the [Agent Client
Protocol](https://agentclientprotocol.com). An ACP agent runs as a
separate process and calls into this code; the package translates those
callbacks into two function fields the caller supplies — one for
streamed session updates, one for permission decisions — and refuses
filesystem and terminal capabilities.

Nothing is wired into the pipeline, the HTTP API or the UI yet. That is
deliberate: this is step 1 of `docs/local/spec-acp-client.md`, and it
ships no user-visible surface.

## Type of change

- [x] `feat` — new feature

## Breaking changes

- [x] No breaking changes

## Testing

19 tests, 79.1% statement coverage of the new package. Covered: the six
session-update kinds, the permission gate in both directions including
the option-fallback rules, all seven refused capabilities, and one
end-to-end exchange over a real JSON-RPC connection against an in-memory
agent double wired with `io.Pipe`. No test spawns a process or touches
the network.

- [x] `task test` passes locally
- [x] `task lint` passes locally
- [x] Relevant tests added or updated

## Checklist

- [x] PR title follows Conventional Commits
- [x] Self-review done
- [x] No unrelated changes in this PR

## Notes for the reviewer

**The permission gate is fail-closed, and one asymmetry in it is
load-bearing.** No callback denies, a callback returning an error
denies, and only an explicit allow with a nil error may select an allow
option. When the required option kind is missing, the deny path falls
back to `reject_always`, but the allow path deliberately does **not**
fall back to `allow_always` — that would turn a single approval into a
session-wide grant. The code carries a comment saying so, because the
obvious "consistency" edit is the dangerous one.

**The dependency is a fork.** `github.com/coder/acp-go-sdk` is
`replace`d onto `github.com/lx-wnk/acp-go-sdk v1.20.0-lxwnk.alpha.1`.
Upstream has been stalled since 2026-06-02 with four unmerged PRs; its
schema download URLs 404 because the protocol repo renamed its release
tags. Fixes are filed upstream as coder/acp-go-sdk#52, #53 and #54. The
`replace` is in `server/go.mod` only — never in the published `sdk/`
module — so external consumers are unaffected.

**Known gaps, recorded rather than hidden.** `PermissionRequest`
currently carries only `SessionID`, `ToolCallID` and `Title`; the SDK
also offers `Kind` and `RawInput`, and a gate that sees only a free-text
title invites prose heuristics. Adding those fields is the first item of
the wiring work. Four smaller deferred items (untested update branches,
a redundant interface assertion, JSON-RPC error code choice for
refusals) are noted in the final review and none affect behaviour.

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant