Fixed in: @ai-sdk/openai 4.0.100, @ai-sdk/anthropic 4.0.86, @ai-sdk/google 4.0.103 (ai 7.0.149)
A stream that ends cleanly before the provider's terminal event yields a normal finish part with finishReason 'other' and no error: the @ai-sdk/openai (Chat and Responses), @ai-sdk/anthropic and @ai-sdk/google adapters start from 'other' and emit it from flush(). vercel/ai#19165 fixed the same case in @ai-sdk/openai-compatible (an InvalidResponseDataError, then finish 'error'), so ollama-openai passes. Fixed by #23778, which adds an 'interrupted' finish reason in ai 7.0.149, and #23814, which makes the four adapters emit it when the stream ends without the provider's completion signal. The shim maps 'interrupted' to finish none and stream.completed false; all four cells pass on ai 7.0.153.