Epic: #282 | Phase: 2 | Priority: P1 | Size: L
Problem
agent/mod.rs is still 2334 lines after first decomposition. Core loop, streaming, and persistence logic are intermixed.
Solution
Extract two submodules:
agent/streaming.rs — process_response_streaming(), call_llm_with_timeout()
agent/persistence.rs — persist_message(), check_summarization(), load_history()
Target: mod.rs under 1000 LOC (run loop + dispatch only).