v1.0.0-alpha
Release notes
Implements A2A spec 1.0-rc revision with JSONRPC and gRPC protocol bindings.
Non-breaking changes
a2aclient.Factoryimplements protocol version negotiation.- New errors added:
ExtensionSupportRequiredErrorandVersionNotSupportedError. - Client sends
A2A-Versionheader. - ListTasks RPC implementation.
a2apackage providesPartconstructor functions.
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.
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-go/a2acompat/a2av0 package.
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.