@startuml
[KeyResolver] -> [RootReducer] : Action
[WsClient.messages] -> [RootReducer] : ServerEventReceived
[WsClient.connection] -> [RootReducer] : Connected/Disconnected/RetryScheduled

[RootReducer] --> [SnapshotPhaseReducer]
[RootReducer] --> [InputReducer]
[RootReducer] --> [SessionsReducer]
[RootReducer] --> [ConnectionReducer]
[RootReducer] --> [ProviderReducer]

[RootReducer] -> [EffectDispatcher] : List<Effect>
[EffectDispatcher] -> [WsClient] : SendWs
[EffectDispatcher] -> [System] : Quit

clock over [WsClient] : exponential backoff reconnect

[RootReducer] --> [Renderer] : TuiState
@enduml
