The OpenAI Responses API (used by Codex and the Azure responses
endpoint) is a separate wire format from Chat Completions. The SDK
type used here, EasyInputMessageParam, does not currently surface a
per-message name field, so the same in-content prefix fallback used
for Anthropic and Bedrock applies here too.
Both branches of the user-message path are covered:
- The plain-text branch (OfMessage / EasyInputMessageParam) prefixes
msg.Content via messageutil.ApplyUserNamePrefix.
- The multipart branch (OfInputMessage / ResponseInputItemMessageParam,
used when media is attached) prefixes the text portion before
passing it to BuildMultipartContent.
The function-call-output branch (msg.ToolCallID set) is intentionally
left untouched; tool results are not user utterances and must not
gain a sender prefix.
Tests cover all three paths (plain-text prefix, multipart prefix,
tool result untouched) by JSON-marshalling the resulting input and
asserting on the wire bytes.
Refs #2702.