fix(desktop): queue GPT-Live delegations without truncation - #110450
Open
jbric16 wants to merge 1 commit into
Open
fix(desktop): queue GPT-Live delegations without truncation#110450jbric16 wants to merge 1 commit into
jbric16 wants to merge 1 commit into
Conversation
Route busy GPT-Live requests through the visible composer queue instead of interrupting the active Hermes turn. Preserve the complete latest spoken utterance as the prompt while bounding only supplemental voice context, and keep server-side queue envelopes surface-aware.
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 does this PR do?
GPT-Live currently submits new delegations while Hermes is still working. Depending on timing, that can redirect the active turn, paint a request as already sent, or lose part of a long spoken request.
This change gives GPT-Live its own profile setting for concurrent requests:
interrupt: preserve the existing Hermes behavior. This is the default.queue: put the request in the visible Desktop composer queue and run it after the active turn.steeris not offered. A steered message does not produce a separate Hermes turn that GPT-Live can reliably match to its delegation.The latest spoken request is now accumulated separately from the bounded conversation window. Hermes receives the complete request as the submitted prompt. Only the earlier spoken context is capped, and that context stays in memory instead of being written to
localStorage.The gateway also applies the profile's GPT-Live policy when Desktop has stale busy state. This prevents a late renderer update from changing queue or interrupt behavior.
Related Issue
No linked issue.
Type of Change
Changes Made
voice.gpt_live.busy_delegation_modewithinterruptas the default andqueueas the opt-in value.voiceContextand the live-session source out of persisted composer queue snapshots.How to Test
gpt-livein Desktop settings.Interrupt current turn. Start a Hermes turn, then make another GPT-Live request. Confirm the active turn follows the existing interrupt or redirect behavior.Queue for next turn. Start a Hermes turn, then make another GPT-Live request. Confirm it appears in the composer queue and runs after the active turn.Commands run:
The macOS ARM package built and signed successfully. Notarization was skipped because notarization credentials were not configured.
I also ran the repository's full
scripts/run_tests.sh -qcommand from a clean worktree with the same extras as CI. The macOS run was not green. The failures were in unrelated updater, WSL, PulseAudio, command-line, file, and search tests. Representative failures intest_update_autostash.py,test_voice_mode.py, andtest_execution_flag_detection.pyreproduce on the upstream base commit, so the full-suite checkbox remains open.Checklist
Code
fix(scope):,feat(scope):, etc.)pytest tests/ -qand all tests passDocumentation & Housekeeping
docs/, docstrings), or N/Acli-config.yaml.exampleif I added/changed config keys, or N/A. The Desktop schema comes fromhermes_cli/config_defaults.py.CONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows, or N/AScreenshots / Logs
No screenshot included. The setting uses the existing enum field component in Voice settings.