Skip to main content
This page describes how ADK agents stream output to A2A clients through partial events and artifacts.

1. Partial Events — Real-time Text Streaming

Yield ADK events with partial=True to stream text chunks to the client in real time. Each chunk is forwarded as a transitory STREAM_DELTA artifact update:
The STREAM_DELTA artifact is transitory — it is not persisted to the Task’s durable state. Partial and non-partial ADK event content may populate the SDK-managed response buffer for the current turn. If that buffer stays empty, Aion falls back to a2a_outbox and then framework-native fallback rules. See Message Mapping for outbound precedence rules.

2. Non-partial Events

When a non-partial ADK event is yielded:
  1. The open STREAM_DELTA stream is closed (if streaming was active).
  2. Content parts are emitted as a TaskStatusUpdateEvent(working, message=...).
  3. Artifacts declared in event.actions.artifact_delta are loaded and forwarded as TaskArtifactUpdateEvent.

3. File and Data Artifacts

Use ctx.artifact_service to save file or data artifacts. Saved artifacts are automatically forwarded to the client as TaskArtifactUpdateEvent:
Each entry in artifact_delta maps a filename to its saved version. Aion Server automatically forwards each declared artifact to the client as a TaskArtifactUpdateEvent.

4. Artifact Namespaces

The filename prefix controls artifact scope: Examples:
For artifact storage backend configuration, see Artifact Storage.
  • Artifact Buildersurl_artifact, file_artifact, data_artifact reference
  • Card — Card builder API reference