/** Translate model callbacks to small wire events, including corrective-pass resets. */ export function createTextStreamEvents(sendEvent) { const emit = (event, target) => (chunk, fullText) => { if (chunk === "" && fullText === "") sendEvent("replace", {target, text: ""}); else if (chunk) sendEvent(event, {chunk}); }; return {onChunk: emit("chunk", "reply"), onThinking: emit("thinking", "thinking")}; }