Skip to content

Commit bf66e4f

Browse files
committed
feat: message isDelta boolean in basic message (default isDelta is None)
1 parent 61df7d0 commit bf66e4f

File tree

4 files changed

+9
-2
lines changed

4 files changed

+9
-2
lines changed

src/a2a/server/events/event_consumer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ async def consume_all(self) -> AsyncGenerator[Event]:
102102

103103
is_final_event = (
104104
(isinstance(event, TaskStatusUpdateEvent) and event.final)
105-
or isinstance(event, Message)
105+
or isinstance(event, Message) and not event.isDelta
106106
or (
107107
isinstance(event, Task)
108108
and event.status.state

src/a2a/server/tasks/task_manager.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,10 @@ async def save_task_event(
134134
if task.status.message:
135135
if not task.history:
136136
task.history = [task.status.message]
137-
else:
137+
elif task.history[-1].messageId != event.status.message.messageId:
138138
task.history.append(task.status.message)
139+
elif task.status.message.isDelta:
140+
task.history[-1].parts.extend(event.status.message.parts)
139141
if event.metadata:
140142
if not task.metadata:
141143
task.metadata = {}

src/a2a/server/tasks/task_updater.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,4 +182,5 @@ def new_agent_message(
182182
messageId=str(uuid.uuid4()),
183183
metadata=metadata,
184184
parts=parts,
185+
isDelta=False
185186
)

src/a2a/types.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1336,6 +1336,10 @@ class Message(BaseModel):
13361336
"""
13371337
Identifier of task the message is related to
13381338
"""
1339+
isDelta: bool | None = None
1340+
"""
1341+
Indicates if this is a delta message
1342+
"""
13391343

13401344

13411345
class MessageSendParams(BaseModel):

0 commit comments

Comments
 (0)