mistral: Fix default for `object` field in StreamResponse (#62517)
# Objective
- Streaming completions fail for any model served through Mistral that
omits `object` in its stream chunks. Zed's `StreamResponse` requires the
field, so the response is rejected before any text is rendered and the
agent panel shows `missing field object at line 1 column 167`.
- This now matters because Mistral serves Z.ai's GLM 5.2 (`glm-5-2` /
`zai-glm-5-2`), which is usable in Zed via a custom model entry, but is
unreachable today because of this deserialization failure. Its first
stream chunk omits `object`, while every subsequent chunk includes it.
- No linked issue.
## Solution
- Mark `StreamResponse::object` as `#[serde(default)]` in
`crates/mistral/src/mistral.rs`.
- The field is never read anywhere in the codebase, so defaulting it to
an empty string when absent loses nothing and keeps the struct's shape
unchanged for serialization.
## Testing
- `cargo check -p mistral` passes.
- Verified end to end in Zed: with the settings below, selecting "GLM
5.2" in the agent panel and sending a message previously errored
immediately; after this change the response streams normally.
```json
"language_models": {
"mistral": {
"available_models": [
{
"name": "zai-glm-5-2",
"display_name": "GLM 5.2",
"max_tokens": 1048576,
"supports_tools": true,
"supports_images": false,
"supports_thinking": true
}
]
}
}
```
- Tested on macOS only. The change is platform-independent, so no
platform-specific risk is expected.
## Self-Review Checklist:
- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments (none added)
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines) (no UI change)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable
(deserialization only, no measurable cost)
---
Release Notes:
- Fixed streaming failing for Mistral-hosted models that omit the
`object` field in stream chunks, such as GLM 5.2.
Co-authored-by: Bennet Bo Fenner <bennet@zed.dev>
38c5dd7c98ummon-v committed on 8/25/2026, 9:46:30 AM· committed by GitHubparent96382d8