Skip to content

Commit 89296dd

Browse files
committed
bring back aget_card
1 parent 9b0b522 commit 89296dd

5 files changed

Lines changed: 19 additions & 7 deletions

File tree

src/a2a/server/request_handlers/default_request_handler.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,12 @@ def __init__( # noqa: PLR0913
144144
# asyncio tasks and to surface unexpected exceptions.
145145
self._background_tasks = set()
146146

147+
# TODO: Remove this property when we implement GetExtendedCard method in compat request handler.
148+
@property
149+
def agent_card(self) -> AgentCard:
150+
"""The core agent card to serve logic against."""
151+
return self._agent_card
152+
147153
@validate_request_params
148154
async def on_get_task(
149155
self,
@@ -684,11 +690,6 @@ async def on_delete_task_push_notification_config(
684690
lambda self: self._agent_card.capabilities.extended_agent_card,
685691
error_message='The agent does not support authenticated extended cards',
686692
)
687-
@validate(
688-
lambda self: self.extended_agent_card,
689-
error_message='The agent does not have an extended agent card configured',
690-
error_type=ExtendedAgentCardNotConfiguredError,
691-
)
692693
async def on_get_extended_agent_card(
693694
self,
694695
params: GetExtendedAgentCardRequest,
@@ -698,6 +699,9 @@ async def on_get_extended_agent_card(
698699
699700
Requires `capabilities.extended_agent_card` to be true.
700701
"""
702+
if not self.extended_agent_card:
703+
raise ExtendedAgentCardNotConfiguredError
704+
701705
extended_card = self.extended_agent_card
702706

703707
if self.extended_card_modifier:

src/a2a/server/request_handlers/request_handler.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@ class RequestHandler(ABC):
3636
provide to handle incoming A2A requests from any transport (gRPC, REST, JSON-RPC).
3737
"""
3838

39+
# TODO: Remove this property when we implement GetExtendedCard method in compat request handler.
40+
@property
41+
@abstractmethod
42+
def agent_card(self) -> AgentCard:
43+
"""The core agent card to serve logic against."""
44+
3945
@abstractmethod
4046
async def on_get_task(
4147
self,

src/a2a/server/routes/jsonrpc_dispatcher.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -220,7 +220,7 @@ def __init__(
220220

221221
if self.enable_v0_3_compat:
222222
self._v03_adapter = JSONRPC03Adapter(
223-
agent_card=getattr(request_handler, '_agent_card', None),
223+
agent_card=request_handler.agent_card,
224224
http_handler=request_handler,
225225
extended_agent_card=getattr(
226226
request_handler, '_extended_agent_card', None

src/a2a/server/routes/rest_routes.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ def create_rest_routes(
7070
routes: list[BaseRoute] = []
7171
if enable_v0_3_compat:
7272
v03_adapter = REST03Adapter(
73-
agent_card=getattr(request_handler, '_agent_card', None),
73+
agent_card=request_handler.agent_card,
7474
http_handler=request_handler,
7575
extended_agent_card=getattr(
7676
request_handler, '_extended_agent_card', None

tests/server/routes/test_jsonrpc_dispatcher.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,8 @@ def test_v0_3_compat_flag_routes_to_adapter(self, mock_handler):
254254
mock_agent_card.capabilities = MagicMock()
255255
mock_agent_card.capabilities.streaming = False
256256

257+
mock_handler._agent_card = mock_agent_card
258+
257259
from starlette.applications import Starlette
258260

259261
jsonrpc_routes = create_jsonrpc_routes(

0 commit comments

Comments
 (0)