Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
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