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
@@ -11,8 +11,49 @@
],
"type": "string"
},
"AgentMessageDisplay": {
"description": "A presentation instruction for Chat to apply to this answer when recovering history.",
"properties": {
"action": {
"description": "Unknown actions must be left for the producing client to handle.",
"type": "string"
},
"blockType": {
"type": [
"string",
"null"
]
},
"checkTrustedContacts": {
"type": [
"boolean",
"null"
]
},
"cyberTrustedAccess": {
"type": [
"boolean",
"null"
]
}
},
"required": [
"action"
],
"type": "object"
},
"AgentMessageModeration": {
"properties": {
"display": {
"anyOf": [
{
"$ref": "#/definitions/AgentMessageDisplay"
},
{
"type": "null"
}
]
},
"moderated": {
"type": "boolean"
}