fix(tui): first-run setup preflight + actionable no-provider panel

- tui_gateway: new `setup.status` RPC that reuses CLI's
  `_has_any_provider_configured()`, so the TUI can ask the same question
  the CLI bootstrap asks before launching a session
- useSessionLifecycle: preflight `setup.status` before both `newSession`
  and `resumeById`, and render a clear "Setup Required" panel when no
  provider is configured instead of booting a session that immediately
  fails with `agent init failed`
- createGatewayEventHandler: drop duplicate startup resume logic in
  favor of the preflighted `resumeById`, and special-case the
  no-provider agent-init error as a last-mile fallback to the same
  setup panel
- add regression tests for both paths
This commit is contained in:
Brooklyn Nicholson 2026-04-17 10:58:01 -05:00
parent 5b386ced71
commit 0dd5055d59
9 changed files with 145 additions and 62 deletions

View file

@ -0,0 +1,18 @@
import type { PanelSection } from '../types.js'
export const SETUP_REQUIRED_TITLE = 'Setup Required'
export const buildSetupRequiredSections = (): PanelSection[] => [
{
text: 'Hermes needs a model provider before the TUI can start a session.'
},
{
rows: [
['1.', 'Exit with Ctrl+C'],
['2.', 'Run `hermes model` to choose a provider + model'],
['3.', 'Or run `hermes setup` for full first-time setup'],
['4.', 'Re-open `hermes --tui` when setup is done']
],
title: 'Next Steps'
}
]