Persist agent messages as response items (#29829)

## Why

Inter-agent messages are recorded in live history as
`ResponseItem::AgentMessage`, but rollouts stored
`InterAgentCommunication` and rebuilt the response item during resume.
This made the rollout differ from the actual Responses history.

## What changed

- store the prepared `agent_message` response item directly
- keep `trigger_turn` in a small local metadata record for fork
truncation
- keep reading older `inter_agent_communication` rollout items
This commit is contained in:
jif
2026-06-24 15:43:10 +01:00
committed by GitHub
Unverified
parent f959e7fc98
commit b4f0f3eff1
19 changed files with 144 additions and 17 deletions
+7 -1
View File
@@ -2599,6 +2599,7 @@ impl InitialHistory {
RolloutItem::SessionMeta(_)
| RolloutItem::ResponseItem(_)
| RolloutItem::InterAgentCommunication(_)
| RolloutItem::InterAgentCommunicationMetadata { .. }
| RolloutItem::Compacted(_)
| RolloutItem::EventMsg(_) => None,
})
@@ -2933,6 +2934,7 @@ fn multi_agent_version_from_items(
RolloutItem::SessionMeta(_)
| RolloutItem::ResponseItem(_)
| RolloutItem::InterAgentCommunication(_)
| RolloutItem::InterAgentCommunicationMetadata { .. }
| RolloutItem::Compacted(_)
| RolloutItem::EventMsg(_) => None,
})
@@ -3080,8 +3082,12 @@ impl<'de> Deserialize<'de> for SessionMetaLine {
pub enum RolloutItem {
SessionMeta(SessionMetaLine),
ResponseItem(ResponseItem),
/// Durable delivery metadata reconstructed as a model-visible `agent_message`.
/// Legacy delivery item reconstructed as a model-visible `agent_message`.
InterAgentCommunication(InterAgentCommunication),
/// Local delivery metadata that is not part of the Responses API item.
InterAgentCommunicationMetadata {
trigger_turn: bool,
},
Compacted(CompactedItem),
TurnContext(TurnContextItem),
EventMsg(EventMsg),