Streaming (SSE)
ngx-prompt-kit original — not part of ibelick/prompt-kit
Transport helpers for consuming Server-Sent-Event chat streams. consumeSseFrames() is a pure frame splitter; readSseHttpEvents() adapts an Angular HttpClient event stream into per-frame callbacks. The caller owns interpreting each frame.
Examples
Frame parser playground
consumeSseFrames() splits a raw SSE body into the data payload of each complete frame, returning any partial tail. Paste raw frames below and parse them.
import { consumeSseFrames } from 'ngx-prompt-kit/streaming';
const frames: string[] = [];
const tail = consumeSseFrames(rawBuffer, (data) => frames.push(data));
// `tail` is any incomplete trailing frame — prepend it to the next chunk.Installation
Add the SSE streaming helpers to your project.
ng generate ngx-prompt-kit:streamingHTTP usage
readSseHttpEvents() handles the cumulative partialText / frame buffering; your callback parses each frame and decides what is a result or an error.
import { readSseHttpEvents } from 'ngx-prompt-kit/streaming';
let result: SendResult | null = null;
await readSseHttpEvents(
http.post('/api/chat', body, { observe: 'events', reportProgress: true, responseType: 'text' }),
(data) => {
const payload = JSON.parse(data);
if (payload.type === 'chunk') appendToken(payload.text);
else if (payload.type === 'done') result = payload.result;
},
);