llm-stream-assemble 1.6.0 → 1.7.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/README.md +8 -6
- package/dist/adapters/anthropic.d.cts +1 -1
- package/dist/adapters/anthropic.d.ts +1 -1
- package/dist/adapters/bedrock.d.cts +1 -1
- package/dist/adapters/bedrock.d.ts +1 -1
- package/dist/adapters/cohere.d.cts +1 -1
- package/dist/adapters/cohere.d.ts +1 -1
- package/dist/adapters/gemini.d.cts +1 -1
- package/dist/adapters/gemini.d.ts +1 -1
- package/dist/adapters/openai-chat.cjs +81 -0
- package/dist/adapters/openai-chat.cjs.map +1 -1
- package/dist/adapters/openai-chat.d.cts +1 -1
- package/dist/adapters/openai-chat.d.ts +1 -1
- package/dist/adapters/openai-chat.js +81 -0
- package/dist/adapters/openai-chat.js.map +1 -1
- package/dist/adapters/openai-compatible.cjs +81 -0
- package/dist/adapters/openai-compatible.cjs.map +1 -1
- package/dist/adapters/openai-compatible.d.cts +1 -1
- package/dist/adapters/openai-compatible.d.ts +1 -1
- package/dist/adapters/openai-compatible.js +81 -0
- package/dist/adapters/openai-compatible.js.map +1 -1
- package/dist/adapters/openai-responses.d.cts +1 -1
- package/dist/adapters/openai-responses.d.ts +1 -1
- package/dist/core/index.cjs +6 -0
- package/dist/core/index.cjs.map +1 -1
- package/dist/core/index.d.cts +2 -2
- package/dist/core/index.d.ts +2 -2
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -1
- package/dist/index.cjs +146 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +44 -3
- package/dist/index.d.ts +44 -3
- package/dist/index.js +144 -2
- package/dist/index.js.map +1 -1
- package/dist/{types-CSHQ-Alb.d.cts → types-JvwK2_FV.d.cts} +31 -0
- package/dist/{types-CSHQ-Alb.d.ts → types-JvwK2_FV.d.ts} +31 -0
- package/package.json +2 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +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/utils/object.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/shared/parse-payload.ts","../src/adapters/openai-chat/parser/errors.ts","../src/adapters/shared/citation-grounding.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-presets.ts","../src/adapters/openai-compatible-resolve.ts","../src/adapters/openai-compatible.ts","../src/adapters/shared/anthropic-blocks.ts","../src/adapters/shared/stop-reasons.ts","../src/adapters/shared/usage.ts","../src/adapters/anthropic.ts","../src/adapters/shared/text-delta.ts","../src/adapters/openai-responses.ts","../src/adapters/shared/incremental-json.ts","../src/adapters/gemini.ts","../src/adapters/bedrock.ts","../src/adapters/cohere.ts","../src/transforms/collect-stream.ts","../src/transforms/to-sse.ts","../src/transforms/tap-events.ts","../src/helpers/match-event.ts","../src/helpers/citation-span-anchor.ts","../src/helpers/type-guards.ts"],"names":["payload","finishReason","firstNumber","parseResponse","providerErrorChunks","metadataChunks","reasoningChunks","toolKey","textChunk","optionalMetadataRaw","fn","chunks","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","/** Strip undefined own properties; preserve explicit null. */\nexport function stripUndefined<T extends Record<string, unknown>>(obj: T): T {\n\treturn Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined)) as T;\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 { stripUndefined } from \"../utils/object\";\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 \"citation\":\n\t\t\t\treturn [this.citationEvent(chunk)];\n\t\t\tcase \"grounding\":\n\t\t\t\treturn [this.groundingEvent(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 citationEvent(chunk: Extract<RawChunk, { kind: \"citation\" }>): StreamEvent {\n\t\tconst { kind: _kind, ...rest } = chunk;\n\t\treturn optionalEvent({ type: \"citation\", ...rest });\n\t}\n\n\tprivate groundingEvent(chunk: Extract<RawChunk, { kind: \"grounding\" }>): StreamEvent {\n\t\tconst { kind: _kind, ...rest } = chunk;\n\t\treturn optionalEvent({ type: \"grounding\", ...rest });\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 stripUndefined(\n\t\tObject.fromEntries(\n\t\t\tObject.entries(event).filter(([, value]) => value !== undefined && value !== \"kind\"),\n\t\t),\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 { stripUndefined } from \"../core/utils/object\";\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 stripUndefined(input) 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 { adapterScopedError } from \"../errors\";\nimport { isRecord, parseAdapterJSON } from \"../utils\";\n\nexport interface ParseAdapterObjectOptions {\n\ttrim?: boolean;\n\tallowDone?: boolean;\n}\n\n/**\n * Parse a single adapter payload string into a JSON object.\n * Returns null for empty / [DONE] lines when configured.\n */\nexport function parseAdapterObjectPayload(\n\traw: string,\n\tscope: string,\n\toptions: ParseAdapterObjectOptions = {},\n): Record<string, unknown> | null {\n\tconst { trim = true, allowDone = true } = options;\n\tconst input = trim ? raw.trim() : raw;\n\tif (input.length === 0 || (allowDone && input === \"[DONE]\")) return null;\n\n\tconst payload = parseAdapterJSON(input, scope);\n\tif (!isRecord(payload)) {\n\t\tthrow adapterScopedError(scope, \"expected a JSON object\");\n\t}\n\treturn payload;\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 { RawChunk } from \"../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface CitationGroundingOptions {\n\temitLegacyCitationMetadata?: boolean;\n}\n\ntype CitationChunk = Extract<RawChunk, { kind: \"citation\" }>;\ntype GroundingChunk = Extract<RawChunk, { kind: \"grounding\" }>;\n\nexport function cohereCitationFromStartPayload(\n\tcitations: unknown,\n\tindex?: number,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst citation = citationChunkFromCohere(citations, index);\n\tif (citation) chunks.push(citation);\n\tif (options.emitLegacyCitationMetadata && citations !== undefined) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: { citation: citations, index },\n\t\t\t}),\n\t\t);\n\t}\n\treturn chunks;\n}\n\nfunction citationChunkFromCohere(citations: unknown, index?: number): RawChunk | undefined {\n\tif (citations === undefined) return undefined;\n\n\tconst chunk: CitationChunk = { kind: \"citation\", raw: { citation: citations, index } };\n\tconst numericIndex = asNumber(index);\n\tif (numericIndex !== undefined) chunk.index = numericIndex;\n\n\tif (isRecord(citations)) {\n\t\tconst start = asNumber(citations.start);\n\t\tconst end = asNumber(citations.end);\n\t\tconst text = asString(citations.text);\n\t\tif (start !== undefined && end !== undefined) {\n\t\t\tchunk.span = { start, end, ...(text ? { text } : {}) };\n\t\t} else if (text) {\n\t\t\tchunk.span = { start: 0, end: text.length, text };\n\t\t}\n\t\tconst sources = citations.sources;\n\t\tif (Array.isArray(sources) && sources.length > 0) {\n\t\t\tchunk.sources = sources;\n\t\t}\n\t}\n\n\treturn optionalRawChunk(chunk);\n}\n\nexport function perplexityCitationFromPayload(\n\tpayload: Record<string, unknown>,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst citations = payload.citations;\n\tconst searchResults = payload.search_results;\n\tconst hasCitations = Array.isArray(citations) && citations.length > 0;\n\tconst hasSearchResults = Array.isArray(searchResults) && searchResults.length > 0;\n\tif (!hasCitations && !hasSearchResults) return [];\n\n\tconst urls = hasCitations\n\t\t? citations.filter((item): item is string => typeof item === \"string\")\n\t\t: undefined;\n\n\tconst chunk: CitationChunk = {\n\t\tkind: \"citation\",\n\t\traw: {\n\t\t\t...(hasCitations ? { citations } : {}),\n\t\t\t...(hasSearchResults ? { search_results: searchResults } : {}),\n\t\t},\n\t};\n\tif (urls && urls.length > 0) chunk.urls = urls;\n\tif (hasSearchResults) chunk.searchResults = searchResults as unknown[];\n\n\tconst chunks: RawChunk[] = [optionalRawChunk(chunk)!];\n\tif (options.emitLegacyCitationMetadata) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: {\n\t\t\t\t\t...(hasCitations ? { citations } : {}),\n\t\t\t\t\t...(hasSearchResults ? { search_results: searchResults } : {}),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t}\n\treturn chunks;\n}\n\nexport function geminiCitationGroundingFromCandidate(\n\tcandidate: Record<string, unknown>,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst citationMetadata = candidate.citationMetadata;\n\tconst groundingMetadata = candidate.groundingMetadata;\n\n\tif (citationMetadata !== undefined) {\n\t\tconst citation = citationChunkFromGemini(citationMetadata);\n\t\tif (citation) chunks.push(citation);\n\t}\n\tif (groundingMetadata !== undefined) {\n\t\tconst grounding = groundingChunkFromGemini(groundingMetadata);\n\t\tif (grounding) chunks.push(grounding);\n\t}\n\n\tif (\n\t\toptions.emitLegacyCitationMetadata &&\n\t\t(citationMetadata !== undefined || groundingMetadata !== undefined)\n\t) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: { citationMetadata, groundingMetadata },\n\t\t\t}),\n\t\t);\n\t}\n\n\treturn chunks;\n}\n\nfunction citationChunkFromGemini(citationMetadata: unknown): RawChunk | undefined {\n\tif (citationMetadata === undefined) return undefined;\n\tconst chunk: CitationChunk = { kind: \"citation\", raw: citationMetadata };\n\tif (isRecord(citationMetadata) && Array.isArray(citationMetadata.citations)) {\n\t\tchunk.sources = citationMetadata.citations as unknown[];\n\t}\n\treturn optionalRawChunk(chunk);\n}\n\nfunction groundingChunkFromGemini(groundingMetadata: unknown): RawChunk | undefined {\n\tif (groundingMetadata === undefined) return undefined;\n\tconst chunk: GroundingChunk = { kind: \"grounding\", raw: groundingMetadata };\n\tif (isRecord(groundingMetadata)) {\n\t\tif (Array.isArray(groundingMetadata.webSearchQueries)) {\n\t\t\tchunk.queries = groundingMetadata.webSearchQueries as string[];\n\t\t}\n\t\tif (Array.isArray(groundingMetadata.groundingChunks)) {\n\t\t\tchunk.chunks = groundingMetadata.groundingChunks as unknown[];\n\t\t}\n\t\tif (Array.isArray(groundingMetadata.groundingSupports)) {\n\t\t\tchunk.supports = groundingMetadata.groundingSupports as unknown[];\n\t\t}\n\t}\n\treturn optionalRawChunk(chunk);\n}\n\nexport function payloadWithoutCitationRootFields(\n\tpayload: Record<string, unknown>,\n): Record<string, unknown> {\n\tconst next = { ...payload };\n\tdelete next.citations;\n\tdelete next.search_results;\n\treturn next;\n}\n\nexport function metadataPayloadWithoutCitationFields(\n\tpayload: Record<string, unknown>,\n): Record<string, unknown> {\n\treturn payloadWithoutCitationRootFields(payload);\n}\n","import type { FinishReason, RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../../utils\";\nimport { adapterScopedError } from \"../../errors\";\nimport {\n\tmetadataPayloadWithoutCitationFields,\n\tperplexityCitationFromPayload,\n\ttype CitationGroundingOptions,\n} from \"../../shared/citation-grounding\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function metadataChunks(\n\tpayload: Record<string, unknown>,\n\t_options: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst id = asString(payload.id);\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\n\tconst metadataPayload = metadataPayloadWithoutCitationFields(payload);\n\tconst metadata: Extract<RawChunk, { kind: \"metadata\" }> = {\n\t\tkind: \"metadata\",\n\t\traw: metadataPayload,\n\t};\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 citationChunksFromRootPayload(\n\tpayload: Record<string, unknown>,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\treturn perplexityCitationFromPayload(payload, options);\n}\n\nexport function hasRootCitationFields(payload: Record<string, unknown>): boolean {\n\tconst citations = payload.citations;\n\tconst searchResults = payload.search_results;\n\treturn (\n\t\t(Array.isArray(citations) && citations.length > 0) ||\n\t\t(Array.isArray(searchResults) && searchResults.length > 0)\n\t);\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 } from \"../../utils\";\nimport { parseAdapterObjectPayload } from \"../../shared/parse-payload\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowUnrecognizedChunkError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tchoiceKey,\n\tcitationChunksFromRootPayload,\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\tconst payload = parseAdapterObjectPayload(raw, `${this.options.errorPrefix}.parseChunk`);\n\t\tif (!payload) return [];\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.looseErrorShape && asString(payload.error) && !isRecord(payload.error)) {\n\t\t\treturn [];\n\t\t}\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\tconst citationOptions = {\n\t\t\temitLegacyCitationMetadata: this.options.emitLegacyCitationMetadata,\n\t\t};\n\t\tif (!this.metadataEmitted && hasMetadata(payload)) {\n\t\t\tchunks.push(...metadataChunks(payload, citationOptions));\n\t\t\tthis.metadataEmitted = true;\n\t\t}\n\n\t\tchunks.push(...citationChunksFromRootPayload(payload, citationOptions));\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\tcitationChunksFromRootPayload,\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\tconst citationOptions = { emitLegacyCitationMetadata: options.emitLegacyCitationMetadata };\n\tchunks.push(...metadataChunks(body, citationOptions));\n\tchunks.push(...citationChunksFromRootPayload(body, citationOptions));\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\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: 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\temitLegacyCitationMetadata: 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\temitLegacyCitationMetadata: options.emitLegacyCitationMetadata ?? 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","export const OPENAI_COMPATIBLE_PROVIDERS = [\n\t\"generic\",\n\t\"openrouter\",\n\t\"groq\",\n\t\"deepseek\",\n\t\"mistral\",\n\t\"ollama\",\n\t\"lmstudio\",\n\t\"together\",\n\t\"fireworks\",\n\t\"perplexity\",\n\t\"xai\",\n\t\"azure\",\n\t\"cloudflare\",\n] as const;\n\nexport type OpenAICompatibleProvider = (typeof OPENAI_COMPATIBLE_PROVIDERS)[number];\n\nexport type HostCompatiblePreset = Exclude<OpenAICompatibleProvider, \"generic\">;\n\nexport const HOST_COMPATIBLE_PRESETS = OPENAI_COMPATIBLE_PROVIDERS.filter(\n\t(p): p is HostCompatiblePreset => p !== \"generic\",\n);\n\n/** Presets with strict defaults (`allowMissingMetadata: false`, `looseErrorShape: false`). */\nexport const STRICT_COMPATIBLE_PRESETS = [\n\t\"azure\",\n] as const satisfies readonly OpenAICompatibleProvider[];\n\nexport function isStrictCompatiblePreset(provider: OpenAICompatibleProvider): boolean {\n\treturn (STRICT_COMPATIBLE_PRESETS as readonly string[]).includes(provider);\n}\n\nexport const LOOSE_HOST_PRESETS = HOST_COMPATIBLE_PRESETS.filter(\n\t(p) => !isStrictCompatiblePreset(p),\n);\n\nexport type PresetOverrides = Partial<{\n\treasoningFieldAliases: string[];\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n}>;\n\nexport const DEFAULT_PRESET = {\n\tlooseErrorShape: true,\n\tallowMissingMetadata: true,\n\tuseChoicePositionFallback: true,\n\treasoningFieldAliases: [\"thinking\", \"thinking_content\"],\n} as const satisfies PresetOverrides;\n\nexport const PRESET_OVERRIDES: Partial<Record<OpenAICompatibleProvider, PresetOverrides>> = {\n\tdeepseek: { reasoningFieldAliases: [\"reasoning_content\", \"reasoning\", \"thinking\"] },\n\topenrouter: { reasoningFieldAliases: [\"reasoning\"] },\n\ttogether: { reasoningFieldAliases: [\"reasoning\", \"reasoning_delta\"] },\n\tazure: {\n\t\tlooseErrorShape: false,\n\t\tallowMissingMetadata: false,\n\t\tuseChoicePositionFallback: true,\n\t\treasoningFieldAliases: [],\n\t},\n};\n\nexport const PRESET_OVERRIDE_KEYS = Object.keys(PRESET_OVERRIDES) as HostCompatiblePreset[];\n\nexport function hasPresetOverride(provider: OpenAICompatibleProvider): boolean {\n\treturn provider in PRESET_OVERRIDES;\n}\n\nexport function providerPreset(provider: OpenAICompatibleProvider): PresetOverrides {\n\treturn {\n\t\t...DEFAULT_PRESET,\n\t\t...PRESET_OVERRIDES[provider],\n\t};\n}\n","import {\n\tDEFAULT_PRESET,\n\ttype OpenAICompatibleProvider,\n\tproviderPreset,\n} from \"./openai-compatible-presets\";\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\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: boolean;\n}\n\nexport interface ResolvedCompatibleAdapterConfig {\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n\trejectUnrecognizedPayloads: boolean;\n\treasoningFieldAliases: string[];\n}\n\nexport function resolveCompatibleAdapterConfig(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): ResolvedCompatibleAdapterConfig {\n\tconst preset = providerPreset(options.provider ?? \"generic\");\n\tconst allowMissingMetadata =\n\t\toptions.allowMissingMetadata ??\n\t\tpreset.allowMissingMetadata ??\n\t\tDEFAULT_PRESET.allowMissingMetadata;\n\tconst looseErrorShape =\n\t\toptions.looseErrorShape ?? preset.looseErrorShape ?? DEFAULT_PRESET.looseErrorShape;\n\tconst useChoicePositionFallback =\n\t\toptions.useChoicePositionFallback ??\n\t\tpreset.useChoicePositionFallback ??\n\t\tDEFAULT_PRESET.useChoicePositionFallback;\n\n\treturn {\n\t\tlooseErrorShape,\n\t\tallowMissingMetadata,\n\t\tuseChoicePositionFallback,\n\t\trejectUnrecognizedPayloads: allowMissingMetadata === false,\n\t\treasoningFieldAliases: [\n\t\t\t...(preset.reasoningFieldAliases ?? []),\n\t\t\t...(options.reasoningFieldAliases ?? []),\n\t\t],\n\t};\n}\n\nexport function compatibleProviderLabel(provider: OpenAICompatibleProvider | undefined): string {\n\treturn provider ?? \"generic\";\n}\n","import type { StreamAdapter } from \"../core/types\";\nimport { createOpenAIChatLikeAdapter } from \"./openai-chat/parser\";\nimport {\n\tresolveCompatibleAdapterConfig,\n\ttype OpenAICompatibleAdapterOptions,\n} from \"./openai-compatible-resolve\";\n\nexport type { OpenAICompatibleProvider } from \"./openai-compatible-presets\";\nexport {\n\tDEFAULT_PRESET,\n\tHOST_COMPATIBLE_PRESETS,\n\tLOOSE_HOST_PRESETS,\n\tOPENAI_COMPATIBLE_PROVIDERS,\n\tPRESET_OVERRIDE_KEYS,\n\tPRESET_OVERRIDES,\n\tSTRICT_COMPATIBLE_PRESETS,\n\thasPresetOverride,\n\tisStrictCompatiblePreset,\n\tproviderPreset,\n} from \"./openai-compatible-presets\";\nexport {\n\ttype OpenAICompatibleAdapterOptions,\n\ttype ResolvedCompatibleAdapterConfig,\n\tcompatibleProviderLabel,\n\tresolveCompatibleAdapterConfig,\n} from \"./openai-compatible-resolve\";\n\nexport function openaiCompatibleAdapter(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): StreamAdapter {\n\tconst resolved = resolveCompatibleAdapterConfig(options);\n\n\treturn createOpenAIChatLikeAdapter({\n\t\t...options,\n\t\tlooseErrorShape: resolved.looseErrorShape,\n\t\tallowMissingMetadata: resolved.allowMissingMetadata,\n\t\tuseChoicePositionFallback: resolved.useChoicePositionFallback,\n\t\terrorPrefix: \"openaiCompatibleAdapter\",\n\t\tusageInputTokenFields: [\"prompt_tokens\", \"input_tokens\"],\n\t\tusageOutputTokenFields: [\"completion_tokens\", \"output_tokens\"],\n\t\trejectUnrecognizedPayloads: resolved.rejectUnrecognizedPayloads,\n\t\treasoningFieldAliases: resolved.reasoningFieldAliases,\n\t\temitLegacyCitationMetadata: options.emitLegacyCitationMetadata ?? false,\n\t});\n}\n","import type { RawChunk } from \"../../core/types\";\nimport { asString, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface AnthropicBlockContext {\n\tjsonMode?: boolean | undefined;\n\tmode?: AnthropicBlockMode;\n}\n\nexport type AnthropicBlockMode = \"stream-start\" | \"response\";\n\n/** Map a complete Anthropic content block (response body) to raw chunks. */\nexport function anthropicResponseBlockChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\tcontext: AnthropicBlockContext,\n): RawChunk[] {\n\treturn anthropicBlockStartChunks(block, index, { ...context, mode: \"response\" });\n}\n\n/** Map content_block_start envelope block to raw chunks. */\nexport function anthropicBlockStartChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\tcontext: AnthropicBlockContext,\n): RawChunk[] {\n\tconst mode = context.mode ?? \"stream-start\";\n\tconst blockType = asString(block.type) ?? \"unknown\";\n\tswitch (blockType) {\n\t\tcase \"text\": {\n\t\t\tconst text = asString(block.text);\n\t\t\tif (!text) return [];\n\t\t\tif (context.jsonMode) return [{ kind: \"json-delta\", delta: text }];\n\t\t\treturn [{ 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 \"redacted_thinking\":\n\t\t\treturn [];\n\t\tcase \"tool_use\":\n\t\t\treturn anthropicToolUseBlockChunks(block, index, mode);\n\t\tcase \"json\": {\n\t\t\tconst text = asString(block.text) ?? asString(block.partial_json);\n\t\t\treturn text ? [{ kind: \"json-delta\", delta: text }] : [];\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 anthropicToolUseBlockChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\tmode: AnthropicBlockMode,\n): RawChunk[] {\n\tconst id = asString(block.id);\n\tconst name = asString(block.name) ?? \"unknown\";\n\tconst chunks: RawChunk[] = [optionalRawChunk({ kind: \"tool-start\", id, name, index })];\n\tconst input = block.input;\n\tif (input !== undefined && !(isRecord(input) && Object.keys(input).length === 0)) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({ kind: \"tool-args-delta\", id, delta: JSON.stringify(input), index }),\n\t\t);\n\t}\n\tif (mode === \"response\") {\n\t\tchunks.push(optionalRawChunk({ kind: \"tool-done\", id, index }));\n\t}\n\treturn chunks;\n}\n","import type { FinishReason } from \"../../core/types\";\n\n/** Anthropic Messages and Bedrock Converse share similar stop-reason strings. */\nexport function mapAnthropicLikeStopReason(value: string): FinishReason {\n\tswitch (value) {\n\t\tcase \"end_turn\":\n\t\tcase \"stop_sequence\":\n\t\t\treturn \"stop\";\n\t\tcase \"tool_use\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"max_tokens\":\n\t\t\treturn \"length\";\n\t\tcase \"content_filtered\":\n\t\tcase \"guardrail_intervened\":\n\t\tcase \"refusal\":\n\t\t\treturn \"content_filter\";\n\t\tdefault:\n\t\t\treturn \"stop\";\n\t}\n}\n","import type { RawChunk } from \"../../core/types\";\nimport { asNumber, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface UsageFieldAliases {\n\tinput?: string[];\n\toutput?: string[];\n\treasoning?: string[];\n\ttotal?: string[];\n}\n\nconst DEFAULT_ALIASES: UsageFieldAliases = {\n\tinput: [\"inputTokens\", \"input_tokens\", \"promptTokens\", \"promptTokenCount\", \"inputTokenCount\"],\n\toutput: [\n\t\t\"outputTokens\",\n\t\t\"output_tokens\",\n\t\t\"completionTokens\",\n\t\t\"candidatesTokenCount\",\n\t\t\"outputTokenCount\",\n\t],\n\treasoning: [\"reasoningTokens\", \"reasoning_tokens\", \"thoughtsTokenCount\"],\n\ttotal: [\"totalTokens\", \"totalTokenCount\", \"total_tokens\"],\n};\n\nfunction firstNumber(\n\tvalue: Record<string, unknown>,\n\tfields: string[] | undefined,\n): number | undefined {\n\tif (!fields) return undefined;\n\tfor (const field of fields) {\n\t\tconst number = asNumber(value[field]);\n\t\tif (number !== undefined) return number;\n\t}\n\treturn undefined;\n}\n\nexport function buildUsageChunk(\n\tvalue: unknown,\n\taliases: UsageFieldAliases = DEFAULT_ALIASES,\n\toptions?: { mirrorTotalTokens?: boolean },\n): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = firstNumber(value, aliases.input);\n\tconst outputTokens = firstNumber(value, aliases.output);\n\tconst reasoningTokens = firstNumber(value, aliases.reasoning);\n\tconst totalTokens = firstNumber(value, aliases.total);\n\tif (\n\t\tinputTokens === undefined &&\n\t\toutputTokens === undefined &&\n\t\treasoningTokens === undefined &&\n\t\ttotalTokens === undefined\n\t) {\n\t\treturn undefined;\n\t}\n\tconst raw =\n\t\toptions?.mirrorTotalTokens && totalTokens !== undefined ? { ...value, totalTokens } : value;\n\treturn optionalRawChunk({\n\t\tkind: \"usage\",\n\t\tinputTokens,\n\t\toutputTokens,\n\t\treasoningTokens,\n\t\traw,\n\t});\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport { anthropicBlockStartChunks, anthropicResponseBlockChunks } from \"./shared/anthropic-blocks\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { mapAnthropicLikeStopReason } from \"./shared/stop-reasons\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport {\n\tlibraryError,\n\tproviderErrorChunksFromMessage,\n\tproviderErrorChunksFromPayload,\n} from \"./errors\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport interface AnthropicAdapterOptions {\n\t/** Map `json` content blocks to json-delta instead of text-delta. */\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 = parseAdapterObjectPayload(raw, \"anthropicAdapter.parseChunk\");\n\t\tif (!payload) return [];\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 providerErrorFromPayload(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 = buildUsageChunk(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\tif (blockType === \"tool_use\") {\n\t\t\tconst id = asString(block.id);\n\t\t\tconst name = asString(block.name) ?? \"unknown\";\n\t\t\tif (id) state.id = id;\n\t\t\tstate.name = name;\n\t\t}\n\n\t\treturn anthropicBlockStartChunks(block, index, {\n\t\t\tjsonMode: this.options.jsonMode,\n\t\t\tmode: \"stream-start\",\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\t}\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 = buildUsageChunk(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 providerErrorFromPayload(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\t}\n\tconst inputUsage = buildUsageChunk(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(...anthropicResponseBlockChunks(block, index, { jsonMode: options.jsonMode }));\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 finishReason(value: string | undefined): FinishReason | undefined {\n\tif (value === undefined || value === null) return undefined;\n\treturn mapAnthropicLikeStopReason(value);\n}\n\nfunction providerErrorFromPayload(value: unknown): RawChunk[] {\n\tif (isRecord(value)) {\n\t\treturn providerErrorChunksFromPayload(\n\t\t\tvalue,\n\t\t\t\"anthropicAdapter.parseChunk\",\n\t\t\tfalse,\n\t\t\t\"Anthropic provider error\",\n\t\t);\n\t}\n\treturn providerErrorChunksFromMessage(\"Anthropic provider error\", false);\n}\n","import type { RawChunk } from \"../../core/types\";\n\nexport interface TextOrJsonDeltaOptions {\n\tjsonMode?: boolean | undefined;\n\tchoiceIndex?: number | undefined;\n}\n\nexport function textOrJsonDelta(\n\ttext: string,\n\toptions: TextOrJsonDeltaOptions,\n): RawChunk | undefined {\n\tif (text.length === 0) return undefined;\n\tif (options.jsonMode) return { kind: \"json-delta\", delta: text };\n\tif (options.choiceIndex !== undefined) {\n\t\treturn { kind: \"text-delta\", text, choiceIndex: options.choiceIndex };\n\t}\n\treturn { kind: \"text-delta\", text };\n}\n","import type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromMessage } from \"./errors\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } 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\n\tconstructor(private readonly options: OpenAIResponsesAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"openaiResponsesAdapter.parseChunk\");\n\t\tif (!payload) return [];\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\tconst chunk = textOrJsonDelta(text, { jsonMode: this.options.jsonMode });\n\t\treturn chunk ? [chunk] : [];\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\tconst chunk = textOrJsonDelta(text, { jsonMode: this.options.jsonMode });\n\t\treturn chunk ? [chunk] : [];\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) return existing;\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\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\tconst chunk = textOrJsonDelta(text, { jsonMode: options.jsonMode });\n\treturn chunk ?? { 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","/** Tracks last serialized JSON for prefix-diff tool arg deltas. */\nexport interface IncrementalJsonState {\n\tlastArgsJson: string;\n}\n\n/** Emit only the new suffix when `nextInput` extends `prev`, else full replace. */\nexport function incrementalJsonStringDelta(\n\tstate: IncrementalJsonState,\n\tnextInput: string,\n): string | undefined {\n\tconst prev = state.lastArgsJson;\n\tif (nextInput === prev) return undefined;\n\tconst delta =\n\t\tprev.length > 0 && nextInput.startsWith(prev) ? nextInput.slice(prev.length) : nextInput;\n\tstate.lastArgsJson = nextInput;\n\treturn delta.length > 0 ? delta : undefined;\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport {\n\tlibraryError,\n\tproviderErrorChunksFromMessage,\n\tproviderErrorChunksFromPayload,\n} from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { geminiCitationGroundingFromCandidate } from \"./shared/citation-grounding\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport type GeminiApiSurface = \"google-ai\" | \"vertex\";\n\nexport interface GeminiAdapterOptions {\n\t/** Map text parts to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n\t/**\n\t * Which Gemini HTTP API produced the chunk JSON.\n\t * @default \"google-ai\"\n\t */\n\tapiSurface?: GeminiApiSurface;\n\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: boolean;\n}\n\ninterface ToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\tchoiceIndex: number;\n\tlastArgsJson: string;\n\topen: boolean;\n}\n\nexport function geminiAdapter(options: GeminiAdapterOptions = {}): StreamAdapter {\n\tconst parser = new GeminiStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass GeminiStreamParser {\n\tprivate metadataEmitted = false;\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly openToolByChoice = new Map<number, string>();\n\tprivate toolCounter = 0;\n\n\tconstructor(private readonly options: GeminiAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tlet payload = parseAdapterObjectPayload(raw, \"geminiAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tif (this.options.apiSurface === \"vertex\") {\n\t\t\tconst normalized = normalizeVertexChunk(payload);\n\t\t\tif (!normalized) {\n\t\t\t\tif (Object.keys(payload).length === 0) return [];\n\t\t\t\treturn [\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\t\traw: payload,\n\t\t\t\t\t}),\n\t\t\t\t].filter((chunk): chunk is RawChunk => chunk !== undefined);\n\t\t\t}\n\t\t\tpayload = normalized;\n\t\t}\n\n\t\tif (isRecord(payload.error)) {\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\tpayload.error,\n\t\t\t\t\"geminiAdapter.parseChunk\",\n\t\t\t\tfalse,\n\t\t\t\t\"Gemini provider error\",\n\t\t\t);\n\t\t}\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst feedback = isRecord(payload.promptFeedback) ? payload.promptFeedback : undefined;\n\t\tconst blockReason = feedback ? asString(feedback.blockReason) : undefined;\n\t\tif (blockReason) {\n\t\t\treturn providerErrorChunksFromMessage(`Gemini prompt blocked: ${blockReason}`, false);\n\t\t}\n\n\t\tchunks.push(...this.metadataChunks(payload));\n\n\t\tconst usage = buildUsageChunk(payload.usageMetadata);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst candidates = Array.isArray(payload.candidates) ? payload.candidates : [];\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!isRecord(candidate)) continue;\n\t\t\tchunks.push(...this.candidateChunks(candidate));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate metadataChunks(payload: Record<string, unknown>): RawChunk[] {\n\t\tif (this.metadataEmitted) return [];\n\t\tconst responseId = asString(payload.responseId);\n\t\tconst model = asString(payload.modelVersion);\n\t\tif (!responseId && !model) return [];\n\n\t\tthis.metadataEmitted = true;\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (responseId) chunks.push({ kind: \"message-start\", id: responseId });\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\tresponseId,\n\t\t\t\tmodel,\n\t\t\t\traw: { responseId, modelVersion: model },\n\t\t\t}),\n\t\t);\n\t\treturn chunks;\n\t}\n\n\tprivate candidateChunks(candidate: Record<string, unknown>): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst choiceIndex = asNumber(candidate.index) ?? 0;\n\n\t\tconst citation = candidate.citationMetadata;\n\t\tconst grounding = candidate.groundingMetadata;\n\t\tif (citation !== undefined || grounding !== undefined) {\n\t\t\tchunks.push(\n\t\t\t\t...geminiCitationGroundingFromCandidate(candidate, {\n\t\t\t\t\temitLegacyCitationMetadata: this.options.emitLegacyCitationMetadata ?? false,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst content = isRecord(candidate.content) ? candidate.content : undefined;\n\t\tconst parts = content && Array.isArray(content.parts) ? content.parts : [];\n\t\tfor (let partIndex = 0; partIndex < parts.length; partIndex += 1) {\n\t\t\tconst part = parts[partIndex];\n\t\t\tif (!isRecord(part)) continue;\n\t\t\tchunks.push(...this.partChunks(part, partIndex, choiceIndex));\n\t\t}\n\n\t\tconst finishReason = asString(candidate.finishReason);\n\t\tif (finishReason) {\n\t\t\tconst mapped = mapFinishReason(finishReason);\n\t\t\tif (mapped === \"error\") {\n\t\t\t\tchunks.push(\n\t\t\t\t\t...providerErrorChunksFromMessage(`Gemini finishReason: ${finishReason}`, false),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tchunks.push({ kind: \"finish\", reason: mapped, choiceIndex });\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate partChunks(\n\t\tpart: Record<string, unknown>,\n\t\tpartIndex: number,\n\t\tchoiceIndex: number,\n\t): RawChunk[] {\n\t\tif (isRecord(part.functionResponse)) return [];\n\t\tif (part.inlineData !== undefined || part.fileData !== undefined) return [];\n\t\tif (part.executableCode !== undefined || part.codeExecutionResult !== undefined) return [];\n\n\t\tconst thought = part.thought === true;\n\t\tconst text = asString(part.text);\n\t\tif (thought && text) {\n\t\t\treturn [{ kind: \"reasoning-delta\", text, variant: \"detail\" }];\n\t\t}\n\t\tif (thought && !text) return [];\n\n\t\tif (text !== undefined) {\n\t\t\tconst chunk = textOrJsonDelta(text, {\n\t\t\t\tjsonMode: this.options.jsonMode,\n\t\t\t\tchoiceIndex,\n\t\t\t});\n\t\t\treturn chunk ? [chunk] : [];\n\t\t}\n\n\t\tconst functionCall = isRecord(part.functionCall) ? part.functionCall : undefined;\n\t\tif (functionCall) return this.functionCallChunks(functionCall, partIndex, choiceIndex);\n\n\t\tif (Object.keys(part).length === 0) return [];\n\t\treturn [];\n\t}\n\n\tprivate functionCallChunks(\n\t\tfunctionCall: Record<string, unknown>,\n\t\tpartIndex: number,\n\t\tchoiceIndex: number,\n\t): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst explicitId = asString(functionCall.id);\n\t\tconst name = asString(functionCall.name);\n\t\tlet toolKey = this.resolveToolKey(explicitId, partIndex, choiceIndex, name);\n\n\t\tif (name && !this.tools.has(toolKey)) {\n\t\t\ttoolKey = explicitId ?? `${choiceIndex}:${partIndex}`;\n\t\t\tconst id = explicitId ?? `gemini:${choiceIndex}:${this.toolCounter++}`;\n\t\t\tthis.tools.set(toolKey, {\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex: partIndex,\n\t\t\t\tchoiceIndex,\n\t\t\t\tlastArgsJson: \"\",\n\t\t\t\topen: true,\n\t\t\t});\n\t\t\tthis.openToolByChoice.set(choiceIndex, toolKey);\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid,\n\t\t\t\t\tname,\n\t\t\t\t\tindex: partIndex,\n\t\t\t\t\tchoiceIndex,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst current = this.tools.get(toolKey);\n\t\tif (!current) return chunks;\n\n\t\tconst partialArgs = Array.isArray(functionCall.partialArgs) ? functionCall.partialArgs : [];\n\t\tfor (const item of partialArgs) {\n\t\t\tif (!isRecord(item)) continue;\n\t\t\tconst delta = partialArgDelta(item);\n\t\t\tif (delta) {\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: current.id,\n\t\t\t\t\t\tdelta,\n\t\t\t\t\t\tindex: current.index,\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\tif (isRecord(functionCall.args)) {\n\t\t\tconst delta = incrementalJsonStringDelta(current, JSON.stringify(functionCall.args));\n\t\t\tif (delta) {\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: current.id,\n\t\t\t\t\t\tdelta,\n\t\t\t\t\t\tindex: current.index,\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\tconst willContinue = functionCall.willContinue === true;\n\t\tconst hasPartialArgs = partialArgs.length > 0;\n\t\tconst hasArgs = isRecord(functionCall.args) && Object.keys(functionCall.args).length > 0;\n\n\t\tif (!willContinue && !hasPartialArgs && (hasArgs || (name && isRecord(functionCall.args)))) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-done\",\n\t\t\t\t\tid: current.id,\n\t\t\t\t\tindex: current.index,\n\t\t\t\t\tchoiceIndex,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tcurrent.open = false;\n\t\t} else if (\n\t\t\t!willContinue &&\n\t\t\thasPartialArgs &&\n\t\t\tpartialArgs.every((item) => isRecord(item) && item.willContinue !== true)\n\t\t) {\n\t\t\tif (current.open) {\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-done\",\n\t\t\t\t\t\tid: current.id,\n\t\t\t\t\t\tindex: current.index,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tcurrent.open = false;\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate resolveToolKey(\n\t\texplicitId: string | undefined,\n\t\tpartIndex: number,\n\t\tchoiceIndex: number,\n\t\tname: string | undefined,\n\t): string {\n\t\tif (explicitId) return explicitId;\n\t\tconst openKey = this.openToolByChoice.get(choiceIndex);\n\t\tif (openKey && this.tools.get(openKey)?.open) return openKey;\n\t\tif (name) {\n\t\t\tfor (const [key, state] of this.tools) {\n\t\t\t\tif (state.choiceIndex === choiceIndex && state.name === name && state.open) return key;\n\t\t\t}\n\t\t}\n\t\treturn `${choiceIndex}:${partIndex}`;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: GeminiAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"geminiAdapter.parseResponse expected a GenerateContentResponse object\");\n\t}\n\n\tlet record = body;\n\tif (options.apiSurface === \"vertex\") {\n\t\tconst normalized = normalizeVertexChunk(body);\n\t\tif (normalized) record = normalized;\n\t}\n\n\tconst parser = new GeminiStreamParser(options);\n\tconst chunks: RawChunk[] = [];\n\n\tif (isRecord(record.error)) {\n\t\treturn providerErrorChunksFromPayload(\n\t\t\trecord.error,\n\t\t\t\"geminiAdapter.parseResponse\",\n\t\t\tfalse,\n\t\t\t\"Gemini provider error\",\n\t\t);\n\t}\n\n\tconst feedback = isRecord(record.promptFeedback) ? record.promptFeedback : undefined;\n\tconst blockReason = feedback ? asString(feedback.blockReason) : undefined;\n\tif (blockReason) {\n\t\treturn providerErrorChunksFromMessage(`Gemini prompt blocked: ${blockReason}`, false);\n\t}\n\n\tchunks.push(...parser.parseChunk(JSON.stringify(record)));\n\n\tconst hasFinish = chunks.some((chunk) => chunk.kind === \"finish\");\n\tif (!hasFinish) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\" });\n\t}\n\n\treturn chunks;\n}\n\nfunction partialArgDelta(arg: Record<string, unknown>): string | undefined {\n\tconst stringValue = asString(arg.stringValue);\n\tif (stringValue !== undefined) return stringValue;\n\n\tconst jsonPath = asString(arg.jsonPath) ?? \"$\";\n\tconst key = jsonPath.replace(/^\\$\\.?/, \"\").split(\".\")[0] ?? \"value\";\n\tif (arg.numberValue !== undefined) return JSON.stringify({ [key]: arg.numberValue });\n\tif (arg.boolValue !== undefined) return JSON.stringify({ [key]: arg.boolValue });\n\tif (arg.nullValue !== undefined) return JSON.stringify({ [key]: null });\n\treturn undefined;\n}\n\nfunction mapFinishReason(value: string): FinishReason {\n\tswitch (value) {\n\t\tcase \"STOP\":\n\t\tcase \"STOP_REASON_UNSPECIFIED\":\n\t\t\treturn \"stop\";\n\t\tcase \"MAX_TOKENS\":\n\t\t\treturn \"length\";\n\t\tcase \"SAFETY\":\n\t\tcase \"RECITATION\":\n\t\tcase \"BLOCKLIST\":\n\t\tcase \"PROHIBITED_CONTENT\":\n\t\tcase \"SPII\":\n\t\tcase \"LANGUAGE\":\n\t\t\treturn \"content_filter\";\n\t\tcase \"MALFORMED_FUNCTION_CALL\":\n\t\t\treturn \"error\";\n\t\tdefault:\n\t\t\treturn \"error\";\n\t}\n}\n\n/** Strip Vertex / gateway wrappers before mapping GenerateContentResponse fields. */\nexport function normalizeVertexChunk(\n\tpayload: Record<string, unknown>,\n): Record<string, unknown> | null {\n\tif (isRecord(payload.response)) {\n\t\treturn payload.response;\n\t}\n\tif (isRecord(payload.result)) {\n\t\treturn payload.result;\n\t}\n\tif (Array.isArray(payload.predictions)) {\n\t\tconst first = payload.predictions[0];\n\t\tif (isRecord(first)) return first;\n\t}\n\tif (\n\t\tpayload.candidates !== undefined ||\n\t\tpayload.usageMetadata !== undefined ||\n\t\tpayload.promptFeedback !== undefined ||\n\t\tpayload.responseId !== undefined ||\n\t\tisRecord(payload.error)\n\t) {\n\t\treturn payload;\n\t}\n\treturn null;\n}\n","import type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromPayload } from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { mapAnthropicLikeStopReason } from \"./shared/stop-reasons\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport type BedrockModelFamily = \"anthropic\" | \"openai-like\" | \"nova\" | \"auto\";\n\nexport interface BedrockAdapterOptions {\n\t/**\n\t * Hint which ConverseStream payload dialect to prefer when envelopes overlap.\n\t * \"auto\" uses structural detection (document heuristics in adapter-guide).\n\t */\n\tmodelFamily?: BedrockModelFamily;\n\t/** Map structured JSON text blocks to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n}\n\ninterface BlockToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\topen: boolean;\n\tlastArgsJson: string;\n}\n\nconst EXCEPTION_KEYS = [\n\t\"internalServerException\",\n\t\"modelStreamErrorException\",\n\t\"validationException\",\n\t\"throttlingException\",\n\t\"serviceUnavailableException\",\n] as const;\n\nexport function bedrockAdapter(options: BedrockAdapterOptions = {}): StreamAdapter {\n\tconst parser = new BedrockStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass BedrockStreamParser {\n\tprivate messageStarted = false;\n\tprivate readonly blocks = new Map<number, BlockToolState>();\n\n\tconstructor(private readonly options: BedrockAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"bedrockAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tfor (const key of EXCEPTION_KEYS) {\n\t\t\tconst exception = payload[key];\n\t\t\tif (isRecord(exception)) {\n\t\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\t\texception,\n\t\t\t\t\t\"bedrockAdapter.parseChunk\",\n\t\t\t\t\tfalse,\n\t\t\t\t\t`Bedrock ${key}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (payload.messageStart !== undefined) {\n\t\t\treturn this.messageStartChunks(payload.messageStart);\n\t\t}\n\t\tif (payload.contentBlockStart !== undefined) {\n\t\t\treturn this.contentBlockStartChunks(payload.contentBlockStart);\n\t\t}\n\t\tif (payload.contentBlockDelta !== undefined) {\n\t\t\treturn this.contentBlockDeltaChunks(payload.contentBlockDelta);\n\t\t}\n\t\tif (payload.contentBlockStop !== undefined) {\n\t\t\treturn this.contentBlockStopChunks(payload.contentBlockStop);\n\t\t}\n\t\tif (payload.messageStop !== undefined) {\n\t\t\treturn this.messageStopChunks(payload.messageStop);\n\t\t}\n\t\tif (payload.metadata !== undefined) {\n\t\t\treturn this.metadataChunks(payload.metadata);\n\t\t}\n\n\t\treturn optionalMetadataRaw(payload);\n\t}\n\n\tprivate messageStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tif (this.messageStarted) return [];\n\t\tthis.messageStarted = true;\n\t\tconst role = asString(value.role);\n\t\treturn [\n\t\t\t{ kind: \"message-start\" },\n\t\t\t...(role\n\t\t\t\t? [\n\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\t\t\traw: { role },\n\t\t\t\t\t\t}),\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t];\n\t}\n\n\tprivate contentBlockStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst start = isRecord(value.start) ? value.start : undefined;\n\t\tconst toolUse = start && isRecord(start.toolUse) ? start.toolUse : undefined;\n\t\tif (!toolUse) return [];\n\n\t\tconst id = asString(toolUse.toolUseId) ?? `bedrock:${blockIndex}`;\n\t\tconst name = asString(toolUse.name) ?? \"unknown\";\n\t\tthis.blocks.set(blockIndex, {\n\t\t\tid,\n\t\t\tname,\n\t\t\tindex: blockIndex,\n\t\t\topen: true,\n\t\t\tlastArgsJson: \"\",\n\t\t});\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-start\",\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex: blockIndex,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockDeltaChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst delta = isRecord(value.delta) ? value.delta : undefined;\n\t\tif (!delta) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst text = asString(delta.text);\n\t\tconst textChunk = text\n\t\t\t? textOrJsonDelta(text, { jsonMode: this.options.jsonMode, choiceIndex: 0 })\n\t\t\t: undefined;\n\t\tif (textChunk) chunks.push(textChunk);\n\n\t\tconst reasoningText = reasoningTextFromDelta(delta.reasoningContent, this.options.modelFamily);\n\t\tif (reasoningText) {\n\t\t\tchunks.push({ kind: \"reasoning-delta\", text: reasoningText, variant: \"detail\" });\n\t\t}\n\n\t\tconst toolUse = isRecord(delta.toolUse) ? delta.toolUse : undefined;\n\t\tif (toolUse) {\n\t\t\tchunks.push(...this.toolInputDelta(blockIndex, toolUse));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolInputDelta(blockIndex: number, toolUse: Record<string, unknown>): RawChunk[] {\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state) return [];\n\n\t\tconst input = toolUse.input;\n\t\tlet delta: string | undefined;\n\t\tif (typeof input === \"string\") {\n\t\t\tdelta = incrementalJsonStringDelta(state, input);\n\t\t} else if (isRecord(input)) {\n\t\t\tdelta = incrementalJsonStringDelta(state, JSON.stringify(input));\n\t\t}\n\t\tif (!delta) return [];\n\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\tid: state.id,\n\t\t\t\tdelta,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state?.open) return [];\n\n\t\tstate.open = false;\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-done\",\n\t\t\t\tid: state.id,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate messageStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst stopReason = asString(value.stopReason) ?? \"unknown\";\n\t\tconst additional = value.additionalModelResponseFields;\n\t\tconst chunks: RawChunk[] = [];\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: {\n\t\t\t\t\tstopReason,\n\t\t\t\t\t...(additional !== undefined ? { additionalModelResponseFields: additional } : {}),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapAnthropicLikeStopReason(stopReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t\treturn chunks;\n\t}\n\n\tprivate metadataChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tconst usage = buildUsageChunk(value.usage, undefined, { mirrorTotalTokens: true });\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst metrics = value.metrics;\n\t\tconst trace = value.trace;\n\t\tif (metrics !== undefined || trace !== undefined) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\traw: { metrics, trace },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: BedrockAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"bedrockAdapter.parseResponse expected a Converse response object\");\n\t}\n\n\tfor (const key of EXCEPTION_KEYS) {\n\t\tconst exception = body[key];\n\t\tif (isRecord(exception)) {\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\texception,\n\t\t\t\t\"bedrockAdapter.parseResponse\",\n\t\t\t\tfalse,\n\t\t\t\t`Bedrock ${key}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst parser = new BedrockStreamParser(options);\n\tconst syntheticEvents = synthesizeConverseStreamEvents(body);\n\tconst chunks: RawChunk[] = [];\n\tfor (const event of syntheticEvents) {\n\t\tchunks.push(...parser.parseChunk(JSON.stringify(event)));\n\t}\n\n\tconst stopReason = asString(body.stopReason);\n\tif (stopReason) {\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapAnthropicLikeStopReason(stopReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t} else if (!chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t}\n\n\treturn chunks;\n}\n\nfunction synthesizeConverseStreamEvents(body: Record<string, unknown>): unknown[] {\n\tconst events: unknown[] = [];\n\tconst output = isRecord(body.output) ? body.output : undefined;\n\tconst message = output && isRecord(output.message) ? output.message : undefined;\n\n\tif (message) {\n\t\tevents.push({ messageStart: { role: message.role } });\n\t\tconst content = Array.isArray(message.content) ? message.content : [];\n\t\tlet blockIndex = 0;\n\t\tfor (const block of content) {\n\t\t\tif (!isRecord(block)) continue;\n\t\t\tconst toolUse = isRecord(block.toolUse) ? block.toolUse : undefined;\n\t\t\tif (toolUse) {\n\t\t\t\tevents.push({\n\t\t\t\t\tcontentBlockStart: {\n\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\tstart: { toolUse },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tif (toolUse.input !== undefined) {\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tcontentBlockDelta: {\n\t\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\t\tdelta: { toolUse: { input: toolUse.input } },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tevents.push({ contentBlockStop: { contentBlockIndex: blockIndex } });\n\t\t\t} else {\n\t\t\t\tconst text = asString(block.text);\n\t\t\t\tif (text !== undefined && text.length > 0) {\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tcontentBlockDelta: {\n\t\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\t\tdelta: { text },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tblockIndex += 1;\n\t\t}\n\t}\n\n\tif (body.usage !== undefined) {\n\t\tevents.push({ metadata: { usage: body.usage } });\n\t}\n\n\treturn events;\n}\n\nfunction reasoningTextFromDelta(\n\treasoning: unknown,\n\tmodelFamily: BedrockModelFamily | undefined,\n): string | undefined {\n\tif (reasoning === undefined) return undefined;\n\tif (typeof reasoning === \"string\") return reasoning.length > 0 ? reasoning : undefined;\n\tif (!isRecord(reasoning)) return undefined;\n\n\tconst text = asString(reasoning.text);\n\tif (text !== undefined && text.length > 0) return text;\n\n\tif (modelFamily === \"anthropic\" || modelFamily === \"auto\") {\n\t\tconst thinking = asString(reasoning.thinking);\n\t\tif (thinking !== undefined && thinking.length > 0) return thinking;\n\t}\n\n\treturn undefined;\n}\n\nfunction optionalMetadataRaw(payload: Record<string, unknown>): RawChunk[] {\n\tif (Object.keys(payload).length === 0) return [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"metadata\",\n\t\t\traw: payload,\n\t\t}),\n\t];\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromPayload } from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { cohereCitationFromStartPayload } from \"./shared/citation-grounding\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk, type UsageFieldAliases } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport interface CohereAdapterOptions {\n\t/** Map content-delta text to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: boolean;\n}\n\ninterface ToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\topen: boolean;\n\tlastArgsJson: string;\n}\n\ntype CohereStreamEvent = Record<string, unknown> & { type?: string };\n\nconst COHERE_USAGE_ALIASES: UsageFieldAliases = {\n\tinput: [\"input_tokens\", \"inputTokens\"],\n\toutput: [\"output_tokens\", \"outputTokens\"],\n\ttotal: [\"total_tokens\", \"totalTokens\"],\n};\n\nexport function cohereAdapter(options: CohereAdapterOptions = {}): StreamAdapter {\n\tconst parser = new CohereStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass CohereStreamParser {\n\tprivate messageStarted = false;\n\tprivate metadataEmitted = false;\n\tprivate readonly toolsByKey = new Map<string, ToolState>();\n\tprivate readonly indexToKey = new Map<number, string>();\n\n\tconstructor(private readonly options: CohereAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"cohereAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tif (asString(payload.type) === \"error\" || isRecord(payload.error)) {\n\t\t\tconst errorBody = isRecord(payload.error) ? payload.error : payload;\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\terrorBody,\n\t\t\t\t\"cohereAdapter.parseChunk\",\n\t\t\t\tfalse,\n\t\t\t\t\"Cohere provider error\",\n\t\t\t);\n\t\t}\n\n\t\tconst eventType = asString(payload.type);\n\t\tif (!eventType) return optionalMetadataRaw(payload);\n\n\t\tswitch (eventType) {\n\t\t\tcase \"message-start\":\n\t\t\t\treturn this.messageStartChunks(payload);\n\t\t\tcase \"content-start\":\n\t\t\tcase \"content-end\":\n\t\t\t\treturn [];\n\t\t\tcase \"content-delta\":\n\t\t\t\treturn this.contentDeltaChunks(payload);\n\t\t\tcase \"tool-plan-delta\":\n\t\t\t\treturn this.toolPlanDeltaChunks(payload);\n\t\t\tcase \"tool-call-start\":\n\t\t\t\treturn this.toolCallStartChunks(payload);\n\t\t\tcase \"tool-call-delta\":\n\t\t\t\treturn this.toolCallDeltaChunks(payload);\n\t\t\tcase \"tool-call-end\":\n\t\t\t\treturn this.toolCallEndChunks(payload);\n\t\t\tcase \"citation-start\":\n\t\t\t\treturn this.citationStartChunks(payload);\n\t\t\tcase \"citation-end\":\n\t\t\t\treturn [];\n\t\t\tcase \"message-end\":\n\t\t\t\treturn this.messageEndChunks(payload);\n\t\t\tdefault:\n\t\t\t\treturn optionalMetadataRaw(payload);\n\t\t}\n\t}\n\n\tprivate messageStartChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tif (this.messageStarted) return [];\n\t\tthis.messageStarted = true;\n\n\t\tconst chunks: RawChunk[] = [{ kind: \"message-start\" }];\n\t\tconst messageId = asString(payload.id);\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst role = message ? asString(message.role) : undefined;\n\n\t\tif (messageId || role) {\n\t\t\tthis.metadataEmitted = true;\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\tresponseId: messageId,\n\t\t\t\t\traw: { id: messageId, role },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate contentDeltaChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst content = message && isRecord(message.content) ? message.content : undefined;\n\t\tconst text = content ? asString(content.text) : undefined;\n\t\tif (text === undefined || text.length === 0) return [];\n\n\t\tconst textChunk = textOrJsonDelta(text, {\n\t\t\tjsonMode: this.options.jsonMode,\n\t\t\tchoiceIndex: asNumber(payload.index) ?? 0,\n\t\t});\n\t\treturn textChunk ? [textChunk] : [];\n\t}\n\n\tprivate toolPlanDeltaChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst toolPlan = message ? asString(message.tool_plan) : asString(delta?.tool_plan);\n\t\tif (toolPlan === undefined || toolPlan.length === 0) return [];\n\t\treturn [{ kind: \"reasoning-delta\", text: toolPlan, variant: \"detail\" }];\n\t}\n\n\tprivate toolCallStartChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst baseIndex = asNumber(payload.index) ?? 0;\n\t\tconst toolCalls = toolCallsFromDelta(payload.delta);\n\t\tif (toolCalls.length === 0) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tfor (let i = 0; i < toolCalls.length; i += 1) {\n\t\t\tconst toolCall = toolCalls[i]!;\n\t\t\tconst index = asNumber(toolCall.index) ?? baseIndex + i;\n\t\t\tconst id = asString(toolCall.id) ?? `cohere:tool:${index}`;\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst name = fn ? (asString(fn.name) ?? \"unknown\") : \"unknown\";\n\t\t\tconst key = reconcileToolKey(this.toolsByKey, this.indexToKey, index, id);\n\t\t\tconst existing = this.toolsByKey.get(key);\n\t\t\tif (existing?.open && existing.id === id) continue;\n\n\t\t\tconst state: ToolState = {\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex,\n\t\t\t\topen: true,\n\t\t\t\tlastArgsJson: asString(fn?.arguments) ?? \"\",\n\t\t\t};\n\t\t\tthis.toolsByKey.set(key, state);\n\t\t\tthis.indexToKey.set(index, key);\n\t\t\tif (id !== key) this.toolsByKey.set(id, state);\n\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid,\n\t\t\t\t\tname,\n\t\t\t\t\tindex,\n\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallDeltaChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst toolCalls = toolCallsFromDelta(payload.delta);\n\t\tif (toolCalls.length === 0) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tfor (const toolCall of toolCalls) {\n\t\t\tconst lateId = asString(toolCall.id);\n\t\t\tconst key = this.resolveToolKey(index, lateId);\n\t\t\tlet state = key ? this.toolsByKey.get(key) : undefined;\n\t\t\tif (!state) {\n\t\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\t\tconst name = fn ? (asString(fn.name) ?? \"unknown\") : \"unknown\";\n\t\t\t\tconst id = lateId ?? `cohere:tool:${index}`;\n\t\t\t\tstate = { id, name, index, open: true, lastArgsJson: \"\" };\n\t\t\t\tthis.toolsByKey.set(id, state);\n\t\t\t\tthis.indexToKey.set(index, id);\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,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} else if (lateId && state.id !== lateId) {\n\t\t\t\tthis.reconcileLateId(state, lateId, index);\n\t\t\t}\n\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst argsText = fn ? asString(fn.arguments) : undefined;\n\t\t\tif (argsText !== undefined && argsText.length > 0 && state) {\n\t\t\t\tconst delta = incrementalJsonStringDelta(state, argsText);\n\t\t\t\tif (delta) {\n\t\t\t\t\tchunks.push(\n\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\tindex: state.index,\n\t\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallEndChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst toolCalls = message ? toolCallsFromRecord(message.tool_calls) : [];\n\t\tconst lateId = toolCalls[0] ? asString(toolCalls[0].id) : undefined;\n\n\t\tconst key = this.resolveToolKey(index, lateId);\n\t\tconst state = key ? this.toolsByKey.get(key) : undefined;\n\t\tif (!state?.open) return [];\n\n\t\tif (lateId && state.id !== lateId) {\n\t\t\tthis.reconcileLateId(state, lateId, index);\n\t\t}\n\n\t\tstate.open = false;\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-done\",\n\t\t\t\tid: state.id,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate citationStartChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst citations = message?.citations;\n\t\treturn cohereCitationFromStartPayload(citations, asNumber(payload.index), {\n\t\t\temitLegacyCitationMetadata: this.options.emitLegacyCitationMetadata ?? false,\n\t\t});\n\t}\n\n\tprivate messageEndChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tconst usageSource =\n\t\t\tdelta && isRecord(delta.usage)\n\t\t\t\t? usageFromCohereUsage(delta.usage)\n\t\t\t\t: delta && isRecord(delta.billed_units)\n\t\t\t\t\t? delta.billed_units\n\t\t\t\t\t: undefined;\n\t\tconst usage = buildUsageChunk(usageSource, COHERE_USAGE_ALIASES);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst finishReason = delta ? asString(delta.finish_reason) : undefined;\n\t\tif (finishReason) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\traw: { finish_reason: finishReason },\n\t\t\t\t}),\n\t\t\t);\n\t\t\tchunks.push({\n\t\t\t\tkind: \"finish\",\n\t\t\t\treason: mapCohereFinishReason(finishReason),\n\t\t\t\tchoiceIndex: 0,\n\t\t\t});\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate resolveToolKey(index: number, id: string | undefined): string | undefined {\n\t\tif (id && this.toolsByKey.has(id)) return id;\n\t\tconst byIndex = this.indexToKey.get(index);\n\t\tif (byIndex) return byIndex;\n\t\tif (id) return id;\n\t\treturn this.indexToKey.get(index);\n\t}\n\n\tprivate reconcileLateId(state: ToolState, lateId: string, index: number): void {\n\t\tconst oldKey = state.id;\n\t\tstate.id = lateId;\n\t\tthis.toolsByKey.delete(oldKey);\n\t\tthis.toolsByKey.set(lateId, state);\n\t\tthis.indexToKey.set(index, lateId);\n\t}\n}\n\nfunction parseResponse(body: unknown, options: CohereAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"cohereAdapter.parseResponse expected a Cohere Chat v2 response object\");\n\t}\n\n\tif (asString(body.type) === \"error\" || isRecord(body.error)) {\n\t\tconst errorBody = isRecord(body.error) ? body.error : body;\n\t\treturn providerErrorChunksFromPayload(\n\t\t\terrorBody,\n\t\t\t\"cohereAdapter.parseResponse\",\n\t\t\tfalse,\n\t\t\t\"Cohere provider error\",\n\t\t);\n\t}\n\n\tconst message = isRecord(body.message) ? body.message : undefined;\n\tif (!message) {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst usage = buildUsageChunk(body.usage, COHERE_USAGE_ALIASES);\n\t\tif (usage) chunks.push(usage);\n\t\tconst finishReason = asString(body.finish_reason);\n\t\tif (finishReason) {\n\t\t\tchunks.push({\n\t\t\t\tkind: \"finish\",\n\t\t\t\treason: mapCohereFinishReason(finishReason),\n\t\t\t\tchoiceIndex: 0,\n\t\t\t});\n\t\t} else {\n\t\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tconst parser = new CohereStreamParser(options);\n\tconst syntheticEvents = synthesizeCohereStreamEvents(body);\n\tconst chunks: RawChunk[] = [];\n\tfor (const event of syntheticEvents) {\n\t\tchunks.push(...parser.parseChunk(JSON.stringify(event)));\n\t}\n\n\tconst finishReason = asString(body.finish_reason);\n\tif (finishReason && !chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapCohereFinishReason(finishReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t} else if (!chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t}\n\n\treturn chunks;\n}\n\nfunction synthesizeCohereStreamEvents(body: Record<string, unknown>): unknown[] {\n\tconst events: unknown[] = [];\n\tconst message = isRecord(body.message) ? body.message : undefined;\n\tif (!message) return events;\n\n\tconst messageId = asString(body.id);\n\tevents.push({\n\t\ttype: \"message-start\",\n\t\t...(messageId ? { id: messageId } : {}),\n\t\tdelta: { message: { role: asString(message.role) ?? \"assistant\" } },\n\t});\n\n\tconst toolPlan = asString(message.tool_plan);\n\tif (toolPlan) {\n\t\tevents.push({\n\t\t\ttype: \"tool-plan-delta\",\n\t\t\tdelta: { message: { tool_plan: toolPlan } },\n\t\t});\n\t}\n\n\tconst content = Array.isArray(message.content) ? message.content : [];\n\tfor (const block of content) {\n\t\tif (!isRecord(block)) continue;\n\t\tconst text = asString(block.text);\n\t\tif (text !== undefined && text.length > 0) {\n\t\t\tevents.push({\n\t\t\t\ttype: \"content-delta\",\n\t\t\t\tindex: 0,\n\t\t\t\tdelta: { message: { content: { text } } },\n\t\t\t});\n\t\t}\n\t}\n\n\tconst citations = message.citations;\n\tif (Array.isArray(citations)) {\n\t\tfor (const citation of citations) {\n\t\t\tevents.push({\n\t\t\t\ttype: \"citation-start\",\n\t\t\t\tindex: 0,\n\t\t\t\tdelta: { message: { citations: citation } },\n\t\t\t});\n\t\t}\n\t}\n\n\tconst toolCalls = toolCallsFromRecord(message.tool_calls);\n\tlet toolIndex = 0;\n\tfor (const toolCall of toolCalls) {\n\t\tconst id = asString(toolCall.id) ?? `cohere:tool:${toolIndex}`;\n\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\tconst name = fn ? (asString(fn.name) ?? \"unknown\") : \"unknown\";\n\t\tconst args = fn ? asString(fn.arguments) : undefined;\n\t\tevents.push({\n\t\t\ttype: \"tool-call-start\",\n\t\t\tindex: toolIndex,\n\t\t\tdelta: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttool_calls: {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\tfunction: { name, arguments: args ?? \"\" },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tif (args !== undefined && args.length > 0) {\n\t\t\tevents.push({\n\t\t\t\ttype: \"tool-call-delta\",\n\t\t\t\tindex: toolIndex,\n\t\t\t\tdelta: {\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttool_calls: {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tfunction: { arguments: args },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tevents.push({ type: \"tool-call-end\", index: toolIndex });\n\t\ttoolIndex += 1;\n\t}\n\n\tif (body.usage !== undefined || body.finish_reason !== undefined) {\n\t\tevents.push({\n\t\t\ttype: \"message-end\",\n\t\t\tdelta: {\n\t\t\t\t...(body.finish_reason !== undefined ? { finish_reason: body.finish_reason } : {}),\n\t\t\t\t...(body.usage !== undefined ? { usage: body.usage } : {}),\n\t\t\t},\n\t\t});\n\t}\n\n\treturn events;\n}\n\nfunction toolCallsFromDelta(delta: unknown): Record<string, unknown>[] {\n\tif (!isRecord(delta)) return [];\n\tconst message = isRecord(delta.message) ? delta.message : undefined;\n\treturn toolCallsFromRecord(message?.tool_calls);\n}\n\nfunction toolCallsFromRecord(value: unknown): Record<string, unknown>[] {\n\tif (value === undefined) return [];\n\tif (Array.isArray(value)) {\n\t\treturn value.filter((item): item is Record<string, unknown> => isRecord(item));\n\t}\n\tif (isRecord(value)) return [value];\n\treturn [];\n}\n\nfunction usageFromCohereUsage(usage: Record<string, unknown>): Record<string, unknown> | undefined {\n\tconst billed = isRecord(usage.billed_units) ? usage.billed_units : undefined;\n\tif (billed) return billed;\n\tconst tokens = isRecord(usage.tokens) ? usage.tokens : undefined;\n\tif (tokens) return tokens;\n\treturn usage;\n}\n\nfunction reconcileToolKey(\n\ttoolsByKey: Map<string, ToolState>,\n\tindexToKey: Map<number, string>,\n\tindex: number,\n\tid: string,\n): string {\n\tconst existingIndexKey = indexToKey.get(index);\n\tif (existingIndexKey && toolsByKey.has(existingIndexKey)) {\n\t\tconst state = toolsByKey.get(existingIndexKey);\n\t\tif (state && state.id.startsWith(\"cohere:tool:\") && !id.startsWith(\"cohere:tool:\")) {\n\t\t\ttoolsByKey.delete(existingIndexKey);\n\t\t\tstate.id = id;\n\t\t\ttoolsByKey.set(id, state);\n\t\t\tindexToKey.set(index, id);\n\t\t\treturn id;\n\t\t}\n\t\treturn existingIndexKey;\n\t}\n\treturn id;\n}\n\nfunction mapCohereFinishReason(value: string): FinishReason {\n\tconst normalized = value.toUpperCase();\n\tswitch (normalized) {\n\t\tcase \"COMPLETE\":\n\t\tcase \"STOP_SEQUENCE\":\n\t\t\treturn \"stop\";\n\t\tcase \"MAX_TOKENS\":\n\t\t\treturn \"length\";\n\t\tcase \"TOOL_CALL\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"ERROR\":\n\t\tcase \"TIMEOUT\":\n\t\t\treturn \"error\";\n\t\tdefault:\n\t\t\tif (normalized.includes(\"FILTER\") || normalized.includes(\"SAFETY\")) {\n\t\t\t\treturn \"content_filter\";\n\t\t\t}\n\t\t\treturn \"stop\";\n\t}\n}\n\nfunction optionalMetadataRaw(payload: Record<string, unknown>): RawChunk[] {\n\tif (Object.keys(payload).length === 0) return [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"metadata\",\n\t\t\traw: payload,\n\t\t}),\n\t];\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\tcitations: [],\n\t\tgrounding: [],\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 \"citation\":\n\t\t\tresult.citations.push(event);\n\t\t\tbreak;\n\t\tcase \"grounding\":\n\t\t\tresult.grounding.push(event);\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 \"citation\":\n\t\t\treturn handlers.citation?.(event);\n\t\tcase \"grounding\":\n\t\t\treturn handlers.grounding?.(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","export interface CitationSpanAnchorInput {\n\tassistantText?: string;\n\tspan?: { start: number; end: number; text?: string };\n}\n\nexport interface CitationSpanAnchorResult {\n\tanchorText?: string;\n\tconsistent: boolean;\n}\n\nexport function citationSpanAnchor(input: CitationSpanAnchorInput): CitationSpanAnchorResult {\n\tconst span = input.span;\n\tif (!span) {\n\t\treturn { consistent: false };\n\t}\n\n\tconst spanText = span.text?.trim();\n\tif (input.assistantText === undefined || input.assistantText.length === 0) {\n\t\tconst fallback = span.text ?? spanText;\n\t\tif (fallback) {\n\t\t\treturn { anchorText: fallback, consistent: true };\n\t\t}\n\t\treturn { consistent: false };\n\t}\n\n\tconst { start, end } = span;\n\tif (start < 0 || end < start || end > input.assistantText.length) {\n\t\treturn { consistent: false };\n\t}\n\n\tconst anchorText = input.assistantText.slice(start, end);\n\tif (spanText !== undefined && spanText.length > 0 && spanText !== anchorText.trim()) {\n\t\treturn { anchorText, consistent: false };\n\t}\n\n\treturn { anchorText, consistent: true };\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 isCitation(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"citation\" }> {\n\treturn event.type === \"citation\";\n}\n\nexport function isGrounding(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"grounding\" }> {\n\treturn event.type === \"grounding\";\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"]}
|
|
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/utils/object.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/shared/parse-payload.ts","../src/adapters/openai-chat/parser/errors.ts","../src/adapters/shared/citation-grounding.ts","../src/adapters/openai-chat/parser/chunks.ts","../src/adapters/shared/logprobs.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-presets.ts","../src/adapters/openai-compatible-resolve.ts","../src/adapters/openai-compatible.ts","../src/adapters/shared/anthropic-blocks.ts","../src/adapters/shared/stop-reasons.ts","../src/adapters/shared/usage.ts","../src/adapters/anthropic.ts","../src/adapters/shared/text-delta.ts","../src/adapters/openai-responses.ts","../src/adapters/shared/incremental-json.ts","../src/adapters/gemini.ts","../src/adapters/bedrock.ts","../src/adapters/cohere.ts","../src/transforms/collect-stream.ts","../src/transforms/to-sse.ts","../src/transforms/tap-events.ts","../src/helpers/match-event.ts","../src/helpers/citation-span-anchor.ts","../src/helpers/logprob-confidence.ts","../src/helpers/align-logprobs-with-text.ts","../src/helpers/type-guards.ts"],"names":["payload","finishReason","firstNumber","parseResponse","providerErrorChunks","metadataChunks","reasoningChunks","toolKey","textChunk","optionalMetadataRaw","fn","chunks","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","/** Strip undefined own properties; preserve explicit null. */\nexport function stripUndefined<T extends Record<string, unknown>>(obj: T): T {\n\treturn Object.fromEntries(Object.entries(obj).filter(([, value]) => value !== undefined)) as T;\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 { stripUndefined } from \"../utils/object\";\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 \"citation\":\n\t\t\t\treturn [this.citationEvent(chunk)];\n\t\t\tcase \"grounding\":\n\t\t\t\treturn [this.groundingEvent(chunk)];\n\t\t\tcase \"logprob\":\n\t\t\t\treturn [this.logprobEvent(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 citationEvent(chunk: Extract<RawChunk, { kind: \"citation\" }>): StreamEvent {\n\t\tconst { kind: _kind, ...rest } = chunk;\n\t\treturn optionalEvent({ type: \"citation\", ...rest });\n\t}\n\n\tprivate groundingEvent(chunk: Extract<RawChunk, { kind: \"grounding\" }>): StreamEvent {\n\t\tconst { kind: _kind, ...rest } = chunk;\n\t\treturn optionalEvent({ type: \"grounding\", ...rest });\n\t}\n\n\tprivate logprobEvent(chunk: Extract<RawChunk, { kind: \"logprob\" }>): StreamEvent {\n\t\tconst { kind: _kind, ...rest } = chunk;\n\t\treturn optionalEvent({ type: \"logprob\", ...rest });\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 stripUndefined(\n\t\tObject.fromEntries(\n\t\t\tObject.entries(event).filter(([, value]) => value !== undefined && value !== \"kind\"),\n\t\t),\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 { stripUndefined } from \"../core/utils/object\";\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 stripUndefined(input) 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 { adapterScopedError } from \"../errors\";\nimport { isRecord, parseAdapterJSON } from \"../utils\";\n\nexport interface ParseAdapterObjectOptions {\n\ttrim?: boolean;\n\tallowDone?: boolean;\n}\n\n/**\n * Parse a single adapter payload string into a JSON object.\n * Returns null for empty / [DONE] lines when configured.\n */\nexport function parseAdapterObjectPayload(\n\traw: string,\n\tscope: string,\n\toptions: ParseAdapterObjectOptions = {},\n): Record<string, unknown> | null {\n\tconst { trim = true, allowDone = true } = options;\n\tconst input = trim ? raw.trim() : raw;\n\tif (input.length === 0 || (allowDone && input === \"[DONE]\")) return null;\n\n\tconst payload = parseAdapterJSON(input, scope);\n\tif (!isRecord(payload)) {\n\t\tthrow adapterScopedError(scope, \"expected a JSON object\");\n\t}\n\treturn payload;\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 { RawChunk } from \"../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface CitationGroundingOptions {\n\temitLegacyCitationMetadata?: boolean;\n}\n\ntype CitationChunk = Extract<RawChunk, { kind: \"citation\" }>;\ntype GroundingChunk = Extract<RawChunk, { kind: \"grounding\" }>;\n\nexport function cohereCitationFromStartPayload(\n\tcitations: unknown,\n\tindex?: number,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst citation = citationChunkFromCohere(citations, index);\n\tif (citation) chunks.push(citation);\n\tif (options.emitLegacyCitationMetadata && citations !== undefined) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: { citation: citations, index },\n\t\t\t}),\n\t\t);\n\t}\n\treturn chunks;\n}\n\nfunction citationChunkFromCohere(citations: unknown, index?: number): RawChunk | undefined {\n\tif (citations === undefined) return undefined;\n\n\tconst chunk: CitationChunk = { kind: \"citation\", raw: { citation: citations, index } };\n\tconst numericIndex = asNumber(index);\n\tif (numericIndex !== undefined) chunk.index = numericIndex;\n\n\tif (isRecord(citations)) {\n\t\tconst start = asNumber(citations.start);\n\t\tconst end = asNumber(citations.end);\n\t\tconst text = asString(citations.text);\n\t\tif (start !== undefined && end !== undefined) {\n\t\t\tchunk.span = { start, end, ...(text ? { text } : {}) };\n\t\t} else if (text) {\n\t\t\tchunk.span = { start: 0, end: text.length, text };\n\t\t}\n\t\tconst sources = citations.sources;\n\t\tif (Array.isArray(sources) && sources.length > 0) {\n\t\t\tchunk.sources = sources;\n\t\t}\n\t}\n\n\treturn optionalRawChunk(chunk);\n}\n\nexport function perplexityCitationFromPayload(\n\tpayload: Record<string, unknown>,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst citations = payload.citations;\n\tconst searchResults = payload.search_results;\n\tconst hasCitations = Array.isArray(citations) && citations.length > 0;\n\tconst hasSearchResults = Array.isArray(searchResults) && searchResults.length > 0;\n\tif (!hasCitations && !hasSearchResults) return [];\n\n\tconst urls = hasCitations\n\t\t? citations.filter((item): item is string => typeof item === \"string\")\n\t\t: undefined;\n\n\tconst chunk: CitationChunk = {\n\t\tkind: \"citation\",\n\t\traw: {\n\t\t\t...(hasCitations ? { citations } : {}),\n\t\t\t...(hasSearchResults ? { search_results: searchResults } : {}),\n\t\t},\n\t};\n\tif (urls && urls.length > 0) chunk.urls = urls;\n\tif (hasSearchResults) chunk.searchResults = searchResults as unknown[];\n\n\tconst chunks: RawChunk[] = [optionalRawChunk(chunk)!];\n\tif (options.emitLegacyCitationMetadata) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: {\n\t\t\t\t\t...(hasCitations ? { citations } : {}),\n\t\t\t\t\t...(hasSearchResults ? { search_results: searchResults } : {}),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t}\n\treturn chunks;\n}\n\nexport function geminiCitationGroundingFromCandidate(\n\tcandidate: Record<string, unknown>,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst citationMetadata = candidate.citationMetadata;\n\tconst groundingMetadata = candidate.groundingMetadata;\n\n\tif (citationMetadata !== undefined) {\n\t\tconst citation = citationChunkFromGemini(citationMetadata);\n\t\tif (citation) chunks.push(citation);\n\t}\n\tif (groundingMetadata !== undefined) {\n\t\tconst grounding = groundingChunkFromGemini(groundingMetadata);\n\t\tif (grounding) chunks.push(grounding);\n\t}\n\n\tif (\n\t\toptions.emitLegacyCitationMetadata &&\n\t\t(citationMetadata !== undefined || groundingMetadata !== undefined)\n\t) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: { citationMetadata, groundingMetadata },\n\t\t\t}),\n\t\t);\n\t}\n\n\treturn chunks;\n}\n\nfunction citationChunkFromGemini(citationMetadata: unknown): RawChunk | undefined {\n\tif (citationMetadata === undefined) return undefined;\n\tconst chunk: CitationChunk = { kind: \"citation\", raw: citationMetadata };\n\tif (isRecord(citationMetadata) && Array.isArray(citationMetadata.citations)) {\n\t\tchunk.sources = citationMetadata.citations as unknown[];\n\t}\n\treturn optionalRawChunk(chunk);\n}\n\nfunction groundingChunkFromGemini(groundingMetadata: unknown): RawChunk | undefined {\n\tif (groundingMetadata === undefined) return undefined;\n\tconst chunk: GroundingChunk = { kind: \"grounding\", raw: groundingMetadata };\n\tif (isRecord(groundingMetadata)) {\n\t\tif (Array.isArray(groundingMetadata.webSearchQueries)) {\n\t\t\tchunk.queries = groundingMetadata.webSearchQueries as string[];\n\t\t}\n\t\tif (Array.isArray(groundingMetadata.groundingChunks)) {\n\t\t\tchunk.chunks = groundingMetadata.groundingChunks as unknown[];\n\t\t}\n\t\tif (Array.isArray(groundingMetadata.groundingSupports)) {\n\t\t\tchunk.supports = groundingMetadata.groundingSupports as unknown[];\n\t\t}\n\t}\n\treturn optionalRawChunk(chunk);\n}\n\nexport function payloadWithoutCitationRootFields(\n\tpayload: Record<string, unknown>,\n): Record<string, unknown> {\n\tconst next = { ...payload };\n\tdelete next.citations;\n\tdelete next.search_results;\n\treturn next;\n}\n\nexport function metadataPayloadWithoutCitationFields(\n\tpayload: Record<string, unknown>,\n): Record<string, unknown> {\n\treturn payloadWithoutCitationRootFields(payload);\n}\n","import type { FinishReason, RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord, optionalRawChunk } from \"../../utils\";\nimport { adapterScopedError } from \"../../errors\";\nimport {\n\tmetadataPayloadWithoutCitationFields,\n\tperplexityCitationFromPayload,\n\ttype CitationGroundingOptions,\n} from \"../../shared/citation-grounding\";\nimport type { RequiredOpenAIChatLikeParserOptions } from \"./types\";\n\nexport function metadataChunks(\n\tpayload: Record<string, unknown>,\n\t_options: CitationGroundingOptions = {},\n): RawChunk[] {\n\tconst chunks: RawChunk[] = [];\n\tconst id = asString(payload.id);\n\tif (id) chunks.push({ kind: \"message-start\", id });\n\n\tconst metadataPayload = metadataPayloadWithoutCitationFields(payload);\n\tconst metadata: Extract<RawChunk, { kind: \"metadata\" }> = {\n\t\tkind: \"metadata\",\n\t\traw: metadataPayload,\n\t};\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 citationChunksFromRootPayload(\n\tpayload: Record<string, unknown>,\n\toptions: CitationGroundingOptions = {},\n): RawChunk[] {\n\treturn perplexityCitationFromPayload(payload, options);\n}\n\nexport function hasRootCitationFields(payload: Record<string, unknown>): boolean {\n\tconst citations = payload.citations;\n\tconst searchResults = payload.search_results;\n\treturn (\n\t\t(Array.isArray(citations) && citations.length > 0) ||\n\t\t(Array.isArray(searchResults) && searchResults.length > 0)\n\t);\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, optionalRawChunk } from \"../utils\";\n\nexport type LogprobChannel = \"content\" | \"refusal\";\n\nexport interface LogprobPositionState {\n\treadonly positions: Map<string, number>;\n}\n\nexport function createLogprobPositionState(): LogprobPositionState {\n\treturn { positions: new Map() };\n}\n\nexport function logprobPositionKey(\n\tchoiceIndex: number | undefined,\n\tchannel: LogprobChannel,\n): string {\n\treturn `${choiceIndex ?? 0}:${channel}`;\n}\n\nexport function nextLogprobPosition(\n\tstate: LogprobPositionState,\n\tchoiceIndex: number | undefined,\n\tchannel: LogprobChannel,\n): number {\n\tconst key = logprobPositionKey(choiceIndex, channel);\n\tconst next = state.positions.get(key) ?? 0;\n\tstate.positions.set(key, next + 1);\n\treturn next;\n}\n\nexport function normalizeTopLogprobs(\n\tvalue: unknown,\n): Array<{ token: string; logprob: number; bytes?: number[] }> | undefined {\n\tif (!Array.isArray(value) || value.length === 0) return undefined;\n\tconst result: Array<{ token: string; logprob: number; bytes?: number[] }> = [];\n\tfor (const entry of value) {\n\t\tif (!isRecord(entry)) continue;\n\t\tconst token = asString(entry.token);\n\t\tconst logprob = asNumber(entry.logprob);\n\t\tif (token === undefined || logprob === undefined) continue;\n\t\tconst item: { token: string; logprob: number; bytes?: number[] } = { token, logprob };\n\t\tif (Array.isArray(entry.bytes)) {\n\t\t\tconst bytes = entry.bytes.filter((byte): byte is number => typeof byte === \"number\");\n\t\t\tif (bytes.length > 0) item.bytes = bytes;\n\t\t}\n\t\tresult.push(item);\n\t}\n\treturn result.length > 0 ? result : undefined;\n}\n\nexport function logprobEntryFromProvider(\n\tentry: unknown,\n\tchannel: LogprobChannel,\n\tchoiceIndex?: number,\n\tposition?: number,\n): RawChunk | undefined {\n\tif (!isRecord(entry)) return undefined;\n\tconst token = asString(entry.token);\n\tif (token === undefined || token.length === 0) return undefined;\n\tconst logprob = asNumber(entry.logprob);\n\tif (logprob === undefined) return undefined;\n\n\tconst chunk: Extract<RawChunk, { kind: \"logprob\" }> = {\n\t\tkind: \"logprob\",\n\t\tchannel,\n\t\ttoken,\n\t\tlogprob,\n\t\traw: entry,\n\t};\n\tif (Array.isArray(entry.bytes)) {\n\t\tconst bytes = entry.bytes.filter((byte): byte is number => typeof byte === \"number\");\n\t\tif (bytes.length > 0) chunk.bytes = bytes;\n\t}\n\tconst topLogprobs = normalizeTopLogprobs(entry.top_logprobs);\n\tif (topLogprobs) chunk.topLogprobs = topLogprobs;\n\tif (choiceIndex !== undefined) chunk.choiceIndex = choiceIndex;\n\tif (position !== undefined) chunk.position = position;\n\treturn optionalRawChunk(chunk);\n}\n\nexport function logprobChunksFromChoiceLogprobs(\n\tlogprobs: unknown,\n\tchoiceIndex?: number,\n\tpositionState?: LogprobPositionState,\n): RawChunk[] {\n\tif (logprobs === null || logprobs === undefined) return [];\n\tif (!isRecord(logprobs)) return [];\n\n\tconst chunks: RawChunk[] = [];\n\tconst content = logprobs.content;\n\tconst refusal = logprobs.refusal;\n\n\tif (Array.isArray(content)) {\n\t\tfor (let index = 0; index < content.length; index += 1) {\n\t\t\tconst position = positionState\n\t\t\t\t? nextLogprobPosition(positionState, choiceIndex, \"content\")\n\t\t\t\t: index;\n\t\t\tconst chunk = logprobEntryFromProvider(content[index], \"content\", choiceIndex, position);\n\t\t\tif (chunk) chunks.push(chunk);\n\t\t}\n\t}\n\n\tif (Array.isArray(refusal)) {\n\t\tfor (let index = 0; index < refusal.length; index += 1) {\n\t\t\tconst position = positionState\n\t\t\t\t? nextLogprobPosition(positionState, choiceIndex, \"refusal\")\n\t\t\t\t: index;\n\t\t\tconst chunk = logprobEntryFromProvider(refusal[index], \"refusal\", choiceIndex, position);\n\t\t\tif (chunk) chunks.push(chunk);\n\t\t}\n\t}\n\n\treturn chunks;\n}\n","import type { RawChunk } from \"../../../core/types\";\nimport { asNumber, asString, isRecord } from \"../../utils\";\nimport { parseAdapterObjectPayload } from \"../../shared/parse-payload\";\nimport {\n\topenAIProviderErrorChunks,\n\tproviderErrorPayload,\n\tthrowUnrecognizedChunkError,\n} from \"./errors\";\nimport {\n\tchoiceIndexFor,\n\tchoiceKey,\n\tcitationChunksFromRootPayload,\n\tfinishReasonChunks,\n\thasMetadata,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolKey,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport {\n\tcreateLogprobPositionState,\n\tlogprobChunksFromChoiceLogprobs,\n\ttype LogprobPositionState,\n} from \"../../shared/logprobs\";\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\tprivate readonly logprobPositions: LogprobPositionState = createLogprobPositionState();\n\n\tconstructor(private readonly options: RequiredOpenAIChatLikeParserOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, `${this.options.errorPrefix}.parseChunk`);\n\t\tif (!payload) return [];\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.looseErrorShape && asString(payload.error) && !isRecord(payload.error)) {\n\t\t\treturn [];\n\t\t}\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\tconst citationOptions = {\n\t\t\temitLegacyCitationMetadata: this.options.emitLegacyCitationMetadata,\n\t\t};\n\t\tif (!this.metadataEmitted && hasMetadata(payload)) {\n\t\t\tchunks.push(...metadataChunks(payload, citationOptions));\n\t\t\tthis.metadataEmitted = true;\n\t\t}\n\n\t\tchunks.push(...citationChunksFromRootPayload(payload, citationOptions));\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\tchunks.push(\n\t\t\t...logprobChunksFromChoiceLogprobs(choice.logprobs, choiceIndex, this.logprobPositions),\n\t\t);\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\tcitationChunksFromRootPayload,\n\tfinishReasonChunks,\n\tisRecognizableResponse,\n\tmetadataChunks,\n\treasoningChunks,\n\ttoolArgsChunk,\n\ttoolDoneChunk,\n\ttoolStartChunk,\n\tusageChunk,\n\twithChoiceIndex,\n} from \"./chunks\";\nimport { logprobChunksFromChoiceLogprobs } from \"../../shared/logprobs\";\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\tconst citationOptions = { emitLegacyCitationMetadata: options.emitLegacyCitationMetadata };\n\tchunks.push(...metadataChunks(body, citationOptions));\n\tchunks.push(...citationChunksFromRootPayload(body, citationOptions));\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\tchunks.push(...logprobChunksFromChoiceLogprobs(choice.logprobs, choiceIndex));\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\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: 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\temitLegacyCitationMetadata: 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\temitLegacyCitationMetadata: options.emitLegacyCitationMetadata ?? 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","export const OPENAI_COMPATIBLE_PROVIDERS = [\n\t\"generic\",\n\t\"openrouter\",\n\t\"groq\",\n\t\"deepseek\",\n\t\"mistral\",\n\t\"ollama\",\n\t\"lmstudio\",\n\t\"together\",\n\t\"fireworks\",\n\t\"perplexity\",\n\t\"xai\",\n\t\"azure\",\n\t\"cloudflare\",\n] as const;\n\nexport type OpenAICompatibleProvider = (typeof OPENAI_COMPATIBLE_PROVIDERS)[number];\n\nexport type HostCompatiblePreset = Exclude<OpenAICompatibleProvider, \"generic\">;\n\nexport const HOST_COMPATIBLE_PRESETS = OPENAI_COMPATIBLE_PROVIDERS.filter(\n\t(p): p is HostCompatiblePreset => p !== \"generic\",\n);\n\n/** Presets with strict defaults (`allowMissingMetadata: false`, `looseErrorShape: false`). */\nexport const STRICT_COMPATIBLE_PRESETS = [\n\t\"azure\",\n] as const satisfies readonly OpenAICompatibleProvider[];\n\nexport function isStrictCompatiblePreset(provider: OpenAICompatibleProvider): boolean {\n\treturn (STRICT_COMPATIBLE_PRESETS as readonly string[]).includes(provider);\n}\n\nexport const LOOSE_HOST_PRESETS = HOST_COMPATIBLE_PRESETS.filter(\n\t(p) => !isStrictCompatiblePreset(p),\n);\n\nexport type PresetOverrides = Partial<{\n\treasoningFieldAliases: string[];\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n}>;\n\nexport const DEFAULT_PRESET = {\n\tlooseErrorShape: true,\n\tallowMissingMetadata: true,\n\tuseChoicePositionFallback: true,\n\treasoningFieldAliases: [\"thinking\", \"thinking_content\"],\n} as const satisfies PresetOverrides;\n\nexport const PRESET_OVERRIDES: Partial<Record<OpenAICompatibleProvider, PresetOverrides>> = {\n\tdeepseek: { reasoningFieldAliases: [\"reasoning_content\", \"reasoning\", \"thinking\"] },\n\topenrouter: { reasoningFieldAliases: [\"reasoning\"] },\n\ttogether: { reasoningFieldAliases: [\"reasoning\", \"reasoning_delta\"] },\n\tazure: {\n\t\tlooseErrorShape: false,\n\t\tallowMissingMetadata: false,\n\t\tuseChoicePositionFallback: true,\n\t\treasoningFieldAliases: [],\n\t},\n};\n\nexport const PRESET_OVERRIDE_KEYS = Object.keys(PRESET_OVERRIDES) as HostCompatiblePreset[];\n\nexport function hasPresetOverride(provider: OpenAICompatibleProvider): boolean {\n\treturn provider in PRESET_OVERRIDES;\n}\n\nexport function providerPreset(provider: OpenAICompatibleProvider): PresetOverrides {\n\treturn {\n\t\t...DEFAULT_PRESET,\n\t\t...PRESET_OVERRIDES[provider],\n\t};\n}\n","import {\n\tDEFAULT_PRESET,\n\ttype OpenAICompatibleProvider,\n\tproviderPreset,\n} from \"./openai-compatible-presets\";\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\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: boolean;\n}\n\nexport interface ResolvedCompatibleAdapterConfig {\n\tlooseErrorShape: boolean;\n\tallowMissingMetadata: boolean;\n\tuseChoicePositionFallback: boolean;\n\trejectUnrecognizedPayloads: boolean;\n\treasoningFieldAliases: string[];\n}\n\nexport function resolveCompatibleAdapterConfig(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): ResolvedCompatibleAdapterConfig {\n\tconst preset = providerPreset(options.provider ?? \"generic\");\n\tconst allowMissingMetadata =\n\t\toptions.allowMissingMetadata ??\n\t\tpreset.allowMissingMetadata ??\n\t\tDEFAULT_PRESET.allowMissingMetadata;\n\tconst looseErrorShape =\n\t\toptions.looseErrorShape ?? preset.looseErrorShape ?? DEFAULT_PRESET.looseErrorShape;\n\tconst useChoicePositionFallback =\n\t\toptions.useChoicePositionFallback ??\n\t\tpreset.useChoicePositionFallback ??\n\t\tDEFAULT_PRESET.useChoicePositionFallback;\n\n\treturn {\n\t\tlooseErrorShape,\n\t\tallowMissingMetadata,\n\t\tuseChoicePositionFallback,\n\t\trejectUnrecognizedPayloads: allowMissingMetadata === false,\n\t\treasoningFieldAliases: [\n\t\t\t...(preset.reasoningFieldAliases ?? []),\n\t\t\t...(options.reasoningFieldAliases ?? []),\n\t\t],\n\t};\n}\n\nexport function compatibleProviderLabel(provider: OpenAICompatibleProvider | undefined): string {\n\treturn provider ?? \"generic\";\n}\n","import type { StreamAdapter } from \"../core/types\";\nimport { createOpenAIChatLikeAdapter } from \"./openai-chat/parser\";\nimport {\n\tresolveCompatibleAdapterConfig,\n\ttype OpenAICompatibleAdapterOptions,\n} from \"./openai-compatible-resolve\";\n\nexport type { OpenAICompatibleProvider } from \"./openai-compatible-presets\";\nexport {\n\tDEFAULT_PRESET,\n\tHOST_COMPATIBLE_PRESETS,\n\tLOOSE_HOST_PRESETS,\n\tOPENAI_COMPATIBLE_PROVIDERS,\n\tPRESET_OVERRIDE_KEYS,\n\tPRESET_OVERRIDES,\n\tSTRICT_COMPATIBLE_PRESETS,\n\thasPresetOverride,\n\tisStrictCompatiblePreset,\n\tproviderPreset,\n} from \"./openai-compatible-presets\";\nexport {\n\ttype OpenAICompatibleAdapterOptions,\n\ttype ResolvedCompatibleAdapterConfig,\n\tcompatibleProviderLabel,\n\tresolveCompatibleAdapterConfig,\n} from \"./openai-compatible-resolve\";\n\nexport function openaiCompatibleAdapter(\n\toptions: OpenAICompatibleAdapterOptions = {},\n): StreamAdapter {\n\tconst resolved = resolveCompatibleAdapterConfig(options);\n\n\treturn createOpenAIChatLikeAdapter({\n\t\t...options,\n\t\tlooseErrorShape: resolved.looseErrorShape,\n\t\tallowMissingMetadata: resolved.allowMissingMetadata,\n\t\tuseChoicePositionFallback: resolved.useChoicePositionFallback,\n\t\terrorPrefix: \"openaiCompatibleAdapter\",\n\t\tusageInputTokenFields: [\"prompt_tokens\", \"input_tokens\"],\n\t\tusageOutputTokenFields: [\"completion_tokens\", \"output_tokens\"],\n\t\trejectUnrecognizedPayloads: resolved.rejectUnrecognizedPayloads,\n\t\treasoningFieldAliases: resolved.reasoningFieldAliases,\n\t\temitLegacyCitationMetadata: options.emitLegacyCitationMetadata ?? false,\n\t});\n}\n","import type { RawChunk } from \"../../core/types\";\nimport { asString, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface AnthropicBlockContext {\n\tjsonMode?: boolean | undefined;\n\tmode?: AnthropicBlockMode;\n}\n\nexport type AnthropicBlockMode = \"stream-start\" | \"response\";\n\n/** Map a complete Anthropic content block (response body) to raw chunks. */\nexport function anthropicResponseBlockChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\tcontext: AnthropicBlockContext,\n): RawChunk[] {\n\treturn anthropicBlockStartChunks(block, index, { ...context, mode: \"response\" });\n}\n\n/** Map content_block_start envelope block to raw chunks. */\nexport function anthropicBlockStartChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\tcontext: AnthropicBlockContext,\n): RawChunk[] {\n\tconst mode = context.mode ?? \"stream-start\";\n\tconst blockType = asString(block.type) ?? \"unknown\";\n\tswitch (blockType) {\n\t\tcase \"text\": {\n\t\t\tconst text = asString(block.text);\n\t\t\tif (!text) return [];\n\t\t\tif (context.jsonMode) return [{ kind: \"json-delta\", delta: text }];\n\t\t\treturn [{ 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 \"redacted_thinking\":\n\t\t\treturn [];\n\t\tcase \"tool_use\":\n\t\t\treturn anthropicToolUseBlockChunks(block, index, mode);\n\t\tcase \"json\": {\n\t\t\tconst text = asString(block.text) ?? asString(block.partial_json);\n\t\t\treturn text ? [{ kind: \"json-delta\", delta: text }] : [];\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 anthropicToolUseBlockChunks(\n\tblock: Record<string, unknown>,\n\tindex: number,\n\tmode: AnthropicBlockMode,\n): RawChunk[] {\n\tconst id = asString(block.id);\n\tconst name = asString(block.name) ?? \"unknown\";\n\tconst chunks: RawChunk[] = [optionalRawChunk({ kind: \"tool-start\", id, name, index })];\n\tconst input = block.input;\n\tif (input !== undefined && !(isRecord(input) && Object.keys(input).length === 0)) {\n\t\tchunks.push(\n\t\t\toptionalRawChunk({ kind: \"tool-args-delta\", id, delta: JSON.stringify(input), index }),\n\t\t);\n\t}\n\tif (mode === \"response\") {\n\t\tchunks.push(optionalRawChunk({ kind: \"tool-done\", id, index }));\n\t}\n\treturn chunks;\n}\n","import type { FinishReason } from \"../../core/types\";\n\n/** Anthropic Messages and Bedrock Converse share similar stop-reason strings. */\nexport function mapAnthropicLikeStopReason(value: string): FinishReason {\n\tswitch (value) {\n\t\tcase \"end_turn\":\n\t\tcase \"stop_sequence\":\n\t\t\treturn \"stop\";\n\t\tcase \"tool_use\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"max_tokens\":\n\t\t\treturn \"length\";\n\t\tcase \"content_filtered\":\n\t\tcase \"guardrail_intervened\":\n\t\tcase \"refusal\":\n\t\t\treturn \"content_filter\";\n\t\tdefault:\n\t\t\treturn \"stop\";\n\t}\n}\n","import type { RawChunk } from \"../../core/types\";\nimport { asNumber, isRecord, optionalRawChunk } from \"../utils\";\n\nexport interface UsageFieldAliases {\n\tinput?: string[];\n\toutput?: string[];\n\treasoning?: string[];\n\ttotal?: string[];\n}\n\nconst DEFAULT_ALIASES: UsageFieldAliases = {\n\tinput: [\"inputTokens\", \"input_tokens\", \"promptTokens\", \"promptTokenCount\", \"inputTokenCount\"],\n\toutput: [\n\t\t\"outputTokens\",\n\t\t\"output_tokens\",\n\t\t\"completionTokens\",\n\t\t\"candidatesTokenCount\",\n\t\t\"outputTokenCount\",\n\t],\n\treasoning: [\"reasoningTokens\", \"reasoning_tokens\", \"thoughtsTokenCount\"],\n\ttotal: [\"totalTokens\", \"totalTokenCount\", \"total_tokens\"],\n};\n\nfunction firstNumber(\n\tvalue: Record<string, unknown>,\n\tfields: string[] | undefined,\n): number | undefined {\n\tif (!fields) return undefined;\n\tfor (const field of fields) {\n\t\tconst number = asNumber(value[field]);\n\t\tif (number !== undefined) return number;\n\t}\n\treturn undefined;\n}\n\nexport function buildUsageChunk(\n\tvalue: unknown,\n\taliases: UsageFieldAliases = DEFAULT_ALIASES,\n\toptions?: { mirrorTotalTokens?: boolean },\n): RawChunk | undefined {\n\tif (!isRecord(value)) return undefined;\n\tconst inputTokens = firstNumber(value, aliases.input);\n\tconst outputTokens = firstNumber(value, aliases.output);\n\tconst reasoningTokens = firstNumber(value, aliases.reasoning);\n\tconst totalTokens = firstNumber(value, aliases.total);\n\tif (\n\t\tinputTokens === undefined &&\n\t\toutputTokens === undefined &&\n\t\treasoningTokens === undefined &&\n\t\ttotalTokens === undefined\n\t) {\n\t\treturn undefined;\n\t}\n\tconst raw =\n\t\toptions?.mirrorTotalTokens && totalTokens !== undefined ? { ...value, totalTokens } : value;\n\treturn optionalRawChunk({\n\t\tkind: \"usage\",\n\t\tinputTokens,\n\t\toutputTokens,\n\t\treasoningTokens,\n\t\traw,\n\t});\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport { anthropicBlockStartChunks, anthropicResponseBlockChunks } from \"./shared/anthropic-blocks\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { mapAnthropicLikeStopReason } from \"./shared/stop-reasons\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport {\n\tlibraryError,\n\tproviderErrorChunksFromMessage,\n\tproviderErrorChunksFromPayload,\n} from \"./errors\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport interface AnthropicAdapterOptions {\n\t/** Map `json` content blocks to json-delta instead of text-delta. */\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 = parseAdapterObjectPayload(raw, \"anthropicAdapter.parseChunk\");\n\t\tif (!payload) return [];\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 providerErrorFromPayload(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 = buildUsageChunk(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\tif (blockType === \"tool_use\") {\n\t\t\tconst id = asString(block.id);\n\t\t\tconst name = asString(block.name) ?? \"unknown\";\n\t\t\tif (id) state.id = id;\n\t\t\tstate.name = name;\n\t\t}\n\n\t\treturn anthropicBlockStartChunks(block, index, {\n\t\t\tjsonMode: this.options.jsonMode,\n\t\t\tmode: \"stream-start\",\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\t}\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 = buildUsageChunk(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 providerErrorFromPayload(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\t}\n\tconst inputUsage = buildUsageChunk(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(...anthropicResponseBlockChunks(block, index, { jsonMode: options.jsonMode }));\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 finishReason(value: string | undefined): FinishReason | undefined {\n\tif (value === undefined || value === null) return undefined;\n\treturn mapAnthropicLikeStopReason(value);\n}\n\nfunction providerErrorFromPayload(value: unknown): RawChunk[] {\n\tif (isRecord(value)) {\n\t\treturn providerErrorChunksFromPayload(\n\t\t\tvalue,\n\t\t\t\"anthropicAdapter.parseChunk\",\n\t\t\tfalse,\n\t\t\t\"Anthropic provider error\",\n\t\t);\n\t}\n\treturn providerErrorChunksFromMessage(\"Anthropic provider error\", false);\n}\n","import type { RawChunk } from \"../../core/types\";\n\nexport interface TextOrJsonDeltaOptions {\n\tjsonMode?: boolean | undefined;\n\tchoiceIndex?: number | undefined;\n}\n\nexport function textOrJsonDelta(\n\ttext: string,\n\toptions: TextOrJsonDeltaOptions,\n): RawChunk | undefined {\n\tif (text.length === 0) return undefined;\n\tif (options.jsonMode) return { kind: \"json-delta\", delta: text };\n\tif (options.choiceIndex !== undefined) {\n\t\treturn { kind: \"text-delta\", text, choiceIndex: options.choiceIndex };\n\t}\n\treturn { kind: \"text-delta\", text };\n}\n","import type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromMessage } from \"./errors\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } 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\n\tconstructor(private readonly options: OpenAIResponsesAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"openaiResponsesAdapter.parseChunk\");\n\t\tif (!payload) return [];\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\tconst chunk = textOrJsonDelta(text, { jsonMode: this.options.jsonMode });\n\t\treturn chunk ? [chunk] : [];\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\tconst chunk = textOrJsonDelta(text, { jsonMode: this.options.jsonMode });\n\t\treturn chunk ? [chunk] : [];\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) return existing;\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\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\tconst chunk = textOrJsonDelta(text, { jsonMode: options.jsonMode });\n\treturn chunk ?? { 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","/** Tracks last serialized JSON for prefix-diff tool arg deltas. */\nexport interface IncrementalJsonState {\n\tlastArgsJson: string;\n}\n\n/** Emit only the new suffix when `nextInput` extends `prev`, else full replace. */\nexport function incrementalJsonStringDelta(\n\tstate: IncrementalJsonState,\n\tnextInput: string,\n): string | undefined {\n\tconst prev = state.lastArgsJson;\n\tif (nextInput === prev) return undefined;\n\tconst delta =\n\t\tprev.length > 0 && nextInput.startsWith(prev) ? nextInput.slice(prev.length) : nextInput;\n\tstate.lastArgsJson = nextInput;\n\treturn delta.length > 0 ? delta : undefined;\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport {\n\tlibraryError,\n\tproviderErrorChunksFromMessage,\n\tproviderErrorChunksFromPayload,\n} from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { geminiCitationGroundingFromCandidate } from \"./shared/citation-grounding\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport type GeminiApiSurface = \"google-ai\" | \"vertex\";\n\nexport interface GeminiAdapterOptions {\n\t/** Map text parts to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n\t/**\n\t * Which Gemini HTTP API produced the chunk JSON.\n\t * @default \"google-ai\"\n\t */\n\tapiSurface?: GeminiApiSurface;\n\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: boolean;\n}\n\ninterface ToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\tchoiceIndex: number;\n\tlastArgsJson: string;\n\topen: boolean;\n}\n\nexport function geminiAdapter(options: GeminiAdapterOptions = {}): StreamAdapter {\n\tconst parser = new GeminiStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass GeminiStreamParser {\n\tprivate metadataEmitted = false;\n\tprivate readonly tools = new Map<string, ToolState>();\n\tprivate readonly openToolByChoice = new Map<number, string>();\n\tprivate toolCounter = 0;\n\n\tconstructor(private readonly options: GeminiAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tlet payload = parseAdapterObjectPayload(raw, \"geminiAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tif (this.options.apiSurface === \"vertex\") {\n\t\t\tconst normalized = normalizeVertexChunk(payload);\n\t\t\tif (!normalized) {\n\t\t\t\tif (Object.keys(payload).length === 0) return [];\n\t\t\t\treturn [\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\t\traw: payload,\n\t\t\t\t\t}),\n\t\t\t\t].filter((chunk): chunk is RawChunk => chunk !== undefined);\n\t\t\t}\n\t\t\tpayload = normalized;\n\t\t}\n\n\t\tif (isRecord(payload.error)) {\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\tpayload.error,\n\t\t\t\t\"geminiAdapter.parseChunk\",\n\t\t\t\tfalse,\n\t\t\t\t\"Gemini provider error\",\n\t\t\t);\n\t\t}\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst feedback = isRecord(payload.promptFeedback) ? payload.promptFeedback : undefined;\n\t\tconst blockReason = feedback ? asString(feedback.blockReason) : undefined;\n\t\tif (blockReason) {\n\t\t\treturn providerErrorChunksFromMessage(`Gemini prompt blocked: ${blockReason}`, false);\n\t\t}\n\n\t\tchunks.push(...this.metadataChunks(payload));\n\n\t\tconst usage = buildUsageChunk(payload.usageMetadata);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst candidates = Array.isArray(payload.candidates) ? payload.candidates : [];\n\t\tfor (const candidate of candidates) {\n\t\t\tif (!isRecord(candidate)) continue;\n\t\t\tchunks.push(...this.candidateChunks(candidate));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate metadataChunks(payload: Record<string, unknown>): RawChunk[] {\n\t\tif (this.metadataEmitted) return [];\n\t\tconst responseId = asString(payload.responseId);\n\t\tconst model = asString(payload.modelVersion);\n\t\tif (!responseId && !model) return [];\n\n\t\tthis.metadataEmitted = true;\n\t\tconst chunks: RawChunk[] = [];\n\t\tif (responseId) chunks.push({ kind: \"message-start\", id: responseId });\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\tresponseId,\n\t\t\t\tmodel,\n\t\t\t\traw: { responseId, modelVersion: model },\n\t\t\t}),\n\t\t);\n\t\treturn chunks;\n\t}\n\n\tprivate candidateChunks(candidate: Record<string, unknown>): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst choiceIndex = asNumber(candidate.index) ?? 0;\n\n\t\tconst citation = candidate.citationMetadata;\n\t\tconst grounding = candidate.groundingMetadata;\n\t\tif (citation !== undefined || grounding !== undefined) {\n\t\t\tchunks.push(\n\t\t\t\t...geminiCitationGroundingFromCandidate(candidate, {\n\t\t\t\t\temitLegacyCitationMetadata: this.options.emitLegacyCitationMetadata ?? false,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst content = isRecord(candidate.content) ? candidate.content : undefined;\n\t\tconst parts = content && Array.isArray(content.parts) ? content.parts : [];\n\t\tfor (let partIndex = 0; partIndex < parts.length; partIndex += 1) {\n\t\t\tconst part = parts[partIndex];\n\t\t\tif (!isRecord(part)) continue;\n\t\t\tchunks.push(...this.partChunks(part, partIndex, choiceIndex));\n\t\t}\n\n\t\tconst finishReason = asString(candidate.finishReason);\n\t\tif (finishReason) {\n\t\t\tconst mapped = mapFinishReason(finishReason);\n\t\t\tif (mapped === \"error\") {\n\t\t\t\tchunks.push(\n\t\t\t\t\t...providerErrorChunksFromMessage(`Gemini finishReason: ${finishReason}`, false),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tchunks.push({ kind: \"finish\", reason: mapped, choiceIndex });\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate partChunks(\n\t\tpart: Record<string, unknown>,\n\t\tpartIndex: number,\n\t\tchoiceIndex: number,\n\t): RawChunk[] {\n\t\tif (isRecord(part.functionResponse)) return [];\n\t\tif (part.inlineData !== undefined || part.fileData !== undefined) return [];\n\t\tif (part.executableCode !== undefined || part.codeExecutionResult !== undefined) return [];\n\n\t\tconst thought = part.thought === true;\n\t\tconst text = asString(part.text);\n\t\tif (thought && text) {\n\t\t\treturn [{ kind: \"reasoning-delta\", text, variant: \"detail\" }];\n\t\t}\n\t\tif (thought && !text) return [];\n\n\t\tif (text !== undefined) {\n\t\t\tconst chunk = textOrJsonDelta(text, {\n\t\t\t\tjsonMode: this.options.jsonMode,\n\t\t\t\tchoiceIndex,\n\t\t\t});\n\t\t\treturn chunk ? [chunk] : [];\n\t\t}\n\n\t\tconst functionCall = isRecord(part.functionCall) ? part.functionCall : undefined;\n\t\tif (functionCall) return this.functionCallChunks(functionCall, partIndex, choiceIndex);\n\n\t\tif (Object.keys(part).length === 0) return [];\n\t\treturn [];\n\t}\n\n\tprivate functionCallChunks(\n\t\tfunctionCall: Record<string, unknown>,\n\t\tpartIndex: number,\n\t\tchoiceIndex: number,\n\t): RawChunk[] {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst explicitId = asString(functionCall.id);\n\t\tconst name = asString(functionCall.name);\n\t\tlet toolKey = this.resolveToolKey(explicitId, partIndex, choiceIndex, name);\n\n\t\tif (name && !this.tools.has(toolKey)) {\n\t\t\ttoolKey = explicitId ?? `${choiceIndex}:${partIndex}`;\n\t\t\tconst id = explicitId ?? `gemini:${choiceIndex}:${this.toolCounter++}`;\n\t\t\tthis.tools.set(toolKey, {\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex: partIndex,\n\t\t\t\tchoiceIndex,\n\t\t\t\tlastArgsJson: \"\",\n\t\t\t\topen: true,\n\t\t\t});\n\t\t\tthis.openToolByChoice.set(choiceIndex, toolKey);\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid,\n\t\t\t\t\tname,\n\t\t\t\t\tindex: partIndex,\n\t\t\t\t\tchoiceIndex,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\tconst current = this.tools.get(toolKey);\n\t\tif (!current) return chunks;\n\n\t\tconst partialArgs = Array.isArray(functionCall.partialArgs) ? functionCall.partialArgs : [];\n\t\tfor (const item of partialArgs) {\n\t\t\tif (!isRecord(item)) continue;\n\t\t\tconst delta = partialArgDelta(item);\n\t\t\tif (delta) {\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: current.id,\n\t\t\t\t\t\tdelta,\n\t\t\t\t\t\tindex: current.index,\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\tif (isRecord(functionCall.args)) {\n\t\t\tconst delta = incrementalJsonStringDelta(current, JSON.stringify(functionCall.args));\n\t\t\tif (delta) {\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: current.id,\n\t\t\t\t\t\tdelta,\n\t\t\t\t\t\tindex: current.index,\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\tconst willContinue = functionCall.willContinue === true;\n\t\tconst hasPartialArgs = partialArgs.length > 0;\n\t\tconst hasArgs = isRecord(functionCall.args) && Object.keys(functionCall.args).length > 0;\n\n\t\tif (!willContinue && !hasPartialArgs && (hasArgs || (name && isRecord(functionCall.args)))) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-done\",\n\t\t\t\t\tid: current.id,\n\t\t\t\t\tindex: current.index,\n\t\t\t\t\tchoiceIndex,\n\t\t\t\t}),\n\t\t\t);\n\t\t\tcurrent.open = false;\n\t\t} else if (\n\t\t\t!willContinue &&\n\t\t\thasPartialArgs &&\n\t\t\tpartialArgs.every((item) => isRecord(item) && item.willContinue !== true)\n\t\t) {\n\t\t\tif (current.open) {\n\t\t\t\tchunks.push(\n\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\tkind: \"tool-done\",\n\t\t\t\t\t\tid: current.id,\n\t\t\t\t\t\tindex: current.index,\n\t\t\t\t\t\tchoiceIndex,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t\tcurrent.open = false;\n\t\t\t}\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate resolveToolKey(\n\t\texplicitId: string | undefined,\n\t\tpartIndex: number,\n\t\tchoiceIndex: number,\n\t\tname: string | undefined,\n\t): string {\n\t\tif (explicitId) return explicitId;\n\t\tconst openKey = this.openToolByChoice.get(choiceIndex);\n\t\tif (openKey && this.tools.get(openKey)?.open) return openKey;\n\t\tif (name) {\n\t\t\tfor (const [key, state] of this.tools) {\n\t\t\t\tif (state.choiceIndex === choiceIndex && state.name === name && state.open) return key;\n\t\t\t}\n\t\t}\n\t\treturn `${choiceIndex}:${partIndex}`;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: GeminiAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"geminiAdapter.parseResponse expected a GenerateContentResponse object\");\n\t}\n\n\tlet record = body;\n\tif (options.apiSurface === \"vertex\") {\n\t\tconst normalized = normalizeVertexChunk(body);\n\t\tif (normalized) record = normalized;\n\t}\n\n\tconst parser = new GeminiStreamParser(options);\n\tconst chunks: RawChunk[] = [];\n\n\tif (isRecord(record.error)) {\n\t\treturn providerErrorChunksFromPayload(\n\t\t\trecord.error,\n\t\t\t\"geminiAdapter.parseResponse\",\n\t\t\tfalse,\n\t\t\t\"Gemini provider error\",\n\t\t);\n\t}\n\n\tconst feedback = isRecord(record.promptFeedback) ? record.promptFeedback : undefined;\n\tconst blockReason = feedback ? asString(feedback.blockReason) : undefined;\n\tif (blockReason) {\n\t\treturn providerErrorChunksFromMessage(`Gemini prompt blocked: ${blockReason}`, false);\n\t}\n\n\tchunks.push(...parser.parseChunk(JSON.stringify(record)));\n\n\tconst hasFinish = chunks.some((chunk) => chunk.kind === \"finish\");\n\tif (!hasFinish) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\" });\n\t}\n\n\treturn chunks;\n}\n\nfunction partialArgDelta(arg: Record<string, unknown>): string | undefined {\n\tconst stringValue = asString(arg.stringValue);\n\tif (stringValue !== undefined) return stringValue;\n\n\tconst jsonPath = asString(arg.jsonPath) ?? \"$\";\n\tconst key = jsonPath.replace(/^\\$\\.?/, \"\").split(\".\")[0] ?? \"value\";\n\tif (arg.numberValue !== undefined) return JSON.stringify({ [key]: arg.numberValue });\n\tif (arg.boolValue !== undefined) return JSON.stringify({ [key]: arg.boolValue });\n\tif (arg.nullValue !== undefined) return JSON.stringify({ [key]: null });\n\treturn undefined;\n}\n\nfunction mapFinishReason(value: string): FinishReason {\n\tswitch (value) {\n\t\tcase \"STOP\":\n\t\tcase \"STOP_REASON_UNSPECIFIED\":\n\t\t\treturn \"stop\";\n\t\tcase \"MAX_TOKENS\":\n\t\t\treturn \"length\";\n\t\tcase \"SAFETY\":\n\t\tcase \"RECITATION\":\n\t\tcase \"BLOCKLIST\":\n\t\tcase \"PROHIBITED_CONTENT\":\n\t\tcase \"SPII\":\n\t\tcase \"LANGUAGE\":\n\t\t\treturn \"content_filter\";\n\t\tcase \"MALFORMED_FUNCTION_CALL\":\n\t\t\treturn \"error\";\n\t\tdefault:\n\t\t\treturn \"error\";\n\t}\n}\n\n/** Strip Vertex / gateway wrappers before mapping GenerateContentResponse fields. */\nexport function normalizeVertexChunk(\n\tpayload: Record<string, unknown>,\n): Record<string, unknown> | null {\n\tif (isRecord(payload.response)) {\n\t\treturn payload.response;\n\t}\n\tif (isRecord(payload.result)) {\n\t\treturn payload.result;\n\t}\n\tif (Array.isArray(payload.predictions)) {\n\t\tconst first = payload.predictions[0];\n\t\tif (isRecord(first)) return first;\n\t}\n\tif (\n\t\tpayload.candidates !== undefined ||\n\t\tpayload.usageMetadata !== undefined ||\n\t\tpayload.promptFeedback !== undefined ||\n\t\tpayload.responseId !== undefined ||\n\t\tisRecord(payload.error)\n\t) {\n\t\treturn payload;\n\t}\n\treturn null;\n}\n","import type { RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromPayload } from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { mapAnthropicLikeStopReason } from \"./shared/stop-reasons\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport type BedrockModelFamily = \"anthropic\" | \"openai-like\" | \"nova\" | \"auto\";\n\nexport interface BedrockAdapterOptions {\n\t/**\n\t * Hint which ConverseStream payload dialect to prefer when envelopes overlap.\n\t * \"auto\" uses structural detection (document heuristics in adapter-guide).\n\t */\n\tmodelFamily?: BedrockModelFamily;\n\t/** Map structured JSON text blocks to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n}\n\ninterface BlockToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\topen: boolean;\n\tlastArgsJson: string;\n}\n\nconst EXCEPTION_KEYS = [\n\t\"internalServerException\",\n\t\"modelStreamErrorException\",\n\t\"validationException\",\n\t\"throttlingException\",\n\t\"serviceUnavailableException\",\n] as const;\n\nexport function bedrockAdapter(options: BedrockAdapterOptions = {}): StreamAdapter {\n\tconst parser = new BedrockStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass BedrockStreamParser {\n\tprivate messageStarted = false;\n\tprivate readonly blocks = new Map<number, BlockToolState>();\n\n\tconstructor(private readonly options: BedrockAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"bedrockAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tfor (const key of EXCEPTION_KEYS) {\n\t\t\tconst exception = payload[key];\n\t\t\tif (isRecord(exception)) {\n\t\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\t\texception,\n\t\t\t\t\t\"bedrockAdapter.parseChunk\",\n\t\t\t\t\tfalse,\n\t\t\t\t\t`Bedrock ${key}`,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (payload.messageStart !== undefined) {\n\t\t\treturn this.messageStartChunks(payload.messageStart);\n\t\t}\n\t\tif (payload.contentBlockStart !== undefined) {\n\t\t\treturn this.contentBlockStartChunks(payload.contentBlockStart);\n\t\t}\n\t\tif (payload.contentBlockDelta !== undefined) {\n\t\t\treturn this.contentBlockDeltaChunks(payload.contentBlockDelta);\n\t\t}\n\t\tif (payload.contentBlockStop !== undefined) {\n\t\t\treturn this.contentBlockStopChunks(payload.contentBlockStop);\n\t\t}\n\t\tif (payload.messageStop !== undefined) {\n\t\t\treturn this.messageStopChunks(payload.messageStop);\n\t\t}\n\t\tif (payload.metadata !== undefined) {\n\t\t\treturn this.metadataChunks(payload.metadata);\n\t\t}\n\n\t\treturn optionalMetadataRaw(payload);\n\t}\n\n\tprivate messageStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tif (this.messageStarted) return [];\n\t\tthis.messageStarted = true;\n\t\tconst role = asString(value.role);\n\t\treturn [\n\t\t\t{ kind: \"message-start\" },\n\t\t\t...(role\n\t\t\t\t? [\n\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\t\t\traw: { role },\n\t\t\t\t\t\t}),\n\t\t\t\t\t]\n\t\t\t\t: []),\n\t\t];\n\t}\n\n\tprivate contentBlockStartChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst start = isRecord(value.start) ? value.start : undefined;\n\t\tconst toolUse = start && isRecord(start.toolUse) ? start.toolUse : undefined;\n\t\tif (!toolUse) return [];\n\n\t\tconst id = asString(toolUse.toolUseId) ?? `bedrock:${blockIndex}`;\n\t\tconst name = asString(toolUse.name) ?? \"unknown\";\n\t\tthis.blocks.set(blockIndex, {\n\t\t\tid,\n\t\t\tname,\n\t\t\tindex: blockIndex,\n\t\t\topen: true,\n\t\t\tlastArgsJson: \"\",\n\t\t});\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-start\",\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex: blockIndex,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockDeltaChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst delta = isRecord(value.delta) ? value.delta : undefined;\n\t\tif (!delta) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst text = asString(delta.text);\n\t\tconst textChunk = text\n\t\t\t? textOrJsonDelta(text, { jsonMode: this.options.jsonMode, choiceIndex: 0 })\n\t\t\t: undefined;\n\t\tif (textChunk) chunks.push(textChunk);\n\n\t\tconst reasoningText = reasoningTextFromDelta(delta.reasoningContent, this.options.modelFamily);\n\t\tif (reasoningText) {\n\t\t\tchunks.push({ kind: \"reasoning-delta\", text: reasoningText, variant: \"detail\" });\n\t\t}\n\n\t\tconst toolUse = isRecord(delta.toolUse) ? delta.toolUse : undefined;\n\t\tif (toolUse) {\n\t\t\tchunks.push(...this.toolInputDelta(blockIndex, toolUse));\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate toolInputDelta(blockIndex: number, toolUse: Record<string, unknown>): RawChunk[] {\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state) return [];\n\n\t\tconst input = toolUse.input;\n\t\tlet delta: string | undefined;\n\t\tif (typeof input === \"string\") {\n\t\t\tdelta = incrementalJsonStringDelta(state, input);\n\t\t} else if (isRecord(input)) {\n\t\t\tdelta = incrementalJsonStringDelta(state, JSON.stringify(input));\n\t\t}\n\t\tif (!delta) return [];\n\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\tid: state.id,\n\t\t\t\tdelta,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate contentBlockStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst blockIndex = asNumber(value.contentBlockIndex) ?? 0;\n\t\tconst state = this.blocks.get(blockIndex);\n\t\tif (!state?.open) return [];\n\n\t\tstate.open = false;\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-done\",\n\t\t\t\tid: state.id,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate messageStopChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst stopReason = asString(value.stopReason) ?? \"unknown\";\n\t\tconst additional = value.additionalModelResponseFields;\n\t\tconst chunks: RawChunk[] = [];\n\t\tchunks.push(\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"metadata\",\n\t\t\t\traw: {\n\t\t\t\t\tstopReason,\n\t\t\t\t\t...(additional !== undefined ? { additionalModelResponseFields: additional } : {}),\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapAnthropicLikeStopReason(stopReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t\treturn chunks;\n\t}\n\n\tprivate metadataChunks(value: unknown): RawChunk[] {\n\t\tif (!isRecord(value)) return [];\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tconst usage = buildUsageChunk(value.usage, undefined, { mirrorTotalTokens: true });\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst metrics = value.metrics;\n\t\tconst trace = value.trace;\n\t\tif (metrics !== undefined || trace !== undefined) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\traw: { metrics, trace },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n}\n\nfunction parseResponse(body: unknown, options: BedrockAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"bedrockAdapter.parseResponse expected a Converse response object\");\n\t}\n\n\tfor (const key of EXCEPTION_KEYS) {\n\t\tconst exception = body[key];\n\t\tif (isRecord(exception)) {\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\texception,\n\t\t\t\t\"bedrockAdapter.parseResponse\",\n\t\t\t\tfalse,\n\t\t\t\t`Bedrock ${key}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tconst parser = new BedrockStreamParser(options);\n\tconst syntheticEvents = synthesizeConverseStreamEvents(body);\n\tconst chunks: RawChunk[] = [];\n\tfor (const event of syntheticEvents) {\n\t\tchunks.push(...parser.parseChunk(JSON.stringify(event)));\n\t}\n\n\tconst stopReason = asString(body.stopReason);\n\tif (stopReason) {\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapAnthropicLikeStopReason(stopReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t} else if (!chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t}\n\n\treturn chunks;\n}\n\nfunction synthesizeConverseStreamEvents(body: Record<string, unknown>): unknown[] {\n\tconst events: unknown[] = [];\n\tconst output = isRecord(body.output) ? body.output : undefined;\n\tconst message = output && isRecord(output.message) ? output.message : undefined;\n\n\tif (message) {\n\t\tevents.push({ messageStart: { role: message.role } });\n\t\tconst content = Array.isArray(message.content) ? message.content : [];\n\t\tlet blockIndex = 0;\n\t\tfor (const block of content) {\n\t\t\tif (!isRecord(block)) continue;\n\t\t\tconst toolUse = isRecord(block.toolUse) ? block.toolUse : undefined;\n\t\t\tif (toolUse) {\n\t\t\t\tevents.push({\n\t\t\t\t\tcontentBlockStart: {\n\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\tstart: { toolUse },\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tif (toolUse.input !== undefined) {\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tcontentBlockDelta: {\n\t\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\t\tdelta: { toolUse: { input: toolUse.input } },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tevents.push({ contentBlockStop: { contentBlockIndex: blockIndex } });\n\t\t\t} else {\n\t\t\t\tconst text = asString(block.text);\n\t\t\t\tif (text !== undefined && text.length > 0) {\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tcontentBlockDelta: {\n\t\t\t\t\t\t\tcontentBlockIndex: blockIndex,\n\t\t\t\t\t\t\tdelta: { text },\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tblockIndex += 1;\n\t\t}\n\t}\n\n\tif (body.usage !== undefined) {\n\t\tevents.push({ metadata: { usage: body.usage } });\n\t}\n\n\treturn events;\n}\n\nfunction reasoningTextFromDelta(\n\treasoning: unknown,\n\tmodelFamily: BedrockModelFamily | undefined,\n): string | undefined {\n\tif (reasoning === undefined) return undefined;\n\tif (typeof reasoning === \"string\") return reasoning.length > 0 ? reasoning : undefined;\n\tif (!isRecord(reasoning)) return undefined;\n\n\tconst text = asString(reasoning.text);\n\tif (text !== undefined && text.length > 0) return text;\n\n\tif (modelFamily === \"anthropic\" || modelFamily === \"auto\") {\n\t\tconst thinking = asString(reasoning.thinking);\n\t\tif (thinking !== undefined && thinking.length > 0) return thinking;\n\t}\n\n\treturn undefined;\n}\n\nfunction optionalMetadataRaw(payload: Record<string, unknown>): RawChunk[] {\n\tif (Object.keys(payload).length === 0) return [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"metadata\",\n\t\t\traw: payload,\n\t\t}),\n\t];\n}\n","import type { FinishReason, RawChunk, StreamAdapter } from \"../core/types\";\nimport { libraryError, providerErrorChunksFromPayload } from \"./errors\";\nimport { incrementalJsonStringDelta } from \"./shared/incremental-json\";\nimport { cohereCitationFromStartPayload } from \"./shared/citation-grounding\";\nimport { parseAdapterObjectPayload } from \"./shared/parse-payload\";\nimport { textOrJsonDelta } from \"./shared/text-delta\";\nimport { buildUsageChunk, type UsageFieldAliases } from \"./shared/usage\";\nimport { asNumber, asString, createStreamAdapter, isRecord, optionalRawChunk } from \"./utils\";\n\nexport interface CohereAdapterOptions {\n\t/** Map content-delta text to json-delta instead of text-delta. */\n\tjsonMode?: boolean;\n\t/** @deprecated Dual-emit legacy metadata.raw citation blobs alongside typed events. */\n\temitLegacyCitationMetadata?: boolean;\n}\n\ninterface ToolState {\n\tid: string;\n\tname: string;\n\tindex: number;\n\topen: boolean;\n\tlastArgsJson: string;\n}\n\ntype CohereStreamEvent = Record<string, unknown> & { type?: string };\n\nconst COHERE_USAGE_ALIASES: UsageFieldAliases = {\n\tinput: [\"input_tokens\", \"inputTokens\"],\n\toutput: [\"output_tokens\", \"outputTokens\"],\n\ttotal: [\"total_tokens\", \"totalTokens\"],\n};\n\nexport function cohereAdapter(options: CohereAdapterOptions = {}): StreamAdapter {\n\tconst parser = new CohereStreamParser(options);\n\treturn createStreamAdapter({\n\t\tparser,\n\t\tparseResponse,\n\t\toptions,\n\t});\n}\n\nclass CohereStreamParser {\n\tprivate messageStarted = false;\n\tprivate metadataEmitted = false;\n\tprivate readonly toolsByKey = new Map<string, ToolState>();\n\tprivate readonly indexToKey = new Map<number, string>();\n\n\tconstructor(private readonly options: CohereAdapterOptions) {}\n\n\tparseChunk(raw: string): RawChunk[] {\n\t\tconst payload = parseAdapterObjectPayload(raw, \"cohereAdapter.parseChunk\");\n\t\tif (!payload) return [];\n\n\t\tif (asString(payload.type) === \"error\" || isRecord(payload.error)) {\n\t\t\tconst errorBody = isRecord(payload.error) ? payload.error : payload;\n\t\t\treturn providerErrorChunksFromPayload(\n\t\t\t\terrorBody,\n\t\t\t\t\"cohereAdapter.parseChunk\",\n\t\t\t\tfalse,\n\t\t\t\t\"Cohere provider error\",\n\t\t\t);\n\t\t}\n\n\t\tconst eventType = asString(payload.type);\n\t\tif (!eventType) return optionalMetadataRaw(payload);\n\n\t\tswitch (eventType) {\n\t\t\tcase \"message-start\":\n\t\t\t\treturn this.messageStartChunks(payload);\n\t\t\tcase \"content-start\":\n\t\t\tcase \"content-end\":\n\t\t\t\treturn [];\n\t\t\tcase \"content-delta\":\n\t\t\t\treturn this.contentDeltaChunks(payload);\n\t\t\tcase \"tool-plan-delta\":\n\t\t\t\treturn this.toolPlanDeltaChunks(payload);\n\t\t\tcase \"tool-call-start\":\n\t\t\t\treturn this.toolCallStartChunks(payload);\n\t\t\tcase \"tool-call-delta\":\n\t\t\t\treturn this.toolCallDeltaChunks(payload);\n\t\t\tcase \"tool-call-end\":\n\t\t\t\treturn this.toolCallEndChunks(payload);\n\t\t\tcase \"citation-start\":\n\t\t\t\treturn this.citationStartChunks(payload);\n\t\t\tcase \"citation-end\":\n\t\t\t\treturn [];\n\t\t\tcase \"message-end\":\n\t\t\t\treturn this.messageEndChunks(payload);\n\t\t\tdefault:\n\t\t\t\treturn optionalMetadataRaw(payload);\n\t\t}\n\t}\n\n\tprivate messageStartChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tif (this.messageStarted) return [];\n\t\tthis.messageStarted = true;\n\n\t\tconst chunks: RawChunk[] = [{ kind: \"message-start\" }];\n\t\tconst messageId = asString(payload.id);\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst role = message ? asString(message.role) : undefined;\n\n\t\tif (messageId || role) {\n\t\t\tthis.metadataEmitted = true;\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\tresponseId: messageId,\n\t\t\t\t\traw: { id: messageId, role },\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate contentDeltaChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst content = message && isRecord(message.content) ? message.content : undefined;\n\t\tconst text = content ? asString(content.text) : undefined;\n\t\tif (text === undefined || text.length === 0) return [];\n\n\t\tconst textChunk = textOrJsonDelta(text, {\n\t\t\tjsonMode: this.options.jsonMode,\n\t\t\tchoiceIndex: asNumber(payload.index) ?? 0,\n\t\t});\n\t\treturn textChunk ? [textChunk] : [];\n\t}\n\n\tprivate toolPlanDeltaChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst toolPlan = message ? asString(message.tool_plan) : asString(delta?.tool_plan);\n\t\tif (toolPlan === undefined || toolPlan.length === 0) return [];\n\t\treturn [{ kind: \"reasoning-delta\", text: toolPlan, variant: \"detail\" }];\n\t}\n\n\tprivate toolCallStartChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst baseIndex = asNumber(payload.index) ?? 0;\n\t\tconst toolCalls = toolCallsFromDelta(payload.delta);\n\t\tif (toolCalls.length === 0) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tfor (let i = 0; i < toolCalls.length; i += 1) {\n\t\t\tconst toolCall = toolCalls[i]!;\n\t\t\tconst index = asNumber(toolCall.index) ?? baseIndex + i;\n\t\t\tconst id = asString(toolCall.id) ?? `cohere:tool:${index}`;\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst name = fn ? (asString(fn.name) ?? \"unknown\") : \"unknown\";\n\t\t\tconst key = reconcileToolKey(this.toolsByKey, this.indexToKey, index, id);\n\t\t\tconst existing = this.toolsByKey.get(key);\n\t\t\tif (existing?.open && existing.id === id) continue;\n\n\t\t\tconst state: ToolState = {\n\t\t\t\tid,\n\t\t\t\tname,\n\t\t\t\tindex,\n\t\t\t\topen: true,\n\t\t\t\tlastArgsJson: asString(fn?.arguments) ?? \"\",\n\t\t\t};\n\t\t\tthis.toolsByKey.set(key, state);\n\t\t\tthis.indexToKey.set(index, key);\n\t\t\tif (id !== key) this.toolsByKey.set(id, state);\n\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"tool-start\",\n\t\t\t\t\tid,\n\t\t\t\t\tname,\n\t\t\t\t\tindex,\n\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallDeltaChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst toolCalls = toolCallsFromDelta(payload.delta);\n\t\tif (toolCalls.length === 0) return [];\n\n\t\tconst chunks: RawChunk[] = [];\n\t\tfor (const toolCall of toolCalls) {\n\t\t\tconst lateId = asString(toolCall.id);\n\t\t\tconst key = this.resolveToolKey(index, lateId);\n\t\t\tlet state = key ? this.toolsByKey.get(key) : undefined;\n\t\t\tif (!state) {\n\t\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\t\tconst name = fn ? (asString(fn.name) ?? \"unknown\") : \"unknown\";\n\t\t\t\tconst id = lateId ?? `cohere:tool:${index}`;\n\t\t\t\tstate = { id, name, index, open: true, lastArgsJson: \"\" };\n\t\t\t\tthis.toolsByKey.set(id, state);\n\t\t\t\tthis.indexToKey.set(index, id);\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,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tindex,\n\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t}),\n\t\t\t\t);\n\t\t\t} else if (lateId && state.id !== lateId) {\n\t\t\t\tthis.reconcileLateId(state, lateId, index);\n\t\t\t}\n\n\t\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\t\tconst argsText = fn ? asString(fn.arguments) : undefined;\n\t\t\tif (argsText !== undefined && argsText.length > 0 && state) {\n\t\t\t\tconst delta = incrementalJsonStringDelta(state, argsText);\n\t\t\t\tif (delta) {\n\t\t\t\t\tchunks.push(\n\t\t\t\t\t\toptionalRawChunk({\n\t\t\t\t\t\t\tkind: \"tool-args-delta\",\n\t\t\t\t\t\t\tid: state.id,\n\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\tindex: state.index,\n\t\t\t\t\t\t\tchoiceIndex: 0,\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tprivate toolCallEndChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst index = asNumber(payload.index) ?? 0;\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst toolCalls = message ? toolCallsFromRecord(message.tool_calls) : [];\n\t\tconst lateId = toolCalls[0] ? asString(toolCalls[0].id) : undefined;\n\n\t\tconst key = this.resolveToolKey(index, lateId);\n\t\tconst state = key ? this.toolsByKey.get(key) : undefined;\n\t\tif (!state?.open) return [];\n\n\t\tif (lateId && state.id !== lateId) {\n\t\t\tthis.reconcileLateId(state, lateId, index);\n\t\t}\n\n\t\tstate.open = false;\n\t\treturn [\n\t\t\toptionalRawChunk({\n\t\t\t\tkind: \"tool-done\",\n\t\t\t\tid: state.id,\n\t\t\t\tindex: state.index,\n\t\t\t\tchoiceIndex: 0,\n\t\t\t}),\n\t\t];\n\t}\n\n\tprivate citationStartChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst message = delta && isRecord(delta.message) ? delta.message : undefined;\n\t\tconst citations = message?.citations;\n\t\treturn cohereCitationFromStartPayload(citations, asNumber(payload.index), {\n\t\t\temitLegacyCitationMetadata: this.options.emitLegacyCitationMetadata ?? false,\n\t\t});\n\t}\n\n\tprivate messageEndChunks(payload: CohereStreamEvent): RawChunk[] {\n\t\tconst delta = isRecord(payload.delta) ? payload.delta : undefined;\n\t\tconst chunks: RawChunk[] = [];\n\n\t\tconst usageSource =\n\t\t\tdelta && isRecord(delta.usage)\n\t\t\t\t? usageFromCohereUsage(delta.usage)\n\t\t\t\t: delta && isRecord(delta.billed_units)\n\t\t\t\t\t? delta.billed_units\n\t\t\t\t\t: undefined;\n\t\tconst usage = buildUsageChunk(usageSource, COHERE_USAGE_ALIASES);\n\t\tif (usage) chunks.push(usage);\n\n\t\tconst finishReason = delta ? asString(delta.finish_reason) : undefined;\n\t\tif (finishReason) {\n\t\t\tchunks.push(\n\t\t\t\toptionalRawChunk({\n\t\t\t\t\tkind: \"metadata\",\n\t\t\t\t\traw: { finish_reason: finishReason },\n\t\t\t\t}),\n\t\t\t);\n\t\t\tchunks.push({\n\t\t\t\tkind: \"finish\",\n\t\t\t\treason: mapCohereFinishReason(finishReason),\n\t\t\t\tchoiceIndex: 0,\n\t\t\t});\n\t\t}\n\n\t\treturn chunks;\n\t}\n\n\tprivate resolveToolKey(index: number, id: string | undefined): string | undefined {\n\t\tif (id && this.toolsByKey.has(id)) return id;\n\t\tconst byIndex = this.indexToKey.get(index);\n\t\tif (byIndex) return byIndex;\n\t\tif (id) return id;\n\t\treturn this.indexToKey.get(index);\n\t}\n\n\tprivate reconcileLateId(state: ToolState, lateId: string, index: number): void {\n\t\tconst oldKey = state.id;\n\t\tstate.id = lateId;\n\t\tthis.toolsByKey.delete(oldKey);\n\t\tthis.toolsByKey.set(lateId, state);\n\t\tthis.indexToKey.set(index, lateId);\n\t}\n}\n\nfunction parseResponse(body: unknown, options: CohereAdapterOptions): RawChunk[] {\n\tif (!isRecord(body)) {\n\t\tthrow libraryError(\"cohereAdapter.parseResponse expected a Cohere Chat v2 response object\");\n\t}\n\n\tif (asString(body.type) === \"error\" || isRecord(body.error)) {\n\t\tconst errorBody = isRecord(body.error) ? body.error : body;\n\t\treturn providerErrorChunksFromPayload(\n\t\t\terrorBody,\n\t\t\t\"cohereAdapter.parseResponse\",\n\t\t\tfalse,\n\t\t\t\"Cohere provider error\",\n\t\t);\n\t}\n\n\tconst message = isRecord(body.message) ? body.message : undefined;\n\tif (!message) {\n\t\tconst chunks: RawChunk[] = [];\n\t\tconst usage = buildUsageChunk(body.usage, COHERE_USAGE_ALIASES);\n\t\tif (usage) chunks.push(usage);\n\t\tconst finishReason = asString(body.finish_reason);\n\t\tif (finishReason) {\n\t\t\tchunks.push({\n\t\t\t\tkind: \"finish\",\n\t\t\t\treason: mapCohereFinishReason(finishReason),\n\t\t\t\tchoiceIndex: 0,\n\t\t\t});\n\t\t} else {\n\t\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t\t}\n\t\treturn chunks;\n\t}\n\n\tconst parser = new CohereStreamParser(options);\n\tconst syntheticEvents = synthesizeCohereStreamEvents(body);\n\tconst chunks: RawChunk[] = [];\n\tfor (const event of syntheticEvents) {\n\t\tchunks.push(...parser.parseChunk(JSON.stringify(event)));\n\t}\n\n\tconst finishReason = asString(body.finish_reason);\n\tif (finishReason && !chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({\n\t\t\tkind: \"finish\",\n\t\t\treason: mapCohereFinishReason(finishReason),\n\t\t\tchoiceIndex: 0,\n\t\t});\n\t} else if (!chunks.some((chunk) => chunk.kind === \"finish\")) {\n\t\tchunks.push({ kind: \"finish\", reason: \"stop\", choiceIndex: 0 });\n\t}\n\n\treturn chunks;\n}\n\nfunction synthesizeCohereStreamEvents(body: Record<string, unknown>): unknown[] {\n\tconst events: unknown[] = [];\n\tconst message = isRecord(body.message) ? body.message : undefined;\n\tif (!message) return events;\n\n\tconst messageId = asString(body.id);\n\tevents.push({\n\t\ttype: \"message-start\",\n\t\t...(messageId ? { id: messageId } : {}),\n\t\tdelta: { message: { role: asString(message.role) ?? \"assistant\" } },\n\t});\n\n\tconst toolPlan = asString(message.tool_plan);\n\tif (toolPlan) {\n\t\tevents.push({\n\t\t\ttype: \"tool-plan-delta\",\n\t\t\tdelta: { message: { tool_plan: toolPlan } },\n\t\t});\n\t}\n\n\tconst content = Array.isArray(message.content) ? message.content : [];\n\tfor (const block of content) {\n\t\tif (!isRecord(block)) continue;\n\t\tconst text = asString(block.text);\n\t\tif (text !== undefined && text.length > 0) {\n\t\t\tevents.push({\n\t\t\t\ttype: \"content-delta\",\n\t\t\t\tindex: 0,\n\t\t\t\tdelta: { message: { content: { text } } },\n\t\t\t});\n\t\t}\n\t}\n\n\tconst citations = message.citations;\n\tif (Array.isArray(citations)) {\n\t\tfor (const citation of citations) {\n\t\t\tevents.push({\n\t\t\t\ttype: \"citation-start\",\n\t\t\t\tindex: 0,\n\t\t\t\tdelta: { message: { citations: citation } },\n\t\t\t});\n\t\t}\n\t}\n\n\tconst toolCalls = toolCallsFromRecord(message.tool_calls);\n\tlet toolIndex = 0;\n\tfor (const toolCall of toolCalls) {\n\t\tconst id = asString(toolCall.id) ?? `cohere:tool:${toolIndex}`;\n\t\tconst fn = isRecord(toolCall.function) ? toolCall.function : undefined;\n\t\tconst name = fn ? (asString(fn.name) ?? \"unknown\") : \"unknown\";\n\t\tconst args = fn ? asString(fn.arguments) : undefined;\n\t\tevents.push({\n\t\t\ttype: \"tool-call-start\",\n\t\t\tindex: toolIndex,\n\t\t\tdelta: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttool_calls: {\n\t\t\t\t\t\tid,\n\t\t\t\t\t\ttype: \"function\",\n\t\t\t\t\t\tfunction: { name, arguments: args ?? \"\" },\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t});\n\t\tif (args !== undefined && args.length > 0) {\n\t\t\tevents.push({\n\t\t\t\ttype: \"tool-call-delta\",\n\t\t\t\tindex: toolIndex,\n\t\t\t\tdelta: {\n\t\t\t\t\tmessage: {\n\t\t\t\t\t\ttool_calls: {\n\t\t\t\t\t\t\tid,\n\t\t\t\t\t\t\tfunction: { arguments: args },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t\tevents.push({ type: \"tool-call-end\", index: toolIndex });\n\t\ttoolIndex += 1;\n\t}\n\n\tif (body.usage !== undefined || body.finish_reason !== undefined) {\n\t\tevents.push({\n\t\t\ttype: \"message-end\",\n\t\t\tdelta: {\n\t\t\t\t...(body.finish_reason !== undefined ? { finish_reason: body.finish_reason } : {}),\n\t\t\t\t...(body.usage !== undefined ? { usage: body.usage } : {}),\n\t\t\t},\n\t\t});\n\t}\n\n\treturn events;\n}\n\nfunction toolCallsFromDelta(delta: unknown): Record<string, unknown>[] {\n\tif (!isRecord(delta)) return [];\n\tconst message = isRecord(delta.message) ? delta.message : undefined;\n\treturn toolCallsFromRecord(message?.tool_calls);\n}\n\nfunction toolCallsFromRecord(value: unknown): Record<string, unknown>[] {\n\tif (value === undefined) return [];\n\tif (Array.isArray(value)) {\n\t\treturn value.filter((item): item is Record<string, unknown> => isRecord(item));\n\t}\n\tif (isRecord(value)) return [value];\n\treturn [];\n}\n\nfunction usageFromCohereUsage(usage: Record<string, unknown>): Record<string, unknown> | undefined {\n\tconst billed = isRecord(usage.billed_units) ? usage.billed_units : undefined;\n\tif (billed) return billed;\n\tconst tokens = isRecord(usage.tokens) ? usage.tokens : undefined;\n\tif (tokens) return tokens;\n\treturn usage;\n}\n\nfunction reconcileToolKey(\n\ttoolsByKey: Map<string, ToolState>,\n\tindexToKey: Map<number, string>,\n\tindex: number,\n\tid: string,\n): string {\n\tconst existingIndexKey = indexToKey.get(index);\n\tif (existingIndexKey && toolsByKey.has(existingIndexKey)) {\n\t\tconst state = toolsByKey.get(existingIndexKey);\n\t\tif (state && state.id.startsWith(\"cohere:tool:\") && !id.startsWith(\"cohere:tool:\")) {\n\t\t\ttoolsByKey.delete(existingIndexKey);\n\t\t\tstate.id = id;\n\t\t\ttoolsByKey.set(id, state);\n\t\t\tindexToKey.set(index, id);\n\t\t\treturn id;\n\t\t}\n\t\treturn existingIndexKey;\n\t}\n\treturn id;\n}\n\nfunction mapCohereFinishReason(value: string): FinishReason {\n\tconst normalized = value.toUpperCase();\n\tswitch (normalized) {\n\t\tcase \"COMPLETE\":\n\t\tcase \"STOP_SEQUENCE\":\n\t\t\treturn \"stop\";\n\t\tcase \"MAX_TOKENS\":\n\t\t\treturn \"length\";\n\t\tcase \"TOOL_CALL\":\n\t\t\treturn \"tool_calls\";\n\t\tcase \"ERROR\":\n\t\tcase \"TIMEOUT\":\n\t\t\treturn \"error\";\n\t\tdefault:\n\t\t\tif (normalized.includes(\"FILTER\") || normalized.includes(\"SAFETY\")) {\n\t\t\t\treturn \"content_filter\";\n\t\t\t}\n\t\t\treturn \"stop\";\n\t}\n}\n\nfunction optionalMetadataRaw(payload: Record<string, unknown>): RawChunk[] {\n\tif (Object.keys(payload).length === 0) return [];\n\treturn [\n\t\toptionalRawChunk({\n\t\t\tkind: \"metadata\",\n\t\t\traw: payload,\n\t\t}),\n\t];\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\tcitations: [],\n\t\tgrounding: [],\n\t\tlogprobs: [],\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 \"citation\":\n\t\t\tresult.citations.push(event);\n\t\t\tbreak;\n\t\tcase \"grounding\":\n\t\t\tresult.grounding.push(event);\n\t\t\tbreak;\n\t\tcase \"logprob\":\n\t\t\tresult.logprobs.push(event);\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 \"citation\":\n\t\t\treturn handlers.citation?.(event);\n\t\tcase \"grounding\":\n\t\t\treturn handlers.grounding?.(event);\n\t\tcase \"logprob\":\n\t\t\treturn handlers.logprob?.(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","export interface CitationSpanAnchorInput {\n\tassistantText?: string;\n\tspan?: { start: number; end: number; text?: string };\n}\n\nexport interface CitationSpanAnchorResult {\n\tanchorText?: string;\n\tconsistent: boolean;\n}\n\nexport function citationSpanAnchor(input: CitationSpanAnchorInput): CitationSpanAnchorResult {\n\tconst span = input.span;\n\tif (!span) {\n\t\treturn { consistent: false };\n\t}\n\n\tconst spanText = span.text?.trim();\n\tif (input.assistantText === undefined || input.assistantText.length === 0) {\n\t\tconst fallback = span.text ?? spanText;\n\t\tif (fallback) {\n\t\t\treturn { anchorText: fallback, consistent: true };\n\t\t}\n\t\treturn { consistent: false };\n\t}\n\n\tconst { start, end } = span;\n\tif (start < 0 || end < start || end > input.assistantText.length) {\n\t\treturn { consistent: false };\n\t}\n\n\tconst anchorText = input.assistantText.slice(start, end);\n\tif (spanText !== undefined && spanText.length > 0 && spanText !== anchorText.trim()) {\n\t\treturn { anchorText, consistent: false };\n\t}\n\n\treturn { anchorText, consistent: true };\n}\n","export interface LogprobConfidenceInput {\n\tlogprob: number;\n\ttopLogprobs?: Array<{ token: string; logprob: number }>;\n}\n\nexport interface LogprobConfidenceResult {\n\tprobability?: number;\n\tmargin?: number;\n\trunnerUpToken?: string;\n}\n\nexport function logprobConfidence(input: LogprobConfidenceInput): LogprobConfidenceResult {\n\tconst result: LogprobConfidenceResult = {};\n\tif (Number.isFinite(input.logprob) && input.logprob <= 0) {\n\t\tresult.probability = Math.exp(input.logprob);\n\t}\n\n\tconst top = input.topLogprobs;\n\tif (top && top.length >= 2) {\n\t\tconst sorted = [...top].sort((left, right) => right.logprob - left.logprob);\n\t\tconst best = sorted[0];\n\t\tconst runnerUp = sorted[1];\n\t\tif (best && runnerUp && Number.isFinite(best.logprob) && Number.isFinite(runnerUp.logprob)) {\n\t\t\tresult.margin = best.logprob - runnerUp.logprob;\n\t\t\tresult.runnerUpToken = runnerUp.token;\n\t\t}\n\t}\n\n\treturn result;\n}\n","export interface LogprobTextAlignmentInput {\n\tassistantText: string;\n\tlogprobs: Array<{\n\t\ttoken: string;\n\t\tlogprob: number;\n\t\tposition?: number;\n\t\tchoiceIndex?: number;\n\t\tchannel?: \"content\" | \"refusal\";\n\t}>;\n}\n\nexport interface LogprobTextAlignmentEntry {\n\tlogprob: number;\n\ttoken: string;\n\tstart: number;\n\tend: number;\n\tconsistent: boolean;\n\tposition?: number;\n}\n\nexport interface LogprobTextAlignmentResult {\n\tentries: LogprobTextAlignmentEntry[];\n\tunaligned: number;\n}\n\nexport function alignLogprobsWithText(\n\tinput: LogprobTextAlignmentInput,\n): LogprobTextAlignmentResult {\n\tconst entries: LogprobTextAlignmentEntry[] = [];\n\tlet cursor = 0;\n\tlet unaligned = 0;\n\n\tfor (const item of input.logprobs) {\n\t\tconst index = input.assistantText.indexOf(item.token, cursor);\n\t\tif (index === -1) {\n\t\t\tunaligned += 1;\n\t\t\tcontinue;\n\t\t}\n\t\tconst start = index;\n\t\tconst end = index + item.token.length;\n\t\tconst slice = input.assistantText.slice(start, end);\n\t\tentries.push({\n\t\t\tlogprob: item.logprob,\n\t\t\ttoken: item.token,\n\t\t\tstart,\n\t\t\tend,\n\t\t\tconsistent: slice === item.token,\n\t\t\t...(item.position !== undefined ? { position: item.position } : {}),\n\t\t});\n\t\tcursor = end;\n\t}\n\n\treturn { entries, unaligned };\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 isCitation(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"citation\" }> {\n\treturn event.type === \"citation\";\n}\n\nexport function isGrounding(\n\tevent: StreamEvent,\n): event is Extract<StreamEvent, { type: \"grounding\" }> {\n\treturn event.type === \"grounding\";\n}\n\nexport function isLogprob(event: StreamEvent): event is Extract<StreamEvent, { type: \"logprob\" }> {\n\treturn event.type === \"logprob\";\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"]}
|