pypi / ag-ui-protocol
ag-ui-protocol
What changed in ag-ui-protocol 0.0, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.
12 breaking9 new APIs and options1 behavior and defaults
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initag-ui-protocol 0.022 changes
Breaking changes 12
Patch entries are typed operation models rather than dictionaries; read fields with attributes or convert models using model_dump(by_alias=True).
BinaryInputContent is no longer a valid content part; messages carrying one are rejected during RunAgentInput validation. Use media parts instead.
Negative max_execution_time values are rejected.
Negative max_iterations values are rejected.
MetadataMixin is no longer exported; custom models that used it should inherit ConfiguredBaseModel and declare metadata.
The field is renamed from sub_agents to subagents, and the wire key is subagents; the old field and wire key are not retained.
A 1.0 producer must declare its protocol version on RUN_STARTED; Python producers pass PROTOCOL_VERSION when constructing the event.
Patch entries are typed operation models rather than dictionaries; read fields with attributes or convert models using model_dump(by_alias=True).
SubAgentInfo is renamed to SubagentInfo; the old class name remains exported as an alias for one release.
Python producers must emit REASONING_* events; there is no producer-side compatibility shim for the retired THINKING_* events.
Tool call result content can now be a string or a list of ContentPart values; code that assumes a string must narrow it first.
Tool message content can now be a string or a list of ContentPart values; code that assumes a string must narrow it first.
New APIs and options 9
InputContent is renamed to ContentPart; the old name remains exported from ag_ui.core as an alias.
Content parts gain an optional id field.
InputContentDataSource is renamed to DataSource; the old name remains exported as an alias.
PartSource gains a FileSource variant for a provider-issued handle to bytes already uploaded; consumers must not treat its value as a URL.
ImageInputContent is renamed to ImagePart; the same naming change applies to audio, video, and document parts, and old names remain aliases.
InputContentSource is renamed to PartSource; the old name remains exported as an alias, and PartSource also gains a FileSource arm.
TextInputContent is renamed to TextPart; the old name remains exported from ag_ui.core as an alias.
TextPart gains optional metadata, matching the media parts.
InputContentUrlSource is renamed to UrlSource; the old name remains exported as an alias.
Behavior and default changes 1
Fields with no value are omitted from JSON instead of written as null; readers checking for absent fields must test whether the key exists.