feat(voice): send berd-call transcripts to Codex tasks - #344
Conversation
Mute a restarted session before microphone capture starts, and let stop cancel a pending restart. Also mirror typed settings snapshots in the actor, name the non-blocking control request after its payload, parse settings options directly, and reuse session-argument validation.
…' into jtennant/berd-call-codex * origin/jtennant/berd-call-live-controls: fix(voice): order berd-call restart mute and stop handling
…' into jtennant/berd-call-codex * origin/jtennant/berd-call-live-controls: fix(voice): let berd-call stop win during a restart handoff
A control connection accepted before a restart can deliver its stop after the restart handoff. The active session now honors the recorded stop flag, so that stop ends the replacement call instead of being reported as successful while the call keeps running.
…' into jtennant/berd-call-codex * origin/jtennant/berd-call-live-controls: fix(voice): record berd-call stop intent before a restart handoff # Conflicts: # src-tauri/crates/berd-call/src/host_session.rs
…' into jtennant/berd-call-codex * origin/jtennant/berd-call-live-controls: fix(voice): end berd-call on a stop that outlives its session
|
🤖 Review dispositions at 4f86740 (fixed in 573b329):
|
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
Engineering found one blocking reliability issue and one non-blocking signal-handling issue. Supplied GitHub evidence is structurally valid and all captured checks for the exact head SHA passed, but required checks still govern merge readiness. Recommend REQUEST_CHANGES because a blocking finding remains.
Deterministic publication result: 1 blocking and 1 non-blocking inline finding(s) publishable; 0 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
Signed-off-by: John Tennant <jtennant@block.xyz>
Signed-off-by: John Tennant <jtennant@block.xyz>
…' into jtennant/berd-call-codex * origin/jtennant/berd-call-live-controls: fix(berd-call): commit input mute before acknowledging it Signed-off-by: John Tennant <jtennant@block.xyz> # Conflicts: # src-tauri/crates/berd-call/src/host_session.rs
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
Engineering completed a fresh static review of the exact PR comparison and found no new publishable issues. Two previously reported issues remain suppressed because each resolved thread has a substantive human reply. Supplied GitHub evidence is structurally valid; some checks are still in progress, so required checks continue to govern merge readiness. Recommend APPROVE under the publication policy.
Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 2 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
Pending checks: 4 check(s) are not complete.
This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.
The merge-base changed after approval.
* origin/main: feat(voice): add live berd-call settings and non-blocking speech (#343) Signed-off-by: John Tennant <jtennant@block.xyz> # Conflicts: # src-tauri/crates/berd-call/src/cli_help.rs # src-tauri/crates/berd-call/src/host_session.rs # src-tauri/crates/berd-call/src/main.rs
morgmart
left a comment
There was a problem hiding this comment.
🤖 Automated code review
Engineering completed a fresh static review of the exact PR comparison and found no new publishable issues. Two previously reported issues remain suppressed because each resolved thread has a substantive human reply. Supplied GitHub evidence is structurally valid; Transcript virtualization is failing while the other captured checks pass, so required checks still govern merge readiness. Recommend APPROVE under the publication policy.
Deterministic publication result: 0 blocking and 0 non-blocking inline finding(s) publishable; 2 duplicate(s) suppressed; 0 blocking screenshot-evidence requirement(s) in this review body.
Completed checks currently reporting failure:
- Transcript virtualization: failure
Pending checks: 1 check(s) are not complete.
This approval reflects the completed code review only; merge readiness remains governed by the repository's required checks.
Summary
Adds
berd-call start --codex, which delivers a running call's transcript straight into the Codex task that started it. The agent no longer needs a wrapper process to read--streamoutput.CODEX_THREAD_ID. It checks that Codex Desktop owns the task, then connects to the local Codex IPC socket (CODEX_MONITOR_SOCKET, then$CODEX_HOME/ipc/ipc.sock, then~/.codex/ipc/ipc.sock). The socket must belong to the current user, and its directory must be private to that user.[3 USER],[4 HANDOFF handoff-a-4],[LIFECYCLE]. Records are delivered in order, steering the active turn or starting a new one when the task is idle. Failed deliveries retry, and records queued close together are sent as one batch. The first delivery includes short guidance: how to reply withberd-call speak --re CURSOR, and how to resolve handoffs with--resolves HANDOFF_ID.--streamemits: user and spokesperson speech, handoffs, restart lifecycle, andspeech_resultrows from non-blocking speech.--non-blockingnow accepts--codexas its delivery path. On exit the task receives a final lifecycle record, either a clean stop that should not be restarted or the failure message.Reviewer-reproducible example
From a Codex Desktop task terminal, start an Expert-Spokesperson call:
berd-call start --codex --port 5340 --voice Aaron --language en-US --mode expert-spokesperson &Say "Please ask the expert to look up the current git branch name of this worktree." The task receives:
Answer it with
berd-call speak --port 5340 --re 2 --resolves handoff-external-2 "The worktree is on jtennant/berd-call-codex.". The Spokesperson speaks the answer and the task receives[5 SPOKESPERSON]with the spoken text. Thenberd-call stop --port 5340delivers:For non-blocking speech, start a conventional call with
berd-call start --codex --non-blocking --port 5342 --voice Aaron --language en-US &and say "Please reply." The task receives[1 USER]with that text.berd-call speak --port 5342 --re 1 "Delivery check received."returns{"requestId": 2, "status": "accepted"}immediately, and a completed reply delivers nothing further.Invalid invocations fail before a call starts: