diff --git a/src/a2a/server/tasks/task_updater.py b/src/a2a/server/tasks/task_updater.py index c079edd4..2b68621d 100644 --- a/src/a2a/server/tasks/task_updater.py +++ b/src/a2a/server/tasks/task_updater.py @@ -1,5 +1,6 @@ import uuid +from datetime import datetime, timezone from typing import Any from a2a.server.events import EventQueue @@ -34,7 +35,11 @@ def __init__(self, event_queue: EventQueue, task_id: str, context_id: str): self.context_id = context_id def update_status( - self, state: TaskState, message: Message | None = None, final=False + self, + state: TaskState, + message: Message | None = None, + final=False, + timestamp: str | None = None, ): """Updates the status of the task and publishes a `TaskStatusUpdateEvent`. @@ -42,7 +47,11 @@ def update_status( state: The new state of the task. message: An optional message associated with the status update. final: If True, indicates this is the final status update for the task. + timestamp: Optional ISO 8601 datetime string. Defaults to current time. """ + current_timestamp = ( + timestamp if timestamp else datetime.now(timezone.utc).isoformat() + ) self.event_queue.enqueue_event( TaskStatusUpdateEvent( taskId=self.task_id, @@ -51,6 +60,7 @@ def update_status( status=TaskStatus( state=state, message=message, + timestamp=current_timestamp, ), ) )