llm-stream-assemble 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +390 -0
- package/dist/adapters/anthropic.cjs +312 -0
- package/dist/adapters/anthropic.cjs.map +1 -0
- package/dist/adapters/anthropic.d.cts +11 -0
- package/dist/adapters/anthropic.d.ts +11 -0
- package/dist/adapters/anthropic.js +310 -0
- package/dist/adapters/anthropic.js.map +1 -0
- package/dist/adapters/openai-chat.cjs +499 -0
- package/dist/adapters/openai-chat.cjs.map +1 -0
- package/dist/adapters/openai-chat.d.cts +9 -0
- package/dist/adapters/openai-chat.d.ts +9 -0
- package/dist/adapters/openai-chat.js +497 -0
- package/dist/adapters/openai-chat.js.map +1 -0
- package/dist/adapters/openai-compatible.cjs +519 -0
- package/dist/adapters/openai-compatible.cjs.map +1 -0
- package/dist/adapters/openai-compatible.d.cts +15 -0
- package/dist/adapters/openai-compatible.d.ts +15 -0
- package/dist/adapters/openai-compatible.js +517 -0
- package/dist/adapters/openai-compatible.js.map +1 -0
- package/dist/adapters/openai-responses.cjs +444 -0
- package/dist/adapters/openai-responses.cjs.map +1 -0
- package/dist/adapters/openai-responses.d.cts +8 -0
- package/dist/adapters/openai-responses.d.ts +8 -0
- package/dist/adapters/openai-responses.js +442 -0
- package/dist/adapters/openai-responses.js.map +1 -0
- package/dist/core/index.cjs +816 -0
- package/dist/core/index.cjs.map +1 -0
- package/dist/core/index.d.cts +18 -0
- package/dist/core/index.d.ts +18 -0
- package/dist/core/index.js +808 -0
- package/dist/core/index.js.map +1 -0
- package/dist/index.cjs +2238 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +66 -0
- package/dist/index.d.ts +66 -0
- package/dist/index.js +2206 -0
- package/dist/index.js.map +1 -0
- package/dist/types-CskRfrmD.d.cts +176 -0
- package/dist/types-CskRfrmD.d.ts +176 -0
- package/package.json +95 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/utils/bytes.ts","../src/core/utils/source.ts","../src/core/assembly/process-payload.ts","../src/core/parse-partial-json.ts","../src/core/assembler/event-assembler.ts","../src/core/assemble-payloads.ts","../src/core/utils/sse-parser.ts","../src/core/parse-sse.ts","../src/core/assemble-stream.ts","../src/core/assemble-response.ts","../src/core/assemble-from-file.ts","../src/core/create-assembly-transform.ts","../src/adapters/errors.ts","../src/adapters/utils.ts","../src/adapters/openai-chat/parser/errors.ts","../src/adapters/openai-chat/parser/chunks.ts","../src/adapters/openai-chat/parser/stream-parser.ts","../src/adapters/openai-chat/parser/response.ts","../src/adapters/openai-chat/parser/types.ts","../src/adapters/openai-chat/parser/index.ts","../src/adapters/openai-chat.ts","../src/adapters/openai-compatible.ts","../src/adapters/anthropic.ts","../src/adapters/openai-responses.ts","../src/transforms/collect-stream.ts","../src/transforms/to-sse.ts","../src/transforms/tap-events.ts","../src/helpers/match-event.ts","../src/helpers/type-guards.ts"],"names":["payload","finishReason","parseResponse","providerErrorChunks","usageChunk","metadataChunks","reasoningChunks","callId","itemId","encoder"],"mappings":"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","file":"index.js","sourcesContent":["export class Utf8StreamDecoder {\n\tprivate readonly decoder = new TextDecoder();\n\n\tdecode(chunk: Uint8Array): string {\n\t\treturn this.decoder.decode(chunk, { stream: true });\n\t}\n\n\tflush(): string {\n\t\treturn this.decoder.decode();\n\t}\n}\n\nconst encoder = new TextEncoder();\n\nexport function utf8ByteLength(value: string): number {\n\treturn encoder.encode(value).byteLength;\n}\n","import { Utf8StreamDecoder } from \"./bytes\";\n\nexport async function* readableStreamToStrings(\n\tsource: ReadableStream<Uint8Array>,\n): AsyncIterable<string> {\n\tconst reader = source.getReader();\n\tconst decoder = new Utf8StreamDecoder();\n\tlet completed = false;\n\n\ttry {\n\t\twhile (true) {\n\t\t\tconst { done, value } = await reader.read();\n\t\t\tif (done) {\n\t\t\t\tcompleted = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tconst decoded = decoder.decode(value);\n\t\t\tif (decoded.length > 0) {\n\t\t\t\tyield decoded;\n\t\t\t}\n\t\t}\n\n\t\tconst flushed = decoder.flush();\n\t\tif (flushed.length > 0) {\n\t\t\tyield flushed;\n\t\t}\n\t} finally {\n\t\tif (!completed) {\n\t\t\tawait reader.cancel().catch(() => undefined);\n\t\t}\n\t\treader.releaseLock();\n\t}\n}\n\nexport function isReadableStream(\n\tsource: ReadableStream<Uint8Array> | AsyncIterable<string>,\n): source is ReadableStream<Uint8Array> {\n\treturn typeof (source as ReadableStream<Uint8Array>).getReader === \"function\";\n}\n\nexport function sourceToStrings(\n\tsource: ReadableStream<Uint8Array> | AsyncIterable<string>,\n): AsyncIterable<string> {\n\treturn isReadableStream(source) ? readableStreamToStrings(source) : source;\n}\n\nexport function errorFromUnknown(error: unknown): Error {\n\treturn error instanceof Error ? error : new Error(String(error));\n}\n\nexport function prefixedError(message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${message}`);\n}\n","import type { EventAssembler } from \"../assembler/event-assembler\";\nimport type { AssembleOptions, StreamAdapter, StreamEvent } from \"../types\";\nimport { errorFromUnknown, prefixedError } from \"../utils/source\";\n\nexport type ProcessPayloadResult =\n\t| { kind: \"done-marker\" }\n\t| { kind: \"events\"; events: StreamEvent[] }\n\t| { kind: \"recoverable-error\"; event: StreamEvent };\n\nexport function isDoneMarker(payload: string): boolean {\n\treturn payload.trim() === \"[DONE]\";\n}\n\nexport function processPayload(\n\tpayload: string,\n\tassembler: EventAssembler,\n\tadapter: StreamAdapter,\n\toptions: AssembleOptions,\n): ProcessPayloadResult {\n\tif (isDoneMarker(payload)) {\n\t\treturn { kind: \"done-marker\" };\n\t}\n\n\tlet chunks;\n\ttry {\n\t\tchunks = adapter.parseChunk(payload);\n\t} catch (error) {\n\t\tif (!options.recoverMalformed) {\n\t\t\tthrow error;\n\t\t}\n\t\treturn {\n\t\t\tkind: \"recoverable-error\",\n\t\t\tevent: {\n\t\t\t\ttype: \"error\",\n\t\t\t\terror: prefixedError(errorFromUnknown(error).message),\n\t\t\t\trecoverable: true,\n\t\t\t},\n\t\t};\n\t}\n\n\tconst events: StreamEvent[] = [];\n\tfor (const chunk of chunks) {\n\t\tevents.push(...assembler.push(chunk));\n\t}\n\treturn { kind: \"events\", events };\n}\n\nexport function resolveTerminalFlush(\n\tassembler: EventAssembler,\n\tstate: { sawTerminalMarker: boolean; aborted: boolean },\n): StreamEvent[] {\n\tif (state.aborted) {\n\t\treturn assembler.flush({ terminalReason: \"aborted\" });\n\t}\n\tif (state.sawTerminalMarker) {\n\t\treturn assembler.flush({ terminalReason: \"stop\" });\n\t}\n\tif (assembler.hasFinished()) {\n\t\treturn assembler.flush();\n\t}\n\treturn assembler.flush({ terminalReason: \"incomplete\" });\n}\n","import type { PartialJSONResult } from \"./types\";\n\nexport function parsePartialJSON(input: string): PartialJSONResult {\n\tconst trimmed = input.trim();\n\tif (trimmed.length === 0) {\n\t\treturn { complete: false };\n\t}\n\n\tconst complete = parseComplete(trimmed);\n\tif (complete.ok) {\n\t\treturn { complete: true, value: complete.value };\n\t}\n\n\tconst end = findFirstCompleteValueEnd(trimmed);\n\tif (end !== undefined) {\n\t\tconst parsed = parseComplete(trimmed.slice(0, end));\n\t\tif (parsed.ok) {\n\t\t\treturn { complete: false, value: parsed.value };\n\t\t}\n\t}\n\n\tfor (const candidate of repairedCandidates(trimmed)) {\n\t\tconst parsed = parseComplete(candidate);\n\t\tif (parsed.ok) {\n\t\t\treturn { complete: false, value: parsed.value };\n\t\t}\n\t}\n\n\treturn { complete: false };\n}\n\nfunction parseComplete(input: string): { ok: true; value: unknown } | { ok: false } {\n\ttry {\n\t\treturn { ok: true, value: JSON.parse(input) as unknown };\n\t} catch {\n\t\treturn { ok: false };\n\t}\n}\n\nfunction findFirstCompleteValueEnd(input: string): number | undefined {\n\tlet inString = false;\n\tlet escaped = false;\n\tconst stack: string[] = [];\n\n\tfor (let index = 0; index < input.length; index += 1) {\n\t\tconst char = input[index];\n\n\t\tif (inString) {\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t} else if (char === \"\\\\\") {\n\t\t\t\tescaped = true;\n\t\t\t} else if (char === '\"') {\n\t\t\t\tinString = false;\n\t\t\t\tif (stack.length === 0) {\n\t\t\t\t\treturn index + 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"') {\n\t\t\tinString = true;\n\t\t} else if (char === \"{\" || char === \"[\") {\n\t\t\tstack.push(char === \"{\" ? \"}\" : \"]\");\n\t\t} else if (char === \"}\" || char === \"]\") {\n\t\t\tif (stack.pop() !== char) return undefined;\n\t\t\tif (stack.length === 0) {\n\t\t\t\treturn index + 1;\n\t\t\t}\n\t\t} else if (stack.length === 0 && isPrimitiveTerminator(input, index)) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\nfunction isPrimitiveTerminator(input: string, index: number): boolean {\n\tif (!/[\\s,}\\]]/.test(input[index] ?? \"\")) return false;\n\tconst prefix = input.slice(0, index).trim();\n\tif (prefix.length === 0) return false;\n\treturn parseComplete(prefix).ok;\n}\n\nfunction repairedCandidates(input: string): string[] {\n\tconst candidates = new Set<string>();\n\tconst base = closeContainers(closeOpenString(input));\n\tcandidates.add(base);\n\n\tfor (const trimmed of trimDanglingValues(input)) {\n\t\tcandidates.add(closeContainers(closeOpenString(trimmed)));\n\t}\n\n\treturn [...candidates];\n}\n\nfunction closeOpenString(input: string): string {\n\tlet inString = false;\n\tlet escaped = false;\n\n\tfor (const char of input) {\n\t\tif (inString) {\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t} else if (char === \"\\\\\") {\n\t\t\t\tescaped = true;\n\t\t\t} else if (char === '\"') {\n\t\t\t\tinString = false;\n\t\t\t}\n\t\t} else if (char === '\"') {\n\t\t\tinString = true;\n\t\t}\n\t}\n\n\tif (!inString) return input;\n\treturn escaped ? `${input.slice(0, -1)}\"` : `${input}\"`;\n}\n\nfunction closeContainers(input: string): string {\n\tconst stack: string[] = [];\n\tlet inString = false;\n\tlet escaped = false;\n\n\tfor (const char of input) {\n\t\tif (inString) {\n\t\t\tif (escaped) {\n\t\t\t\tescaped = false;\n\t\t\t} else if (char === \"\\\\\") {\n\t\t\t\tescaped = true;\n\t\t\t} else if (char === '\"') {\n\t\t\t\tinString = false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"') {\n\t\t\tinString = true;\n\t\t} else if (char === \"{\" || char === \"[\") {\n\t\t\tstack.push(char === \"{\" ? \"}\" : \"]\");\n\t\t} else if ((char === \"}\" || char === \"]\") && stack.at(-1) === char) {\n\t\t\tstack.pop();\n\t\t}\n\t}\n\n\treturn `${input}${stack.reverse().join(\"\")}`;\n}\n\nfunction trimDanglingValues(input: string): string[] {\n\tconst variants: string[] = [];\n\tlet current = input.trimEnd();\n\n\twhile (current.length > 0) {\n\t\tconst last = current.at(-1);\n\t\tif (last === \",\" || last === \":\") {\n\t\t\tcurrent = current.slice(0, -1).trimEnd();\n\t\t\tvariants.push(current);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst colon = lastTopLevelToken(current, \":\");\n\t\tconst comma = lastTopLevelToken(current, \",\");\n\t\tconst openObject = lastTopLevelToken(current, \"{\");\n\t\tconst cutAt = Math.max(colon, comma, openObject);\n\t\tif (cutAt === -1) break;\n\n\t\tcurrent = current.slice(0, cutAt + (current[cutAt] === \"{\" ? 1 : 0)).trimEnd();\n\t\tvariants.push(current);\n\t\tbreak;\n\t}\n\n\treturn variants;\n}\n\nfunction lastTopLevelToken(input: string, token: string): number {\n\tlet inString = false;\n\tlet escaped = false;\n\tlet depth = 0;\n\n\tfor (let index = input.length - 1; index >= 0; index -= 1) {\n\t\tconst char = input[index];\n\n\t\tif (inString) {\n\t\t\tif (char === \"\\\\\" && !escaped) {\n\t\t\t\tescaped = true;\n\t\t\t} else if (char === '\"' && !escaped) {\n\t\t\t\tinString = false;\n\t\t\t} else {\n\t\t\t\tescaped = false;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (char === '\"') {\n\t\t\tinString = true;\n\t\t} else if (char === \"}\" || char === \"]\") {\n\t\t\tdepth += 1;\n\t\t} else if (char === \"{\" || char === \"[\") {\n\t\t\tif (depth === 0 && char === token) return index;\n\t\t\tdepth -= 1;\n\t\t} else if (depth === 0 && char === token) {\n\t\t\treturn index;\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import { parsePartialJSON } from \"../parse-partial-json\";\nimport type {\n\tAssembleOptions,\n\tFinishReason,\n\tRawChunk,\n\tReasoningVariant,\n\tStreamEvent,\n} from \"../types\";\nimport { utf8ByteLength } from \"../utils/bytes\";\nimport { errorFromUnknown, prefixedError } from \"../utils/source\";\n\ntype TextState = Map<number, string>;\n\ninterface ToolState {\n\teventId: string;\n\tname: string;\n\targs: string;\n\tindex: number | undefined;\n\tchoiceIndex: number | undefined;\n\tstarted: boolean;\n}\n\nexport class EventAssembler {\n\tprivate text: TextState = new Map();\n\tprivate reasoning = \"\";\n\tprivate reasoningVariant: ReasoningVariant | undefined;\n\tprivate refusal = \"\";\n\tprivate json = \"\";\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly toolByIndex = new Map<string, string>();\n\tprivate finishEmitted = false;\n\n\tconstructor(private readonly options: AssembleOptions = {}) {}\n\n\tpush(chunk: RawChunk): StreamEvent[] {\n\t\tif (this.finishEmitted) return [];\n\n\t\tswitch (chunk.kind) {\n\t\t\tcase \"message-start\":\n\t\t\t\treturn [\n\t\t\t\t\toptionalEvent({ type: \"message.start\", id: chunk.id, choiceIndex: chunk.choiceIndex }),\n\t\t\t\t];\n\t\t\tcase \"text-delta\":\n\t\t\t\treturn this.pushText(chunk.text, chunk.choiceIndex);\n\t\t\tcase \"reasoning-delta\":\n\t\t\t\treturn this.pushReasoning(chunk.text, chunk.variant);\n\t\t\tcase \"refusal-delta\":\n\t\t\t\treturn this.pushRefusal(chunk.text);\n\t\t\tcase \"json-delta\":\n\t\t\t\treturn this.pushJson(chunk.delta);\n\t\t\tcase \"tool-start\":\n\t\t\t\treturn this.pushToolStart(chunk);\n\t\t\tcase \"tool-args-delta\":\n\t\t\t\treturn this.pushToolArgs(chunk);\n\t\t\tcase \"tool-done\":\n\t\t\t\treturn this.finishTool(chunk);\n\t\t\tcase \"metadata\": {\n\t\t\t\tconst { kind: _kind, ...metadata } = chunk;\n\t\t\t\treturn [optionalEvent({ type: \"metadata\", ...metadata })];\n\t\t\t}\n\t\t\tcase \"usage\": {\n\t\t\t\tconst { kind: _kind, ...usage } = chunk;\n\t\t\t\treturn [optionalEvent({ type: \"usage\", ...usage })];\n\t\t\t}\n\t\t\tcase \"finish\":\n\t\t\t\treturn chunk.choiceIndex === undefined\n\t\t\t\t\t? this.flush({ terminalReason: chunk.reason })\n\t\t\t\t\t: this.flush({ terminalReason: chunk.reason, choiceIndex: chunk.choiceIndex });\n\t\t\tcase \"provider-error\":\n\t\t\t\treturn [this.errorEvent(chunk.error, chunk.recoverable)];\n\t\t}\n\t}\n\n\tflush(options: { terminalReason?: FinishReason; choiceIndex?: number } = {}): StreamEvent[] {\n\t\tconst events: StreamEvent[] = [];\n\n\t\tevents.push(...this.flushText());\n\t\tevents.push(...this.flushReasoning());\n\t\tevents.push(...this.flushRefusal());\n\t\tevents.push(...this.flushJson());\n\t\tevents.push(...this.flushTools());\n\n\t\tconst forcedError = events.some(\n\t\t\t(event) => event.type === \"error\" && event.recoverable === false,\n\t\t);\n\t\tconst reason = forcedError ? \"error\" : options.terminalReason;\n\t\tif (reason && !this.finishEmitted) {\n\t\t\tevents.push(optionalEvent({ type: \"finish\", reason, choiceIndex: options.choiceIndex }));\n\t\t\tthis.finishEmitted = true;\n\t\t}\n\n\t\treturn events;\n\t}\n\n\treset(): void {\n\t\tthis.text = new Map();\n\t\tthis.reasoning = \"\";\n\t\tthis.reasoningVariant = undefined;\n\t\tthis.refusal = \"\";\n\t\tthis.json = \"\";\n\t\tthis.tools.clear();\n\t\tthis.toolByIndex.clear();\n\t\tthis.finishEmitted = false;\n\t}\n\n\thasFinished(): boolean {\n\t\treturn this.finishEmitted;\n\t}\n\n\tprivate pushText(text: string, choiceIndex = 0): StreamEvent[] {\n\t\tif (text.length === 0) return [];\n\t\tconst next = `${this.text.get(choiceIndex) ?? \"\"}${text}`;\n\t\tthis.assertBuffer(next, \"text\");\n\t\tthis.text.set(choiceIndex, next);\n\t\treturn [\n\t\t\toptionalEvent({ type: \"text.delta\", text, choiceIndex: normalizeChoiceIndex(choiceIndex) }),\n\t\t];\n\t}\n\n\tprivate pushReasoning(text: string, variant: ReasoningVariant | undefined): StreamEvent[] {\n\t\tif (text.length === 0) return [];\n\t\tthis.reasoning += text;\n\t\tthis.reasoningVariant = variant ?? this.reasoningVariant;\n\t\tthis.assertBuffer(this.reasoning, \"reasoning\");\n\t\treturn [optionalEvent({ type: \"reasoning.delta\", text, variant })];\n\t}\n\n\tprivate pushRefusal(text: string): StreamEvent[] {\n\t\tif (text.length === 0) return [];\n\t\tthis.refusal += text;\n\t\tthis.assertBuffer(this.refusal, \"refusal\");\n\t\treturn [{ type: \"refusal.delta\", text }];\n\t}\n\n\tprivate pushJson(delta: string): StreamEvent[] {\n\t\tif (delta.length === 0) return [];\n\t\tthis.json += delta;\n\t\tthis.assertBuffer(this.json, \"json\");\n\t\tconst partial = parsePartialJSON(this.json);\n\t\treturn [withOptional(\"partial\", partial.value, { type: \"json.delta\", delta })];\n\t}\n\n\tprivate pushToolStart(chunk: Extract<RawChunk, { kind: \"tool-start\" }>): StreamEvent[] {\n\t\tconst state = this.getOrCreateTool(chunk);\n\t\tif (chunk.id && !state.started) {\n\t\t\tstate.eventId = chunk.id;\n\t\t}\n\t\tstate.name = chunk.name;\n\t\tstate.index = chunk.index;\n\t\tstate.choiceIndex = chunk.choiceIndex;\n\n\t\tif (state.started) return [];\n\t\tstate.started = true;\n\n\t\treturn [\n\t\t\toptionalEvent({\n\t\t\t\ttype: \"tool_call.start\",\n\t\t\t\tid: state.eventId,\n\t\t\t\tname: state.name,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: state.choiceIndex,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate pushToolArgs(chunk: Extract<RawChunk, { kind: \"tool-args-delta\" }>): StreamEvent[] {\n\t\tif (chunk.delta.length === 0) return [];\n\t\tconst state = this.getOrCreateTool(chunk);\n\t\tstate.args += chunk.delta;\n\t\tthis.assertBuffer(state.args, \"tool args\");\n\t\tconst partial = parsePartialJSON(state.args);\n\t\treturn [\n\t\t\twithOptional(\"partial\", partial.value, {\n\t\t\t\ttype: \"tool_call.args.delta\",\n\t\t\t\tid: state.eventId,\n\t\t\t\tdelta: chunk.delta,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate finishTool(chunk: Extract<RawChunk, { kind: \"tool-done\" }>): StreamEvent[] {\n\t\tconst state = this.getOrCreateTool(chunk);\n\t\tconst done = this.toolDoneEvent(state);\n\t\tthis.deleteTool(state);\n\t\treturn [done];\n\t}\n\n\tprivate flushText(): StreamEvent[] {\n\t\tconst events: StreamEvent[] = [];\n\t\tfor (const [choiceIndex, text] of this.text) {\n\t\t\tif (text.length > 0) {\n\t\t\t\tevents.push(\n\t\t\t\t\toptionalEvent({\n\t\t\t\t\t\ttype: \"text.done\",\n\t\t\t\t\t\ttext,\n\t\t\t\t\t\tchoiceIndex: normalizeChoiceIndex(choiceIndex),\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tthis.text.clear();\n\t\treturn events;\n\t}\n\n\tprivate flushReasoning(): StreamEvent[] {\n\t\tif (this.reasoning.length === 0) return [];\n\t\tconst event = optionalEvent({\n\t\t\ttype: \"reasoning.done\",\n\t\t\ttext: this.reasoning,\n\t\t\tvariant: this.reasoningVariant,\n\t\t});\n\t\tthis.reasoning = \"\";\n\t\tthis.reasoningVariant = undefined;\n\t\treturn [event];\n\t}\n\n\tprivate flushRefusal(): StreamEvent[] {\n\t\tif (this.refusal.length === 0) return [];\n\t\tconst event: StreamEvent = { type: \"refusal.done\", text: this.refusal };\n\t\tthis.refusal = \"\";\n\t\treturn [event];\n\t}\n\n\tprivate flushJson(): StreamEvent[] {\n\t\tif (this.json.length === 0) return [];\n\t\tconst parsed = parsePartialJSON(this.json);\n\t\tthis.json = \"\";\n\t\tif (parsed.complete) {\n\t\t\treturn [{ type: \"json.done\", value: parsed.value }];\n\t\t}\n\t\treturn [this.errorEvent(prefixedError(\"json stream ended with invalid JSON\"), false)];\n\t}\n\n\tprivate flushTools(): StreamEvent[] {\n\t\tconst events: StreamEvent[] = [];\n\t\tfor (const state of this.tools.values()) {\n\t\t\tevents.push(this.toolDoneEvent(state));\n\t\t}\n\t\tthis.tools.clear();\n\t\tthis.toolByIndex.clear();\n\t\treturn events;\n\t}\n\n\tprivate toolDoneEvent(state: ToolState): StreamEvent {\n\t\tconst parsed = parsePartialJSON(state.args);\n\t\tif (parsed.complete) {\n\t\t\treturn { type: \"tool_call.done\", id: state.eventId, name: state.name, args: parsed.value };\n\t\t}\n\t\tif (this.options.strictToolArgs) {\n\t\t\tthrow prefixedError(`tool args for ${state.name} ended with invalid JSON`);\n\t\t}\n\t\treturn { type: \"tool_call.done\", id: state.eventId, name: state.name, args: state.args };\n\t}\n\n\tprivate getOrCreateTool(\n\t\tchunk: Extract<RawChunk, { kind: \"tool-start\" | \"tool-args-delta\" | \"tool-done\" }>,\n\t): ToolState {\n\t\tconst choiceIndex = chunk.choiceIndex ?? 0;\n\t\tconst indexKey = chunk.index === undefined ? undefined : `${choiceIndex}:${chunk.index}`;\n\t\tlet key = (indexKey ? this.toolByIndex.get(indexKey) : undefined) || chunk.id;\n\n\t\tif (!key && indexKey) {\n\t\t\tkey = `tool:${indexKey}`;\n\t\t\tthis.toolByIndex.set(indexKey, key);\n\t\t}\n\n\t\tkey ??= chunk.id ?? `tool:${choiceIndex}:${this.tools.size}`;\n\n\t\tlet state = this.tools.get(key);\n\t\tif (!state) {\n\t\t\tstate = {\n\t\t\t\teventId: chunk.id || key,\n\t\t\t\tname: \"unknown\",\n\t\t\t\targs: \"\",\n\t\t\t\tindex: chunk.index,\n\t\t\t\tchoiceIndex: normalizeChoiceIndex(choiceIndex),\n\t\t\t\tstarted: false,\n\t\t\t};\n\t\t\tthis.tools.set(key, state);\n\t\t}\n\n\t\tif (chunk.id && !state.started && state.eventId.startsWith(\"tool:\")) {\n\t\t\tthis.tools.delete(key);\n\t\t\tstate.eventId = chunk.id;\n\t\t\tthis.tools.set(chunk.id, state);\n\t\t\tif (indexKey) {\n\t\t\t\tthis.toolByIndex.set(indexKey, chunk.id);\n\t\t\t}\n\t\t}\n\n\t\treturn state;\n\t}\n\n\tprivate deleteTool(state: ToolState): void {\n\t\tthis.tools.delete(state.eventId);\n\t\tif (state.index !== undefined) {\n\t\t\tthis.toolByIndex.delete(`${state.choiceIndex ?? 0}:${state.index}`);\n\t\t}\n\t}\n\n\tprivate assertBuffer(value: string, label: string): void {\n\t\tif (this.options.maxBufferBytes === undefined) return;\n\t\tif (utf8ByteLength(value) > this.options.maxBufferBytes) {\n\t\t\tthrow prefixedError(`${label} buffer exceeded maxBufferBytes`);\n\t\t}\n\t}\n\n\tprivate errorEvent(error: unknown, recoverable: boolean | undefined): StreamEvent {\n\t\tconst source = errorFromUnknown(error);\n\t\tif (!this.options.sanitizeErrors) {\n\t\t\treturn optionalEvent({ type: \"error\", error: source, recoverable });\n\t\t}\n\n\t\treturn optionalEvent({\n\t\t\ttype: \"error\",\n\t\t\terror: new Error(\"An error occurred while processing the stream.\"),\n\t\t\trecoverable,\n\t\t\tsanitized: \"An error occurred while processing the stream.\",\n\t\t});\n\t}\n}\n\nfunction optionalEvent(event: Record<string, unknown>): StreamEvent {\n\treturn Object.fromEntries(\n\t\tObject.entries(event).filter(([, value]) => value !== undefined && value !== \"kind\"),\n\t) as StreamEvent;\n}\n\nfunction withOptional<K extends string, T extends object>(\n\tkey: K,\n\tvalue: unknown,\n\ttarget: T,\n): T & Partial<Record<K, unknown>> {\n\tif (value === undefined) return target;\n\treturn { ...target, [key]: value } as T & Partial<Record<K, unknown>>;\n}\n\nfunction normalizeChoiceIndex(choiceIndex: number): number | undefined {\n\treturn choiceIndex === 0 ? undefined : choiceIndex;\n}\n","import type { AssembleOptions, StreamAdapter, StreamEvent } from \"./types\";\nimport { processPayload, resolveTerminalFlush } from \"./assembly/process-payload\";\nimport { EventAssembler } from \"./assembler/event-assembler\";\n\nexport function assembleFromPayloads(\n\tpayloads: AsyncIterable<string>,\n\tadapter: StreamAdapter,\n\toptions: AssembleOptions = {},\n): AsyncIterable<StreamEvent> {\n\treturn assembleFromPayloadsGenerator(payloads, adapter, options);\n}\n\nasync function* assembleFromPayloadsGenerator(\n\tpayloads: AsyncIterable<string>,\n\tadapter: StreamAdapter,\n\toptions: AssembleOptions,\n): AsyncIterable<StreamEvent> {\n\tconst assembler = new EventAssembler(options);\n\tconst iterator = payloads[Symbol.asyncIterator]();\n\tlet sawTerminalMarker = false;\n\n\ttry {\n\t\twhile (true) {\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tyield* assembler.flush({ terminalReason: \"aborted\" });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst item = await iterator.next();\n\t\t\tif (item.done) break;\n\n\t\t\tconst result = processPayload(item.value, assembler, adapter, options);\n\t\t\tif (result.kind === \"done-marker\") {\n\t\t\t\tsawTerminalMarker = true;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (result.kind === \"recoverable-error\") {\n\t\t\t\tyield result.event;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tyield* result.events;\n\t\t}\n\n\t\tyield* resolveTerminalFlush(assembler, {\n\t\t\tsawTerminalMarker,\n\t\t\taborted: options.signal?.aborted === true,\n\t\t});\n\t} finally {\n\t\tawait iterator.return?.();\n\t}\n}\n","export class SSEParser {\n\tprivate lineBuffer = \"\";\n\tprivate dataLines: string[] = [];\n\n\tpush(chunk: string): string[] {\n\t\tconst payloads: string[] = [];\n\t\tthis.lineBuffer += chunk;\n\n\t\twhile (true) {\n\t\t\tconst lineEnd = this.findLineEnd();\n\t\t\tif (!lineEnd) break;\n\n\t\t\tconst line = this.lineBuffer.slice(0, lineEnd.index);\n\t\t\tthis.lineBuffer = this.lineBuffer.slice(lineEnd.nextIndex);\n\t\t\tconst payload = this.processLine(line);\n\t\t\tif (payload !== undefined) {\n\t\t\t\tpayloads.push(payload);\n\t\t\t}\n\t\t}\n\n\t\treturn payloads;\n\t}\n\n\tflush(): string[] {\n\t\tconst payloads: string[] = [];\n\n\t\tif (this.lineBuffer.length > 0) {\n\t\t\tconst payload = this.processLine(this.lineBuffer);\n\t\t\tthis.lineBuffer = \"\";\n\t\t\tif (payload !== undefined) {\n\t\t\t\tpayloads.push(payload);\n\t\t\t}\n\t\t}\n\n\t\tconst payload = this.dispatch();\n\t\tif (payload !== undefined) {\n\t\t\tpayloads.push(payload);\n\t\t}\n\n\t\treturn payloads;\n\t}\n\n\tprivate findLineEnd(): { index: number; nextIndex: number } | undefined {\n\t\tconst lf = this.lineBuffer.indexOf(\"\\n\");\n\t\tconst cr = this.lineBuffer.indexOf(\"\\r\");\n\n\t\tif (lf === -1 && cr === -1) return undefined;\n\n\t\tif (cr !== -1 && (lf === -1 || cr < lf)) {\n\t\t\tconst nextIndex = this.lineBuffer[cr + 1] === \"\\n\" ? cr + 2 : cr + 1;\n\t\t\treturn { index: cr, nextIndex };\n\t\t}\n\n\t\treturn { index: lf, nextIndex: lf + 1 };\n\t}\n\n\tprivate processLine(line: string): string | undefined {\n\t\tif (line === \"\") {\n\t\t\treturn this.dispatch();\n\t\t}\n\n\t\tif (line.startsWith(\":\")) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst colon = line.indexOf(\":\");\n\t\tconst field = colon === -1 ? line : line.slice(0, colon);\n\t\tlet value = colon === -1 ? \"\" : line.slice(colon + 1);\n\t\tif (value.startsWith(\" \")) {\n\t\t\tvalue = value.slice(1);\n\t\t}\n\n\t\tif (field === \"data\") {\n\t\t\tthis.dataLines.push(value);\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tprivate dispatch(): string | undefined {\n\t\tif (this.dataLines.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst payload = this.dataLines.join(\"\\n\");\n\t\tthis.dataLines = [];\n\t\treturn payload.length > 0 ? payload : undefined;\n\t}\n}\n","import { sourceToStrings } from \"./utils/source\";\nimport { SSEParser } from \"./utils/sse-parser\";\n\nexport function parseSSE(\n\tsource: ReadableStream<Uint8Array> | AsyncIterable<string>,\n): AsyncIterable<string> {\n\treturn parseSSEGenerator(source);\n}\n\nasync function* parseSSEGenerator(\n\tsource: ReadableStream<Uint8Array> | AsyncIterable<string>,\n): AsyncIterable<string> {\n\tconst parser = new SSEParser();\n\n\tfor await (const chunk of sourceToStrings(source)) {\n\t\tfor (const payload of parser.push(chunk)) {\n\t\t\tyield payload;\n\t\t}\n\t}\n\n\tfor (const payload of parser.flush()) {\n\t\tyield payload;\n\t}\n}\n","import type { AssembleOptions, StreamAdapter, StreamEvent } from \"./types\";\nimport { assembleFromPayloads } from \"./assemble-payloads\";\nimport { parseSSE } from \"./parse-sse\";\n\nexport function assembleStream(\n\tsource: ReadableStream<Uint8Array> | AsyncIterable<string>,\n\tadapter: StreamAdapter,\n\toptions?: AssembleOptions,\n): AsyncIterable<StreamEvent> {\n\treturn assembleFromPayloads(parseSSE(source), adapter, options);\n}\n","import type { AssembleOptions, StreamAdapter, StreamEvent } from \"./types\";\nimport { EventAssembler } from \"./assembler/event-assembler\";\nimport { prefixedError } from \"./utils/source\";\n\nexport function assembleResponse(\n\tbody: unknown,\n\tadapter: StreamAdapter,\n\toptions: AssembleOptions = {},\n): StreamEvent[] {\n\tif (!adapter.parseResponse) {\n\t\tthrow prefixedError(\"adapter.parseResponse is required for assembleResponse\");\n\t}\n\n\tconst assembler = new EventAssembler(options);\n\tconst events: StreamEvent[] = [];\n\n\tfor (const chunk of adapter.parseResponse(body)) {\n\t\tevents.push(...assembler.push(chunk));\n\t}\n\n\tevents.push(...assembler.flush(assembler.hasFinished() ? undefined : { terminalReason: \"stop\" }));\n\treturn events;\n}\n","import type { AssembleFromFileOptions, StreamAdapter, StreamEvent } from \"./types\";\nimport { assembleResponse } from \"./assemble-response\";\nimport { assembleStream } from \"./assemble-stream\";\n\nexport function assembleFromFile(\n\tpath: string,\n\tadapter: StreamAdapter,\n\toptions: AssembleFromFileOptions = {},\n): AsyncIterable<StreamEvent> {\n\treturn assembleFromFileGenerator(path, adapter, options);\n}\n\nasync function* assembleFromFileGenerator(\n\tpath: string,\n\tadapter: StreamAdapter,\n\toptions: AssembleFromFileOptions,\n): AsyncIterable<StreamEvent> {\n\tconst format = options.format ?? inferFormat(path);\n\tconst content = await readFixture(path);\n\n\tif (format === \"sse\") {\n\t\tyield* assembleStream(stringIterable(content), adapter, options);\n\t\treturn;\n\t}\n\n\tlet body: unknown;\n\ttry {\n\t\tbody = JSON.parse(content) as unknown;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(\n\t\t\t`llm-stream-assemble: assembleFromFile failed to parse JSON ${path}: ${message}`,\n\t\t);\n\t}\n\n\tfor (const event of assembleResponse(body, adapter, options)) {\n\t\tyield event;\n\t}\n}\n\nfunction inferFormat(path: string): \"sse\" | \"json\" {\n\tif (path.endsWith(\".sse\")) return \"sse\";\n\tif (path.endsWith(\".json\")) return \"json\";\n\tthrow new Error(`llm-stream-assemble: assembleFromFile cannot infer format for ${path}`);\n}\n\nasync function readFixture(path: string): Promise<string> {\n\ttry {\n\t\tconst { readFile } = await import(\"node:fs/promises\");\n\t\treturn await readFile(path, \"utf8\");\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow new Error(`llm-stream-assemble: assembleFromFile failed to read ${path}: ${message}`);\n\t}\n}\n\nasync function* stringIterable(value: string): AsyncIterable<string> {\n\tyield value;\n}\n","import type { AssembleOptions, StreamAdapter, StreamEvent } from \"./types\";\nimport { processPayload, resolveTerminalFlush } from \"./assembly/process-payload\";\nimport { EventAssembler } from \"./assembler/event-assembler\";\nimport { Utf8StreamDecoder } from \"./utils/bytes\";\nimport { SSEParser } from \"./utils/sse-parser\";\n\nexport function createAssemblyTransform(\n\tadapter: StreamAdapter,\n\toptions: AssembleOptions = {},\n): TransformStream<Uint8Array, StreamEvent> {\n\tconst decoder = new Utf8StreamDecoder();\n\tconst parser = new SSEParser();\n\tconst assembler = new EventAssembler(options);\n\tlet sawTerminalMarker = false;\n\tlet aborted = false;\n\n\tconst emit = (\n\t\tcontroller: TransformStreamDefaultController<StreamEvent>,\n\t\tevents: StreamEvent[],\n\t) => {\n\t\tfor (const event of events) {\n\t\t\tcontroller.enqueue(event);\n\t\t}\n\t};\n\n\tconst handlePayload = (\n\t\tpayload: string,\n\t\tcontroller: TransformStreamDefaultController<StreamEvent>,\n\t) => {\n\t\tconst result = processPayload(payload, assembler, adapter, options);\n\t\tif (result.kind === \"done-marker\") {\n\t\t\tsawTerminalMarker = true;\n\t\t\treturn;\n\t\t}\n\t\tif (result.kind === \"recoverable-error\") {\n\t\t\tcontroller.enqueue(result.event);\n\t\t\treturn;\n\t\t}\n\t\temit(controller, result.events);\n\t};\n\n\treturn new TransformStream<Uint8Array, StreamEvent>({\n\t\tstart(controller) {\n\t\t\toptions.signal?.addEventListener(\n\t\t\t\t\"abort\",\n\t\t\t\t() => {\n\t\t\t\t\tif (aborted || assembler.hasFinished()) return;\n\t\t\t\t\taborted = true;\n\t\t\t\t\temit(controller, assembler.flush({ terminalReason: \"aborted\" }));\n\t\t\t\t\tcontroller.terminate();\n\t\t\t\t},\n\t\t\t\t{ once: true },\n\t\t\t);\n\t\t},\n\t\ttransform(chunk, controller) {\n\t\t\tif (aborted || options.signal?.aborted) {\n\t\t\t\taborted = true;\n\t\t\t\temit(controller, assembler.flush({ terminalReason: \"aborted\" }));\n\t\t\t\tcontroller.terminate();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (const payload of parser.push(decoder.decode(chunk))) {\n\t\t\t\thandlePayload(payload, controller);\n\t\t\t}\n\t\t},\n\t\tflush(controller) {\n\t\t\tif (aborted || options.signal?.aborted) {\n\t\t\t\temit(controller, assembler.flush({ terminalReason: \"aborted\" }));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst decoded = decoder.flush();\n\t\t\tif (decoded.length > 0) {\n\t\t\t\tfor (const payload of parser.push(decoded)) {\n\t\t\t\t\thandlePayload(payload, controller);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (const payload of parser.flush()) {\n\t\t\t\thandlePayload(payload, controller);\n\t\t\t}\n\n\t\t\temit(controller, resolveTerminalFlush(assembler, { sawTerminalMarker, aborted: false }));\n\t\t},\n\t});\n}\n","/** Internal adapter error helpers. Not part of the public API. */\nimport type { RawChunk } from \"../core/types\";\nimport { asString } from \"./utils\";\n\nexport function libraryError(message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${message}`);\n}\n\nexport function adapterScopedError(scope: string, message: string): Error {\n\treturn new Error(`llm-stream-assemble: ${scope}: ${message}`);\n}\n\nexport function providerErrorChunks(error: Error, recoverable = false): RawChunk[] {\n\treturn [\n\t\t{ kind: \"provider-error\", error, recoverable },\n\t\t{ kind: \"finish\", reason: \"error\" },\n\t];\n}\n\nexport function providerErrorChunksFromMessage(message: string, recoverable = false): RawChunk[] {\n\treturn providerErrorChunks(libraryError(message), recoverable);\n}\n\nexport function providerErrorChunksFromPayload(\n\terrorPayload: Record<string, unknown>,\n\tscope: string,\n\trecoverable: boolean,\n\tfallbackMessage: string,\n): RawChunk[] {\n\tconst message = asString(errorPayload.message) ?? fallbackMessage;\n\tconst error = adapterScopedError(scope, message);\n\tObject.defineProperty(error, \"raw\", {\n\t\tvalue: errorPayload,\n\t\tenumerable: false,\n\t});\n\treturn providerErrorChunks(error, recoverable);\n}\n","/** Internal adapter utilities. Not part of the public API. */\nimport type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { adapterScopedError } from \"./errors\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nexport function asString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" ? value : undefined;\n}\n\nexport function asNumber(value: unknown): number | undefined {\n\treturn typeof value === \"number\" && Number.isFinite(value) ? value : undefined;\n}\n\nexport function optionalRawChunk(input: Record<string, unknown>): RawChunk {\n\treturn Object.fromEntries(\n\t\tObject.entries(input).filter(([, value]) => value !== undefined),\n\t) as RawChunk;\n}\n\nexport function prefixedAdapterError(feature: string, message: string): Error {\n\treturn adapterScopedError(feature, message);\n}\n\nexport function createStreamAdapter<TOptions>(config: {\n\tparser: { parseChunk(raw: string): RawChunk[] };\n\tparseResponse: (body: unknown, options: TOptions) => RawChunk[];\n\toptions: TOptions;\n}): StreamAdapter {\n\treturn {\n\t\tparseChunk(raw) {\n\t\t\treturn config.parser.parseChunk(raw);\n\t\t},\n\t\tparseResponse(body) {\n\t\t\treturn config.parseResponse(body, config.options);\n\t\t},\n\t};\n}\n\nexport function parseAdapterJSON(raw: string, feature: string): unknown {\n\ttry {\n\t\treturn JSON.parse(raw) as unknown;\n\t} catch (error) {\n\t\tconst message = error instanceof Error ? error.message : String(error);\n\t\tthrow prefixedAdapterError(feature, message);\n\t}\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asString, isRecord } from \"../../utils\";\nimport { adapterScopedError, providerErrorChunksFromPayload } from \"../../errors\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function providerErrorPayload(\n\tpayload: Record<string, unknown>,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): Record<string, unknown> | undefined {\n\tif (isRecord(payload.error)) return payload.error;\n\tif (!options.looseErrorShape) return undefined;\n\n\tconst errorString = asString(payload.error);\n\tif (errorString) return { message: errorString };\n\n\tconst detailString = asString(payload.detail);\n\tif (detailString) return { message: detailString };\n\tif (isRecord(payload.detail)) return payload.detail;\n\n\tconst topLevelMessage = asString(payload.message);\n\tconst topLevelType = asString(payload.type);\n\tif (topLevelMessage && topLevelType === \"error\") return { message: topLevelMessage };\n\n\treturn undefined;\n}\n\nexport function openAIProviderErrorChunks(\n\terrorPayload: Record<string, unknown>,\n\trecoverable: boolean,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\treturn providerErrorChunksFromPayload(\n\t\terrorPayload,\n\t\toptions.errorPrefix,\n\t\trecoverable,\n\t\t\"OpenAI-compatible provider error\",\n\t);\n}\n\nexport function throwAdapterObjectError(scope: string, message = \"expected a JSON object\"): never {\n\tthrow adapterScopedError(scope, message);\n}\n\nexport function throwUnrecognizedChunkError(options: RequiredOpenAIChatLikeParserOptions): never {\n\tthrow adapterScopedError(\n\t\t`${options.errorPrefix}.parseChunk`,\n\t\t\"expected an OpenAI-compatible chat completion chunk\",\n\t);\n}\n\nexport function throwUnrecognizedResponseError(\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): never {\n\tthrow adapterScopedError(\n\t\t`${options.errorPrefix}.parseResponse`,\n\t\t\"expected an OpenAI-compatible chat completion object\",\n\t);\n}\n\nexport { adapterScopedError };\n","import type { FinishReason, RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../../utils\";\nimport { adapterScopedError } from \"../../errors\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function metadataChunks(payload: Record<string, unknown>): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst id = asString(payload.id);\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\n\tconst metadata: Extract<RawChunk, { kind: \"metadata\" }> = { kind: \"metadata\", raw: payload };\n\tconst model = asString(payload.model);\n\tconst created = asNumber(payload.created);\n\tif (model) metadata.model = model;\n\tif (id) metadata.responseId = id;\n\tif (created !== undefined) metadata.created = created;\n\tif (metadata.model || metadata.responseId || metadata.created !== undefined) {\n\t\tchunks.push(metadata);\n\t}\n\treturn chunks;\n}\n\nexport function hasMetadata(payload: Record<string, unknown>): boolean {\n\treturn (\n\t\tasString(payload.id) !== undefined ||\n\t\tasString(payload.model) !== undefined ||\n\t\tasNumber(payload.created) !== undefined\n\t);\n}\n\nexport function isRecognizableResponse(payload: Record<string, unknown>): boolean {\n\treturn (\n\t\thasMetadata(payload) ||\n\t\ttypeof payload.object === \"string\" ||\n\t\tArray.isArray(payload.choices) ||\n\t\tisRecord(payload.usage)\n\t);\n}\n\nexport function reasoningChunks(\n\tsource: Record<string, unknown>,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst aliases = new Set([\n\t\t\"reasoning\",\n\t\t\"reasoning_content\",\n\t\t\"reasoning_summary\",\n\t\t...options.reasoningFieldAliases,\n\t]);\n\tfor (const field of aliases) {\n\t\tconst text = asString(source[field]);\n\t\tif (!text) continue;\n\t\tchunks.push({\n\t\t\tkind: \"reasoning-delta\",\n\t\t\ttext,\n\t\t\tvariant: field === \"reasoning_summary\" ? \"summary\" : \"detail\",\n\t\t});\n\t}\n\treturn chunks;\n}\n\nexport function finishReasonChunks(\n\tvalue: unknown,\n\tchoiceIndex: number | undefined,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (value === null || value === undefined) return [];\n\tconst finishReason = normalizeFinishReason(value);\n\tif (finishReason) {\n\t\treturn [withChoiceIndex({ kind: \"finish\", reason: finishReason }, choiceIndex)];\n\t}\n\treturn [\n\t\t{\n\t\t\tkind: \"provider-error\",\n\t\t\terror: adapterScopedError(\n\t\t\t\toptions.errorPrefix,\n\t\t\t\t`unknown OpenAI-compatible finish_reason: ${String(value)}`,\n\t\t\t),\n\t\t\trecoverable: true,\n\t\t},\n\t\twithChoiceIndex({ kind: \"finish\", reason: \"error\" }, choiceIndex),\n\t];\n}\n\nexport function usageChunk(\n\tvalue: unknown,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = firstNumber(value, options.usageInputTokenFields);\n\tconst outputTokens = firstNumber(value, options.usageOutputTokenFields);\n\tconst details = isRecord(value.completion_tokens_details)\n\t\t? value.completion_tokens_details\n\t\t: undefined;\n\tconst reasoningTokens = details ? asNumber(details.reasoning_tokens) : undefined;\n\tif (inputTokens === undefined && outputTokens === undefined && reasoningTokens === undefined) {\n\t\treturn undefined;\n\t}\n\tconst chunk: Extract<RawChunk, { kind: \"usage\" }> = { kind: \"usage\", raw: value };\n\tif (inputTokens !== undefined) chunk.inputTokens = inputTokens;\n\tif (outputTokens !== undefined) chunk.outputTokens = outputTokens;\n\tif (reasoningTokens !== undefined) chunk.reasoningTokens = reasoningTokens;\n\treturn chunk;\n}\n\nexport function choiceIndexFor(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): number | undefined {\n\treturn asNumber(choice.index) ?? (options.useChoicePositionFallback ? position : undefined);\n}\n\nexport function toolStartChunk(input: {\n\tid: string | undefined;\n\tname: string;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-start\",\n\t\tid: input.id,\n\t\tname: input.name,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function toolArgsChunk(input: {\n\tid: string | undefined;\n\tdelta: string;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-args-delta\",\n\t\tid: input.id,\n\t\tdelta: input.delta,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function toolDoneChunk(input: {\n\tid: string | undefined;\n\tindex: number;\n\tchoiceIndex: number | undefined;\n}): RawChunk {\n\treturn optionalRawChunk({\n\t\tkind: \"tool-done\",\n\t\tid: input.id,\n\t\tindex: input.index,\n\t\tchoiceIndex: input.choiceIndex,\n\t});\n}\n\nexport function withChoiceIndex<T extends RawChunk>(chunk: T, choiceIndex: number | undefined): T {\n\tif (choiceIndex === undefined) return chunk;\n\treturn optionalRawChunk({ ...chunk, choiceIndex }) as T;\n}\n\nexport function toolKey(\n\tchoiceIndex: number | undefined,\n\tchoicePosition: number,\n\ttoolIndex: number,\n): string {\n\treturn `${choiceKey(choiceIndex, choicePosition)}:${toolIndex}`;\n}\n\nexport function choiceKey(choiceIndex: number | undefined, choicePosition: number): string {\n\treturn choiceIndex === undefined ? `unknown-choice:${choicePosition}` : String(choiceIndex);\n}\n\nfunction normalizeFinishReason(value: unknown): FinishReason | undefined {\n\tif (\n\t\tvalue === \"stop\" ||\n\t\tvalue === \"length\" ||\n\t\tvalue === \"content_filter\" ||\n\t\tvalue === \"tool_calls\"\n\t) {\n\t\treturn value;\n\t}\n\tif (value === \"function_call\") return \"tool_calls\";\n\treturn undefined;\n}\n\nfunction firstNumber(source: Record<string, unknown>, fields: string[]): number | undefined {\n\tfor (const field of fields) {\n\t\tconst value = asNumber(source[field]);\n\t\tif (value !== undefined) return value;\n\t}\n\treturn undefined;\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, parseAdapterJSON } from \"../../utils\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowAdapterObjectError,\n\tthrowUnrecognizedChunkError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tchoiceKey,\n\tfinishReasonChunks,\n\thasMetadata,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolKey,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport type { RequiredOpenAIChatLikeParserOptions, ToolState } from \"./types\";\n\nexport class OpenAIChatLikeParser {\n\tprivate metadataEmitted = false;\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly legacyStarted = new Set<string>();\n\n\tconstructor(private readonly options: RequiredOpenAIChatLikeParserOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tif (raw.trim() === \"[DONE]\") return [];\n\n\t\tconst payload = parseAdapterJSON(raw, `${this.options.errorPrefix}.parseChunk`);\n\t\tif (!isRecord(payload)) {\n\t\t\tthrowAdapterObjectError(`${this.options.errorPrefix}.parseChunk`);\n\t\t}\n\n\t\tconst looseError = providerErrorPayload(payload, this.options);\n\t\tif (looseError) return openAIProviderErrorChunks(looseError, false, this.options);\n\n\t\tif (this.options.rejectUnrecognizedPayloads && !this.isRecognizableChunk(payload)) {\n\t\t\tthrowUnrecognizedChunkError(this.options);\n\t\t}\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (!this.metadataEmitted && hasMetadata(payload)) {\n\t\t\tchunks.push(...metadataChunks(payload));\n\t\t\tthis.metadataEmitted = true;\n\t\t}\n\n\t\tconst usage = usageChunk(payload.usage, this.options);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst choices = Array.isArray(payload.choices) ? payload.choices : [];\n\t\tfor (let position = 0; position < choices.length; position += 1) {\n\t\t\tconst choice = choices[position];\n\t\t\tif (!isRecord(choice)) continue;\n\t\t\tchunks.push(...this.choiceChunks(choice, position));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate isRecognizableChunk(payload: Record<string, unknown>): boolean {\n\t\treturn (\n\t\t\thasMetadata(payload) ||\n\t\t\ttypeof payload.object === \"string\" ||\n\t\t\tArray.isArray(payload.choices) ||\n\t\t\tisRecord(payload.usage)\n\t\t);\n\t}\n\n\tprivate choiceChunks(choice: Record<string, unknown>, position: number): RawChunk[] {\n\t\tconst choiceIndex = choiceIndexFor(choice, position, this.options);\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst delta = isRecord(choice.delta) ? choice.delta : undefined;\n\n\t\tif (delta) {\n\t\t\tchunks.push(...this.deltaChunks(delta, choiceIndex, position));\n\t\t}\n\n\t\tchunks.push(...finishReasonChunks(choice.finish_reason, choiceIndex, this.options));\n\t\treturn chunks;\n\t}\n\n\tprivate deltaChunks(\n\t\tdelta: Record<string, unknown>,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst content = asString(delta.content);\n\t\tif (content && content.length > 0) {\n\t\t\tchunks.push(\n\t\t\t\tthis.options.jsonMode\n\t\t\t\t\t? { kind: \"json-delta\", delta: content }\n\t\t\t\t\t: withChoiceIndex({ kind: \"text-delta\", text: content }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\tconst refusal = asString(delta.refusal);\n\t\tif (refusal && refusal.length > 0) {\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal });\n\t\t}\n\n\t\tchunks.push(...reasoningChunks(delta, this.options));\n\t\tchunks.push(...this.toolCallChunks(delta.tool_calls, choiceIndex, choicePosition));\n\t\tchunks.push(...this.legacyFunctionChunks(delta.function_call, choiceIndex, choicePosition));\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallChunks(\n\t\tvalue: unknown,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tif (!Array.isArray(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tfor (let position = 0; position < value.length; position += 1) {\n\t\t\tconst toolCall = value[position];\n\t\t\tif (!isRecord(toolCall)) continue;\n\n\t\t\tconst toolIndex = asNumber(toolCall.index) ?? position;\n\t\t\tconst key = toolKey(choiceIndex, choicePosition, toolIndex);\n\t\t\tconst state = this.toolState(key);\n\t\t\tconst id = asString(toolCall.id);\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst name = asString(fn?.name);\n\t\t\tconst args = asString(fn?.arguments);\n\n\t\t\tif (id) state.id = id;\n\t\t\tif (name) state.name = name;\n\n\t\t\tif (!state.startEmitted && (id || name || (args && args.length > 0))) {\n\t\t\t\tchunks.push(\n\t\t\t\t\ttoolStartChunk({\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tname: state.name,\n\t\t\t\t\t\tindex: toolIndex,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tstate.startEmitted = true;\n\t\t\t}\n\n\t\t\tif (args && args.length > 0) {\n\t\t\t\tstate.sawArguments = true;\n\t\t\t\tchunks.push(\n\t\t\t\t\ttoolArgsChunk({\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tdelta: args,\n\t\t\t\t\t\tindex: toolIndex,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate legacyFunctionChunks(\n\t\tvalue: unknown,\n\t\tchoiceIndex: number | undefined,\n\t\tchoicePosition: number,\n\t): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst name = asString(value.name);\n\t\tconst args = asString(value.arguments);\n\t\tconst legacyKey = choiceKey(choiceIndex, choicePosition);\n\t\tconst id = `${this.options.legacyFunctionIdPrefix}:${choiceIndex ?? choicePosition}`;\n\n\t\tif (name && !this.legacyStarted.has(legacyKey)) {\n\t\t\tchunks.push(withChoiceIndex({ kind: \"tool-start\", id, name, index: 0 }, choiceIndex));\n\t\t\tthis.legacyStarted.add(legacyKey);\n\t\t}\n\n\t\tif (args && args.length > 0) {\n\t\t\tif (!this.legacyStarted.has(legacyKey)) {\n\t\t\t\tchunks.push(\n\t\t\t\t\twithChoiceIndex(\n\t\t\t\t\t\t{ kind: \"tool-start\", id, name: name ?? \"unknown\", index: 0 },\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t\tthis.legacyStarted.add(legacyKey);\n\t\t\t}\n\t\t\tchunks.push(\n\t\t\t\twithChoiceIndex({ kind: \"tool-args-delta\", id, delta: args, index: 0 }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolState(key: string): ToolState {\n\t\tlet state = this.tools.get(key);\n\t\tif (!state) {\n\t\t\tstate = { name: \"unknown\", startEmitted: false, sawArguments: false };\n\t\t\tthis.tools.set(key, state);\n\t\t}\n\t\treturn state;\n\t}\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord } from \"../../utils\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowAdapterObjectError,\n\tthrowUnrecognizedResponseError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tfinishReasonChunks,\n\tisRecognizableResponse,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolDoneChunk,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function parseResponse(\n\tbody: unknown,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrowAdapterObjectError(\n\t\t\t`${options.errorPrefix}.parseResponse`,\n\t\t\t\"expected an OpenAI-compatible chat completion object\",\n\t\t);\n\t}\n\n\tconst looseError = providerErrorPayload(body, options);\n\tif (looseError) return openAIProviderErrorChunks(looseError, false, options);\n\n\tif (options.rejectUnrecognizedPayloads && !isRecognizableResponse(body)) {\n\t\tthrowUnrecognizedResponseError(options);\n\t}\n\n\tconst chunks: RawChunk[] = [];\n\tconst finishChunks: RawChunk[] = [];\n\tchunks.push(...metadataChunks(body));\n\n\tconst choices = Array.isArray(body.choices) ? body.choices : [];\n\tfor (let position = 0; position < choices.length; position += 1) {\n\t\tconst choice = choices[position];\n\t\tif (!isRecord(choice)) continue;\n\t\tchunks.push(...responseChoiceChunks(choice, position, options));\n\t\tfinishChunks.push(...responseChoiceFinishChunks(choice, position, options));\n\t}\n\n\tconst usage = usageChunk(body.usage, options);\n\tif (usage) chunks.push(usage);\n\tchunks.push(...finishChunks);\n\treturn chunks;\n}\n\nfunction responseChoiceChunks(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst choiceIndex = choiceIndexFor(choice, position, options);\n\tconst message = isRecord(choice.message) ? choice.message : undefined;\n\tconst chunks: RawChunk[] = [];\n\n\tif (message) {\n\t\tconst content = asString(message.content);\n\t\tif (content && content.length > 0) {\n\t\t\tchunks.push(\n\t\t\t\toptions.jsonMode\n\t\t\t\t\t? { kind: \"json-delta\", delta: content }\n\t\t\t\t\t: withChoiceIndex({ kind: \"text-delta\", text: content }, choiceIndex),\n\t\t\t);\n\t\t}\n\n\t\tconst refusal = asString(message.refusal);\n\t\tif (refusal && refusal.length > 0) {\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal });\n\t\t}\n\n\t\tchunks.push(...reasoningChunks(message, options));\n\t\tchunks.push(...responseToolCallChunks(message.tool_calls, choiceIndex));\n\t\tchunks.push(\n\t\t\t...responseLegacyFunctionChunks(message.function_call, choiceIndex, position, options),\n\t\t);\n\t}\n\n\treturn chunks;\n}\n\nfunction responseChoiceFinishChunks(\n\tchoice: Record<string, unknown>,\n\tposition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tconst choiceIndex = choiceIndexFor(choice, position, options);\n\treturn finishReasonChunks(choice.finish_reason, choiceIndex, options);\n}\n\nfunction responseToolCallChunks(value: unknown, choiceIndex: number | undefined): RawChunk[] {\n\tif (!Array.isArray(value)) return [];\n\tconst chunks: RawChunk[] = [];\n\n\tfor (let position = 0; position < value.length; position += 1) {\n\t\tconst toolCall = value[position];\n\t\tif (!isRecord(toolCall)) continue;\n\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\tconst id = asString(toolCall.id);\n\t\tconst name = asString(fn?.name) ?? \"unknown\";\n\t\tconst args = asString(fn?.arguments) ?? \"\";\n\t\tconst index = asNumber(toolCall.index) ?? position;\n\n\t\tchunks.push(toolStartChunk({ id, name, index, choiceIndex }));\n\t\tif (args.length > 0) chunks.push(toolArgsChunk({ id, delta: args, index, choiceIndex }));\n\t\tchunks.push(toolDoneChunk({ id, index, choiceIndex }));\n\t}\n\n\treturn chunks;\n}\n\nfunction responseLegacyFunctionChunks(\n\tvalue: unknown,\n\tchoiceIndex: number | undefined,\n\tchoicePosition: number,\n\toptions: RequiredOpenAIChatLikeParserOptions,\n): RawChunk[] {\n\tif (!isRecord(value)) return [];\n\tconst name = asString(value.name) ?? \"unknown\";\n\tconst args = asString(value.arguments) ?? \"\";\n\tconst id = `${options.legacyFunctionIdPrefix}:${choiceIndex ?? choicePosition}`;\n\tconst chunks: RawChunk[] = [\n\t\twithChoiceIndex({ kind: \"tool-start\", id, name, index: 0 }, choiceIndex),\n\t];\n\tif (args.length > 0) {\n\t\tchunks.push(\n\t\t\twithChoiceIndex({ kind: \"tool-args-delta\", id, delta: args, index: 0 }, choiceIndex),\n\t\t);\n\t}\n\tchunks.push(withChoiceIndex({ kind: \"tool-done\", id, index: 0 }, choiceIndex));\n\treturn chunks;\n}\n","export interface OpenAIChatLikeParserOptions {\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n\terrorPrefix: \"openaiChatAdapter\" | \"openaiCompatibleAdapter\";\n\tlooseErrorShape?: boolean;\n\tallowMissingMetadata?: boolean;\n\tuseChoicePositionFallback?: boolean;\n\treasoningFieldAliases?: string[];\n\tusageInputTokenFields?: string[];\n\tusageOutputTokenFields?: string[];\n\trejectUnrecognizedPayloads?: boolean;\n}\n\nexport interface RequiredOpenAIChatLikeParserOptions {\n\tjsonMode: boolean;\n\tlegacyFunctionIdPrefix: string;\n\terrorPrefix: \"openaiChatAdapter\" | \"openaiCompatibleAdapter\";\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n\treasoningFieldAliases: string[];\n\tusageInputTokenFields: string[];\n\tusageOutputTokenFields: string[];\n\trejectUnrecognizedPayloads: boolean;\n}\n\nexport function normalizeOptions(\n\toptions: OpenAIChatLikeParserOptions,\n): RequiredOpenAIChatLikeParserOptions {\n\treturn {\n\t\tjsonMode: options.jsonMode ?? false,\n\t\tlegacyFunctionIdPrefix: options.legacyFunctionIdPrefix ?? \"legacy_function\",\n\t\terrorPrefix: options.errorPrefix,\n\t\tlooseErrorShape: options.looseErrorShape ?? false,\n\t\tallowMissingMetadata: options.allowMissingMetadata ?? false,\n\t\tuseChoicePositionFallback: options.useChoicePositionFallback ?? true,\n\t\treasoningFieldAliases: options.reasoningFieldAliases ?? [],\n\t\tusageInputTokenFields: options.usageInputTokenFields ?? [\"prompt_tokens\"],\n\t\tusageOutputTokenFields: options.usageOutputTokenFields ?? [\"completion_tokens\"],\n\t\trejectUnrecognizedPayloads: options.rejectUnrecognizedPayloads ?? false,\n\t};\n}\n\nexport interface ToolState {\n\tid?: string;\n\tname: string;\n\tstartEmitted: boolean;\n\tsawArguments: boolean;\n}\n","import type { StreamAdapter } from \"../../../core/types\";\nimport { createStreamAdapter } from \"../../utils\";\nimport { OpenAIChatLikeParser } from \"./stream-parser\";\nimport { parseResponse } from \"./response\";\nimport { normalizeOptions, type OpenAIChatLikeParserOptions } from \"./types\";\n\nexport type { OpenAIChatLikeParserOptions } from \"./types\";\n\nexport function createOpenAIChatLikeAdapter(options: OpenAIChatLikeParserOptions): StreamAdapter {\n\tconst normalized = normalizeOptions(options);\n\tconst parser = new OpenAIChatLikeParser(normalized);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions: normalized,\n\t});\n}\n","import type { StreamAdapter } from \"../core/types\";\nimport { createOpenAIChatLikeAdapter } from \"./openai-chat/parser\";\n\nexport interface OpenAIChatAdapterOptions {\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n}\n\nexport function openaiChatAdapter(options: OpenAIChatAdapterOptions = {}): StreamAdapter {\n\treturn createOpenAIChatLikeAdapter({\n\t\t...options,\n\t\terrorPrefix: \"openaiChatAdapter\",\n\t\tlooseErrorShape: false,\n\t\tallowMissingMetadata: false,\n\t\tuseChoicePositionFallback: true,\n\t\tusageInputTokenFields: [\"prompt_tokens\"],\n\t\tusageOutputTokenFields: [\"completion_tokens\"],\n\t});\n}\n","import type { StreamAdapter } from \"../core/types\";\nimport { createOpenAIChatLikeAdapter } from \"./openai-chat/parser\";\n\nexport type OpenAICompatibleProvider =\n\t| \"generic\"\n\t| \"openrouter\"\n\t| \"groq\"\n\t| \"ollama\"\n\t| \"lmstudio\"\n\t| \"together\"\n\t| \"fireworks\";\n\nexport interface OpenAICompatibleAdapterOptions {\n\tprovider?: OpenAICompatibleProvider;\n\tjsonMode?: boolean;\n\tlegacyFunctionIdPrefix?: string;\n\tlooseErrorShape?: boolean;\n\tallowMissingMetadata?: boolean;\n\tuseChoicePositionFallback?: boolean;\n\treasoningFieldAliases?: string[];\n}\n\nconst DEFAULT_PRESET = {\n\tlooseErrorShape: true,\n\tallowMissingMetadata: true,\n\tuseChoicePositionFallback: true,\n\treasoningFieldAliases: [\"thinking\", \"thinking_content\"],\n} as const;\n\nconst PRESET_OVERRIDES: Partial<\n\tRecord<OpenAICompatibleProvider, Pick<OpenAICompatibleAdapterOptions, \"reasoningFieldAliases\">>\n> = {\n\topenrouter: { reasoningFieldAliases: [\"reasoning\"] },\n\ttogether: { reasoningFieldAliases: [\"reasoning\", \"reasoning_delta\"] },\n};\n\nexport function openaiCompatibleAdapter(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): StreamAdapter {\n\tconst preset = providerPreset(options.provider ?? \"generic\");\n\treturn createOpenAIChatLikeAdapter({\n\t\t...preset,\n\t\t...options,\n\t\terrorPrefix: \"openaiCompatibleAdapter\",\n\t\tusageInputTokenFields: [\"prompt_tokens\", \"input_tokens\"],\n\t\tusageOutputTokenFields: [\"completion_tokens\", \"output_tokens\"],\n\t\trejectUnrecognizedPayloads: options.allowMissingMetadata === false,\n\t\treasoningFieldAliases: [\n\t\t\t...(preset.reasoningFieldAliases ?? []),\n\t\t\t...(options.reasoningFieldAliases ?? []),\n\t\t],\n\t});\n}\n\nfunction providerPreset(provider: OpenAICompatibleProvider) {\n\treturn {\n\t\t...DEFAULT_PRESET,\n\t\t...PRESET_OVERRIDES[provider],\n\t};\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromMessage } from \"./errors\";\nimport {\n\tasNumber,\n\tasString,\n\tcreateStreamAdapter,\n\tisRecord,\n\toptionalRawChunk,\n\tparseAdapterJSON,\n} from \"./utils\";\n\nexport interface AnthropicAdapterOptions {\n\t/**\n\t * Map `json` content blocks to json-delta instead of text-delta.\n\t */\n\tjsonMode?: boolean;\n}\n\ninterface BlockState {\n\ttype: string;\n\tid?: string;\n\tname?: string;\n}\n\nexport function anthropicAdapter(options: AnthropicAdapterOptions = {}): StreamAdapter {\n\tconst parser = new AnthropicStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass AnthropicStreamParser {\n\tprivate readonly blocks = new Map<number, BlockState>();\n\tprivate sawFinish = false;\n\n\tconstructor(private readonly options: AnthropicAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterJSON(raw, \"anthropicAdapter.parseChunk\");\n\t\tif (!isRecord(payload)) {\n\t\t\tthrow libraryError(\"anthropicAdapter.parseChunk expected a JSON object\");\n\t\t}\n\n\t\tconst type = asString(payload.type);\n\t\tswitch (type) {\n\t\t\tcase \"ping\":\n\t\t\t\treturn [];\n\t\t\tcase \"message_start\":\n\t\t\t\treturn this.messageStart(payload);\n\t\t\tcase \"content_block_start\":\n\t\t\t\treturn this.contentBlockStart(payload);\n\t\t\tcase \"content_block_delta\":\n\t\t\t\treturn this.contentBlockDelta(payload);\n\t\t\tcase \"content_block_stop\":\n\t\t\t\treturn this.contentBlockStop(payload);\n\t\t\tcase \"message_delta\":\n\t\t\t\treturn this.messageDelta(payload);\n\t\t\tcase \"message_stop\":\n\t\t\t\treturn this.messageStop();\n\t\t\tcase \"error\":\n\t\t\t\treturn providerErrorChunks(payload.error);\n\t\t\tdefault:\n\t\t\t\tthrow libraryError(`anthropicAdapter.parseChunk unknown event type: ${String(type)}`);\n\t\t}\n\t}\n\n\tprivate messageStart(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst message = isRecord(payload.message) ? payload.message : undefined;\n\t\tif (!message) return [];\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst id = asString(message.id);\n\t\tconst model = asString(message.model);\n\t\tif (id) chunks.push({ kind: \"message-start\", id });\n\t\tif (id || model) {\n\t\t\tchunks.push(optionalRawChunk({ kind: \"metadata\", responseId: id, model, raw: message }));\n\t\t}\n\t\tconst usage = usageChunk(message.usage);\n\t\tif (usage) chunks.push(usage);\n\t\treturn chunks;\n\t}\n\n\tprivate contentBlockStart(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst block = isRecord(payload.content_block) ? payload.content_block : undefined;\n\t\tif (!block) return [];\n\t\tconst blockType = asString(block.type) ?? \"unknown\";\n\t\tconst state: BlockState = { type: blockType };\n\t\tthis.blocks.set(index, state);\n\n\t\tswitch (blockType) {\n\t\t\tcase \"text\": {\n\t\t\t\tconst text = asString(block.text);\n\t\t\t\treturn text ? [{ kind: \"text-delta\", text }] : [];\n\t\t\t}\n\t\t\tcase \"thinking\": {\n\t\t\t\tconst text = asString(block.thinking);\n\t\t\t\treturn text ? [{ kind: \"reasoning-delta\", text, variant: \"detail\" }] : [];\n\t\t\t}\n\t\t\tcase \"redacted_thinking\":\n\t\t\t\treturn [];\n\t\t\tcase \"tool_use\": {\n\t\t\t\tconst id = asString(block.id);\n\t\t\t\tconst name = asString(block.name) ?? \"unknown\";\n\t\t\t\tif (id) state.id = id;\n\t\t\t\tstate.name = name;\n\t\t\t\tconst chunks: RawChunk[] = [optionalRawChunk({ kind: \"tool-start\", id, name, index })];\n\t\t\t\tconst input = block.input;\n\t\t\t\tif (input !== undefined && !(isRecord(input) && Object.keys(input).length === 0)) {\n\t\t\t\t\tchunks.push(\n\t\t\t\t\t\toptionalRawChunk({ kind: \"tool-args-delta\", id, delta: JSON.stringify(input), index }),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\treturn chunks;\n\t\t\t}\n\t\t\tcase \"json\": {\n\t\t\t\tconst text = asString(block.text) ?? asString(block.partial_json);\n\t\t\t\treturn text ? [{ kind: \"json-delta\", delta: text }] : [];\n\t\t\t}\n\t\t\tcase \"refusal\": {\n\t\t\t\tconst text = asString(block.refusal) ?? asString(block.text);\n\t\t\t\treturn text ? [{ kind: \"refusal-delta\", text }] : [];\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate contentBlockDelta(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tif (!delta) return [];\n\t\tconst deltaType = asString(delta.type);\n\t\tconst state = this.blocks.get(index);\n\n\t\tswitch (deltaType) {\n\t\t\tcase \"text_delta\": {\n\t\t\t\tconst text = asString(delta.text);\n\t\t\t\tif (!text) return [];\n\t\t\t\tif (this.options.jsonMode || state?.type === \"json\")\n\t\t\t\t\treturn [{ kind: \"json-delta\", delta: text }];\n\t\t\t\tif (state?.type === \"refusal\") return [{ kind: \"refusal-delta\", text }];\n\t\t\t\treturn [{ kind: \"text-delta\", text }];\n\t\t\t}\n\t\t\tcase \"thinking_delta\": {\n\t\t\t\tconst text = asString(delta.thinking);\n\t\t\t\treturn text ? [{ kind: \"reasoning-delta\", text, variant: \"detail\" }] : [];\n\t\t\t}\n\t\t\tcase \"input_json_delta\": {\n\t\t\t\tconst partial = asString(delta.partial_json);\n\t\t\t\tif (!partial) return [];\n\t\t\t\treturn [\n\t\t\t\t\toptionalRawChunk({ kind: \"tool-args-delta\", id: state?.id, delta: partial, index }),\n\t\t\t\t];\n\t\t\t}\n\t\t\tcase \"signature_delta\":\n\t\t\t\treturn [];\n\t\t\tdefault:\n\t\t\t\treturn [];\n\t\t}\n\t}\n\n\tprivate contentBlockStop(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst state = this.blocks.get(index);\n\t\tthis.blocks.delete(index);\n\t\tif (state?.type === \"tool_use\") {\n\t\t\treturn [optionalRawChunk({ kind: \"tool-done\", id: state.id, index })];\n\t\t}\n\t\treturn [];\n\t}\n\n\tprivate messageDelta(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst usage = usageChunk(payload.usage);\n\t\tif (usage) chunks.push(usage);\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst stopReason = delta ? asString(delta.stop_reason) : undefined;\n\t\tif (stopReason) {\n\t\t\tconst reason = finishReason(stopReason);\n\t\t\tif (reason) chunks.push({ kind: \"finish\", reason });\n\t\t\tthis.sawFinish = true;\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate messageStop(): RawChunk[] {\n\t\tif (this.sawFinish) return [];\n\t\tthis.sawFinish = true;\n\t\treturn [{ kind: \"finish\", reason: \"stop\" }];\n\t}\n}\n\nfunction parseResponse(body: unknown, options: AnthropicAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"anthropicAdapter.parseResponse expected an Anthropic message object\");\n\t}\n\tif (asString(body.type) === \"error\" || isRecord(body.error)) {\n\t\treturn providerErrorChunks(body.error);\n\t}\n\n\tconst chunks: RawChunk[] = [];\n\tconst id = asString(body.id);\n\tconst model = asString(body.model);\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\tif (id || model)\n\t\tchunks.push(optionalRawChunk({ kind: \"metadata\", responseId: id, model, raw: body }));\n\tconst inputUsage = usageChunk(body.usage);\n\tif (inputUsage) chunks.push(inputUsage);\n\n\tconst content = Array.isArray(body.content) ? body.content : [];\n\tfor (let index = 0; index < content.length; index += 1) {\n\t\tconst block = content[index];\n\t\tif (!isRecord(block)) continue;\n\t\tchunks.push(...responseBlockChunks(block, index, options));\n\t}\n\n\tconst reason = finishReason(asString(body.stop_reason));\n\tif (reason) chunks.push({ kind: \"finish\", reason });\n\treturn chunks;\n}\n\nfunction responseBlockChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\toptions: AnthropicAdapterOptions,\n): RawChunk[] {\n\tconst type = asString(block.type);\n\tswitch (type) {\n\t\tcase \"text\": {\n\t\t\tconst text = asString(block.text);\n\t\t\tif (!text) return [];\n\t\t\treturn options.jsonMode\n\t\t\t\t? [{ kind: \"json-delta\", delta: text }]\n\t\t\t\t: [{ kind: \"text-delta\", text }];\n\t\t}\n\t\tcase \"thinking\": {\n\t\t\tconst text = asString(block.thinking);\n\t\t\treturn text ? [{ kind: \"reasoning-delta\", text, variant: \"detail\" }] : [];\n\t\t}\n\t\tcase \"tool_use\": {\n\t\t\tconst id = asString(block.id);\n\t\t\tconst name = asString(block.name) ?? \"unknown\";\n\t\t\tconst chunks: RawChunk[] = [optionalRawChunk({ kind: \"tool-start\", id, name, index })];\n\t\t\tif (block.input !== undefined) {\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tdelta: JSON.stringify(block.input),\n\t\t\t\t\t\tindex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\tchunks.push(optionalRawChunk({ kind: \"tool-done\", id, index }));\n\t\t\treturn chunks;\n\t\t}\n\t\tcase \"refusal\": {\n\t\t\tconst text = asString(block.refusal) ?? asString(block.text);\n\t\t\treturn text ? [{ kind: \"refusal-delta\", text }] : [];\n\t\t}\n\t\tdefault:\n\t\t\treturn [];\n\t}\n}\n\nfunction finishReason(value: string | undefined): FinishReason | undefined {\n\tswitch (value) {\n\t\tcase \"end_turn\":\n\t\tcase \"stop_sequence\":\n\t\t\treturn \"stop\";\n\t\tcase \"max_tokens\":\n\t\t\treturn \"length\";\n\t\tcase \"tool_use\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"refusal\":\n\t\t\treturn \"content_filter\";\n\t\tcase undefined:\n\t\tcase null:\n\t\t\treturn undefined;\n\t\tdefault:\n\t\t\treturn \"stop\";\n\t}\n}\n\nfunction usageChunk(value: unknown): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = asNumber(value.input_tokens);\n\tconst outputTokens = asNumber(value.output_tokens);\n\tif (inputTokens === undefined && outputTokens === undefined) return undefined;\n\treturn optionalRawChunk({ kind: \"usage\", inputTokens, outputTokens, raw: value });\n}\n\nfunction providerErrorChunks(value: unknown): RawChunk[] {\n\tconst message = isRecord(value) ? asString(value.message) : undefined;\n\treturn providerErrorChunksFromMessage(message ?? \"Anthropic provider error\", false);\n}\n","import type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromMessage } from \"./errors\";\nimport {\n\tasNumber,\n\tasString,\n\tcreateStreamAdapter,\n\tisRecord,\n\toptionalRawChunk,\n\tparseAdapterJSON,\n} from \"./utils\";\n\nexport interface OpenAIResponsesAdapterOptions {\n\tjsonMode?: boolean;\n}\n\ninterface ToolState {\n\tid: string;\n\tname: string;\n\tindex: number | undefined;\n\targs: string;\n\tstarted: boolean;\n\tdone: boolean;\n}\n\nexport function openaiResponsesAdapter(options: OpenAIResponsesAdapterOptions = {}): StreamAdapter {\n\tconst parser = new ResponsesParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass ResponsesParser {\n\tprivate metadataEmitted = false;\n\tprivate textSeen = false;\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly aliases = new Map<string, string>();\n\n\tconstructor(private readonly options: OpenAIResponsesAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tif (raw.trim() === \"[DONE]\") return [];\n\t\tconst payload = parseAdapterJSON(raw, \"openaiResponsesAdapter.parseChunk\");\n\t\tif (!isRecord(payload)) {\n\t\t\tthrow libraryError(\"openaiResponsesAdapter.parseChunk expected a JSON object\");\n\t\t}\n\n\t\tif (isErrorPayload(payload)) return providerErrorChunks(errorMessage(payload));\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst response = isRecord(payload.response) ? payload.response : payload;\n\t\tif (!this.metadataEmitted && isRecord(response) && hasResponseMetadata(response)) {\n\t\t\tchunks.push(...metadataChunks(response));\n\t\t\tthis.metadataEmitted = true;\n\t\t}\n\n\t\tconst type = asString(payload.type);\n\t\tswitch (type) {\n\t\t\tcase \"response.created\":\n\t\t\tcase \"response.in_progress\":\n\t\t\t\tbreak;\n\t\t\tcase \"response.output_text.delta\":\n\t\t\t\tchunks.push(...this.textDelta(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.output_text.done\":\n\t\t\t\tchunks.push(...this.textDone(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.refusal.delta\":\n\t\t\t\tchunks.push(...refusalDelta(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.refusal.done\":\n\t\t\t\tbreak;\n\t\t\tcase \"response.content_part.added\":\n\t\t\tcase \"response.content_part.done\":\n\t\t\t\tchunks.push(...contentPartChunks(payload, this.options));\n\t\t\t\tbreak;\n\t\t\tcase \"response.output_item.added\":\n\t\t\t\tchunks.push(...this.outputItemAdded(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.output_item.delta\":\n\t\t\t\tchunks.push(...this.outputItemDelta(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.output_item.done\":\n\t\t\t\tchunks.push(...this.outputItemDone(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.function_call_arguments.delta\":\n\t\t\t\tchunks.push(...this.functionArgsDelta(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.function_call_arguments.done\":\n\t\t\t\tchunks.push(...this.functionArgsDone(payload));\n\t\t\t\tbreak;\n\t\t\tcase \"response.completed\":\n\t\t\t\tchunks.push(...usageFromResponse(response));\n\t\t\t\tchunks.push({ kind: \"finish\", reason: \"stop\" });\n\t\t\t\tbreak;\n\t\t\tcase \"response.failed\":\n\t\t\t\tchunks.push(...providerErrorChunks(errorMessage(response)));\n\t\t\t\tbreak;\n\t\t\tcase \"response.incomplete\":\n\t\t\t\tchunks.push(...usageFromResponse(response));\n\t\t\t\tchunks.push({ kind: \"finish\", reason: \"incomplete\" });\n\t\t\t\tbreak;\n\t\t\tcase \"error\":\n\t\t\t\tchunks.push(...providerErrorChunks(errorMessage(payload)));\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tchunks.push(...reasoningChunks(payload));\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate textDelta(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst text = asString(payload.delta) ?? asString(payload.text);\n\t\tif (!text) return [];\n\t\tthis.textSeen = true;\n\t\treturn [\n\t\t\tthis.options.jsonMode ? { kind: \"json-delta\", delta: text } : { kind: \"text-delta\", text },\n\t\t];\n\t}\n\n\tprivate textDone(payload: Record<string, unknown>): RawChunk[] {\n\t\tif (this.textSeen) return [];\n\t\tconst text = asString(payload.text) ?? asString(payload.delta);\n\t\tif (!text) return [];\n\t\tthis.textSeen = true;\n\t\treturn [\n\t\t\tthis.options.jsonMode ? { kind: \"json-delta\", delta: text } : { kind: \"text-delta\", text },\n\t\t];\n\t}\n\n\tprivate outputItemAdded(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst item = isRecord(payload.item) ? payload.item : undefined;\n\t\tif (!item) return [];\n\t\tif (asString(item.type) === \"function_call\") {\n\t\t\tconst state = this.toolState(payload, item);\n\t\t\tconst chunks: RawChunk[] = [];\n\t\t\tif (!state.started) {\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tname: state.name,\n\t\t\t\t\t\tindex: state.index,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tstate.started = true;\n\t\t\t}\n\t\t\tconst args = asString(item.arguments);\n\t\t\tif (args && state.args.length === 0) {\n\t\t\t\tstate.args += args;\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\tdelta: args,\n\t\t\t\t\t\tindex: state.index,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn chunks;\n\t\t}\n\t\treturn messageItemChunks(item, this.options);\n\t}\n\n\tprivate outputItemDelta(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : payload;\n\t\tconst args = asString(delta.arguments) ?? asString(delta.delta);\n\t\tif (!args) return [];\n\t\tconst state = this.toolState(payload, delta);\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (!state.started) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid: state.id,\n\t\t\t\t\tname: state.name,\n\t\t\t\t\tindex: state.index,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tstate.started = true;\n\t\t}\n\t\tstate.args += args;\n\t\tchunks.push(\n\t\t\toptionalRawChunk({ kind: \"tool-args-delta\", id: state.id, delta: args, index: state.index }),\n\t\t);\n\t\treturn chunks;\n\t}\n\n\tprivate outputItemDone(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst item = isRecord(payload.item) ? payload.item : payload;\n\t\tif (asString(item.type) !== \"function_call\") return messageItemChunks(item, this.options);\n\t\tconst state = this.toolState(payload, item);\n\t\tif (state.done) return [];\n\t\tstate.done = true;\n\t\treturn [optionalRawChunk({ kind: \"tool-done\", id: state.id, index: state.index })];\n\t}\n\n\tprivate functionArgsDelta(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst delta = asString(payload.delta);\n\t\tif (!delta) return [];\n\t\tconst state = this.toolState(payload);\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (!state.started) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid: state.id,\n\t\t\t\t\tname: state.name,\n\t\t\t\t\tindex: state.index,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tstate.started = true;\n\t\t}\n\t\tstate.args += delta;\n\t\tchunks.push(\n\t\t\toptionalRawChunk({ kind: \"tool-args-delta\", id: state.id, delta, index: state.index }),\n\t\t);\n\t\treturn chunks;\n\t}\n\n\tprivate functionArgsDone(payload: Record<string, unknown>): RawChunk[] {\n\t\tconst state = this.toolState(payload);\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst finalArgs = asString(payload.arguments);\n\t\tif (finalArgs && finalArgs !== state.args && !finalArgs.startsWith(state.args)) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\tid: state.id,\n\t\t\t\t\tdelta: finalArgs,\n\t\t\t\t\tindex: state.index,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tstate.args += finalArgs;\n\t\t} else if (\n\t\t\tfinalArgs &&\n\t\t\tfinalArgs.startsWith(state.args) &&\n\t\t\tfinalArgs.length > state.args.length\n\t\t) {\n\t\t\tconst missing = finalArgs.slice(state.args.length);\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\tid: state.id,\n\t\t\t\t\tdelta: missing,\n\t\t\t\t\tindex: state.index,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tstate.args = finalArgs;\n\t\t}\n\t\tif (!state.started) {\n\t\t\tchunks.unshift(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid: state.id,\n\t\t\t\t\tname: state.name,\n\t\t\t\t\tindex: state.index,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tstate.started = true;\n\t\t}\n\t\tif (!state.done) {\n\t\t\tchunks.push(optionalRawChunk({ kind: \"tool-done\", id: state.id, index: state.index }));\n\t\t\tstate.done = true;\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate toolState(payload: Record<string, unknown>, item?: Record<string, unknown>): ToolState {\n\t\tconst id = toolId(payload, item);\n\t\tconst index = asNumber(payload.output_index);\n\t\tconst existing = this.tools.get(id);\n\t\tif (existing) {\n\t\t\tconst callId = asString(item?.call_id) ?? asString(payload.call_id);\n\t\t\tconst itemId = asString(item?.id) ?? asString(payload.item_id);\n\t\t\tif (callId) this.aliases.set(callId, id);\n\t\t\tif (itemId) this.aliases.set(itemId, id);\n\t\t\treturn existing;\n\t\t}\n\t\tconst state: ToolState = {\n\t\t\tid,\n\t\t\tname: asString(item?.name) ?? \"unknown\",\n\t\t\tindex,\n\t\t\targs: \"\",\n\t\t\tstarted: false,\n\t\t\tdone: false,\n\t\t};\n\t\tthis.tools.set(id, state);\n\t\tconst callId = asString(item?.call_id) ?? asString(payload.call_id);\n\t\tconst itemId = asString(item?.id) ?? asString(payload.item_id);\n\t\tif (callId) this.aliases.set(callId, id);\n\t\tif (itemId) this.aliases.set(itemId, id);\n\t\treturn state;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: OpenAIResponsesAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"openaiResponsesAdapter.parseResponse expected an OpenAI Responses object\");\n\t}\n\tif (isErrorPayload(body) || asString(body.status) === \"failed\") {\n\t\treturn providerErrorChunks(errorMessage(body));\n\t}\n\n\tconst chunks: RawChunk[] = [];\n\tchunks.push(...metadataChunks(body));\n\tconst output = Array.isArray(body.output) ? body.output : [];\n\tfor (let index = 0; index < output.length; index += 1) {\n\t\tconst item = output[index];\n\t\tif (!isRecord(item)) continue;\n\t\tif (asString(item.type) === \"function_call\") {\n\t\t\tconst id = asString(item.call_id) ?? asString(item.id) ?? `response_tool:${index}`;\n\t\t\tconst name = asString(item.name) ?? \"unknown\";\n\t\t\tchunks.push({ kind: \"tool-start\", id, name, index });\n\t\t\tconst args = asString(item.arguments);\n\t\t\tif (args) chunks.push({ kind: \"tool-args-delta\", id, delta: args, index });\n\t\t\tchunks.push({ kind: \"tool-done\", id, index });\n\t\t} else {\n\t\t\tchunks.push(...messageItemChunks(item, options));\n\t\t}\n\t}\n\tchunks.push(...usageFromResponse(body));\n\tconst status = asString(body.status);\n\tif (status === \"incomplete\") chunks.push({ kind: \"finish\", reason: \"incomplete\" });\n\telse chunks.push({ kind: \"finish\", reason: \"stop\" });\n\treturn chunks;\n}\n\nfunction metadataChunks(response: Record<string, unknown>): RawChunk[] {\n\tconst id = asString(response.id);\n\tconst chunks: RawChunk[] = [];\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\tconst metadata = optionalRawChunk({\n\t\tkind: \"metadata\",\n\t\tresponseId: id,\n\t\tmodel: asString(response.model),\n\t\tcreated: asNumber(response.created_at),\n\t\traw: response,\n\t});\n\tif (metadata.kind === \"metadata\" && (metadata.responseId || metadata.model || metadata.created)) {\n\t\tchunks.push(metadata);\n\t}\n\treturn chunks;\n}\n\nfunction hasResponseMetadata(response: Record<string, unknown>): boolean {\n\treturn (\n\t\tasString(response.id) !== undefined ||\n\t\tasString(response.model) !== undefined ||\n\t\tasNumber(response.created_at) !== undefined\n\t);\n}\n\nfunction messageItemChunks(\n\titem: Record<string, unknown>,\n\toptions: OpenAIResponsesAdapterOptions,\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst content = Array.isArray(item.content) ? item.content : [];\n\tfor (const part of content) {\n\t\tif (!isRecord(part)) continue;\n\t\tconst type = asString(part.type);\n\t\tconst text = asString(part.text) ?? asString(part.delta);\n\t\tconst refusal = asString(part.refusal);\n\t\tif (type === \"output_text\" && text) chunks.push(textChunk(text, options));\n\t\tif (type === \"refusal\" && (refusal || text))\n\t\t\tchunks.push({ kind: \"refusal-delta\", text: refusal ?? text ?? \"\" });\n\t}\n\tconst directText = asString(item.text);\n\tif (directText) chunks.push(textChunk(directText, options));\n\tchunks.push(...reasoningChunks(item));\n\treturn chunks;\n}\n\nfunction contentPartChunks(\n\tpayload: Record<string, unknown>,\n\toptions: OpenAIResponsesAdapterOptions,\n): RawChunk[] {\n\tconst part = isRecord(payload.part)\n\t\t? payload.part\n\t\t: isRecord(payload.content_part)\n\t\t\t? payload.content_part\n\t\t\t: payload;\n\treturn messageItemChunks({ content: [part] }, options);\n}\n\nfunction refusalDelta(payload: Record<string, unknown>): RawChunk[] {\n\tconst text = asString(payload.delta) ?? asString(payload.refusal) ?? asString(payload.text);\n\treturn text ? [{ kind: \"refusal-delta\", text }] : [];\n}\n\nfunction reasoningChunks(payload: Record<string, unknown>): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tfor (const field of [\"reasoning\", \"reasoning_text\", \"summary\"]) {\n\t\tconst text = asString(payload[field]);\n\t\tif (text)\n\t\t\tchunks.push({\n\t\t\t\tkind: \"reasoning-delta\",\n\t\t\t\ttext,\n\t\t\t\tvariant: field === \"summary\" ? \"summary\" : \"detail\",\n\t\t\t});\n\t}\n\treturn chunks;\n}\n\nfunction usageFromResponse(response: Record<string, unknown>): RawChunk[] {\n\tconst usage = isRecord(response.usage) ? response.usage : undefined;\n\tif (!usage) return [];\n\tconst inputTokens = asNumber(usage.input_tokens);\n\tconst outputTokens = asNumber(usage.output_tokens);\n\tconst details = isRecord(usage.output_tokens_details) ? usage.output_tokens_details : undefined;\n\tconst reasoningTokens = details ? asNumber(details.reasoning_tokens) : undefined;\n\tif (inputTokens === undefined && outputTokens === undefined && reasoningTokens === undefined)\n\t\treturn [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"usage\",\n\t\t\tinputTokens,\n\t\t\toutputTokens,\n\t\t\treasoningTokens,\n\t\t\traw: usage,\n\t\t}),\n\t];\n}\n\nfunction textChunk(text: string, options: OpenAIResponsesAdapterOptions): RawChunk {\n\treturn options.jsonMode ? { kind: \"json-delta\", delta: text } : { kind: \"text-delta\", text };\n}\n\nfunction providerErrorChunks(message: string): RawChunk[] {\n\treturn providerErrorChunksFromMessage(message, false);\n}\n\nfunction errorMessage(payload: Record<string, unknown>): string {\n\tconst error = isRecord(payload.error) ? payload.error : undefined;\n\treturn (\n\t\tasString(error?.message) ??\n\t\tasString(payload.message) ??\n\t\tasString(payload.error) ??\n\t\t\"OpenAI Responses provider error\"\n\t);\n}\n\nfunction isErrorPayload(payload: Record<string, unknown>): boolean {\n\treturn asString(payload.type) === \"error\" || payload.error !== undefined;\n}\n\nfunction toolId(payload: Record<string, unknown>, item?: Record<string, unknown>): string {\n\tconst callId = asString(item?.call_id) ?? asString(payload.call_id);\n\tconst itemId = asString(item?.id) ?? asString(payload.item_id);\n\tconst index = asNumber(payload.output_index);\n\treturn callId ?? itemId ?? `response_tool:${index ?? 0}`;\n}\n","import type { CollectedStream, StreamEvent } from \"../core/types\";\n\nexport async function collectStream(events: AsyncIterable<StreamEvent>): Promise<CollectedStream> {\n\tconst result: CollectedStream = {\n\t\ttext: \"\",\n\t\treasoning: \"\",\n\t\trefusals: \"\",\n\t\tjson: undefined,\n\t\ttoolCalls: [],\n\t};\n\tconst iterator = events[Symbol.asyncIterator]();\n\n\ttry {\n\t\twhile (true) {\n\t\t\tconst item = await iterator.next();\n\t\t\tif (item.done) break;\n\t\t\tcollectEvent(result, item.value);\n\t\t}\n\t\treturn result;\n\t} catch (error) {\n\t\tawait iterator.return?.();\n\t\tthrow error;\n\t}\n}\n\nfunction collectEvent(result: CollectedStream, event: StreamEvent): void {\n\tswitch (event.type) {\n\t\tcase \"text.delta\":\n\t\t\tresult.text += event.text;\n\t\t\tbreak;\n\t\tcase \"text.done\":\n\t\t\tresult.text = preferDone(result.text, event.text);\n\t\t\tbreak;\n\t\tcase \"reasoning.delta\":\n\t\t\tresult.reasoning += event.text;\n\t\t\tbreak;\n\t\tcase \"reasoning.done\":\n\t\t\tresult.reasoning = preferDone(result.reasoning, event.text);\n\t\t\tbreak;\n\t\tcase \"refusal.delta\":\n\t\t\tresult.refusals += event.text;\n\t\t\tbreak;\n\t\tcase \"refusal.done\":\n\t\t\tresult.refusals = preferDone(result.refusals, event.text);\n\t\t\tbreak;\n\t\tcase \"json.done\":\n\t\t\tresult.json = event.value;\n\t\t\tbreak;\n\t\tcase \"tool_call.done\":\n\t\t\tresult.toolCalls.push({ id: event.id, name: event.name, args: event.args });\n\t\t\tbreak;\n\t\tcase \"usage\":\n\t\t\tresult.usage = event;\n\t\t\tbreak;\n\t\tcase \"finish\":\n\t\t\tresult.finishReason = event;\n\t\t\tbreak;\n\t\tcase \"error\":\n\t\t\tif (event.recoverable !== true) throw event.error;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tbreak;\n\t}\n}\n\nfunction preferDone(current: string, done: string): string {\n\tif (current === \"\" || current === done || done.startsWith(current)) return done;\n\tif (current.endsWith(done)) return current;\n\treturn done;\n}\n","import type { StreamEvent, ToSSEOptions } from \"../core/types\";\n\nexport function toSSE(\n\tevents: AsyncIterable<StreamEvent>,\n\toptions: ToSSEOptions = {},\n): ReadableStream<Uint8Array> {\n\tconst iterator = events[Symbol.asyncIterator]();\n\tconst encoder = new TextEncoder();\n\tlet closed = false;\n\n\treturn new ReadableStream<Uint8Array>({\n\t\tasync pull(controller) {\n\t\t\tif (closed) return;\n\t\t\ttry {\n\t\t\t\tconst item = await iterator.next();\n\t\t\t\tif (item.done) {\n\t\t\t\t\tclosed = true;\n\t\t\t\t\tcontroller.close();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst event = item.value;\n\t\t\t\tcontroller.enqueue(\n\t\t\t\t\tencoder.encode(`data: ${JSON.stringify(serializeEvent(event, options))}\\n\\n`),\n\t\t\t\t);\n\t\t\t\tif (event.type === \"finish\") {\n\t\t\t\t\tclosed = true;\n\t\t\t\t\tawait iterator.return?.();\n\t\t\t\t\tcontroller.close();\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tclosed = true;\n\t\t\t\tawait iterator.return?.();\n\t\t\t\tcontroller.error(error);\n\t\t\t}\n\t\t},\n\t\tasync cancel() {\n\t\t\tclosed = true;\n\t\t\tawait iterator.return?.();\n\t\t},\n\t});\n}\n\nfunction serializeEvent(event: StreamEvent, options: ToSSEOptions): unknown {\n\tif (event.type !== \"error\") return event;\n\n\tconst message = options.sanitizeErrors\n\t\t? (event.sanitized ?? \"An error occurred while processing the stream.\")\n\t\t: event.error.message;\n\n\treturn {\n\t\ttype: \"error\",\n\t\terror: {\n\t\t\tname: event.error.name,\n\t\t\tmessage,\n\t\t},\n\t\t...(event.recoverable === undefined ? {} : { recoverable: event.recoverable }),\n\t\t...(event.sanitized === undefined ? {} : { sanitized: event.sanitized }),\n\t};\n}\n","import type { StreamEvent } from \"../core/types\";\n\nexport function tapEvents(\n\tevents: AsyncIterable<StreamEvent>,\n\tonEvent: (event: StreamEvent) => void,\n): AsyncIterable<StreamEvent> {\n\treturn tapEventsGenerator(events, onEvent);\n}\n\nasync function* tapEventsGenerator(\n\tevents: AsyncIterable<StreamEvent>,\n\tonEvent: (event: StreamEvent) => void,\n): AsyncIterable<StreamEvent> {\n\tconst iterator = events[Symbol.asyncIterator]();\n\ttry {\n\t\twhile (true) {\n\t\t\tconst item = await iterator.next();\n\t\t\tif (item.done) break;\n\t\t\tonEvent(item.value);\n\t\t\tyield item.value;\n\t\t}\n\t} finally {\n\t\tawait iterator.return?.();\n\t}\n}\n","import type { StreamEvent, StreamEventHandlers } from \"../core/types\";\n\nexport function matchEvent<R>(event: StreamEvent, handlers: StreamEventHandlers<R>): R | undefined {\n\tswitch (event.type) {\n\t\tcase \"message.start\":\n\t\t\treturn handlers[\"message.start\"]?.(event);\n\t\tcase \"metadata\":\n\t\t\treturn handlers.metadata?.(event);\n\t\tcase \"text.delta\":\n\t\t\treturn handlers[\"text.delta\"]?.(event);\n\t\tcase \"text.done\":\n\t\t\treturn handlers[\"text.done\"]?.(event);\n\t\tcase \"reasoning.delta\":\n\t\t\treturn handlers[\"reasoning.delta\"]?.(event);\n\t\tcase \"reasoning.done\":\n\t\t\treturn handlers[\"reasoning.done\"]?.(event);\n\t\tcase \"refusal.delta\":\n\t\t\treturn handlers[\"refusal.delta\"]?.(event);\n\t\tcase \"refusal.done\":\n\t\t\treturn handlers[\"refusal.done\"]?.(event);\n\t\tcase \"json.delta\":\n\t\t\treturn handlers[\"json.delta\"]?.(event);\n\t\tcase \"json.done\":\n\t\t\treturn handlers[\"json.done\"]?.(event);\n\t\tcase \"tool_call.start\":\n\t\t\treturn handlers[\"tool_call.start\"]?.(event);\n\t\tcase \"tool_call.args.delta\":\n\t\t\treturn handlers[\"tool_call.args.delta\"]?.(event);\n\t\tcase \"tool_call.done\":\n\t\t\treturn handlers[\"tool_call.done\"]?.(event);\n\t\tcase \"usage\":\n\t\t\treturn handlers.usage?.(event);\n\t\tcase \"finish\":\n\t\t\treturn handlers.finish?.(event);\n\t\tcase \"error\":\n\t\t\treturn handlers.error?.(event);\n\t\tdefault: {\n\t\t\tconst _exhaustive: never = event;\n\t\t\treturn _exhaustive;\n\t\t}\n\t}\n}\n","import type { StreamEvent } from \"../core/types\";\n\nexport function isMessageStart(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"message.start\" }> {\n\treturn event.type === \"message.start\";\n}\n\nexport function isMetadata(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"metadata\" }> {\n\treturn event.type === \"metadata\";\n}\n\nexport function isTextDelta(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"text.delta\" }> {\n\treturn event.type === \"text.delta\";\n}\n\nexport function isTextDone(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"text.done\" }> {\n\treturn event.type === \"text.done\";\n}\n\nexport function isReasoningDelta(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"reasoning.delta\" }> {\n\treturn event.type === \"reasoning.delta\";\n}\n\nexport function isReasoningDone(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"reasoning.done\" }> {\n\treturn event.type === \"reasoning.done\";\n}\n\nexport function isRefusalDelta(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"refusal.delta\" }> {\n\treturn event.type === \"refusal.delta\";\n}\n\nexport function isRefusalDone(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"refusal.done\" }> {\n\treturn event.type === \"refusal.done\";\n}\n\nexport function isJsonDelta(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"json.delta\" }> {\n\treturn event.type === \"json.delta\";\n}\n\nexport function isJsonDone(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"json.done\" }> {\n\treturn event.type === \"json.done\";\n}\n\nexport function isToolCallStart(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"tool_call.start\" }> {\n\treturn event.type === \"tool_call.start\";\n}\n\nexport function isToolCallArgsDelta(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"tool_call.args.delta\" }> {\n\treturn event.type === \"tool_call.args.delta\";\n}\n\nexport function isToolCallDone(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"tool_call.done\" }> {\n\treturn event.type === \"tool_call.done\";\n}\n\nexport function isUsage(event: StreamEvent): event is Extract<StreamEvent, { type: \"usage\" }> {\n\treturn event.type === \"usage\";\n}\n\nexport function isFinish(event: StreamEvent): event is Extract<StreamEvent, { type: \"finish\" }> {\n\treturn event.type === \"finish\";\n}\n\nexport function isError(event: StreamEvent): event is Extract<StreamEvent, { type: \"error\" }> {\n\treturn event.type === \"error\";\n}\n"]}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
type FinishReason = "stop" | "tool_calls" | "length" | "content_filter" | "error" | "incomplete" | "aborted";
|
|
2
|
+
type ReasoningVariant = "summary" | "detail";
|
|
3
|
+
type StreamEvent = {
|
|
4
|
+
type: "message.start";
|
|
5
|
+
id?: string;
|
|
6
|
+
choiceIndex?: number;
|
|
7
|
+
} | {
|
|
8
|
+
type: "metadata";
|
|
9
|
+
model?: string;
|
|
10
|
+
responseId?: string;
|
|
11
|
+
created?: number;
|
|
12
|
+
raw?: unknown;
|
|
13
|
+
} | {
|
|
14
|
+
type: "text.delta";
|
|
15
|
+
text: string;
|
|
16
|
+
choiceIndex?: number;
|
|
17
|
+
} | {
|
|
18
|
+
type: "text.done";
|
|
19
|
+
text: string;
|
|
20
|
+
choiceIndex?: number;
|
|
21
|
+
} | {
|
|
22
|
+
type: "reasoning.delta";
|
|
23
|
+
text: string;
|
|
24
|
+
variant?: ReasoningVariant;
|
|
25
|
+
} | {
|
|
26
|
+
type: "reasoning.done";
|
|
27
|
+
text: string;
|
|
28
|
+
variant?: ReasoningVariant;
|
|
29
|
+
} | {
|
|
30
|
+
type: "refusal.delta";
|
|
31
|
+
text: string;
|
|
32
|
+
} | {
|
|
33
|
+
type: "refusal.done";
|
|
34
|
+
text: string;
|
|
35
|
+
} | {
|
|
36
|
+
type: "json.delta";
|
|
37
|
+
delta: string;
|
|
38
|
+
partial?: unknown;
|
|
39
|
+
} | {
|
|
40
|
+
type: "json.done";
|
|
41
|
+
value: unknown;
|
|
42
|
+
} | {
|
|
43
|
+
type: "tool_call.start";
|
|
44
|
+
id: string;
|
|
45
|
+
name: string;
|
|
46
|
+
index?: number;
|
|
47
|
+
choiceIndex?: number;
|
|
48
|
+
} | {
|
|
49
|
+
type: "tool_call.args.delta";
|
|
50
|
+
id: string;
|
|
51
|
+
delta: string;
|
|
52
|
+
partial?: unknown;
|
|
53
|
+
} | {
|
|
54
|
+
type: "tool_call.done";
|
|
55
|
+
id: string;
|
|
56
|
+
name: string;
|
|
57
|
+
args: unknown;
|
|
58
|
+
} | {
|
|
59
|
+
type: "usage";
|
|
60
|
+
inputTokens?: number;
|
|
61
|
+
outputTokens?: number;
|
|
62
|
+
reasoningTokens?: number;
|
|
63
|
+
raw?: unknown;
|
|
64
|
+
} | {
|
|
65
|
+
type: "finish";
|
|
66
|
+
reason: FinishReason;
|
|
67
|
+
choiceIndex?: number;
|
|
68
|
+
} | {
|
|
69
|
+
type: "error";
|
|
70
|
+
error: Error;
|
|
71
|
+
recoverable?: boolean;
|
|
72
|
+
sanitized?: string;
|
|
73
|
+
};
|
|
74
|
+
interface StreamAdapter {
|
|
75
|
+
parseChunk(raw: string): RawChunk[];
|
|
76
|
+
parseResponse?(body: unknown): RawChunk[];
|
|
77
|
+
}
|
|
78
|
+
/** Internal representation between adapter output and assembler. */
|
|
79
|
+
type RawChunk = {
|
|
80
|
+
kind: "message-start";
|
|
81
|
+
id?: string;
|
|
82
|
+
choiceIndex?: number;
|
|
83
|
+
} | {
|
|
84
|
+
kind: "text-delta";
|
|
85
|
+
text: string;
|
|
86
|
+
choiceIndex?: number;
|
|
87
|
+
} | {
|
|
88
|
+
kind: "reasoning-delta";
|
|
89
|
+
text: string;
|
|
90
|
+
variant?: ReasoningVariant;
|
|
91
|
+
} | {
|
|
92
|
+
kind: "refusal-delta";
|
|
93
|
+
text: string;
|
|
94
|
+
} | {
|
|
95
|
+
kind: "json-delta";
|
|
96
|
+
delta: string;
|
|
97
|
+
} | {
|
|
98
|
+
kind: "tool-start";
|
|
99
|
+
id?: string;
|
|
100
|
+
name: string;
|
|
101
|
+
index?: number;
|
|
102
|
+
choiceIndex?: number;
|
|
103
|
+
} | {
|
|
104
|
+
kind: "tool-args-delta";
|
|
105
|
+
id?: string;
|
|
106
|
+
delta: string;
|
|
107
|
+
index?: number;
|
|
108
|
+
choiceIndex?: number;
|
|
109
|
+
} | {
|
|
110
|
+
kind: "tool-done";
|
|
111
|
+
id?: string;
|
|
112
|
+
index?: number;
|
|
113
|
+
choiceIndex?: number;
|
|
114
|
+
} | {
|
|
115
|
+
kind: "metadata";
|
|
116
|
+
model?: string;
|
|
117
|
+
responseId?: string;
|
|
118
|
+
created?: number;
|
|
119
|
+
raw?: unknown;
|
|
120
|
+
} | {
|
|
121
|
+
kind: "usage";
|
|
122
|
+
inputTokens?: number;
|
|
123
|
+
outputTokens?: number;
|
|
124
|
+
reasoningTokens?: number;
|
|
125
|
+
raw?: unknown;
|
|
126
|
+
} | {
|
|
127
|
+
kind: "finish";
|
|
128
|
+
reason: FinishReason;
|
|
129
|
+
choiceIndex?: number;
|
|
130
|
+
} | {
|
|
131
|
+
kind: "provider-error";
|
|
132
|
+
error: unknown;
|
|
133
|
+
recoverable?: boolean;
|
|
134
|
+
};
|
|
135
|
+
interface AssembleOptions {
|
|
136
|
+
recoverMalformed?: boolean;
|
|
137
|
+
signal?: AbortSignal;
|
|
138
|
+
sanitizeErrors?: boolean;
|
|
139
|
+
strictToolArgs?: boolean;
|
|
140
|
+
maxBufferBytes?: number;
|
|
141
|
+
}
|
|
142
|
+
interface PartialJSONResult {
|
|
143
|
+
value?: unknown;
|
|
144
|
+
complete: boolean;
|
|
145
|
+
}
|
|
146
|
+
interface CollectedStream {
|
|
147
|
+
text: string;
|
|
148
|
+
reasoning: string;
|
|
149
|
+
refusals: string;
|
|
150
|
+
json: unknown;
|
|
151
|
+
toolCalls: Array<{
|
|
152
|
+
id: string;
|
|
153
|
+
name: string;
|
|
154
|
+
args: unknown;
|
|
155
|
+
}>;
|
|
156
|
+
usage?: Extract<StreamEvent, {
|
|
157
|
+
type: "usage";
|
|
158
|
+
}>;
|
|
159
|
+
finishReason?: Extract<StreamEvent, {
|
|
160
|
+
type: "finish";
|
|
161
|
+
}>;
|
|
162
|
+
}
|
|
163
|
+
interface ToSSEOptions {
|
|
164
|
+
sanitizeErrors?: boolean;
|
|
165
|
+
}
|
|
166
|
+
interface AssembleFromFileOptions extends AssembleOptions {
|
|
167
|
+
format?: "sse" | "json";
|
|
168
|
+
}
|
|
169
|
+
type StreamEventType = StreamEvent["type"];
|
|
170
|
+
type StreamEventHandlers<R> = Partial<{
|
|
171
|
+
[K in StreamEventType]: (event: Extract<StreamEvent, {
|
|
172
|
+
type: K;
|
|
173
|
+
}>) => R;
|
|
174
|
+
}>;
|
|
175
|
+
|
|
176
|
+
export type { AssembleFromFileOptions as A, CollectedStream as C, FinishReason as F, PartialJSONResult as P, RawChunk as R, StreamAdapter as S, ToSSEOptions as T, AssembleOptions as a, ReasoningVariant as b, StreamEvent as c, StreamEventHandlers as d, StreamEventType as e };
|