Support plaintext collaboration tool messages (#35845)

## What changed

- Preserve `encrypted_function_args` on function calls so an empty list can mark plaintext collaboration arguments across request replay.
- Deliver `spawn_agent`, `send_message`, and `followup_task` payloads as structured plaintext agent messages when that marker is present; retain encrypted delivery otherwise.
- Redact plaintext collaboration arguments from tool and communication logs, and omit the metadata when sending requests to non-OpenAI providers.

## Testing

- Cover serialization of empty encrypted-argument metadata and plaintext versus encrypted subagent message delivery.
- Verify plaintext tool arguments are redacted and provider-specific metadata is removed from non-OpenAI requests.

GitOrigin-RevId: 64db98ff0b61a3af2f04ed609292363f2e2362a8
This commit is contained in:
jif authored and copyberry committed 2026-07-28 23:49:37 +00:00
1 parent 166658a34a
commit 03edf16f0b
36 files changed
+390 -76

No files matched your search

+4 -5
View File
@@ -56,11 +56,10 @@ pub(crate) fn emit_agent_communication_send(
state = "send",
sender_thread_id = %context.sender_thread_id,
receiver_thread_id = %receiver_thread_id,
content = if communication.content.is_empty() {
communication.encrypted_content.as_deref().unwrap_or_default()
} else {
communication.content.as_str()
},
content = communication
.encrypted_content
.as_deref()
.unwrap_or("[plaintext]"),
},
"agent communication"
);