mirror of
https://github.com/agentclientprotocol/claude-agent-acp.git
synced 2026-10-27 04:30:59 +00:00
61ae8609d4343da6758c2376c6cf684c7fb0956a
Fixes #453. On a cache-replayed turn the CLI can answer on the `result` alone: output_tokens is 0, no `stream_event` deltas, and no consolidated `assistant` message. The result handler never forwarded that text, so the client rendered an empty turn. The check suggested in the issue (output_tokens === 0 and a non-empty result) isn't enough by itself. I tried it: it emits the answer twice when the consolidated `assistant` message already delivered it, including the case where the echo lands mid-message and the consolidated message dedupes to nothing, and it forwards a background task-notification followup's output into the user's turn. So this tracks whether any top-level assistant text already reached the client since the last user-turn result, and forwards `message.result` only when none did and the turn isn't a task-notification followup. The direct emitters in the `status` handler (compaction notices, local command output) set the flag too, since they bypass the forwarding loops. `compact_boundary` doesn't, because it only sends a usage update. Tests: six added to the "assembled assistant text fallback" block. Reverting the source change fails "forwards the result text when nothing else carried it"; the other five pin the guards, and they catch the naive version, which double-emits and leaks task-notification output. Full suite: 501 passed, 2 failed, and both failures reproduce on a clean main (Windows path separator assertions in the tool-conversion tests). eslint, tsc --noEmit, and prettier --check are clean. --------- Co-authored-by: Josh Kappler <boffytv@gmail.com> Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com> Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
ACP adapter for the Claude Agent SDK
Use Claude Agent SDK from ACP-compatible clients!
This tool implements an ACP agent by using the official Claude Agent SDK, supporting:
- Context @-mentions
- Images
- Tool calls (with permission requests)
- Following
- Edit review
- TODO lists
- Interactive (and background) terminals
- Custom Slash commands
- Client MCP servers
Learn more about the Agent Client Protocol.
Contribution Policy
This project does not require a Contributor License Agreement (CLA). Instead, contributions are accepted under the following terms:
By contributing to this project, you agree that your contributions will be licensed under the Apache License, Version 2.0. You affirm that you have the legal right to submit your work, that you are not including code you do not have rights to, and that you understand contributions are made without requiring a Contributor License Agreement (CLA).
Description
Pull mirror of agentclientprotocol/claude-agent-acp (Apache-2.0): the ACP bridge that lets Buzz drive Claude Code
Languages
TypeScript
99.2%
JavaScript
0.6%
Shell
0.2%