Skip to content
This repository was archived by the owner on Jul 16, 2026. It is now read-only.

feat(voice-agent): port [BLANK_AUDIO] filler token (Phase 5.4) - #74

Merged
jgluck96 merged 1 commit into
dev-clientfrom
josh/phase-5.4-voice-agent
Jun 1, 2026
Merged

jgluck96 merged 1 commit into
dev-clientfrom
josh/phase-5.4-voice-agent

Conversation

@jgluck96

@jgluck96 jgluck96 commented Jun 1, 2026

Copy link
Copy Markdown

Summary

Phase 5.4 of the OSS→private voice-agent.ts reconciliation. After a full diff review, the only clean, safe OSS win was a single prompt token: add "[BLANK_AUDIO]" to the FILLERS-ARE-NOT-REQUESTS backchannel list so a transport-emitted blank-audio marker is ignored instead of being (mis)interpreted as a directive that fires work.

What was reviewed and intentionally NOT ported

voice-agent.ts has diverged at the architectural foundation; in most areas stando is ahead:

  • stando ahead (preserve): multi-provider voice (VOICE_PROVIDER/OpenAI Realtime), SUBAGENT_PROVIDER, STT_PROVIDER + Whisper, the cloud gateway (managed-Gemini minting, cloudRecordEvent/skill.run metering, session lifecycle), state-paths.js resolution.
  • OSS conflicts (skip): recordToolCall ([conversation-store] remove triple-encoded redundancy after per-surface tables (#1051 follow-up) sonichi/sutando#1052) — stando replaced local-sqlite tool recording with richer cloud telemetry; workspace_default.js resolver — stando uses state-paths.js by design; voice-agent.config.json templating — stando uses env vars by design.
  • Absent but not portable: the read_selection / DEICTIC-screen-reference prompt depends on a read_selection tool + setSessionToolUpdater that don't exist anywhere in stando.
  • Prompt-tuning (left alone): the MISHEARD-RISK-CONFIRM line was deliberately not ported per the "don't change tuned prompts" rule.

Test plan

  • pnpm run typecheck passes
  • Smoke: confirm a [BLANK_AUDIO] utterance no longer triggers a work dispatch in a live voice session

Made with Cursor

Port the only clean OSS sutando win from the voice-agent.ts reconciliation
(Phase 5.4): add the "[BLANK_AUDIO]" token to the FILLERS-ARE-NOT-REQUESTS
backchannel list so a transport-emitted blank-audio marker is ignored
rather than (mis)interpreted as a directive that triggers `work`.

The rest of OSS's voice-agent.ts diff was reviewed and intentionally NOT
ported: stando is ahead on multi-provider voice/STT + the cloud gateway,
uses state-paths.js (not workspace_default.js) by design, and the
read_selection deictic prompt depends on a tool stando doesn't have.

Co-authored-by: Cursor <cursoragent@cursor.com>
@jgluck96
jgluck96 merged commit f2ff251 into dev-client Jun 1, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant