Fix multi-agent voice routing and add CLI controls - #4637
Conversation
Co-authored-by: Lynford Ulrich <lynford@eop.tech> Signed-off-by: Lynford Ulrich <lynford@eop.tech>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c083e97112
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| let activeTargets: CodexVoiceTarget[] = readTargets(ACTIVE_STORAGE_KEY); | ||
| let savedTargets: CodexVoiceTarget[] = readTargets(SAVED_STORAGE_KEY); | ||
| let sessionStates: Record<string, CodexVoiceSessionState> = {}; | ||
| let roomTranscript: VoiceRoomTranscriptEntry[] = []; | ||
| let roomTranscriptSequence = 0; |
There was a problem hiding this comment.
Reset voice-room state when switching communities
When the user switches to another community, these module-level targets, transcripts, directed turns, and speaker lease survive the React remount; I checked resetCommunityState() in useCommunityInit.ts, and it does not clear this registry. Because CodexVoiceController remounts docks from activeTargets, the new community can immediately reconnect an old community's agent using its previous relay, channel, and thread, while also displaying the old transcript. Add a registry reset and invoke it at the community boundary.
AGENTS.md reference: AGENTS.md:L488-L492
Useful? React with 👍 / 👎.
| let audio_media_type = unsafe { AVMediaTypeAudio } | ||
| .ok_or_else(|| "AVFoundation audio capture is unavailable.".to_string())?; | ||
| let status = unsafe { AVCaptureDevice::authorizationStatusForMediaType(audio_media_type) }; |
There was a problem hiding this comment.
Replace the unsafe microphone permission calls
On macOS, this permission path introduces new unsafe blocks for AVFoundation access despite the repository's explicit prohibition on unsafe code. Route microphone authorization through a safe wrapper or existing permission abstraction rather than adding these unchecked FFI calls.
AGENTS.md reference: AGENTS.md:L113-L116
Useful? React with 👍 / 👎.
| buzz voice join --agent-name "Architect" | ||
| buzz voice mute --agent-name "Architect" | ||
| buzz voice unmute --agent-name "Architect" | ||
| buzz voice set-voice --agent-name "Architect" --voice "verse" |
There was a problem hiding this comment.
Use a supported voice in the agent skill example
When an agent follows this newly seeded skill, the documented command fails during Clap parsing because VoiceName accepts sol, cove, ember, breeze, arbor, vale, juniper, maple, or spruce, but not verse. Replace the example with one of the accepted values so the primary instructions do not teach a command that can never execute.
Useful? React with 👍 / 👎.
Summary
buzz voicejoin/remove/mute/voice controlsValidation
Originating Buzz channel:
702ede50-175f-4a33-b62b-0ebec8f34d25