Phase 12 · Server-Sent Events (SSE) · Spring MVC + Reactor · ChatClient.stream()
POST /api/stream/plan, which runs
PlannerAgent → optional ResearchAgent (sync), then streams the coaching response token-by-token
via ChatClient.stream().content() → Flux<String> → SSE.
useChat() hook consuming a
result.toDataStreamResponse() from a Next.js App Router POST route.