How should `components` and `dataModel` be represented in multi-turn agent conversation history?
How should components and dataModel be represented in multi-turn agent conversation history?
I'm trying to understand the intended way to integrate A2UI responses into a multi-turn agent conversation.
Suppose the user asks for a list of orders, and the agent responds with both dataModel and components:
Turn 0
messages = [
user: "Query my orders",
assistant: {
dataModel: [
{ id: "order1", ... },
{ id: "order2", ... }
],
components: {
...
}
}
]On the next turn, the user refers to something rendered by the previous A2UI response:
user: "Cancel the first order"For the next agent/LLM invocation, is the intended approach to preserve only the semantic/data state from the previous A2UI response and omit the component tree?
For example:
Turn 1
messages = [
user: "Query my orders",
assistant: {
dataModel: [
{ id: "order1", ... },
{ id: "order2", ... }
]
},
user: "Cancel the first order"
]instead of replaying the full A2UI response:
messages = [
user: "Query my orders",
assistant: {
dataModel: [...],
components: {...}
},
user: "Cancel the first order"
]My assumption is that components mainly represents presentation/rendering state, while dataModel contains the semantic state needed to resolve references such as "the first order".
So my questions are:
- Is it correct to omit
componentsfrom subsequent conversation history and retain onlydataModel? - Does A2UI have a recommended representation for previous A2UI responses when constructing the next agent/LLM request?
- Should
dataModelbe considered sufficient conversational context for references to previously rendered entities, or is the application expected to maintain a separate semantic/conversation state? - Is conversation-history management intentionally outside the scope of A2UI?
I'm specifically asking about the agent/LLM conversation context across turns, rather than how A2UI surface updates are transported to the renderer.
Source: a2ui-project/a2ui