Skip to content

refactor(codex): split the Codex harness into runtime and UI - #1720

Closed
loganj wants to merge 1 commit into
agent-host-claude-splitfrom
agent-host-codex-split
Closed

loganj wants to merge 1 commit into
agent-host-claude-splitfrom
agent-host-codex-split

Conversation

@loganj

@loganj loganj commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

🤖

Summary

  • Stacked on refactor(agents): split the Claude harness into runtime and UI #1719. It applies the same split to Codex: the runtime half runs where the agents run, and the UI half holds the screens. This is part of the work to run agents in a hidden webview that a hidden UI page cannot stall.
  • No behavior changes. Codex's Agents page entries, provider dialog, Settings tab and Activity tab work as before.

Details

  • Codex's agent entry now owns the setup, the provider (health check, model catalog and defaults), the runtime, the process sync and the update timer. It registers the type and exposes handles for its UI.
  • The UI entry presents the icon, Create, CreateModel, tabs, and the provider's dialog and default control.
  • Before, the Activity tab started a Codex process itself to read a conversation's transcript. Now the runtime exposes a transcript read, so the UI holds no process capability.
  • The tabs take narrow handle types in place of the CodexProvider, CodexRuntime and CodexSetup classes.
  • Known gaps for the bridge PR: provider.resolve and runtime.conversations are synchronous reads, and the transcript call takes an AbortSignal.

Testing

  • The Codex tests now go through both entries (appliedType) or through the agent entry where they test the runtime alone.

🤖 Generated with Claude Code

Codex's setup, provider, runtime, process sync and update timer move into
its agent entry, which registers the type and exposes handles for its UI.
The UI entry presents the icon, Create, tabs and provider dialogs.

The Activity tab no longer starts Codex itself to read a transcript: the
runtime exposes a transcript read, so the UI holds no process capability.
No behavior changes.

Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Logan Johnson <loganj@squareup.com>
loganj added a commit that referenced this pull request Oct 29, 2026
…s into runtime and UI

A plugin may export an `agent` entry beside `apply`. Code agents need
while they run (an agent type's runtime, tools, wakes and Attention
sources) goes there; `apply` stays the UI. Both start in the same page
for now. Claude, Codex, goose and Pi now register their types from their
agent entries and present them from their UI entries, reaching the
runtime only through the type's `expose` handles.

Inert: the app behaves the same.

Squashes #1716, #1719, #1720, #1721 and #1723.

Signed-off-by: Logan Johnson <loganj@squareup.com>
Co-authored-by: Larry <627498bd4bd1f281a16431e3c6cce3b5c25b6692798c78672298aefbf2f8f8b5@buzz.block.builderlab.xyz>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@loganj

loganj commented Oct 29, 2026

Copy link
Copy Markdown
Contributor Author

🤖 Squashed into #1716 (one PR per column of the agents split), rebased onto main.

@loganj loganj closed this Oct 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant