Summary
src/openhuman/providers/reliable.rs — stream_chat_with_system() only tries the first provider+model that supports streaming. If that single attempt fails, the error propagates immediately.
In contrast, non-streaming methods (chat_with_system, chat, chat_with_tools) implement full retry + provider failover logic.
Impact
Medium — Streaming calls are significantly less reliable than non-streaming equivalents. A transient API error (rate limit, timeout) that non-streaming would silently retry causes streaming to fail completely.
Suggested Fix
Implement at least one retry with provider/model fallback for streaming, matching the non-streaming behavior. Or degrade gracefully to non-streaming on failure and surface a warning.
Summary
src/openhuman/providers/reliable.rs—stream_chat_with_system()only tries the first provider+model that supports streaming. If that single attempt fails, the error propagates immediately.In contrast, non-streaming methods (
chat_with_system,chat,chat_with_tools) implement full retry + provider failover logic.Impact
Medium — Streaming calls are significantly less reliable than non-streaming equivalents. A transient API error (rate limit, timeout) that non-streaming would silently retry causes streaming to fail completely.
Suggested Fix
Implement at least one retry with provider/model fallback for streaming, matching the non-streaming behavior. Or degrade gracefully to non-streaming on failure and surface a warning.