feat: add ACP Runners support for agent communication protocol#920
Merged
feat: add ACP Runners support for agent communication protocol#920
Conversation
Implement JSON-RPC 2.0 over stdin/stdout transport adapted from the ACP-Prototype project. Provides structured streaming, file operations, terminal management, and capability negotiation for external ACP agents. - AcpTransport: process-based transport with async request/response matching - AcpClient: high-level client (initialize → createSession → sendPrompt) - AgentRequestHandler: handles fs/read, fs/write, terminal, and permission requests - JsonRpcMessage: JSON-RPC 2.0 message model with serialization support - Model POJOs for protocol handshake and session management Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add ACPRunners enum value and wire it through the full provider pipeline: factory registration, state service persistence, LLM provider visibility, model dropdown filtering, and Langchain4J bypass for chat context creation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
AcpPromptStrategy runs the full ACP flow (init → session → prompt) on a pooled thread, streaming agent_message_chunk notifications to the WebView. Settings UI adds an ACP Runners section with table, add/edit/remove dialog, and a test button that performs an ACP initialize handshake. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Comprehensive tests covering the full ACP stack: - JsonRpcMessageTest: message creation, serialization, type detection - AcpTransportTest: process lifecycle, dispatching, handler invocation - AcpClientTest: full protocol flow, error handling, notification filtering - AgentRequestHandlerTest: file I/O, permissions, terminal management - AcpRunnersChatModelFactoryTest: model generation from config - AcpToolConfigTest: builder, equality, enum values - PromptExecutionStrategyFactoryTest: ACP/CLI strategy routing Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add CLAUDE and COPILOT to AcpType enum with their default executable paths and ACP flags (Copilot uses --acp). Add configurable acpFlag field to AcpToolConfig so each tool can specify its own flag. Use the configured acpFlag when starting the ACP client process. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extract CLI and ACP runner table management from SpecSettingsComponent into a new RunnerSettingsComponent under ui/settings/runner/. Register it as a separate "CLI/ACP Runners" configurable in plugin.xml. This keeps the Spec Driven Development settings focused on spec/backlog configuration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… prompt CLI and ACP runners previously sent each message as standalone with no memory of prior exchanges. Add buildPromptWithHistory() to AbstractPromptExecutionStrategy that prepares memory, retrieves prior messages, and formats them as a <conversation_history> text preamble. Also move CLAUDE.md/AGENTS.md and DEVOXXGENIE.md content injection from per-user-message (MessageCreationService) into the system prompt (ChatMemoryManager.buildSystemPrompt), so project context is set once per conversation instead of repeated in every message. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update enum size assertion from 4 to 6, add coverage for CLAUDE and COPILOT display names and executable paths, and add new test for the defaultAcpFlag field on all AcpType values. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add new acp-runners.md page covering ACP protocol support, setup instructions, and supported tools (Kimi, Gemini, Kilocode, Claude, Copilot). Update cli-runners.md settings path to reflect the new CLI/ACP Runners settings page. Add ACP runners to sidebar navigation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
AcpClient,AcpTransport,AgentRequestHandler,JsonRpcMessage) supporting structured streaming, capability negotiation, and agent file/terminal requestsModelProviderwithAcpRunnersChatModelFactory,AcpPromptStrategy, and strategy factory integration so ACP tools appear in the provider dropdownbuildPromptWithHistory()— prior exchanges are formatted as a<conversation_history>text preamble so external tools can recall earlier messagesCLAUDEandCOPILOTACP types with per-toolacpFlagsupport (Copilot uses--acp)Test plan
./gradlew test— all 578 tests pass (BUILD SUCCESSFUL)🤖 Generated with Claude Code