## 1. Shared Models - [x] 1.1 Create ChatRequest.cs in ChatAgent.Shared/Models with a Messages list property ## 2. API Backend - [x] 2.1 Add appsettings.json to ChatAgent.Api with ResponsesApi:BaseUrl and ResponsesApi:Model - [x] 2.2 Register an HttpClient for the Responses API proxy in Api Program.cs - [x] 2.3 Create ChatController with POST /api/chat that proxies to the Responses API with streaming - [x] 2.4 Parse Responses API SSE stream, extract response.output_text.delta events, re-emit as simplified SSE to client ## 3. Client Streaming - [x] 3.1 Add a streaming SendChatAsync method to ChatApiClient that uses SetBrowserResponseStreamingEnabled and HttpCompletionOption.ResponseHeadersRead - [x] 3.2 Parse the simplified SSE stream line-by-line, yielding text deltas ## 4. Chat Page Updates - [x] 4.1 Replace hardcoded response in Chat.razor with a call to ChatApiClient.SendChatAsync - [x] 4.2 Append tokens to the assistant message incrementally with StateHasChanged after each delta - [x] 4.3 Add a thinking indicator shown until the first token arrives - [x] 4.4 Disable input field and send button while streaming is in progress - [x] 4.5 Handle errors — display error message if API call fails - [x] 4.6 Auto-scroll during streaming (not just at the end) ## 5. Verify - [x] 5.1 Run dotnet build to confirm no errors - [ ] 5.2 Manually verify: send a message, see streaming response from Claude