H-6763: Speak finalized Brunch responses with OpenAI - #9357
Open
kostandinang wants to merge 7 commits into
Open
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
5 tasks
Author
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
4 tasks
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 26, 2026 22:46
d4fe337 to
588eff3
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 26, 2026 23:04
cf09c5c to
7c04220
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 26, 2026 23:04
588eff3 to
b98ec47
Compare
3 tasks
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 27, 2026 10:52
7c04220 to
f27bfec
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 27, 2026 10:52
b98ec47 to
7250b21
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 27, 2026 11:19
7250b21 to
c8c9656
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 27, 2026 11:19
f27bfec to
20c3818
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 31, 2026 19:45
7e220c4 to
a9457e4
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 31, 2026 19:45
3d62f8d to
7251f34
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-realtime-input
branch
from
August 31, 2026 21:41
a9457e4 to
f3caa39
Compare
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 31, 2026 21:41
4c74d79 to
a6c1ca9
Compare
Select only finalized canonical assistant text and validated brunch_ask questions, then forward the exact fingerprinted text through the app-owned OpenAI Speech edge. Queue cancelable MP3 playback behind Brunch, keep the microphone closed until speech drains, reject stale generations, disclose the AI-generated voice, and preserve visible text on failure. Amp-Thread-ID: https://ampcode.com/threads/T-01a03fb3-fd3d-737f-b4c6-1fc9282950bf Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep ready chat updates from reopening the microphone or starting queued speech before the active transcript is finalized. Co-authored-by: Cursor <cursoragent@cursor.com>
Keep the early transcribing return authoritative so intermediate stack branches type-check without changing runtime behavior. Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
kostandinang
force-pushed
the
kostandin/h-6763-openai-canonical-speech
branch
from
August 31, 2026 22:33
a6c1ca9 to
aab58fd
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit aab58fd. Configure here.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


🌟 What is the purpose of this PR?
Speak finalized Brunch responses through OpenAI's dedicated Speech API. The exact canonical text already visible in Petrinaut—including a validated pending
brunch_askquestion—is selected once, sent unchanged for synthesis, and played while the microphone remains closed.OpenAI Realtime continues to perform transcription only; it never generates assistant responses.
🔗 Related links
🚫 Blocked by
🔍 What does this change?
brunch_ask.input.questionvalues.{ segmentId, text }./api/voice/speechedge.gpt-4o-mini-ttswith server-fixedmarinvoice and MP3 output.audio/mpeg, disables caching, sanitizes upstream errors, and propagates timeouts/client cancellation.response.createevent.Stack record: direct base
7c042206e919b80ef27ce46649bfe5202005b27c; PR headb98ec4772a9702e1cba096e5604e7dc77f46706d.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
No existing documentation screenshot covers this voice surface.
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
@apps/brunch-agentCI jobs cannot see the non-workspace condition-5 runner on the FE-1506: Show captures and completion while a panel elicitation runs #9346 base. Parallel PR #9348 already contains the exact tested prune fix (ade09e9c36), so this sibling stack does not duplicate it. Full-checkout Brunch tests, lint, typecheck, and build pass locally.no-await-in-loopwarnings and Brunch emits 12 inherited warnings.🐾 Next steps
Voice PR4 will add delivery caching, authoritative reload reconciliation, stale-ask recovery, authentication, distributed quotas, telemetry, retention cleanup, a kill switch, and real completion/projection evidence. It must not start until the listed platform contracts are available.
🛡 What tests cover this?
Validation run
Results: 214 Petrinaut tests, 72 website tests, 12 transport tests, and 35 Brunch tests passed locally. Lint, typecheck, build, formatting, and architecture-doc checks passed.
The direct-base no-ElevenLabs audit and
git diff --checkpassed. No package manifest or lockfile changed; provider-owned paths are explicitly OpenAI-named.Credential-dependent checks not run: real OpenAI synthesis, remote Brunch, microphone/browser permission, exact spoken output in desktop Chrome/Edge/Safari, and deployed cancellation/failure behavior.
❓ How to test this?
yarn workspace @apps/petrinaut-website test:unitplus its lint, typecheck, and build commands above.📹 Demo
Not included: credentialed browser/provider evidence remains an explicit acceptance requirement.