hermes-agent/apps/desktop/src/lib
Ben 385a508e43 fix(desktop): don't fall back to a dead WS ticket on OAuth re-mint failure
The reconnect and boot paths resolved the WS URL with
`(await getGatewayWsUrl().catch(() => null)) || conn.wsUrl`. For OAuth
gateways the cached conn.wsUrl carries a single-use, ~30s-TTL ticket; the
desktop connection is memoized for the process lifetime, so on reconnect
that ticket is both expired and already consumed. A failed fresh mint
therefore fell back to a guaranteed-dead ticket and surfaced as an opaque
"connection closed", masking the gateway's actionable "session expired,
sign in again" message.

Extract resolveGatewayWsUrl() (with unit tests): in OAuth mode a mint
failure throws a tagged GatewayReauthRequiredError instead of falling back;
token/local modes keep the long-lived-token fallback. Thread that error
through the reconnect path so requestGateway surfaces the reauth message
rather than the generic transport error that triggered the retry.

Co-authored-by: Kenmege <205099287+Kenmege@users.noreply.github.com>
2026-06-04 01:11:34 -07:00
..
ansi.test.ts fix(desktop): triage batch of GUI quality-of-life fixes (#37536) 2026-06-02 16:33:22 -04:00
ansi.ts fix(desktop): triage batch of GUI quality-of-life fixes (#37536) 2026-06-02 16:33:22 -04:00
chat-messages.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
chat-messages.ts fix(desktop): render approval/sudo/secret prompts so tools stop silently timing out (#38578) 2026-06-04 01:53:51 +00:00
chat-runtime.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
chat-runtime.ts feat(desktop): persistent needs-input indicator + icon button consolidation 2026-06-03 21:44:30 -05:00
clipboard.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
commit-changelog.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
commit-changelog.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
desktop-slash-commands.test.ts Merge pull request #38517 from NousResearch/bb/desktop-yolo-statusbar-toggle 2026-06-03 23:33:09 +00:00
desktop-slash-commands.ts Merge pull request #38517 from NousResearch/bb/desktop-yolo-statusbar-toggle 2026-06-03 23:33:09 +00:00
embedded-images.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
embedded-images.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
external-link.test.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
external-link.tsx Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
gateway-events.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
gateway-ws-url.test.ts fix(desktop): don't fall back to a dead WS ticket on OAuth re-mint failure 2026-06-04 01:11:34 -07:00
gateway-ws-url.ts fix(desktop): don't fall back to a dead WS ticket on OAuth re-mint failure 2026-06-04 01:11:34 -07:00
haptics.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
icons.ts desktop: OAuth-aware remote gateway connection 2026-06-04 01:11:34 -07:00
incremental-external-store-runtime.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
katex-memo.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
local-preview.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
markdown-code.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
markdown-code.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
markdown-preprocess.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
media.ts feat(desktop): session hygiene, archive, media streaming + connecting overlay (#37099) 2026-06-01 20:41:34 -05:00
model-status-label.test.ts feat(desktop): inline model picker in the status bar 2026-06-02 19:09:41 -05:00
model-status-label.ts feat(desktop): inline model picker in the status bar 2026-06-02 19:09:41 -05:00
preview-targets.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
preview-targets.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
provider-setup-errors.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
provider-setup-errors.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
runtime-readiness.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
runtime-readiness.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
session-export.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
speech-text.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
statusbar.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
storage.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
todos.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
todos.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
tool-result-summary.test.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
tool-result-summary.ts fix(desktop): triage batch of GUI quality-of-life fixes (#37536) 2026-06-02 16:33:22 -04:00
use-enter-animation.ts fix(desktop): prevent IME Enter from splitting messages and viewport resize from disarming scroll anchor (#38333) 2026-06-03 20:14:52 +00:00
utils.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
voice-playback.ts Add Hermes desktop app (#20059) 2026-05-31 17:46:56 -05:00
yolo-session.ts Merge pull request #38517 from NousResearch/bb/desktop-yolo-statusbar-toggle 2026-06-03 23:33:09 +00:00