Chatbot Stream Endpoint
Streamed variant of /chatbot: emits the reply as SSE paragraph events so the first bubble renders as soon as the first paragraph is generated. The buffered /chatbot endpoint is unchanged and remains the fallback for old app versions and for client-side retry.
Events: meta {conversation_id, protocol} → paragraph {index, text}* → done {conversation_id, paragraphs, sources, bible_verses} | error {code, message, paragraphs_emitted}. Comment lines (": ping") are heartbeats.
Mid-stream provider failure emits an error event and persists nothing — the client discards the partial bubbles and retries fresh.
request.sendAudio is deliberately ignored here: voiceover for streamed replies is fetched separately by the client (/tts), since audio for a reply that is still generating can't be inlined into the SSE stream.
Headers
Request body
Response
Successful Response