Skip to content

fix(webui): show active fallback model - #67763

Open
XDayonline wants to merge 2 commits into
NousResearch:mainfrom
XDayonline:fix/webui-runtime-model-badge
Open

fix(webui): show active fallback model#67763
XDayonline wants to merge 2 commits into
NousResearch:mainfrom
XDayonline:fix/webui-runtime-model-badge

Conversation

@XDayonline

Copy link
Copy Markdown

Summary

  • publish fallback and primary runtime identity in TUI session.info events
  • make the WebUI chat sidebar prefer the PTY session’s live model over config.yaml
  • show an amber fallback badge with the originating primary model in its tooltip
  • clear the fallback badge before the next primary turn starts
  • preserve this metadata through compute-host isolation

Closes #54509

Verification

  • python3 -m pytest tests/ -o 'addopts=' -q \u2014 377 passed\n- npm run test (web) \u2014 101 passed\n- npm run typecheck (web)\n- npm run lint (web; existing warnings only, exit 0)\n- NODE_OPTIONS=--max-old-space-size=4096 npm run build (web)

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/tui Terminal UI (ui-tui/ + tui_gateway/) comp/dashboard Web dashboard / control panel UI (dashboard/, landing) sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state labels Jul 19, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

This was generated by AI during triage.

Related to #54509 and the broader #54895 implementation. This branch is a focused TUI/WebUI runtime-model badge path; maintainers should choose or consolidate the event contract.

@teknium1

Copy link
Copy Markdown
Contributor

Thanks for narrowing the runtime-model badge work to the PTY event path. The current-main premise is confirmed: web/src/components/ChatSidebar.tsx:315 prefers the config-derived model, while tui_gateway/server.py:4169-4171 has no fallback identity in session.info.

Problems

  • The added tests do not exercise the live turn path. tui_gateway/server.py:11006 runs the agent and :11341 emits the final session.info, but the PR only unit-tests _session_info() and a handcrafted compute-host frame. That leaves the fallback activation → PTY event → sidebar contract unverified.

Suggested changes

  • Add a regression test that drives a fallback-active agent through the TUI turn path and asserts the emitted session.info contains the fallback model and originating primary identity.
  • Salvage the focused event-contract changes onto current tui_gateway/server.py, preserving its compute-host metadata mirror at :1407-1465.

Automated hermes-sweeper review.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 30, 2026
@GottZ

GottZ commented Aug 3, 2026

Copy link
Copy Markdown

This was generated by AI during triage.

Summary

Two PRs address #54509. #54895 exposes fallback identity and renders an indicator but consumes the independent sidecar session rather than the response-generating PTY path, while #67763 carries live PTY runtime identity to the sidebar, preserves compute-host metadata, and resets stale fallback state before the next primary turn.

Related pull requests

  • feat(webui): show runtime model and fallback indicator in sidebar badge #54895 [closed] duplicate — (+661/-432) — n/a: This closed PR remains relevant as the earlier fallback-indicator implementation, but its sidebar reads the independent tool-sidecar state and its diff bundles unrelated provider-retry, model-normalization, reasoning, and context-length changes. Despite its keep_open review, keep it closed as superseded by focused fix(webui): show active fallback model #67763, which uses the active PTY event path.
  • fix(webui): show active fallback model #67763 best fix — (+321/-4) — n/a: The focused diff publishes fallback and primary identity through the live PTY session.info path, prefers that runtime model in the sidebar, mirrors compute-host metadata, and clears the badge before a new primary turn. The maintainer-bot keep_open review requested a live-turn regression; the current diff now drives prompt.submit through fallback activation and asserts the final emitted session.info identity.

Duplicates

#54895 and #67763 substantially overlap on fallback metadata and the WebUI badge, but #67763 is the focused replacement that corrects #54895's sidecar-versus-PTY data path; treat closed #54895 as superseded by #67763.

Suggested consolidation

Keep #67763 open with a salvage path: retain its focused PTY session.info contract, runtime-model selector, compute-host mirror, reset behavior, and newly added live-turn regression while reconciling the branch with current tui_gateway/server.py. Keep #54895 closed as the broader superseded duplicate because its relevant UI approach reads the wrong session and is mixed with unrelated changes.

Complex graph

flowchart LR
    classDef open fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a
    classDef merged fill:#dcfce7,stroke:#15803d,color:#14532d
    classDef closed fill:#e5e7eb,stroke:#6b7280,color:#1f2937
    classDef unverified fill:#f3f4f6,stroke:#9ca3af,color:#374151
    classDef best stroke-width:3px,stroke:#b45309
    classDef target stroke-width:3px,stroke:#4338ca
    I54509(["issue #54509 (open)"])
    subgraph Dup54895 ["PRs duplicating each other"]
        P54895["PR #54895 (closed)"]
        P67763["PR #67763 (open)"]
    end
    P67763 -->|best fix| I54509
    class I54509 open
    class P54895 closed
    class P67763 open
    class P67763 best
    class P67763 target
    click I54509 "https://github.com/NousResearch/hermes-agent/issues/54509"
    click P54895 "https://github.com/NousResearch/hermes-agent/pull/54895"
    click P67763 "https://github.com/NousResearch/hermes-agent/pull/67763"
Loading

Graph: solid arrow = fixes / best fix, dashed arrow = partial or unverified (see edge label); boxed group = PRs duplicating each other; amber border = best fix; indigo border = target; gray node = closed (state tag in the node label).

Cross-PR triage: Reviewed 2 pull requests and 1 issue in this complex. Each diff was read against this issue; Assessment working set: 86 kB of PR diffs, 6 kB of issue/PR text, 4 kB of discussion (8 comments), 3 verify verdicts. verdicts reflect diff content, not PR titles. Part of an automated triage batch.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/dashboard Web dashboard / control panel UI (dashboard/, landing) comp/tui Terminal UI (ui-tui/ + tui_gateway/) P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:risk-session-state Sweeper risk: may lose/corrupt/mis-associate session or context state type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

WebUI model badge does not reflect runtime model during fallback activation

4 participants