Conversation
Forgotten full-duplex sessions keep billing OpenAI at $0.05/min. Default 5 quiet minutes (voice.gpt_live.idle_hangup_seconds, 0 disables). The timer pauses while a Hermes delegation is in flight so a long job cannot look like silence. Closes NousResearch#111075
|
Design deltas from #111611 (I'm closing that PR as a duplicate of this one — same Two things in mine that might be worth taking if they aren't already here: 1. Injectable clock (testability). The watchdog takes its time source as an option instead of calling new VoiceLiveSession(handlers, { idleHangupSeconds, now }) // now: () => number, default Date.nowso the idle deadline is asserted with a fake clock in unit tests (threshold-1 does not fire / threshold fires, 2. Per-turn activity, not just audio. Idle is reset by every one of: vendor transcript deltas (either speaker), 3. Poll tick vs re-armed timeout. The deadline is polled on a 1 s interval armed at construction (cleared in Not a claim that mine is better overall — take whatever is useful, ignore the rest. |
Summary
voice.gpt_live.idle_hangup_seconds;0disables). Settings → Voice row included.Closes #111075
Test plan
scripts/run_tests.sh tests/tui_gateway/test_voice_live_delegation.py(8 passed, including idle parse/default/zero)apps/desktopvitestsrc/lib/voice-live-idle.test.ts(policy: deadline, 0=off, pause on delegation)Does not overlap #79574 / #76889 (chained mic only).