Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/a2a/utils/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,9 @@ def append_artifact_to_task(task: Task, event: TaskArtifactUpdateEvent) -> None:
task.id,
)
existing_artifact.parts.extend(new_artifact_data.parts)
existing_artifact.metadata.update(
dict(new_artifact_data.metadata.items())
)
else:
# We received a chunk to append, but we don't have an existing artifact.
# we will ignore this chunk
Expand Down
8 changes: 7 additions & 1 deletion tests/utils/test_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ def test_append_artifact_to_task():
artifact_id='artifact-123',
name='updated name',
parts=[Part(text='Updated')],
metadata={'existing_key': 'existing_value'},
)
append_event_2 = TaskArtifactUpdateEvent(
artifact=artifact_2, append=False, task_id='123', context_id='123'
Expand All @@ -187,10 +188,13 @@ def test_append_artifact_to_task():
assert task.artifacts[0].name == 'updated name'
assert len(task.artifacts[0].parts) == 1
assert task.artifacts[0].parts[0].text == 'Updated'
assert task.artifacts[0].metadata['existing_key'] == 'existing_value'

# Test appending parts to an existing artifact
artifact_with_parts = Artifact(
artifact_id='artifact-123', parts=[Part(text='Part 2')]
artifact_id='artifact-123',
parts=[Part(text='Part 2')],
metadata={'new_key': 'new_value'},
)
append_event_3 = TaskArtifactUpdateEvent(
artifact=artifact_with_parts,
Expand All @@ -202,6 +206,8 @@ def test_append_artifact_to_task():
assert len(task.artifacts[0].parts) == 2
assert task.artifacts[0].parts[0].text == 'Updated'
assert task.artifacts[0].parts[1].text == 'Part 2'
assert task.artifacts[0].metadata['existing_key'] == 'existing_value'
assert task.artifacts[0].metadata['new_key'] == 'new_value'

# Test adding another new artifact
another_artifact_with_parts = Artifact(
Expand Down
Loading