Normalize Codex dynamic tool transcript shape#80155
Conversation
|
Codex review: needs maintainer review before merge. Summary Reproducibility: not applicable. this is a compatibility cleanup PR rather than a reported bug. Source inspection and the PR's terminal proof both exercise the affected dynamic-tool projection path. Real behavior proof Next step before merge Security Review detailsBest possible solution: Keep the additive aliases in the Codex app-server mirror projection if maintainers want this compatibility shape, while leaving the paired core/native transcript projection to #80164. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a compatibility cleanup PR rather than a reported bug. Source inspection and the PR's terminal proof both exercise the affected dynamic-tool projection path. Is this the best way to solve the issue? Yes for the code shape: adding aliases in the projector while preserving canonical fields is the narrowest maintainable implementation I found. Maintainer judgment is still needed because this changes a transcript compatibility surface and the PR has the protected What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 400dc28e6d29. |
bb2bbc4 to
5298016
Compare
* Normalize Codex dynamic tool transcript shape * test: align codex transcript aliases
* Normalize Codex dynamic tool transcript shape * test: align codex transcript aliases
* Normalize Codex dynamic tool transcript shape * test: align codex transcript aliases
* Normalize Codex dynamic tool transcript shape * test: align codex transcript aliases
Summary
inputon tool calls,id/name/toolNameon tool result blocks) while preserving the existing canonical fields.Real behavior proof
tool_searchorfunction_call_outputmarkers.CodexAppServerEventProjectorloaded throughtsx.pnpm exec tsx -e '<script>'that constructs the production Codex app-server event projector, records a dynamicwiki_statustool call/result pair, builds the mirrored messages snapshot, and prints the actual projected tool-call/tool-result records.{ "roles": [ "user", "assistant", "toolResult" ], "toolCall": { "type": "toolCall", "id": "call-wiki-status-proof", "name": "wiki_status", "arguments": { "topic": "README.md" }, "input": { "topic": "README.md" } }, "toolResult": { "type": "toolResult", "id": "call-wiki-status-proof", "name": "wiki_status", "toolName": "wiki_status", "toolCallId": "call-wiki-status-proof", "toolUseId": "call-wiki-status-proof", "tool_use_id": "call-wiki-status-proof", "content": "wiki_status done", "text": "wiki_status done" }, "containsToolSearch": false, "containsFunctionCallOutput": false }arguments,toolCallId,toolUseId, andtool_use_id, and it does not containtool_searchorfunction_call_output.Verification
node scripts/test-extension.mjs extensions/codex -- --run(47 files, 607 tests)