- Support get agent card interface (#96)
- Support header config of each call (#95)
- Improve error code definition and error handling of server (#94)
- Fix type of RpcID changed in streaming handling (#92)
- Fix data race issue (#86)
- Support a2a extendedAgentCard (#81)
- Add tunnel to optimize sse sending (#74)
- Enlarge channel size (#79)
- Set no default client timeout (#80)
- Downgrade golang version to 1.20 (#82)
- Add metadata to TaskHandler interfaces (#70)
- Remove deprecated field (#66)
- Make bufio scanner buffer configurable (#73)
Breaking Changes:
-
trpc.group/trpc-go/trpc-a2a-go/protocol
- MethodTasksPushNotificationGet: removed
- MethodTasksPushNotificationSet: removed
- MethodTasksSend: removed
- MethodTasksSendSubscribe: removed
- SendTaskParams: removed
- TaskEvent: removed
-
trpc.group/trpc-go/trpc-a2a-go/client
- (*A2AClient).SendTasks: removed
- (*A2AClient).StreamTask: removed
-
trpc.group/trpc-go/trpc-a2a-go/taskmanager
- (*MemoryTaskManager).OnSendTask: removed
- (*MemoryTaskManager).OnSendTaskSubscribe: removed
- TaskManager.OnSendTask: removed
- TaskManager.OnSendTaskSubscribe: removed
-
trpc.group/trpc-go/trpc-a2a-go/taskmanager/redis
- (*TaskManager).OnSendTask: removed
- (*TaskManager).OnSendTaskSubscribe: removed
- Redis TaskManager use UniversalClient interface (#59)
- Add client rpc method tasks/resubscribe (#61)
- Optimize middleware And Support multi a2a endpoint in one process (#64)
- Fix jsonrpc ID generation(#41)
- Add official python sdk client example in examples/simple (#42)
- Fix issue on context id generation (#45)
- Fix task subscriber buf size option (#50)
- Add bloing option for task subscriber (#50)
- Fix typo of SubscribeTask (#54)
- Synchronize with latest a2a spec (#57)
Breaking Changes:
- Change the filed
Finalof TaskStatusUpdateEvent from *bool to bool(#42) - Task Subscriber Constructor like
NewMemoryTaskSubscriberandNewTaskSubscriberadd a option param (#45) - Fix typo of taskmanager.TaskHandler.Subscriber, taskmanager.TaskHandler.SubScribeTask -> taskmanager.TaskHandler.SubscribeTask ($54)
- Add MCP information to the README for improved documentation (#38)
- Add support for subpaths in the a2a-go server, enabling more flexible routing (#37)
- The status enum for status_update should be status-update (#36)
A2A Specification Upgrade (a2a spec v0.1.0 -> a2a spec v0.2.0)
tasks/send→message/sendtasks/sendSubscribe→message/streamtasks/pushNotification/set→tasks/pushNotificationConfig/settasks/pushNotification/get→tasks/pushNotificationConfig/get- Added
agent/authenticatedExtendedCardmethod - Legacy methods retained for backward compatibility but deprecated
Following the A2A specification upgrade, core data structures have been updated to align with the new protocol requirements. These changes include modifications to Task, Message, Part structures, file handling mechanisms, task states, agent card configurations, artifacts, and streaming events.
For detailed specification changes, refer to the official A2A specification comparison:
- Previous Specification: A2A v0.1.0 JSON Schema
- Current Specification: A2A v0.2.0 JSON Schema
TaskProcessor → MessageProcessor:
// Old interface
type TaskProcessor interface {
Process(ctx context.Context, taskID string, initialMsg protocol.Message, handle TaskHandle) error
}
// New interface
type MessageProcessor interface {
ProcessMessage(ctx context.Context, message protocol.Message, options ProcessOptions, taskHandler TaskHandler) (*MessageProcessingResult, error)
}Key Changes:
- Processing Model: Task-driven → Message-driven processing
- Parameters: Removed
taskID, addedProcessOptionsfor configuration - Return Type: Simple
error→ Structured*MessageProcessingResult - Handler Interface:
TaskHandle→TaskHandler(enhanced capabilities)
TaskHandler Interface Enhancement:
- Method Evolution:
GetSessionID()→GetContextID()(A2A spec compliance) - New Capabilities: Added
BuildTask(),GetTask(),SubScribeTask(),GetMessageHistory() - Enhanced Parameters:
AddArtifact()now supportstaskID,isFinal,needMoreData
TaskManager Interface Updates:
- New Methods: Added
OnSendMessage(),OnSendMessageStream()(A2A 0.2.0 methods) - Updated Returns:
OnResubscribe()now returns<-chan protocol.StreamingMessageEvent - Backward Compatibility: Legacy methods (
OnSendTask,OnSendTaskSubscribe) deprecated but retained
Constructor Changes:
NewMemoryTaskManager(TaskProcessor)→NewMemoryTaskManager(MessageProcessor, ...MemoryTaskManagerOption)
-
Memory TaskManager: Completely restructured for specification compliance
- Constructor signature changed:
NewMemoryTaskManager(TaskProcessor)→NewMemoryTaskManager(MessageProcessor, ...MemoryTaskManagerOption) - Internal data structures reorganized:
Messagesfield:map[string][]Message→map[string]MessageTasksfield:map[string]*Task→map[string]*MemoryCancellableTaskSubscribersfield:map[string][]chan<- TaskEvent→map[string][]*MemoryTaskSubscriber
- Removed internal mutex fields (
MessagesMutex,TasksMutex, etc.) for simplified synchronization - Added new types:
MemoryCancellableTask,MemoryTaskSubscriber - Added configuration options:
MemoryTaskManagerOption,WithConversationTTL,WithMaxHistoryLength
- Constructor signature changed:
-
Redis TaskManager: Restructured implementation to support specification requirements
- Split into focused modules:
redis_manager.go- main TaskManager implementationredis_types.go- Redis-specific type definitionsredis_options.go- configuration optionsredis_task_handle.go- task handle implementation
- Removed legacy files:
options.go,push_notification.go,task.go,redis.go - Fixed
GetSessionID()method support as required by specification (#30)
- Split into focused modules:
-
Interface Updates: Updated interfaces to match specification requirements
- TaskManager Interface: Added
OnSendMessage()andOnSendMessageStream()methods - TaskHandler Interface: Renamed
GetSessionID()toGetContextID()per specification - MessageProcessor Interface: Updated to support new processing requirements
- TaskManager Interface: Added
-
Client & Server: Updated implementations to support new protocol methods
- Client updated for new endpoint support
- Server route handlers updated for new methods
- Request/response handling updated per specification
- Replace
client.SendTask()calls withclient.SendMessage() - Replace
client.SendTaskSubscribe()calls withclient.StreamMessage() - Update request/response structures for new Message-based APIs
- Update route handlers for new method names
- Implement new
OnSendMessage()andOnSendMessageStream()handlers - Update AgentCard configuration for new security fields
OnSendTask() (Deprecated → Use OnSendMessage()):
- Legacy method for
tasks/sendprotocol method - Replaced by
OnSendMessage()formessage/sendmethod
OnSendTaskSubscribe() (Deprecated → Use OnSendMessageStream()):
- Legacy method for
tasks/sendSubscribeprotocol method - Replaced by
OnSendMessageStream()formessage/streammethod
These methods remain functional for backward compatibility but are deprecated in favor of the new A2A 0.2.0 specification methods.
- Add
GetSessionIdtoTaskHandle(#27)
- Change agent card provider
nametoorganization
- Initial release
- Implemented A2A protocol core components:
- Complete type system with JSON-RPC message structures.
- Client implementation for interacting with A2A servers.
- Server implementation with HTTP endpoints handler.
- In-memory task manager for task lifecycle management.
- Redis-based task manager for persistent storage.
- Flexible authentication system with JWT and API key support.
- Agent discovery capabilities.
- Task management (send, get status, cancel).
- Streaming updates subscription.
- Push notification configuration.
- Authentication support for secure connections.
- HTTP endpoint handlers for A2A protocol.
- Request validation and routing.
- Streaming response support.
- Agent card configuration for capability discovery.
- CORS support for cross-origin requests.
- Authentication middleware integration.
- Task lifecycle management.
- Status transition tracking.
- Resource management for running tasks.
- Memory-based implementation for development.
- Redis-based implementation for production use.
- Multiple authentication scheme support.
- JWT authentication with JWKS endpoint.
- API key authentication.
- OAuth2 integration.
- Chain authentication for multiple auth methods.
- Basic text processing agent example.
- Interactive CLI client.
- Streaming data client sample.
- Authentication server demonstration.
- Redis task management implementation.