stream-response.txt
My model call waits for the whole response before showing anything,
and it feels broken: <paste the endpoint and the client code>

Add streaming end to end:
- Server: stream from the provider and forward to the client without
  buffering the whole thing.
- Client: render tokens as they arrive, scrolling only if the user is
  already at the bottom.
- A stop button that actually aborts the upstream request, so I'm not
  billed for output nobody sees.
- Handle the stream failing halfway: keep what arrived, show a clear
  error, offer retry.
- Handle the user navigating away mid-stream.

Tell me what changes for error handling, since headers are sent before
the model has finished.

The stop button must abort upstream, not just stop rendering. Otherwise you pay for every token of a response the user rejected two seconds in.