from __future__ import annotations from typing import Any class OpenAIStreamAccumulator: """Normalize incremental deltas and provider-specific full-message snapshots.""" def __init__(self) -> None: self.text = "" self.saw_delta = False def feed(self, choice: dict[str, Any]) -> str: delta = choice.get("delta") if isinstance(delta, dict) and delta.get("content") is not None: chunk = str(delta.get("content") or "") if chunk: self.saw_delta = True self.text += chunk return chunk message = choice.get("message") if not isinstance(message, dict) or message.get("content") is None: return "" snapshot = str(message.get("content") or "") if not snapshot: return "" if not self.text: self.text = snapshot return snapshot if snapshot == self.text or self.text.startswith(snapshot): return "" if snapshot.startswith(self.text): suffix = snapshot[len(self.text):] self.text = snapshot return suffix if self.saw_delta: # A final full snapshot cannot safely replace chunks already delivered. return "" return ""