Release 0.16.0: native harness wake - #73
Merged
Merged
Conversation
Register Claude Code inbox sockets and Codex threads as private per-member wake endpoints, and wake a member with no live receiver once per unread batch when a directed message, pass, or reservation targets it. Delivery sends a fixed body-free prompt, reserves the batch before I/O, falls back to cmux only on definite failure, and reports delivery_transport and delivery_state on sends.
A running tt chat console now keeps its room when the last agent leaves or is kicked, so the operator can stay and agents rejoin the same room. The last console closing an agent-less room deletes it, and a console whose process is gone never retains a room. Chat explains when an addressed agent has left, and the skill tells agents to finish with tt standby instead of tt leave while an operator console is present.
Close a member's wake batch only when the acknowledged cursor passes the newest event queued on any of its endpoints, so a partial ack cannot reopen the cmux row and re-wake the native endpoint. Document native wake in the README, skill, bundled instructions, changelog, and plan implementation notes, and recommend tt standby --json.
A wake transport registered for the same harness session while a batch is outstanding now joins that batch instead of re-waking the member. A recipient-scoped flushWakes no longer drops other queued recipients from the room's pending set.
Throw send errors synchronously from sendMessageAndWake so tt chat reports them instead of a vague delivery notice. Release a batch whose every eligible transport definitely failed, so a later sender or an interrupt can still reach the member. Requeue a wake skipped for a live receiver when that receiver exits before reading the event. Sweep pending wakes left by other processes on unscoped flushes and during long waits. Report ambiguous delivery as ambiguous, and keep Claude inbox credentials out of the codex child environment.
Also mark Codex queue as live-verified in the plan and define queued as transport submission.
Standby's transport field only names the cmux-or-manual fallback, so a native-wakeable session looked like manual standby. Add wake_transports to the result and CLI text, and record the default-settings Claude idle wake in the plan.
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.
Native harness wake plus operator chat room retention, released as 0.16.0.
Summary
codex queue, when it isn't runningtt wait. One async dispatcher with per-member unread-batch dedupe. cmux stays the fallback for parked standby and explicit interrupts. The wake is a fixed prompt without the message body, credentials are private and owner-only, and errors are fixed codes.tt msg sendreports delivery transport and state,tt chatshows per-recipient notices,tt standbyreportswake_transports, andtt healthshows the last wake.Affected commands:
tt msg send,tt chat,tt standby,tt wait,tt join,tt health. Harnesses: Claude Code and Codex (native); cmux (fallback).Verification
npm run typecheck,npm test(538 passed, 1 skipped),npm run build,git diff --check,npm pack --dry-runcrossSessionInbound: refuseproduces no wake; standby rearm woke the same session twice in a row.docs/plans/2026-09-15-native-harness-wake.md