From f89c3399777475c6c2b246b820ae9daaab2aec6b Mon Sep 17 00:00:00 2001 From: Yaroslav Shevchuk Date: Fri, 7 Nov 2025 12:56:20 +0000 Subject: [PATCH 1/2] fix null pointer --- .../default_request_handler.py | 2 +- .../test_default_request_handler.py | 38 +++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/a2a/server/request_handlers/default_request_handler.py b/src/a2a/server/request_handlers/default_request_handler.py index 30d1ee891..22a60ae09 100644 --- a/src/a2a/server/request_handlers/default_request_handler.py +++ b/src/a2a/server/request_handlers/default_request_handler.py @@ -346,7 +346,7 @@ async def push_notification_callback() -> None: if isinstance(result, Task): self._validate_task_id_match(task_id, result.id) - if params.configuration: + if params.configuration and params.configuration.history_length is not None: result = apply_history_length( result, params.configuration.history_length ) diff --git a/tests/server/request_handlers/test_default_request_handler.py b/tests/server/request_handlers/test_default_request_handler.py index 5268af115..25310ad76 100644 --- a/tests/server/request_handlers/test_default_request_handler.py +++ b/tests/server/request_handlers/test_default_request_handler.py @@ -874,6 +874,44 @@ async def test_on_message_send_limit_history(): assert task is not None assert task.history is not None and len(task.history) > 0 +@pytest.mark.asyncio +async def test_on_message_send_limit_history_non_as_no_limit(): + task_store = InMemoryTaskStore() + push_store = InMemoryPushNotificationConfigStore() + + request_handler = DefaultRequestHandler( + agent_executor=HelloAgentExecutor(), + task_store=task_store, + push_config_store=push_store, + ) + params = MessageSendParams( + message=Message( + role=Role.user, + message_id='msg_push', + parts=[Part(root=TextPart(text='Hi'))], + ), + configuration=MessageSendConfiguration( + blocking=True, + accepted_output_modes=['text/plain'], + history_length=None + ), + ) + + result = await request_handler.on_message_send( + params, create_server_call_context() + ) + + # verify that history_length is honored + assert result is not None + assert isinstance(result, Task) + assert result.history is not None and len(result.history) > 0 + assert result.status.state == TaskState.completed + + # verify that history is still persisted to the store + task = await task_store.get(result.id) + assert task is not None + assert task.history is not None and len(task.history) > 0 + @pytest.mark.asyncio async def test_on_task_get_limit_history(): From d5d133253551cd335699298f40daf3ed9d4b7336 Mon Sep 17 00:00:00 2001 From: Yaroslav Shevchuk Date: Fri, 7 Nov 2025 12:58:32 +0000 Subject: [PATCH 2/2] reformat --- src/a2a/server/request_handlers/default_request_handler.py | 5 ++++- .../server/request_handlers/test_default_request_handler.py | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/a2a/server/request_handlers/default_request_handler.py b/src/a2a/server/request_handlers/default_request_handler.py index 22a60ae09..e1d344558 100644 --- a/src/a2a/server/request_handlers/default_request_handler.py +++ b/src/a2a/server/request_handlers/default_request_handler.py @@ -346,7 +346,10 @@ async def push_notification_callback() -> None: if isinstance(result, Task): self._validate_task_id_match(task_id, result.id) - if params.configuration and params.configuration.history_length is not None: + if ( + params.configuration + and params.configuration.history_length is not None + ): result = apply_history_length( result, params.configuration.history_length ) diff --git a/tests/server/request_handlers/test_default_request_handler.py b/tests/server/request_handlers/test_default_request_handler.py index 25310ad76..a7932629e 100644 --- a/tests/server/request_handlers/test_default_request_handler.py +++ b/tests/server/request_handlers/test_default_request_handler.py @@ -874,6 +874,7 @@ async def test_on_message_send_limit_history(): assert task is not None assert task.history is not None and len(task.history) > 0 + @pytest.mark.asyncio async def test_on_message_send_limit_history_non_as_no_limit(): task_store = InMemoryTaskStore() @@ -893,7 +894,7 @@ async def test_on_message_send_limit_history_non_as_no_limit(): configuration=MessageSendConfiguration( blocking=True, accepted_output_modes=['text/plain'], - history_length=None + history_length=None, ), )