StructsΒ§
- Audio
Settings πPage - Chat
Config π - Persisted user choices for
rbnx chat, written to ~/.robonix/chat.yaml. - Chat
Message π
EnumsΒ§
- Audio
Section π - Pick
Mode π - Pick mode for the legacy modal picker chain (FirstRun only β the
Ctrl+A path now uses the dashboard via
run_audio_settings_page).Reconfigureis kept so the older code paths that still take a PickMode parameter compile cleanly even though nothing constructs it. - Role π
ConstantsΒ§
- CONSUMER_
ID π - DEFAULT_
LIAISON_ πFALLBACK - LIAISON_
CONTRACT_ πID - MIC_
CONTRACT π - Atlas contract ids for the audio primitives that have user-visible device choices on a multi-provider host (e.g. local ALSA driver vs the macOS bridge). asr/tts are software backends with one provider per box, so we donβt prompt for them.
- SPEAKER_
CONTRACT π
FunctionsΒ§
- abort_
session π - apply_
pilot_ πevent - apply_
voice_ πevent - build_
control_ πtask - build_
text_ πtask - call_
select_ πdevice - chat_
config_ πpath - discover_
liaison π - Try to discover Liaison via Atlas, retrying for up to
timeout_secs. - draw π
- ensure_
audio_ πdevices - Best-effort audio device discovery. Anything that goes wrong here (atlas unreachable, no providers registered, user pressed Esc) is downgraded to a chat-history warning β text mode keeps working.
- execute
- fetch_
devices_ πfiltered - flash_
picker_ πmessage - Render a single-line status page and pause briefly so the user can read it before the next picker step (or the chat) takes over the screen. Long messages now sit for 1.4 s β the previous 400 ms felt like βthe page just flashed and disappeared.β
- load_
chat_ πconfig - localhost_
to_ πipv4_ loopback - Pilot/Liaison bind IPv4 (
0.0.0.0). Resolvinglocalhostoften prefers::1, so the gRPC client hits IPv6 and gets connection refused β force IPv4 loopback. - notify_
session_ πend - now_ms π
- pick_
audio_ πsettings - pick_
device_ πfor_ cap - Connect to
provider_idβs list_devices capability, ask for the device list, run a picker on the entries that matchkind(input/output) - pick_
device_ πtui - pick_
tui π - pin_
exists_ πin_ atlas - True iff atlas currently has a provider whose id (or namespace) matches the
pin AND it provides
contractover GRPC. Used at chat startup to detect stale pins from a prior deploy whose audio provider has since been renamed or removed β caller drops the pin and re-prompts the picker instead of silently letting voice fail with βno providerβ. - plan_
calls π - run_
audio_ πsettings_ page - run_
text_ πintent_ with_ esc_ abort - run_tui π
- run_
voice_ πsession_ with_ esc_ abort - save_
chat_ πconfig - try_
discover_ πonce - try_
pick π Ok(Some((provider_id, device_id)))= picked both layers; device_id may be ββ when the impl returned UNIMPLEMENTED on list_devices.Ok(None)= no providers in atlas.- voice_
language π - voice_
node π - voice_
node_ πwith_ cfg - Same as
voice_nodebut falls back tocfg_value(from chat.yaml) when the env var is unset / empty. Empty result still means βlet liaison auto-pick from atlasβ. - voice_
record_ πseconds - voice_
tts_ πenabled - whoami_
username π - Tiny username probe β avoids pulling in
whoamifor the CLI by reading $USER/$USERNAME with a βuserβ fallback. Liaison uses the realwhoamicrate when it stamps the canonicallocal:<user>identity.