Part of #25
Blocked by #28
Question
streamComplete catches exceptions and emits them as chat content (OpenAIProvider.kt:99), so a failure reads as a model answer. What is the contract instead — the Flow throws the classified error, or emits a typed terminal event? What happens to partial content already emitted before the failure (keep and mark truncated, or discard)? How do collectors in the agent/chat path distinguish an error from a completed stream? Real SSE streaming is out of scope.
Part of #25
Blocked by #28
Question
streamCompletecatches exceptions and emits them as chat content (OpenAIProvider.kt:99), so a failure reads as a model answer. What is the contract instead — the Flow throws the classified error, or emits a typed terminal event? What happens to partial content already emitted before the failure (keep and mark truncated, or discard)? How do collectors in the agent/chat path distinguish an error from a completed stream? Real SSE streaming is out of scope.