A2A Java SDK 1.0.0.Alpha2 Released

We are pleased to announce the release of A2A Java SDK 1.0.0.Alpha2. This release brings significant new features and improvements as we continue to align with the A2A 1.0 specification.

What’s A2A?

The Agent2Agent (A2A) Protocol is an open standard that enables AI agents to communicate and collaborate with one another, regardless of each agent’s underlying framework, language, or vendor. The A2A Java SDK makes it easy to build A2A-compliant agents in Java, with reference implementations based on Quarkus.

Key Highlights in 1.0.0.Alpha2

This release includes several important enhancements and breaking changes:

New Features

Telemetry Support

The A2A Java SDK now includes built-in support for telemetry using OpenTelemetry. This allows you to monitor and trace your agent’s operations, making it easier to diagnose issues and understand performance characteristics.

To use the telemetry features, add the OpenTelemetry extras to your project:

<dependency>
    <groupId>io.github.a2asdk</groupId>
    <artifactId>a2a-java-sdk-extras-opentelemetry-client</artifactId>
    <version>1.0.0.Alpha2</version>
</dependency>
<dependency>
    <groupId>io.github.a2asdk</groupId>
    <artifactId>a2a-java-sdk-extras-opentelemetry-server</artifactId>
    <version>1.0.0.Alpha2</version>
</dependency>

Push Notifications

We’ve implemented full support for push notifications as specified in the A2A 1.0 specification. This allows agents to receive notifications about task updates without polling.

Server agents can now:

  • Configure push notification endpoints

  • Manage push notification configurations per task

  • Receive notifications when task states change

Clients can:

  • Get, set, list, and delete push notification configurations

  • Subscribe to task updates via push notifications

Protocol Updates

Breaking Changes

This release includes breaking changes to align with the latest A2A specification.

  • AgentEmitter API: The AgentExecutor methods now use AgentEmitter instead of the previous EventQueue + TaskUpdater combination, providing a more streamlined and intuitive API. This enhancement allows sending Messages for simple Agent interactions directly through the AgentEmitter, eliminating the need to interact with the EventQueue directly.

  • Protocol Alignment: Updated the A2A protocol implementation to align with the latest specification revision, including updates to the gRPC protocol definitions.

Additional Improvements

  • Null-Safety: Migrated the spec module to use JSpecify annotations for better null-safety guarantees

  • Jakarta CDI Compatibility: Added no-args constructors for improved Jakarta CDI compatibility

  • HTTP+JSON/REST Transport: Replaced quarkus-rest-jackson with quarkus-rest for better integration

  • Event Processing: Implemented the MainEventBus architecture for more robust event queue processing

  • MicroProfile Config: Added missing META-INF/beans.xml to the microprofile-config integration

Migration Guide

If you’re upgrading from 1.0.0.Alpha1, you’ll need to make the following changes:

Update AgentExecutor Implementation

The execute and cancel methods now receive an AgentEmitter parameter instead of EventQueue:

// Before (1.0.0.Alpha1)
@Override
public void execute(RequestContext context, EventQueue eventQueue) throws JSONRPCError {
    final TaskUpdater updater = new TaskUpdater(context, eventQueue);
    updater.submit();
    updater.startWork();
    // ...
}

// After (1.0.0.Alpha2)
@Override
public void execute(RequestContext context, AgentEmitter agentEmitter) throws JSONRPCError {
    agentEmitter.submit();
    agentEmitter.startWork();
    // ...
}

The AgentEmitter interface provides the same functionality with a cleaner API.

Getting Started

To use A2A Java SDK 1.0.0.Alpha2, add the appropriate dependencies to your project:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>io.github.a2asdk</groupId>
            <artifactId>a2a-java-sdk-bom</artifactId>
            <version>1.0.0.Alpha1</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<!-- For JSON-RPC transport -->
<dependency>
    <groupId>io.github.a2asdk</groupId>
    <artifactId>a2a-java-sdk-reference-jsonrpc</artifactId>
    <version>1.0.0.Alpha2</version>
</dependency>

<!-- For gRPC transport -->
<dependency>
    <groupId>io.github.a2asdk</groupId>
    <artifactId>a2a-java-sdk-reference-grpc</artifactId>
    <version>1.0.0.Alpha2</version>
</dependency>

<!-- For HTTP+JSON/REST transport -->
<dependency>
    <groupId>io.github.a2asdk</groupId>
    <artifactId>a2a-java-sdk-reference-rest</artifactId>
    <version>1.0.0.Alpha2</version>
</dependency>

Conclusion

A2A Java SDK 1.0.0.Alpha2 represents a significant step forward in our journey toward full A2A 1.0 specification compliance. The addition of telemetry support and push notifications makes it easier to build production-ready agents, while the protocol updates ensure compatibility with the latest specification.

We encourage you to try out this release and provide feedback through our GitHub issue tracker. Your input helps shape the future of the A2A Java SDK.