You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Speaking to one agent, say a command word — "next" — and be moved to the next agent that wants
me, without touching the screen. Hands-free means hands-free; today switching agents requires
stopping, looking, and clicking.
Why it belongs in the voice layer that already exists
The vocabulary is a small closed set in packages/sdk/src/voice/convo.ts:106:
Each has a per-language phrase table (REPEAT_BY_LANG, MUTE_BY_LANG, UNMUTE_BY_LANG, EXIT_BY_LANG), per-instance overrides (VoiceCommandWords, Settings → Voice), a commandsEnabled toggle, and matchVoiceCommand / splitTrailingCommand already handle
whole-utterance vs trailing-command matching in any script.
So "next" is a fifth entry in that table plus a handler — not new machinery. It should get the
same treatment as the others: a NEXT_BY_LANG table, a custom-word override, and the existing
"only fires as a whole utterance, or trailing after a real message" rule so "what's next?" is
never hijacked.
Which agent is "next"
The ordering the request describes, in priority:
Wants your input. The platform already models this — needs_human is a first-class board
status (lib/agent-capabilities.ts:118, rendered as the amber "Needs you" column in BoardTab.tsx:20). Also: a finished loop run whose result you have not seen, and an ask-and-hold needs_input handoff.
Last engaged before the current one — a back-and-forth between two agents should feel like
toggling, not cycling the whole roster.
Next in queue — remaining instances in a stable order, so repeated "next" walks the set
without repeating.
/v1/dashboard already aggregates cross-instance state and is the natural place to resolve this in
one call, rather than the client polling every instance.
Behaviour worth pinning down
Say who you switched to, out loud. In hands-free the user is not looking; a silent switch
means the next thing they say goes to an agent they did not know they were talking to. This is
the one requirement that makes the feature safe.
Nothing waiting → say so and stay put, rather than cycling to an arbitrary agent.
The ask
Speaking to one agent, say a command word — "next" — and be moved to the next agent that wants
me, without touching the screen. Hands-free means hands-free; today switching agents requires
stopping, looking, and clicking.
Why it belongs in the voice layer that already exists
The vocabulary is a small closed set in
packages/sdk/src/voice/convo.ts:106:Each has a per-language phrase table (
REPEAT_BY_LANG,MUTE_BY_LANG,UNMUTE_BY_LANG,EXIT_BY_LANG), per-instance overrides (VoiceCommandWords, Settings → Voice), acommandsEnabledtoggle, andmatchVoiceCommand/splitTrailingCommandalready handlewhole-utterance vs trailing-command matching in any script.
So
"next"is a fifth entry in that table plus a handler — not new machinery. It should get thesame treatment as the others: a
NEXT_BY_LANGtable, a custom-word override, and the existing"only fires as a whole utterance, or trailing after a real message" rule so "what's next?" is
never hijacked.
Which agent is "next"
The ordering the request describes, in priority:
needs_humanis a first-class boardstatus (
lib/agent-capabilities.ts:118, rendered as the amber "Needs you" column inBoardTab.tsx:20). Also: a finished loop run whose result you have not seen, and an ask-and-holdneeds_inputhandoff.toggling, not cycling the whole roster.
without repeating.
/v1/dashboardalready aggregates cross-instance state and is the natural place to resolve this inone call, rather than the client polling every instance.
Behaviour worth pinning down
means the next thing they say goes to an agent they did not know they were talking to. This is
the one requirement that makes the feature safe.
half-spoken (see the mid-dictation loss class, Voice transcription lost when agent message arrives mid-dictation #175).
commandsEnabled; a user who has turned voice commands off should not have "next"silently steer them.
Verification
needs_humanagent and announces which one.