Skip to content

Commit 2683a77

Browse files
committed
update GetAgentCard method
1 parent 3697191 commit 2683a77

7 files changed

Lines changed: 16 additions & 67 deletions

File tree

itk/main.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ async def main_async(http_port: int, grpc_port: int) -> None:
341341

342342
server = grpc.aio.server()
343343

344-
compat_servicer = CompatGrpcHandler(agent_card, handler)
344+
compat_servicer = CompatGrpcHandler(handler)
345345
a2a_v0_3_pb2_grpc.add_A2AServiceServicer_to_server(compat_servicer, server)
346346
servicer = GrpcHandler(handler)
347347
a2a_pb2_grpc.add_A2AServiceServicer_to_server(servicer, server)

samples/hello_world_agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ async def serve(
221221

222222
compat_grpc_server = grpc.aio.server()
223223
compat_grpc_server.add_insecure_port(f'{host}:{compat_grpc_port}')
224-
compat_servicer = CompatGrpcHandler(agent_card, request_handler)
224+
compat_servicer = CompatGrpcHandler(request_handler)
225225
a2a_v0_3_pb2_grpc.add_A2AServiceServicer_to_server(
226226
compat_servicer, compat_grpc_server
227227
)

src/a2a/compat/v0_3/grpc_handler.py

Lines changed: 11 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
from a2a.compat.v0_3 import (
1313
a2a_v0_3_pb2,
1414
a2a_v0_3_pb2_grpc,
15-
conversions,
1615
proto_utils,
1716
)
1817
from a2a.compat.v0_3 import (
@@ -27,9 +26,7 @@
2726
GrpcServerCallContextBuilder,
2827
)
2928
from a2a.server.request_handlers.request_handler import RequestHandler
30-
from a2a.types.a2a_pb2 import AgentCard
3129
from a2a.utils.errors import A2AError, InvalidParamsError
32-
from a2a.utils.helpers import maybe_await
3330

3431

3532
logger = logging.getLogger(__name__)
@@ -42,29 +39,21 @@ class CompatGrpcHandler(a2a_v0_3_pb2_grpc.A2AServiceServicer):
4239

4340
def __init__(
4441
self,
45-
agent_card: AgentCard,
4642
request_handler: RequestHandler,
4743
context_builder: GrpcServerCallContextBuilder | None = None,
48-
card_modifier: Callable[[AgentCard], Awaitable[AgentCard] | AgentCard]
49-
| None = None,
5044
):
5145
"""Initializes the CompatGrpcHandler.
5246
5347
Args:
54-
agent_card: The AgentCard describing the agent's capabilities (v1.0).
5548
request_handler: The underlying `RequestHandler` instance to
5649
delegate requests to.
5750
context_builder: The CallContextBuilder object. If none the
5851
DefaultCallContextBuilder is used.
59-
card_modifier: An optional callback to dynamically modify the public
60-
agent card before it is served.
6152
"""
62-
self.agent_card = agent_card
6353
self.handler03 = RequestHandler03(request_handler=request_handler)
6454
self._context_builder = (
6555
context_builder or DefaultGrpcServerCallContextBuilder()
6656
)
67-
self.card_modifier = card_modifier
6857

6958
async def _handle_unary(
7059
self,
@@ -348,32 +337,20 @@ async def GetAgentCard(
348337
request: a2a_v0_3_pb2.GetAgentCardRequest,
349338
context: grpc.aio.ServicerContext,
350339
) -> a2a_v0_3_pb2.AgentCard:
351-
"""Get the agent card for the agent served (v0.3)."""
352-
card_to_serve = self.agent_card
353-
if self.card_modifier:
354-
card_to_serve = await maybe_await(self.card_modifier(card_to_serve))
355-
compat_card = proto_utils.ToProto.agent_card(
356-
conversions.to_compat_agent_card(card_to_serve)
357-
)
358-
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
340+
"""Get the extended agent card for the agent served (v0.3)."""
371341

372-
return await self._handle_unary(
373-
context, _handler, a2a_v0_3_pb2.AgentCard()
342+
async def _handler(
343+
server_context: ServerCallContext,
344+
) -> a2a_v0_3_pb2.AgentCard:
345+
req_v03 = types_v03.GetAuthenticatedExtendedCardRequest(id=0)
346+
res_v03 = await self.handler03.on_get_extended_agent_card(
347+
req_v03, server_context
374348
)
349+
return proto_utils.ToProto.agent_card(res_v03)
375350

376-
return compat_card
351+
return await self._handle_unary(
352+
context, _handler, a2a_v0_3_pb2.AgentCard()
353+
)
377354

378355
async def DeleteTaskPushNotificationConfig(
379356
self,

tck/sut_agent.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def serve(task_store: TaskStore) -> None:
229229
grpc_server = grpc.aio.server()
230230
grpc_server.add_insecure_port(f'[::]:{grpc_port}')
231231
servicer = GrpcHandler(request_handler)
232-
compat_servicer = CompatGrpcHandler(agent_card, request_handler)
232+
compat_servicer = CompatGrpcHandler(request_handler)
233233
a2a_grpc.add_A2AServiceServicer_to_server(servicer, grpc_server)
234234
a2a_v0_3_grpc.add_A2AServiceServicer_to_server(compat_servicer, grpc_server)
235235

tests/compat/v0_3/test_grpc_handler.py

Lines changed: 1 addition & 28 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=False,
40+
extended_agent_card=True,
4141
),
4242
supported_interfaces=[
4343
a2a_pb2.AgentInterface(
@@ -53,10 +53,8 @@ def sample_agent_card() -> a2a_pb2.AgentCard:
5353
def handler(
5454
mock_request_handler: AsyncMock, sample_agent_card: a2a_pb2.AgentCard
5555
) -> compat_grpc_handler.CompatGrpcHandler:
56-
mock_request_handler.agent_card = sample_agent_card
5756
return compat_grpc_handler.CompatGrpcHandler(
5857
request_handler=mock_request_handler,
59-
agent_card=sample_agent_card,
6058
)
6159

6260

@@ -439,36 +437,11 @@ async def test_list_push_config_success(
439437

440438
@pytest.mark.asyncio
441439
async def test_get_agent_card_success(
442-
handler: compat_grpc_handler.CompatGrpcHandler,
443-
mock_grpc_context: AsyncMock,
444-
) -> None:
445-
request = a2a_v0_3_pb2.GetAgentCardRequest()
446-
response = await handler.GetAgentCard(request, mock_grpc_context)
447-
448-
expected_res = a2a_v0_3_pb2.AgentCard(
449-
name='Test Agent',
450-
description='A test agent',
451-
url='http://jsonrpc.v03.com',
452-
version='1.0.0',
453-
protocol_version='0.3',
454-
supports_authenticated_extended_card=False,
455-
preferred_transport='JSONRPC',
456-
capabilities=a2a_v0_3_pb2.AgentCapabilities(
457-
streaming=True,
458-
push_notifications=True,
459-
),
460-
)
461-
assert response == expected_res
462-
463-
464-
@pytest.mark.asyncio
465-
async def test_get_extended_card_success(
466440
handler: compat_grpc_handler.CompatGrpcHandler,
467441
mock_request_handler: AsyncMock,
468442
mock_grpc_context: AsyncMock,
469443
sample_agent_card: a2a_pb2.AgentCard,
470444
) -> None:
471-
handler.agent_card.capabilities.extended_agent_card = True
472445
request = a2a_v0_3_pb2.GetAgentCardRequest()
473446
mock_request_handler.on_get_extended_agent_card.return_value = (
474447
sample_agent_card

tests/integration/cross_version/client_server/server_1_0.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ async def main_async(http_port: int, grpc_port: int):
196196
servicer = GrpcHandler(handler)
197197
a2a_pb2_grpc.add_A2AServiceServicer_to_server(servicer, server)
198198

199-
compat_servicer = CompatGrpcHandler(agent_card, handler)
199+
compat_servicer = CompatGrpcHandler(handler)
200200
a2a_v0_3_pb2_grpc.add_A2AServiceServicer_to_server(compat_servicer, server)
201201

202202
server.add_insecure_port(f'127.0.0.1:{grpc_port}')

tests/integration/test_client_server_integration.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,6 @@ async def grpc_03_server_and_handler(
369369
server_address = f'localhost:{port}'
370370
servicer = CompatGrpcHandler(
371371
request_handler=mock_request_handler,
372-
agent_card=agent_card,
373372
)
374373
a2a_v0_3_pb2_grpc.add_A2AServiceServicer_to_server(servicer, server)
375374
await server.start()

0 commit comments

Comments
 (0)