Preserve display instructions in answer moderation (#60172)

## Why

Recovered answer history needs presentation instructions alongside the moderation flag so clients can apply the intended display behavior.

## What changed

- Add optional `display` metadata with an `action` and optional `blockType`, `cyberTrustedAccess`, and `checkTrustedContacts` fields.
- Carry display metadata through final answers, legacy events, thread history reconstruction, and legacy rollout migration.
- Expose the metadata in the app-server protocol and update generated JSON schemas, TypeScript types, and Python SDK models. Missing display fields remain compatible with existing stored moderation data; the app-server emits absent optional values as `null`.

## Testing

Extend the final-answer moderation test to cover display metadata in answer items and legacy events. Add serialization coverage for missing display data, nullable fields, and preservation of an explicit `false` value.

GitOrigin-RevId: b798a2ecc53c2a94c7659ef3d9663b3143b70a1a
This commit is contained in:
psachdeva-oai
2026-11-07 21:31:08 +00:00
committed by copyberry
parent 33b3f80a09
commit 202b590e84
35 changed files with 948 additions and 9 deletions
@@ -149,6 +149,18 @@ class AgentMessageDeltaNotification(BaseModel):
turn_id: Annotated[str, Field(alias="turnId")]
class AgentMessageDisplay(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
action: Annotated[
str, Field(description="Unknown actions must be left for the producing client to handle.")
]
block_type: Annotated[str | None, Field(alias="blockType")] = None
check_trusted_contacts: Annotated[bool | None, Field(alias="checkTrustedContacts")] = None
cyber_trusted_access: Annotated[bool | None, Field(alias="cyberTrustedAccess")] = None
class InputTextAgentMessageInputContent(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
@@ -177,6 +189,7 @@ class AgentMessageModeration(BaseModel):
model_config = ConfigDict(
populate_by_name=True,
)
display: AgentMessageDisplay | None = None
moderated: bool