Skip to content

fix(orchestration): native-chat agents get their mail notice right away, the same way for every agent - #28540

Merged
brennanb2025 merged 7 commits into
mainfrom
brennanb2025/orchestration-mail-steer
Oct 16, 2026
Merged

brennanb2025 merged 7 commits into
mainfrom
brennanb2025/orchestration-mail-steer

Conversation

@brennanb2025

@brennanb2025 brennanb2025 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor
Files Added Deleted Net
Test 8 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​195 $\color{#cf222e}{\Huge{\mathbf{−}}}$​269 $\color{#cf222e}{\Huge{\mathbf{−}}}$​74
Prod 8 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​157 $\color{#cf222e}{\Huge{\mathbf{−}}}$​80 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​77

ELI5

When a worker agent reports back to a coordinator running in a native chat, Orca posts a short "You have 1 orchestration message, run check" notice into the coordinator's chat. If the coordinator was busy, that notice waited as a queued card until the coordinator's whole turn ended. A coordinator that spends its turn in a long command (for example, a loop polling its own inbox) never saw its workers' reports until it stopped, and the cards piled up. Now the notice is simply sent to the agent right away, the same way for every agent, just as a terminal agent gets its notice typed in.

What Changed

Before: every notice to a busy native chat became a queued card ("From … Steer / Delete") and was only sent after the turn ended. Several reports during one turn meant several cards.

After: every native-chat agent gets the notice sent right away, exactly as if you had typed it and pressed send. No card is created, for any agent. What the agent then does with a message that arrives mid-turn is the same thing it does with your own mid-turn message:

  • Claude, Codex and Pi take it into the running turn when their current step (usually a command) finishes.
  • Grok, OpenCode and the other ACP agents stop the running prompt and answer the message as the next prompt. This is what these agents already do when you send while they work; the coordinator picks its work back up in its reply.
  • Terminal agents: no change. They already work this way, since the notice is typed into the agent's own input.

One hold: while the chat is waiting on you to answer an approval or a question, the notice is not sent. Sending then would land in the turn you are answering, and on ACP agents would withdraw the open prompt you were about to answer. The notice goes out the moment you answer, or when the turn ends. Held mail never shows as a card or a bubble; it simply arrives after you answer.

Mechanism:

  • The notice used to be sent with delivery: 'queue' (queue as a card if busy). It is now always a plain send (delivery: 'now') for every agent. Delivery is part of what the host checks when a send is retried under the same operation ID, and it no longer depends on the agent or the moment, so a retry can never disagree with the first attempt.
  • The hold lives where the send is accepted. When the chat session admits a mail notice, it checks, in the same step, whether an approval or question is waiting on the person. If one is, it refuses the notice before anything is recorded: no submission, no receipt, no card. The mail stays unread and parked. A person's own sends are admitted at the same place and are never held.
  • Parked mail is retried when the chat goes back to working (the edge that follows your answer) or goes idle. The park is registered before the sender reads anything, and after a refusal the sender re-checks once, so an answer that lands mid-attempt is never missed.
  • An earlier version checked for the prompt in the mail sender, before the send. Review reproduced two timing bugs in that: a prompt opening just after the check could be withdrawn on ACP agents, and an answer landing just before the park could leave mail waiting until the turn ended. Moving the check into the admission step removes both.

Why

The queue was chosen so agent mail would behave like a person's queued message. For a coordinator, though, "wait for the turn to end" can mean waiting until the coordinator gives up. Sending right away matches what terminal coordinators already get, through the one send path native chat already has, and behaves identically for every agent so users see one behaviour. Holding while a prompt waits on the person follows the common pattern: a notice for an agent is held while one of its prompts waits on the person, and goes out after the answer.

Alternatives considered:

Differences from the common pattern:

  • Intended: on agents that stop the running prompt for a new message, a mail notice does too, as your own message does. Keeping that consistent with a person's send is the point of the change; a notice never arrives while you are answering a prompt, so no open prompt is withdrawn.
  • Intended: the hold is decided by the chat session itself at the moment it accepts the send, and nothing is stored: held mail stays unread, and the next working or idle edge, plus one immediate re-check, sends it.
  • Intended: a tiny window remains between the chat accepting the notice and the agent receiving it, in which a new prompt could open. A person's own message has exactly the same window.

This is PR 1 of 2. PR 2 replaces the notice with the actual mail content for native chats, one chat message per mail message, so the coordinator no longer needs to run check.

Linked Issue

None (maintainer change).

Visual Proof

Rendered-app QA on this change (b4cd51c5714), with real signed-in agents (Codex and Grok) in a hidden test copy on a separate Mac:

1. Busy Codex coordinator: the worker's notice arrives as a sent message (this PR)
native busy before
native busy after

Same flow on main: the notice waits as a queued card
main busy before
main busy after

2. Codex waiting on an approval: mail is held, then sent right after Allow
hold before
held
released

3. Grok (an ACP agent): busy chat takes the notice next; mail held around a question and released after the answer
grok busy before
grok busy after
grok hold before
grok held
grok released

Testing

  • I manually tested these changes locally

  • Automated tests added/updated, or explained why not below

  • End-to-end test on the coordinator-mail test rig: a worker report that arrives while the coordinator is mid-turn goes into that turn as a Codex turn/steer naming the running turn. No card is created, the message keeps who it's from, and nothing is resent at the idle edge.

  • Real host plus ACP test: with a question already open, a mail notice is refused with nothing recorded, the question stays answerable, and exactly one plain send happens after the answer.

  • Delivery test: the park is registered before the session read, and an answer landing during that read still leads to one send, with no duplicate and no lost unread message.

  • Host test: the notice is a plain send for every agent. Status wiring test: a chat going back to working retries its parked mail.

  • Removed structured-chat-coordinator-mail-queue.test.ts: all four of its tests asserted the queue-until-turn-end behaviour this PR replaces. The 20-card queue limit it also covered is still tested at the host level.

  • The 52 targeted tests pass under Node (pnpm test runs them under Bun, where node:sqlite is unavailable, on main too). CI runs lint, typecheck and the full suite.

Notes

  • SSH and remote: the hold is decided on the host that runs the chat, inside that chat's own session. Nothing new crosses the wire and no new saved field. An old paired server keeps its current behaviour until it updates.
  • The final sync with main let the commit hook reformat three files from main (structured-agent-session-send-runtime.ts, structured-agent-session-send-settlement.ts, AiVaultScanProgressStrip.test.tsx); those changes are whitespace only.

@brennanb2025

brennanb2025 commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor Author

A busy native-chat coordinator previously waited until its entire turn ended to see worker-mail notices, because they became queued cards. This PR sends the notice through the ordinary immediate-send path for every agent. Agents that restart for a new message also restart for mail, just as they do for a person's message; terminal delivery is unchanged. Mail remains unread while the host sees a pending approval or question, without creating a queued card or an early chat message.

The fresh review reproduced two races in that hold: a prompt opening after an earlier snapshot could be cancelled by mail, and an answer arriving before retry registration could leave mail waiting for an unrelated event. Commit b4cd51c5714ec9c4590d192968a228c058a4bc9b checks the host's live prompt state inside existing send admission, before accepting a chat message, and registers the existing retry before asynchronous reads. A live release check covers answers arriving during a held attempt. The existing working and idle status changes remain the settlement wake. The earlier correction that drains later reports after successful acceptance is preserved. No saved hold flag, timer, provider-specific sender, or wire change was added.

The common pattern uses current-owner admission and rechecks remaining human interactions after settlement. Intended differences: all providers use ordinary immediate send, including interruption where that is how a person's send behaves; held mail stays invisible and unread. A prompt opening after host admission retains the same provider-handoff timing window as a person's ordinary send. This review does not claim stronger provider-level atomicity.

Fresh correctness and readiness source reviews found no remaining proven defect. The final Sol xhigh decider independently traced the final production path and withdrew the earlier retry-loop and map-fanout concerns: no correctness defect or material resource regression is proven. Repeated prompt activity and large concurrent mailbox/history workloads remain deferred, unmeasured scale concerns.

Verified on the committed correction: four targeted Node suites, 52 tests passed, and the mandatory commit hook passed after consolidating duplicate missing-session/fence handling and redundant park ownership checking. The ACP host contract proves that a pending question holds mail without accepting a message, writing a send receipt, or cancelling the prompt. A delivery-lane contract proves one release after an answer arrives during the held send; a separate production-host fixture traces a real answer and one notice. These automated fixtures do not establish a complete real ACP provider exchange or rendered behavior.

CI: PR Checks run 38816106437 has static analysis and typecheck passing. The Windows package job failed in the existing installer process probe at config/scripts/nsis-process-check.test.mjs:102 after a timed-out SIGTERM; the package and Node test jobs were still queued when the fail-fast watch exited, so the aggregate is not green and the failure needs infrastructure or test-owner follow-up.

Real-agent Electron QA is blocked. The M4Air and Windows attempts ended before launching Orca because no authorized signed-in agent was available in the isolated test homes. No current-head screenshots or real-provider rendered flows were produced. Busy native delivery, approval/question hold and post-answer delivery, and ACP behavior still need authenticated remote QA; older fixture screenshots below cover an earlier revision only. The PR remains a draft and is not ready to merge.

Historical controlled-provider screenshots — old head 4f1d256, not current-head QA

These images were captured with an isolated Codex fixture on M4Air during the earlier design review. They show the queued baseline and immediate notices, but do not validate the final human-prompt hold or authenticated providers.

Earlier baseline queues the notice

Earlier branch sends a notice immediately

Earlier branch shows two notices during the turn

Nothing was merged or synchronized with main during this correction. The separate mail-content PR #28567 remains outside this review and unready.

QA on b4cd51c

Real signed-in Codex (GPT-6.1-Sol) and Grok ACP (Grok 4.7), driven by grok -p on M4Air on October 16, 2026, using auth-only copies in dedicated QA homes and hidden CDP renderers. This completes the authenticated rendered QA that the earlier blocked status above lacked.

  • Flow 1 — exercised: during a real 180-second Codex command, the PR sent worker mail immediately as a plain notice with no queued card; origin/main at checkout (f73ab77b46c) showed the queued From/Steer/Delete card.
  • Flow 2 — exercised: the same Codex chat held new mail invisibly while a real command approval stayed answerable; after Allow, the notice appeared in the next screenshot 1.8 seconds later.
  • Flow 3 — exercised: Grok ACP interrupted its running prompt for a plain mail notice; its real question kept mail invisible until Green was selected, then displayed the notice in the next screenshot 2.2 seconds later.

The Grok question proof used a fresh Run on the same chat, excluding an outstanding unacknowledged delivery from the earlier busy test. Mail came from real test-app shell workers through their own Orca CLI; no provider fixtures or injected rows were used.

Busy native chat: PR before / after; main before / after

native-busy-before.png

native-busy-after.png

main-busy-before.png

main-busy-after.png

Native approval: before mail / held mail / after answer

native-hold-before.png

native-hold-held.png

native-hold-release.png

Grok ACP busy: before / after

grok-busy-before.png

grok-busy-after.png

Grok ACP question: before mail / held mail / after answer

grok-clean-hold-before.png

grok-clean-hold-held.png

grok-clean-hold-release.png

Both QA source worktrees, throwaway homes/profiles, test apps, and daemons were removed; their ports have no listeners. No PR source was edited, pushed, or merged. No lint or typecheck command was run.

Real-file hashes are reported without attributing concurrent shared-machine changes: real Codex config.toml and .claude.json changed; neither contained a QA path when inspected, and all other sampled files matched.

Real configuration SHA-256 before / after
Real file under machine home Before After
.codex/auth.json 1283b66d6abcb91796a3fb86321f21713fb91b67de053b8eca96153f8ca42322 1283b66d6abcb91796a3fb86321f21713fb91b67de053b8eca96153f8ca42322
.codex/config.toml e900c9107ea5074eb8425d45248a9a79ec9e518f3b53473dfa478654c919ba53 1cb3428af386e74d64aed356d18f81cabe35b4bcebcf1c0aca58675de76ed6c1
.codex/hooks.json edb2d1cab54568e86a32aa813939d8a8892f1184a0d13bddbd08e9059a723eee edb2d1cab54568e86a32aa813939d8a8892f1184a0d13bddbd08e9059a723eee
.grok/auth.json cbc8c26d87d1bccb024c718c7988e9094ec1d22d1708dd1584b62cdc6f0e905a cbc8c26d87d1bccb024c718c7988e9094ec1d22d1708dd1584b62cdc6f0e905a
.grok/config.toml d0b1d13307504f7d888ba40924942b75fb90e1572b9314e7a103b2d729de74b1 d0b1d13307504f7d888ba40924942b75fb90e1572b9314e7a103b2d729de74b1
.claude.json ec676927413b47f6af3a8de4d507e6928935bbdb1c180ec0a0ef71c8a6a8372e f3baf8b37daae16aaafdd26e0b0580caea99b24dd6cd6c2af0c57e8da8e4bbb1
.claude/settings.json 7847561ee31422545b5f29fc9154aeb4b73733c46e0457b719d1b633920a45c0 7847561ee31422545b5f29fc9154aeb4b73733c46e0457b719d1b633920a45c0
.claude/.credentials.json absent absent
.config/opencode/cli.json d0deb7922566a96051665a87221e568ced788f3059888b11f27cace831bde3e0 d0deb7922566a96051665a87221e568ced788f3059888b11f27cace831bde3e0
.config/opencode/service.json 5ff5f8d3b6ac674c426b68d2a394755f9907d2cb0a7c550986caf73a1066ead9 5ff5f8d3b6ac674c426b68d2a394755f9907d2cb0a7c550986caf73a1066ead9
.local/share/opencode/auth.json absent absent

This is rendered QA evidence only; it does not change the CI merge gate or mark the PR ready.

Final sync (4495dbd)

Main merged at the end (current main, after #29809 fixed main's lint break from #28729). The merges add only main's changes plus whitespace-only reformatting of three main files by the commit hook; no change to this PR's logic since the reviewed head b4cd51c5714. Review loop: done, no open findings. QA: passed (above).

…ing turn

A native-chat coordinator's mail notice always queued as a card until the whole turn ended, so a
coordinator busy in a long command never saw its workers' reports. Agents that take a message
mid-turn (Claude, Codex, Pi) now get the notice at once; agents that would cancel their turn for
it (ACP) still queue it.
@brennanb2025
brennanb2025 marked this pull request as ready for review October 15, 2026 20:10
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

📝 Walkthrough

Mailbox delivery now processes successive unread batches after successful handoffs and pauses while a session awaits a human response. Structured-session pointers use immediate delivery. Working-status events retry parked mail before mailbox redrive. Coordinator tests cover steering pointers into active turns, and the fake Codex fixture records steering requests. The mail-queue integration test suite was removed.

Priority: ⬇️ Low

Merge Risk: ⚪ Minimal · up to 4495d

Structured mail is held while a human response is pending, but automated tests do not cover the answer-triggered coordinator retry end to end. No production failure is established, and the reported Windows package timeout is isolated from the changed code; code-level merge risk is minimal.

Pre-merge checks: Passed 4 · Failed 1

Failed Failed checks: 1 warning

Check name Status Explanation Resolution
Docstring Coverage Warning Docstring coverage is 54.55% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 11 functions across 15 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 4 passed
Check name Status Explanation
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Title check Passed The title clearly identifies the primary change: native-chat orchestration mail notices are delivered immediately and consistently across agents.
Description check Passed The description is detailed and covers the user impact, implementation, rationale, alternatives, testing, visual proof, and compatibility notes. It omits some template sections, such as the checklist …
Full details: Description check

Explanation

The description is detailed and covers the user impact, implementation, rationale, alternatives, testing, visual proof, and compatibility notes. It omits some template sections, such as the checklist and agent skill boundary, but the required change information is substantially complete.

  • Fix all pre-merge checks with AI
✨ Finishing Touches: 💡 1
📝 Generate docstrings: 💡
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

A mail notice is a plain send for every agent, as a person's own mid-turn message is.
While a pending approval or question waits on the person it is held, and the turn's
working edge after the answer sends it.
@brennanb2025 brennanb2025 changed the title fix(orchestration): a busy native-chat coordinator gets its mail notice mid-turn instead of after the turn fix(orchestration): native-chat agents get their mail notice right away, the same way for every agent Oct 15, 2026
@brennanb2025
brennanb2025 marked this pull request as draft October 15, 2026 20:24

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: a968857f-25f4-4080-992a-0c51b19f7b9d
📥 Commits

Reviewing files that changed from the base of the PR and between 0bcfbbf and e1e584e.

📒 Files selected for processing: 7
  • src/main/runtime/orca-runtime-structured-status-sink-wiring.test.ts
  • src/main/runtime/orchestration/agent-facing-parity.test.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-delivery.test.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-delivery.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-host.test.ts
  • src/main/runtime/orchestration/structured-mailbox-pointer-host.ts
  • src/main/runtime/orchestration/terminal-pane-mail-routing.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review.

@brennanb2025
brennanb2025 marked this pull request as ready for review October 16, 2026 18:34

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments: 1
src/main/runtime/structured-chat-coordinator-mail.test.ts: 1

459-497: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Cover the answer-triggered retry on the coordinator path.

acp-structured-mail-admission.test.ts covers a real ACP question and held mail, but it stops at { kind: 'held' }. structured-chat-dispatch-worker-mail.test.ts covers provider failure and retry on a later turn. The coordinator test covers active-turn steering only.

Add a focused test that answers the provider question after mail is held and asserts one coordinator retry. This can catch answer-to-retry wiring regressions that the existing tests miss.


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: ff2fcaef-3ae7-4bbb-9b53-9a1fc8144c26
📥 Commits

Reviewing files that changed from the base of the PR and between 6d94baf and 4495dbd.

📒 Files selected for processing: 1
  • src/main/runtime/orchestration/send-agent-turn.ts

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 7 remain after this review.

@brennanb2025
brennanb2025 merged commit 702ffc7 into main Oct 16, 2026
33 checks passed
@brennanb2025
brennanb2025 deleted the brennanb2025/orchestration-mail-steer branch October 16, 2026 21:45
brennanb2025 added a commit that referenced this pull request Oct 16, 2026
…28540's hold

Each orchestration message still reaches a native chat as its own message, now through the
merged plain send for every agent and its admission hold: a message held for a waiting prompt
stops the pass so later mail cannot overtake it, and the mailbox is parked before the first
read. Heartbeats are skipped in this lane only and stay unread. A mailbox with an unacknowledged
check batch waits for its ack, as on main. Chat text is capped at 4,000 characters with the
command that shows the whole message.
pawel-kotowski added a commit to pawel-kotowski/orca that referenced this pull request Oct 22, 2026
…worker

A coordinator's follow-up to a chat-mode worker (Chat UI on) always reached it
as a queued card that waits for the worker's current turn to end. `orca
orchestration send --deliver now` stores the request on the message row, and
the structured pointer lane sends the batch's nudge with delivery `now`, which
joins the running turn the way the composer's Steer button does. The default
stays `queue`.

- New `messages.pointer_delivery` column (schema v44, defaults to `queue`).
- Delivery is read off the batch's own rows, so a retry under a reused
  operation id always resends with the delivery it was minted with (delivery
  is part of the host's operation fingerprint).
- Carried through group sends and both federation relay directions as an
  optional field written only for `now`, so plain mail is byte-identical for
  older peers.
- Terminal (PTY) recipients are unchanged: they are still nudged at the next
  idle prompt, since typing into a busy agent TUI can land in a permission
  prompt.
- CLI help, flag help, and the orchestration messaging guide document it.

Ported onto upstream stablyai#28540, which already steers every mail notice into a busy
chat's running turn (held only while an approval or question waits). The
pointer lane keeps that upstream behavior for every row; the `--deliver` flag,
the v44 column and the federation field stay so existing scripts and databases
keep working, and the help text says a row's `queue` no longer holds a nudge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pawel-kotowski added a commit to pawel-kotowski/orca that referenced this pull request Oct 26, 2026
…worker

A coordinator's follow-up to a chat-mode worker (Chat UI on) always reached it
as a queued card that waits for the worker's current turn to end. `orca
orchestration send --deliver now` stores the request on the message row, and
the structured pointer lane sends the batch's nudge with delivery `now`, which
joins the running turn the way the composer's Steer button does. The default
stays `queue`.

- New `messages.pointer_delivery` column (schema v44, defaults to `queue`).
- Delivery is read off the batch's own rows, so a retry under a reused
  operation id always resends with the delivery it was minted with (delivery
  is part of the host's operation fingerprint).
- Carried through group sends and both federation relay directions as an
  optional field written only for `now`, so plain mail is byte-identical for
  older peers.
- Terminal (PTY) recipients are unchanged: they are still nudged at the next
  idle prompt, since typing into a busy agent TUI can land in a permission
  prompt.
- CLI help, flag help, and the orchestration messaging guide document it.

Ported onto upstream stablyai#28540, which already steers every mail notice into a busy
chat's running turn (held only while an approval or question waits). The
pointer lane keeps that upstream behavior for every row; the `--deliver` flag,
the v44 column and the federation field stay so existing scripts and databases
keep working, and the help text says a row's `queue` no longer holds a nudge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
pawel-kotowski added a commit to pawel-kotowski/orca that referenced this pull request Oct 26, 2026
…worker

A coordinator's follow-up to a chat-mode worker (Chat UI on) always reached it
as a queued card that waits for the worker's current turn to end. `orca
orchestration send --deliver now` stores the request on the message row, and
the structured pointer lane sends the batch's nudge with delivery `now`, which
joins the running turn the way the composer's Steer button does. The default
stays `queue`.

- New `messages.pointer_delivery` column (schema v44, defaults to `queue`).
- Delivery is read off the batch's own rows, so a retry under a reused
  operation id always resends with the delivery it was minted with (delivery
  is part of the host's operation fingerprint).
- Carried through group sends and both federation relay directions as an
  optional field written only for `now`, so plain mail is byte-identical for
  older peers.
- Terminal (PTY) recipients are unchanged: they are still nudged at the next
  idle prompt, since typing into a busy agent TUI can land in a permission
  prompt.
- CLI help, flag help, and the orchestration messaging guide document it.

Ported onto upstream stablyai#28540, which already steers every mail notice into a busy
chat's running turn (held only while an approval or question waits). The
pointer lane keeps that upstream behavior for every row; the `--deliver` flag,
the v44 column and the federation field stay so existing scripts and databases
keep working, and the help text says a row's `queue` no longer holds a nudge.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant