* fix(proxy): keep provider fields on streamed chat completion chunks
The hand-written serializer for plain text chunks dropped every field it did not list, so Azure's per-choice content_filter_results, the chunk's obfuscation, and delta reasoning_details and reasoning_items never reached clients since v1.86.0. Every chunk now serializes with model_dump_json, which keeps them and is faster per chunk.
* fix(proxy): send streamed chunk frames as bytes so plain text frames keep their type
* fix(proxy): send null for chat chunk values JSON cannot encode instead of failing the stream
* fix(proxy): drop chat chunk fields JSON cannot encode instead of failing the stream
A callback or provider value pydantic cannot encode, like invalid UTF-8 bytes, a
lone surrogate, a circular dict, or an unknown type, now leaves only that field out
of the frame with a warning naming it. Responses API events keep raising.
* fix(proxy): drop only the nested chunk value JSON cannot encode and keep lone surrogates
Main removed the StreamingChoices import, so the field drop helpers now take
any BaseModel. A value JSON cannot encode is left out down to the nested key or
list item that holds it, and a lone surrogate goes out as an ASCII JSON escape.
* fix(proxy): keep streaming when an unencodable value sits under non-string dict keys
---------
Co-authored-by: mateo-berri <277851410+mateo-berri@users.noreply.github.com>