diff --git a/src/a2a/client/transports/grpc.py b/src/a2a/client/transports/grpc.py index d13f1510..e50b0ea8 100644 --- a/src/a2a/client/transports/grpc.py +++ b/src/a2a/client/transports/grpc.py @@ -138,7 +138,10 @@ async def get_task( ) -> Task: """Retrieves the current state and history of a specific task.""" task = await self.stub.GetTask( - a2a_pb2.GetTaskRequest(name=f'tasks/{request.id}') + a2a_pb2.GetTaskRequest( + name=f'tasks/{request.id}', + history_length=request.history_length, + ) ) return proto_utils.FromProto.task(task) diff --git a/tests/client/test_grpc_client.py b/tests/client/test_grpc_client.py index 259ac75e..c6481b37 100644 --- a/tests/client/test_grpc_client.py +++ b/tests/client/test_grpc_client.py @@ -145,11 +145,31 @@ async def test_get_task( response = await grpc_transport.get_task(params) mock_grpc_stub.GetTask.assert_awaited_once_with( - a2a_pb2.GetTaskRequest(name=f'tasks/{sample_task.id}') + a2a_pb2.GetTaskRequest( + name=f'tasks/{sample_task.id}', history_length=None + ) ) assert response.id == sample_task.id +@pytest.mark.asyncio +async def test_get_task_with_history( + grpc_transport: GrpcTransport, mock_grpc_stub: AsyncMock, sample_task: Task +): + """Test retrieving a task with history.""" + mock_grpc_stub.GetTask.return_value = proto_utils.ToProto.task(sample_task) + history_len = 10 + params = TaskQueryParams(id=sample_task.id, history_length=history_len) + + await grpc_transport.get_task(params) + + mock_grpc_stub.GetTask.assert_awaited_once_with( + a2a_pb2.GetTaskRequest( + name=f'tasks/{sample_task.id}', history_length=history_len + ) + ) + + @pytest.mark.asyncio async def test_cancel_task( grpc_transport: GrpcTransport, mock_grpc_stub: AsyncMock, sample_task: Task