Repository navigation
feat: structured codex and acp agents on main, and the linux fixes for structured agents - #81
Merged
Merged
Conversation
With Labs › Structured agents on (it covered Claude Code alone before), a new Codex agent runs as `codex app-server` under `berthd agent-host`, and the new Codex driver (internal/box/codexdriver.go) speaks its JSON-RPC: - it opens the thread (initialize, thread/start, or thread/resume with the conversation's thread id when it is carried on) - prompts go in as turn/start, carrying the session's mode (approval policy and sandbox), model and effort; interrupt is turn/interrupt - command and file-change approvals come to the chat as Allow / Always allow / Deny, Codex's questions as question cards, and anything else Codex asks gets an error so no turn waits for ever - turn state comes from turn and item notifications, the draft from agentMessage deltas, and berthd's own Codex hooks stay quiet - the conversation is read from the host's log (internal/transcript/codexhost.go), tool details included - resume and the conversation list work for Codex conversations as for Claude's Boxes list driver.codex; sessions and tasks take driver: "codex". Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gh the agent client protocol A generic ACP driver (internal/box/acpdriver.go) runs any agent whose preset says how it speaks the Agent Client Protocol (AgentPreset.ACP: opencode "acp", gemini "--acp", cursor-agent "acp"; a repository's own agent can have one) under `berthd agent-host`: - it opens the session: initialize, then session/resume or session/load with the conversation's id when it is carried on, else session/new, calling authenticate first when the agent asks for it (Cursor Agent) - prompts are session/prompt, whose answer is the turn's end; Stop is session/cancel - the agent's own modes (its mode config option, or session/set_mode) are offered with bypass beside them - permission requests come to the chat as Allow / Always allow / Deny, picked by option kind since each agent names them its own way; bypass has berthd allow them, and opencode is started asking so that it does - what else it asks of its client gets an error; streamed chunks make the draft and, gathered, the reply in the conversation (internal/transcript/acphost.go), with a tool's label updated once the agent says what it runs Boxes list driver.acp; sessions and tasks take driver: "acp". The Labs switch starts these agents structured too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
feat: opencode, gemini cli and cursor agent run structured too, through the agent client protocol
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#79 and #80 were stacked PRs. They merged into their stacked bases (
resume-conversationsandcodex-driver), not intomain, because GitHub only retargets a stacked PR when the branch below it is deleted.maintherefore has #78 (resume) but not the Codex or ACP drivers.This PR brings
codex-drivertomain:codex app-server, already reviewedsize path. tmux on Linux prints a control character in an option escaped (\037), so the turns typed in Claude Code's terminal weren't read back into the chat.All structured tests pass 5/5 under
-raceon Linux and on macOS, and the fullgo test -race ./...passes on macOS.🤖 Generated with Claude Code