Skip to content

Commit 66e22c6

Browse files
authored
Merge branch 'a2aproject:1.0-dev' into 1.0-dev
2 parents d96aea1 + 2e2d431 commit 66e22c6

47 files changed

Lines changed: 670 additions & 845 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

buf.gen.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
version: v2
33
inputs:
44
- git_repo: https://github.com/a2aproject/A2A.git
5-
ref: 1997c9d63058ca0b89361a7d6e508f4641a6f68b
5+
ref: main
66
subdir: specification
77
managed:
88
enabled: true

src/a2a/client/base_client.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from a2a.types.a2a_pb2 import (
1313
AgentCard,
1414
CancelTaskRequest,
15-
CreateTaskPushNotificationConfigRequest,
1615
DeleteTaskPushNotificationConfigRequest,
1716
GetExtendedAgentCardRequest,
1817
GetTaskPushNotificationConfigRequest,
@@ -98,10 +97,10 @@ def _apply_client_config(self, request: SendMessageRequest) -> None:
9897
if not request.configuration.blocking and self._config.polling:
9998
request.configuration.blocking = not self._config.polling
10099
if (
101-
not request.configuration.HasField('push_notification_config')
100+
not request.configuration.HasField('task_push_notification_config')
102101
and self._config.push_notification_configs
103102
):
104-
request.configuration.push_notification_config.CopyFrom(
103+
request.configuration.task_push_notification_config.CopyFrom(
105104
self._config.push_notification_configs[0]
106105
)
107106
if (
@@ -178,7 +177,7 @@ async def cancel_task(
178177

179178
async def create_task_push_notification_config(
180179
self,
181-
request: CreateTaskPushNotificationConfigRequest,
180+
request: TaskPushNotificationConfig,
182181
*,
183182
context: ClientCallContext | None = None,
184183
) -> TaskPushNotificationConfig:
@@ -304,8 +303,10 @@ async def get_extended_agent_card(
304303
card = await self._transport.get_extended_agent_card(
305304
request,
306305
context=context,
307-
signature_verifier=signature_verifier,
308306
)
307+
if signature_verifier:
308+
signature_verifier(card)
309+
309310
self._card = card
310311
return card
311312

src/a2a/client/client.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
from a2a.types.a2a_pb2 import (
1616
AgentCard,
1717
CancelTaskRequest,
18-
CreateTaskPushNotificationConfigRequest,
1918
DeleteTaskPushNotificationConfigRequest,
2019
GetExtendedAgentCardRequest,
2120
GetTaskPushNotificationConfigRequest,
@@ -24,7 +23,6 @@
2423
ListTaskPushNotificationConfigsResponse,
2524
ListTasksRequest,
2625
ListTasksResponse,
27-
PushNotificationConfig,
2826
SendMessageRequest,
2927
StreamResponse,
3028
SubscribeToTaskRequest,
@@ -71,8 +69,8 @@ class ClientConfig:
7169
accepted_output_modes: list[str] = dataclasses.field(default_factory=list)
7270
"""The set of accepted output modes for the client."""
7371

74-
push_notification_configs: list[PushNotificationConfig] = dataclasses.field(
75-
default_factory=list
72+
push_notification_configs: list[TaskPushNotificationConfig] = (
73+
dataclasses.field(default_factory=list)
7674
)
7775
"""Push notification configurations to use for every request."""
7876

@@ -171,7 +169,7 @@ async def cancel_task(
171169
@abstractmethod
172170
async def create_task_push_notification_config(
173171
self,
174-
request: CreateTaskPushNotificationConfigRequest,
172+
request: TaskPushNotificationConfig,
175173
*,
176174
context: ClientCallContext | None = None,
177175
) -> TaskPushNotificationConfig:

src/a2a/client/transports/base.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
from abc import ABC, abstractmethod
2-
from collections.abc import AsyncGenerator, Callable
2+
from collections.abc import AsyncGenerator
33
from types import TracebackType
44

55
from typing_extensions import Self
@@ -8,7 +8,6 @@
88
from a2a.types.a2a_pb2 import (
99
AgentCard,
1010
CancelTaskRequest,
11-
CreateTaskPushNotificationConfigRequest,
1211
DeleteTaskPushNotificationConfigRequest,
1312
GetExtendedAgentCardRequest,
1413
GetTaskPushNotificationConfigRequest,
@@ -92,7 +91,7 @@ async def cancel_task(
9291
@abstractmethod
9392
async def create_task_push_notification_config(
9493
self,
95-
request: CreateTaskPushNotificationConfigRequest,
94+
request: TaskPushNotificationConfig,
9695
*,
9796
context: ClientCallContext | None = None,
9897
) -> TaskPushNotificationConfig:
@@ -142,7 +141,6 @@ async def get_extended_agent_card(
142141
request: GetExtendedAgentCardRequest,
143142
*,
144143
context: ClientCallContext | None = None,
145-
signature_verifier: Callable[[AgentCard], None] | None = None,
146144
) -> AgentCard:
147145
"""Retrieves the Extended AgentCard."""
148146

src/a2a/client/transports/grpc.py

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@
2727
from a2a.types.a2a_pb2 import (
2828
AgentCard,
2929
CancelTaskRequest,
30-
CreateTaskPushNotificationConfigRequest,
3130
DeleteTaskPushNotificationConfigRequest,
3231
GetExtendedAgentCardRequest,
3332
GetTaskPushNotificationConfigRequest,
@@ -106,9 +105,6 @@ def __init__(
106105
self.agent_card = agent_card
107106
self.channel = channel
108107
self.stub = a2a_pb2_grpc.A2AServiceStub(channel)
109-
self._needs_extended_card = (
110-
agent_card.capabilities.extended_agent_card if agent_card else True
111-
)
112108

113109
@classmethod
114110
def create(
@@ -212,7 +208,7 @@ async def cancel_task(
212208
@_handle_grpc_exception
213209
async def create_task_push_notification_config(
214210
self,
215-
request: CreateTaskPushNotificationConfigRequest,
211+
request: TaskPushNotificationConfig,
216212
*,
217213
context: ClientCallContext | None = None,
218214
) -> TaskPushNotificationConfig:
@@ -271,22 +267,18 @@ async def get_extended_agent_card(
271267
request: GetExtendedAgentCardRequest,
272268
*,
273269
context: ClientCallContext | None = None,
274-
signature_verifier: Callable[[AgentCard], None] | None = None,
275270
) -> AgentCard:
276271
"""Retrieves the agent's card."""
277-
card = await self._call_grpc(
272+
card = self.agent_card
273+
if card and not card.capabilities.extended_agent_card:
274+
return card
275+
276+
return await self._call_grpc(
278277
self.stub.GetExtendedAgentCard,
279278
request,
280279
context,
281280
)
282281

283-
if signature_verifier:
284-
signature_verifier(card)
285-
286-
self.agent_card = card
287-
self._needs_extended_card = False
288-
return card
289-
290282
async def close(self) -> None:
291283
"""Closes the gRPC channel."""
292284
await self.channel.close()

src/a2a/client/transports/jsonrpc.py

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import logging
22

3-
from collections.abc import AsyncGenerator, Callable
3+
from collections.abc import AsyncGenerator
44
from typing import Any
55
from uuid import uuid4
66

@@ -20,7 +20,6 @@
2020
from a2a.types.a2a_pb2 import (
2121
AgentCard,
2222
CancelTaskRequest,
23-
CreateTaskPushNotificationConfigRequest,
2423
DeleteTaskPushNotificationConfigRequest,
2524
GetExtendedAgentCardRequest,
2625
GetTaskPushNotificationConfigRequest,
@@ -63,7 +62,6 @@ def __init__(
6362
self.httpx_client = httpx_client
6463
self.agent_card = agent_card
6564
self.interceptors = interceptors or []
66-
self._needs_extended_card = agent_card.capabilities.extended_agent_card
6765

6866
async def send_message(
6967
self,
@@ -173,7 +171,7 @@ async def cancel_task(
173171

174172
async def create_task_push_notification_config(
175173
self,
176-
request: CreateTaskPushNotificationConfigRequest,
174+
request: TaskPushNotificationConfig,
177175
*,
178176
context: ClientCallContext | None = None,
179177
) -> TaskPushNotificationConfig:
@@ -285,11 +283,9 @@ async def get_extended_agent_card(
285283
request: GetExtendedAgentCardRequest,
286284
*,
287285
context: ClientCallContext | None = None,
288-
signature_verifier: Callable[[AgentCard], None] | None = None,
289286
) -> AgentCard:
290287
"""Retrieves the agent's card."""
291288
card = self.agent_card
292-
293289
if not card.capabilities.extended_agent_card:
294290
return card
295291

@@ -313,11 +309,7 @@ async def get_extended_agent_card(
313309
response: AgentCard = json_format.ParseDict(
314310
json_rpc_response.result, AgentCard()
315311
)
316-
if signature_verifier:
317-
signature_verifier(response)
318312

319-
self.agent_card = response
320-
self._needs_extended_card = False
321313
return response
322314

323315
async def close(self) -> None:

src/a2a/client/transports/rest.py

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import json
22
import logging
33

4-
from collections.abc import AsyncGenerator, Callable
4+
from collections.abc import AsyncGenerator
55
from typing import Any, NoReturn
66

77
import httpx
@@ -19,7 +19,6 @@
1919
from a2a.types.a2a_pb2 import (
2020
AgentCard,
2121
CancelTaskRequest,
22-
CreateTaskPushNotificationConfigRequest,
2322
DeleteTaskPushNotificationConfigRequest,
2423
GetExtendedAgentCardRequest,
2524
GetTaskPushNotificationConfigRequest,
@@ -62,7 +61,6 @@ def __init__(
6261
self.httpx_client = httpx_client
6362
self.agent_card = agent_card
6463
self.interceptors = interceptors or []
65-
self._needs_extended_card = agent_card.capabilities.extended_agent_card
6664

6765
async def send_message(
6866
self,
@@ -160,7 +158,7 @@ async def cancel_task(
160158

161159
async def create_task_push_notification_config(
162160
self,
163-
request: CreateTaskPushNotificationConfigRequest,
161+
request: TaskPushNotificationConfig,
164162
*,
165163
context: ClientCallContext | None = None,
166164
) -> TaskPushNotificationConfig:
@@ -266,26 +264,17 @@ async def get_extended_agent_card(
266264
request: GetExtendedAgentCardRequest,
267265
*,
268266
context: ClientCallContext | None = None,
269-
signature_verifier: Callable[[AgentCard], None] | None = None,
270267
) -> AgentCard:
271268
"""Retrieves the Extended AgentCard."""
272269
card = self.agent_card
273-
274270
if not card.capabilities.extended_agent_card:
275271
return card
276272

277273
response_data = await self._execute_request(
278274
'GET', '/extendedAgentCard', request.tenant, context=context
279275
)
280-
response: AgentCard = ParseDict(response_data, AgentCard())
281-
282-
if signature_verifier:
283-
signature_verifier(response)
284276

285-
# Update the transport's agent_card
286-
self.agent_card = response
287-
self._needs_extended_card = False
288-
return response
277+
return ParseDict(response_data, AgentCard())
289278

290279
async def close(self) -> None:
291280
"""Closes the httpx client."""

src/a2a/client/transports/tenant_decorator.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
from collections.abc import AsyncGenerator, Callable
1+
from collections.abc import AsyncGenerator
22

33
from a2a.client.middleware import ClientCallContext
44
from a2a.client.transports.base import ClientTransport
55
from a2a.types.a2a_pb2 import (
66
AgentCard,
77
CancelTaskRequest,
8-
CreateTaskPushNotificationConfigRequest,
98
DeleteTaskPushNotificationConfigRequest,
109
GetExtendedAgentCardRequest,
1110
GetTaskPushNotificationConfigRequest,
@@ -93,7 +92,7 @@ async def cancel_task(
9392

9493
async def create_task_push_notification_config(
9594
self,
96-
request: CreateTaskPushNotificationConfigRequest,
95+
request: TaskPushNotificationConfig,
9796
*,
9897
context: ClientCallContext | None = None,
9998
) -> TaskPushNotificationConfig:
@@ -155,14 +154,12 @@ async def get_extended_agent_card(
155154
request: GetExtendedAgentCardRequest,
156155
*,
157156
context: ClientCallContext | None = None,
158-
signature_verifier: Callable[[AgentCard], None] | None = None,
159157
) -> AgentCard:
160158
"""Retrieves the Extended AgentCard."""
161159
request.tenant = self._resolve_tenant(request.tenant)
162160
return await self._base.get_extended_agent_card(
163161
request,
164162
context=context,
165-
signature_verifier=signature_verifier,
166163
)
167164

168165
async def close(self) -> None:

0 commit comments

Comments
 (0)