feat(realtime): adapt semantic endpointing controls - #107
Conversation
b99b0a2 to
a001abf
Compare
TheSmokeDev
left a comment
There was a problem hiding this comment.
Thanks Kevin — this is a clean design: neutral RealtimeTurnDetection, exact GA semantic_vad shape, and honest Grok/Gemini refusals. One blocker before I can take it: talk_core_provider hard-imports RealtimeSemanticEagerness / RealtimeTurnDetection / RealtimeTurnDetectionMode inside the contract try, so on today's #101808 head (without your hermes-agent#4) the whole core lane disappears — core_contract_available() goes False with a bare ImportError, and the widened _REAL_CONTRACT_MARKERS makes every contract test skip instead of fail. Could you probe those three names as an optional capability (own try/except, getattr on validate_setup / setup.turn_detection, default to native), and add a test that binds the #101808-shaped contract? Also a CHANGELOG line for the endpointing bridge itself, not just the benchmark. Happy to merge right after. — SmokeDev
- Import RealtimeSemanticEagerness/RealtimeTurnDetection/ RealtimeTurnDetectionMode in their own try/except so a pre-semantic core head keeps the full lane instead of dropping it on ImportError - Default missing setup.turn_detection to provider-native via getattr; refuse non-native modes before resources open - Advertise native-only mode sets on old heads via _contract_turn_modes - test_old_head_contract binds a #101808-shaped contract and proves degraded-mode behavior - CHANGELOG: endpointing bridge entry
|
Addressed in 412c673 (full suite |
What and why
Mirror the provider-neutral turn-detection contract in Talk's wire boundary: map OpenAI server/semantic VAD through mint and live update paths, advertise Grok native/server support and fail fast on semantic mode, advertise Gemini native-only support and fail fast on server/semantic modes. The semantic turn-detection names are probed as an optional capability, so pre-semantic core heads (today's #101808) keep the full core lane with provider-native turn detection instead of losing it. Ships a deterministic, content-free endpointing benchmark module.
Pairs with TheSmokeDev/hermes-agent#4 (stacked on NousResearch/hermes-agent#101808).
How to test
1580 passed, 56 skipped, 5 xfailedtests/test_core_provider.py: 8 passed (was 7), 38 skipped without a core checkouttalk_endpointing_benchmark.pyPlatforms
Live receipt
No live-provider run in this PR: provider lanes are exercised through contract-shaped unit coverage and the benchmark smoke module. Live-lane receipt stays with
hermes talk check(#97) on a configured box.Checklist
ImportError)1580 passed, 56 skipped, 5 xfailed)