Skip to content

Agents created via to_a2a() did not support A2A push notification configuration methods, despite these being part of the A2A protocol specification. #4126

@secprog

Description

@secprog

Describe the bug
Agents created via to_a2a() did not support A2A push notification configuration methods, despite these being part of the A2A protocol specification.

The to_a2a() function created a DefaultRequestHandler without providing a push_config_store parameter, causing all push notification RPC methods to raise UnsupportedOperationError:

SetTaskPushNotificationConfig: Could not set push notification configs for tasks
GetTaskPushNotificationConfig: Could not retrieve push notification configs
ListTaskPushNotificationConfig: Could not list push notification configs for tasks
DeleteTaskPushNotificationConfig: Could not delete push notification configs

Root Cause

The a2a-sdk's DefaultRequestHandler requires a PushNotificationConfigStore instance to enable push notification methods. Without this store, all push notification operations fail with UnsupportedOperationError.

Impact:

Users could not configure task-specific push notification settings.

Expected Behavior:

InMemoryPushNotificationConfigStore: Created automatically for each agent
Custom stores: Can be provided via push_config_store parameter
Full API support: Set, get, list, and delete push notification configs
Per-task configuration: Each task can have its own push notification settings

something like this:

from google.adk.a2a.utils.agent_to_a2a import to_a2a
from a2a.server.tasks import PushNotificationConfigStore

# Default (in-memory push notification config)
app = to_a2a(agent)

# Or with custom push config store
class MyPushStore(PushNotificationConfigStore):
    # ... implement abstract methods ...
app = to_a2a(agent, push_config_store=MyPushStore())

Metadata

Metadata

Labels

a2a[Component] This issue is related a2a support inside ADK.needs review[Status] The PR/issue is awaiting review from the maintainer

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions