import com.agentclientprotocol.sdk.client.*;
import com.agentclientprotocol.sdk.client.transport.*;
import com.agentclientprotocol.sdk.spec.AcpSchema.*;
import java.util.List;
// 1. Build the command: "gemini --experimental-acp"
var params = AgentParameters.builder("gemini")
.arg("--experimental-acp")
.build();
// 2. Launch it as a subprocess, communicate over stdin/stdout
var transport = new StdioAcpClientTransport(params);
// 3. Build client with update consumer to print the agent's response
AcpSyncClient client = AcpClient.sync(transport)
.sessionUpdateConsumer(notification -> {
if (notification.update() instanceof AgentMessageChunk msg) {
System.out.print(((TextContent) msg.content()).text());
}
})
.build();
// 4. Initialize — exchange protocol versions and capabilities
client.initialize();
// 5. Create session — set working directory context
var session = client.newSession(
new NewSessionRequest(".", List.of()));
// 6. Send prompt — blocks until agent responds, updates stream to consumer
var response = client.prompt(new PromptRequest(
session.sessionId(),
List.of(new TextContent("What is 2+2? Reply with just the number."))
));
System.out.println("\nStop reason: " + response.stopReason());
client.close();
// Output: 4
// Stop reason: END_TURN