public interface AcpClient
This class serves as the main entry point for establishing connections with ACP agents, implementing the client-side of the ACP specification. The protocol follows a client-agent architecture where:
The class provides factory methods to create either:
AcpAsyncClient for non-blocking operations with Mono responsesAcpSyncClient for blocking operations with direct responses (future)Example of creating a basic asynchronous client:
// Create transport
AgentParameters params = AgentParameters.builder("gemini")
.arg("--experimental-acp")
.build();
StdioAcpClientTransport transport = new StdioAcpClientTransport(params, McpJsonMapper.getDefault());
// Build client
AcpAsyncClient client = AcpClient.async(transport)
.requestTimeout(Duration.ofSeconds(30))
.sessionUpdateConsumer(notification -> {
System.out.println("Session update: " + notification);
return Mono.empty();
})
.build();
// Initialize and use
client.initialize(new AcpSchema.InitializeRequest(1, new AcpSchema.ClientCapabilities()))
.flatMap(initResponse -> client.newSession(new AcpSchema.NewSessionRequest("/workspace", List.of())))
.flatMap(sessionResponse -> client.prompt(new AcpSchema.PromptRequest(
sessionResponse.sessionId(),
List.of(new AcpSchema.TextContent("Fix the failing test")))))
.doOnNext(response -> System.out.println("Response: " + response))
.block();
client.closeGracefully().block();
The client supports:
AcpAsyncClient,
AcpClientTransport| 限定符和类型 | 接口和说明 |
|---|---|
static class |
AcpClient.AsyncSpec
Asynchronous client specification.
|
static interface |
AcpClient.SyncRequestHandler<T>
Functional interface for synchronous request handlers.
|
static class |
AcpClient.SyncSpec
Synchronous client specification.
|
| 限定符和类型 | 字段和说明 |
|---|---|
static org.slf4j.Logger |
logger |
static reactor.core.scheduler.Scheduler |
SYNC_HANDLER_SCHEDULER
Library-owned scheduler for executing synchronous handlers.
|
| 限定符和类型 | 方法和说明 |
|---|---|
static AcpClient.AsyncSpec |
async(AcpClientTransport transport)
Start building an asynchronous ACP client with the specified transport layer.
|
static AcpClient.SyncSpec |
sync(AcpClientTransport transport)
Start building a synchronous ACP client with the specified transport layer.
|
static final org.slf4j.Logger logger
static final reactor.core.scheduler.Scheduler SYNC_HANDLER_SCHEDULER
static AcpClient.SyncSpec sync(AcpClientTransport transport)
transport - The transport layer implementation for ACP communicationjava.lang.IllegalArgumentException - if transport is nullstatic AcpClient.AsyncSpec async(AcpClientTransport transport)
transport - The transport layer implementation for ACP communication. Common
implementation is StdioAcpClientTransport for stdio-based communication.java.lang.IllegalArgumentException - if transport is null