refactor(#288): split ChatViewModel god object (CODE-34) (#354)
* refactor(#288): extract ChatPersistenceRepository from ChatViewModel
* refactor(#288): extract ChatWsEventReducer pure state reducer
* refactor(#288): extract SlashCommandDispatcher
* refactor(#288): wire SlashCommandDispatcher into ViewModel
* refactor(#288): extract ChatSearchController
* refactor(#288): final cleanup — remove unused import, ktlint pass
* fix: compile & test fixes — GatewayReady handler, Gson import, MessageStart id, reducer args
* fix: align reducer handlers with old behavior — onMessageComplete onMessageDone onMessageStart
* chore: remove plan file from PR
* chore: remove unrelated Room schema from PR
* fix: add session filtering to reducer, fix onToolStart streaming state
* chore: remove schema file again
* fix: pass currentSessionId to reducer, align onMessageStart and onThinkingDelta state
* chore: remove schema
---------
Co-authored-by: M57 <hy4ri@users.noreply.github.com>