Skip to content

Share tool output schemas and defer MCP envelope construction - #45439

Merged
copyberry[bot] merged 1 commit into
mainfrom
copyberry/codex-internal-to-codex-oss/e98ba4c2f0efedc99f7cbc7bba206cc63a3bd8f4
Sep 14, 2026
Merged

copyberry[bot] merged 1 commit into
mainfrom
copyberry/codex-internal-to-codex-oss/e98ba4c2f0efedc99f7cbc7bba206cc63a3bd8f4

Conversation

@copyberry

@copyberry copyberry Bot commented Sep 14, 2026 •

Copy link
Copy Markdown

Share tool output schemas and defer MCP envelope construction

Why

MCP tool parsing eagerly cloned structured output schemas and built full call-result envelopes. Cloning tool definitions also copied their output-schema JSON, even before a consumer needed it.

What changed

  • Introduce ToolOutputSchema with immutable Arc storage so tool definitions share output schemas when cloned.
  • Retain MCP structured output schemas and materialize the call-result envelope only when JSON is requested.
  • Update code-mode consumers and schema mutation sites to materialize JSON explicitly, reusing uniquely owned storage when possible.
  • Move structured content into the MCP envelope without an extra clone, preserving property order.

Testing

Add tests for JSON preservation, mutation isolation, equality between lazy and materialized schemas, reuse of uniquely owned storage, and equivalent code-mode definitions.

## Why

MCP tool parsing eagerly cloned structured output schemas and built full call-result envelopes. Cloning tool definitions also copied their output-schema JSON, even before a consumer needed it.

## What changed

- Introduce `ToolOutputSchema` with immutable `Arc` storage so tool definitions share output schemas when cloned.
- Retain MCP structured output schemas and materialize the call-result envelope only when JSON is requested.
- Update code-mode consumers and schema mutation sites to materialize JSON explicitly, reusing uniquely owned storage when possible.
- Move structured content into the MCP envelope without an extra clone, preserving property order.

## Testing

Add tests for JSON preservation, mutation isolation, equality between lazy and materialized schemas, reuse of uniquely owned storage, and equivalent code-mode definitions.

GitOrigin-RevId: e98ba4c2f0efedc99f7cbc7bba206cc63a3bd8f4
@copyberry
copyberry Bot force-pushed the copyberry/codex-internal-to-codex-oss/e98ba4c2f0efedc99f7cbc7bba206cc63a3bd8f4 branch from cbc3b34 to f380358 Compare September 14, 2026 15:05
@copyberry
copyberry Bot merged commit f380358 into main Sep 14, 2026
@copyberry
copyberry Bot deleted the copyberry/codex-internal-to-codex-oss/e98ba4c2f0efedc99f7cbc7bba206cc63a3bd8f4 branch September 14, 2026 15:05
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant