Releases: a2aproject/a2a-go
Releases · a2aproject/a2a-go
v2.2.1
2.2.1 (2026-04-29)
Optimizations
Bug Fixes
- compat package fixes (#328) (21e166c)
- deserialize REST streaming error events into typed A2A errors (#318) (#319) (8a250ad)
- extra query and fast client rejection in local executor (#330) (f307ca9)
- task push notification configurations (#329) (c78fb4d)
- update error handling to match spec (#327) (1aa72ce)
v0.3.15
v0.3.14
v2.2.0
v2.1.0
v0.3.13
0.3.13 (2026-03-30)
Bug Fixes
- call cleanup even for cancelation with concurrent execution for API predictability
- fix a2asrv.TaskStore.Save call with non-nil prev task even if nothing was stored
- fix panic handler not called for cancelation with concurrent execution
- fix heartbeater timer leak
- fix infinite jsonrpc sse loop on panic supression
- fix client interceptor not being able to supress error in after
v2.0.1
v0.3.12
v2.0.0
Release notes
Implements A2A spec 1.0 revision with JSONRPC, gRPC and REST protocol bindings. SDK major version is now v2, meaning the module id has changed:
go get github.com/a2aproject/a2a-go/v2
Non-breaking changes
a2aclient.Factoryimplements protocol version negotiation.- New errors added:
ExtensionSupportRequiredErrorandVersionNotSupportedError. - Client sends
A2A-Versionheader. a2apackage providesPartconstructor functions.a2asrv.NewTenantRESTHandlerprovides a utility for setting up multi-tenant deployments.- ListTasks RPC implementation.
a2asrv.WithCapabilityCheckshandler option rejecting requests for which no support is declared ina2a.AgentCapabilities.
Spec-specific breaking changes
In addition to breaking core type changes updates:
- Agent output validations: task must be the first event emitted by AgentExecutor, artifact parts must be non-empty.
Finalfield removed fromTaskStatusUpdateEvent, state is used to determine whether event is final.- RPCs renamed: TaskSubscription -> SubscribeToTask, GetAgentCard -> GetExtendedAgentCard.
- JSONRPC uses the same method naming as gRPC.
a2a.Tasksnapshot is emitted as the first event on task resubscription.
SDK breaking changes:
For motivation behind some of the changes refer to the change announcement.
a2asrv.AgentExecutorchanges:ExecuteandCancelnow returniter.Seq2[a2a.Event, error]instead of writing events to a queue.a2asrv/taskstorepackage gets introduced withTaskStoreinterface and the the default in-memory implementation.a2a.TaskVersiongets moved toa2asrv/taskstore.TaskStore.Savemethod gets replaced with separateCreateandUpdatemethods.TaskStore.Updateis called witha2a.Eventset to usera2a.Messageon task history update.TaskStore.Getreturn types istaskstore.StoredTaskwhich is (task, version) pair.eventqueue.Queuegets replaced with separateeventqueue.Readerandeventqueue.Writer.eventqueue.Managermethods updated appropriately.eventqueue.Messagegets introduced for groupinga2a.Task,taskstore.TaskVersionanda2a.ProtocolVersion.a2aclient.CallInterceptoranda2asrv.CallInterceptorcan now return a value fromBeforeto return a result without performing the actual call.a2aclient.WithInterceptorsgets renamed toa2aclient.WithCallInterceptorsanda2asrv.WithCallInterceptorgets renamed toa2asrv.WithCallInterceptorsand takes vararg so that methods are consistent with each other.a2asrv.Userget changed from an interface to a struct with anAttributes map[string]anyfield.a2asrv.RequestContextgets renamed intoa2asrv.ExecutorContext.UserandServiceParamsare added to the struct, these should be used intead ofCallContext.a2asrv.ReqMetaanda2aclient.CallMetaare renamed toServiceParams.a2asrv.PushSenderanda2asrv.PushConfigStoreare moved toa2asrv/push.a2aclient.ServiceParamsare now passed explicitly toa2aclient.Transport.- Methods which attach something to
context.Contextstart withAttachprefix, methods used to create constructor-function options start withWith. a2aclient.NewStaticServiceParamsInjectorreplaced witha2aclient.AttachServiceParamsfor sending request headers.- gRPC transport for
a2aclientwas moved toa2agrpcpackage. This removes gRPC as the mandatory dependency from the client.
v0.3 compatibility:
Backward compatibility implementation as discussed in A2A spec repo is provided by github.com/a2aproject/a2a-gov/v2/a2acompat/a2av0 package.
a2acompat works against the old github.com/a2aproject/a2a-go library and provides adapters for common dependencies.
a2agrpc and a2apb are versioned, where v0 contains mappers from v0.3.6 types to core types, and v1 implements the latest protocol version.
For an example backward-compatibility setup refer to e2e/compat.
v0.3.10
0.3.10 (2026-03-17)
Bug Fixes
- fix wrong allocation target size
- terminate subscription after terminal event has been received
- fix missing break after error
- fix subscribing to a different taskID in case of work queue override
- fix response not sent for methods not returning values
- fix panic write attempt to unbuffered channel