Sidebar Diagnostic Surfaces
BMO’s sidebar uses diagnostic intents to route clicks to the most relevant diagnostic surface instead of always opening a generic panel.
How it works
Section titled “How it works”When you click a sidebar item, BMO checks the current system state and derives
the highest-priority DiagnosticIntent:
| Priority | Intent | Trigger | Dialog Opened |
|---|---|---|---|
| 1 | provider_error | Provider health shows error/cooldown | Provider diagnostics |
| 2 | mcp_auth_required | MCP connection in error state | MCP connection dialog |
| 3 | run_failed | Retained last run ended in failure | Run result review |
| 4 | workspace_contention | Workspace conflict detected | Workspace strategy dialog |
| 5 | context_pruning_active | Context shedding/pruning active | Context lineage inspector |
Which sidebar items
Section titled “Which sidebar items”- Provider health indicator → routes to provider diagnostics when error state active
- Protocols / MCP indicator → routes to MCP connection dialog when auth required
- Context / Lineage indicator → routes to context lineage inspector when pruning active
- Run result indicator → routes to run result review when a retained run failed
Live Run rows are not diagnostic-intent routing. During an active run, those rows open the Run Activity dialog as their normal action; diagnostic routing only takes over once BMO is surfacing a retained failure.
Visual hint
Section titled “Visual hint”When a diagnostic intent is active for a sidebar item, its description shows a
! prefix (e.g., ! openai — cooldown) so you know an actionable
diagnostic surface is available.
Fallback behavior
Section titled “Fallback behavior”When no diagnostic intent is active, sidebar clicks fall back to their default action (e.g., opening the generic context hub).
Related read-only surfaces
Section titled “Related read-only surfaces”These sidebar rows are not intent-routed; they always open a status report:
- Ripple —
/rippleorbmo config show-ripple(Ripple Edits) - OAI-compat —
/openai-compatorbmo config show-openai-compat - Files —
/filesorbmo config show-file-tools(File Tools Telemetry) - Runtime incidents —
/incidentsfor bounded posture;/incidentremains capture and/incident-issueremains dry-run issue drafting
Implementation
Section titled “Implementation”- Type:
DiagnosticIntent(string constants ininternal/ui/model/diagnostic_intent.go) - Registry: maps each intent to a dialog opener function
- Derivation:
activeDiagnosticIntent()inspects provider health, MCP state, run UX, and prompt trace segments - Dispatch:
sidebarActionDiagnosticIntentininternal/ui/model/sidebar_actions.go