TypeScript 97.4%
SQL 1%
JavaScript 0.9%
CSS 0.6%
1// (b) Streaming Responses request: exact event type names (ordered, with counts) + usage shape from response.completed.2import { client, attempt, save, PROBE_MODELS, REASONING_MODELS, summarizeResponse } from "./lib";3const out: any[] = [];4for (const model of PROBE_MODELS) {5 out.push(await attempt(`stream:${model}`, async () => {6 const params: any = { model, input: "Say hello in five words.", max_output_tokens: 200, stream: true };7 if (REASONING_MODELS.has(model)) params.reasoning = { summary: "auto" };8 const stream = await client.responses.create(params);9 const order: string[] = []; const counts: Record<string, number> = {}; const samples: Record<string, any> = {};10 let final: any = null; let text = ""; let seqs: number[] = [];11 for await (const ev of stream as any) {12 counts[ev.type] = (counts[ev.type] ?? 0) + 1;13 if (!samples[ev.type]) { order.push(ev.type); const { response, ...rest } = ev; samples[ev.type] = response ? { ...rest, response: "<omitted>" } : rest; }14 if (typeof ev.sequence_number === "number") seqs.push(ev.sequence_number);15 if (ev.type === "response.output_text.delta") text += ev.delta;16 if (ev.type === "response.completed" || ev.type === "response.incomplete" || ev.type === "response.failed") final = ev.response;17 }18 return { event_order: order, counts, samples, text, sequence_numbers_monotonic: seqs.every((s, i) => i === 0 || s === seqs[i - 1] + 1), final: final ? summarizeResponse(final) : null };19 }));20}21save("03-stream", out);22