Skip to content

Commit 59de65f

Browse files
committed
fix GetAgentCard in gRPC
1 parent 0cc8adc commit 59de65f

2 files changed

Lines changed: 24 additions & 25 deletions

File tree

src/a2a/compat/v0_3/grpc_handler.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -352,10 +352,29 @@ async def GetAgentCard(
352352
card_to_serve = self.agent_card
353353
if self.card_modifier:
354354
card_to_serve = await maybe_await(self.card_modifier(card_to_serve))
355-
return proto_utils.ToProto.agent_card(
355+
compat_card = proto_utils.ToProto.agent_card(
356356
conversions.to_compat_agent_card(card_to_serve)
357357
)
358358

359+
if self.agent_card.capabilities.extended_agent_card:
360+
361+
async def _handler(
362+
server_context: ServerCallContext,
363+
) -> a2a_v0_3_pb2.AgentCard:
364+
req_v03 = types_v03.GetAuthenticatedExtendedCardRequest(id=0)
365+
res_v03 = await self.handler03.on_get_extended_agent_card(
366+
req_v03, server_context
367+
)
368+
if res_v03:
369+
return proto_utils.ToProto.agent_card(res_v03)
370+
return compat_card
371+
372+
return await self._handle_unary(
373+
context, _handler, a2a_v0_3_pb2.AgentCard()
374+
)
375+
376+
return compat_card
377+
359378
async def DeleteTaskPushNotificationConfig(
360379
self,
361380
request: a2a_v0_3_pb2.DeleteTaskPushNotificationConfigRequest,
@@ -379,23 +398,3 @@ async def _handler(
379398
return empty_pb2.Empty()
380399

381400
return await self._handle_unary(context, _handler, empty_pb2.Empty())
382-
383-
async def GetExtendedCard(
384-
self,
385-
request: a2a_v0_3_pb2.GetAgentCardRequest,
386-
context: grpc.aio.ServicerContext,
387-
) -> a2a_v0_3_pb2.AgentCard:
388-
"""Get the authenticated extended agent card (v0.3)."""
389-
390-
async def _handler(
391-
server_context: ServerCallContext,
392-
) -> a2a_v0_3_pb2.AgentCard:
393-
req_v03 = types_v03.GetAuthenticatedExtendedCardRequest(id=0)
394-
res_v03 = await self.handler03.on_get_extended_agent_card(
395-
req_v03, server_context
396-
)
397-
return proto_utils.ToProto.agent_card(res_v03)
398-
399-
return await self._handle_unary(
400-
context, _handler, a2a_v0_3_pb2.AgentCard()
401-
)

tests/compat/v0_3/test_grpc_handler.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def sample_agent_card() -> a2a_pb2.AgentCard:
3737
capabilities=a2a_pb2.AgentCapabilities(
3838
streaming=True,
3939
push_notifications=True,
40-
extended_agent_card=True,
40+
extended_agent_card=False,
4141
),
4242
supported_interfaces=[
4343
a2a_pb2.AgentInterface(
@@ -451,7 +451,7 @@ async def test_get_agent_card_success(
451451
url='http://jsonrpc.v03.com',
452452
version='1.0.0',
453453
protocol_version='0.3',
454-
supports_authenticated_extended_card=True,
454+
supports_authenticated_extended_card=False,
455455
preferred_transport='JSONRPC',
456456
capabilities=a2a_v0_3_pb2.AgentCapabilities(
457457
streaming=True,
@@ -468,13 +468,13 @@ async def test_get_extended_card_success(
468468
mock_grpc_context: AsyncMock,
469469
sample_agent_card: a2a_pb2.AgentCard,
470470
) -> None:
471+
handler.agent_card.capabilities.extended_agent_card = True
471472
request = a2a_v0_3_pb2.GetAgentCardRequest()
472473
mock_request_handler.on_get_extended_agent_card.return_value = (
473474
sample_agent_card
474475
)
475-
mock_request_handler.extended_agent_card = sample_agent_card
476476

477-
response = await handler.GetExtendedCard(request, mock_grpc_context)
477+
response = await handler.GetAgentCard(request, mock_grpc_context)
478478

479479
expected_res = a2a_v0_3_pb2.AgentCard(
480480
name='Test Agent',

0 commit comments

Comments
 (0)