promptlayer 1.2.1 → 1.3.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.
Files changed (35) hide show
  1. package/dist/claude-agents.js +1 -1
  2. package/dist/claude-agents.js.map +1 -1
  3. package/dist/esm/{chunk-UKSCOWKT.js → chunk-KDVM55TG.js} +2 -2
  4. package/dist/esm/{chunk-UKSCOWKT.js.map → chunk-KDVM55TG.js.map} +1 -1
  5. package/dist/esm/claude-agents.js +1 -1
  6. package/dist/esm/claude-agents.js.map +1 -1
  7. package/dist/esm/index.js +2 -2
  8. package/dist/esm/index.js.map +1 -1
  9. package/dist/esm/openai-agents.js +1 -1
  10. package/dist/esm/openai-agents.js.map +1 -1
  11. package/dist/index.d.mts +98 -1
  12. package/dist/index.d.ts +98 -1
  13. package/dist/index.js +2 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/openai-agents.js +1 -1
  16. package/dist/openai-agents.js.map +1 -1
  17. package/package.json +1 -1
  18. package/vendor/claude-agents/trace/hooks/lib.sh +4 -522
  19. package/vendor/claude-agents/trace/hooks/post_tool_use.sh +2 -27
  20. package/vendor/claude-agents/trace/hooks/py/__init__.py +1 -0
  21. package/vendor/claude-agents/trace/hooks/py/cli.py +81 -0
  22. package/vendor/claude-agents/trace/hooks/py/context.py +63 -0
  23. package/vendor/claude-agents/trace/hooks/py/handlers.py +244 -0
  24. package/vendor/claude-agents/trace/hooks/py/otlp.py +278 -0
  25. package/vendor/claude-agents/trace/hooks/py/settings.py +33 -0
  26. package/vendor/claude-agents/trace/hooks/py/state.py +135 -0
  27. package/vendor/claude-agents/trace/hooks/{parse_stop_transcript.py → py/stop_parser.py} +69 -31
  28. package/vendor/claude-agents/trace/hooks/py/traceparent.py +31 -0
  29. package/vendor/claude-agents/trace/hooks/session_end.sh +1 -23
  30. package/vendor/claude-agents/trace/hooks/session_start.sh +5 -41
  31. package/vendor/claude-agents/trace/hooks/stop_hook.sh +3 -106
  32. package/vendor/claude-agents/trace/hooks/user_prompt_submit.sh +1 -11
  33. package/vendor/claude-agents/trace/setup.sh +170 -0
  34. package/vendor/claude-agents/vendor_metadata.json +2 -2
  35. package/vendor/claude-agents/trace/hooks/hook_utils.py +0 -38
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/blueprint-builder.ts","../../src/utils/streaming.ts","../../src/utils/utils.ts"],"sourcesContent":["import type {\n Annotation,\n AssistantMessage,\n ChatPromptTemplate,\n CompletionPromptTemplate,\n Content,\n FileAnnotation,\n MapAnnotation,\n Metadata,\n PromptBlueprint,\n ToolCall,\n WebAnnotation,\n} from \"../types\";\n\nconst OUTPUT_FORMAT_TO_MIME: Record<string, string> = {\n png: \"image/png\",\n webp: \"image/webp\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n gif: \"image/gif\",\n url: \"image/png\",\n};\n\nconst _buildToolCall = (\n id: string,\n name: string,\n args: unknown,\n tool_id?: string\n): ToolCall => ({\n id,\n type: \"function\",\n function: {\n name,\n arguments: typeof args === \"string\" ? args : JSON.stringify(args),\n },\n ...(tool_id ? { tool_id } : {}),\n});\n\nconst _buildContentBlock = ({\n type,\n item_id,\n ...rest\n}: {\n type: string;\n item_id?: string;\n [key: string]: any;\n}): Content => {\n const contentBlock: Record<string, any> = {\n type,\n ...rest,\n };\n if (item_id) {\n contentBlock.id = item_id;\n }\n return contentBlock as Content;\n};\n\nconst _buildAssistantMessage = (\n content: Content[],\n tool_calls: ToolCall[]\n): AssistantMessage => ({\n role: \"assistant\",\n input_variables: [],\n template_format: \"f-string\",\n content,\n tool_calls,\n});\n\nconst _buildPromptTemplate = (\n assistantMessage: AssistantMessage,\n metadata: Metadata\n): PromptBlueprint => {\n const promptTemplate: ChatPromptTemplate = {\n messages: [assistantMessage],\n type: \"chat\",\n input_variables: [],\n };\n\n return {\n prompt_template: promptTemplate,\n metadata: metadata,\n };\n};\n\nfunction _parseAnthropicWebAnnotation(c: Record<string, unknown>): WebAnnotation {\n return {\n type: \"url_citation\",\n url: (c.url as string) ?? \"\",\n title: (c.title as string) ?? \"\",\n start_index: (c.start_index as number) ?? 0,\n end_index: (c.end_index as number) ?? 0,\n ...(c.cited_text != null ? { cited_text: c.cited_text as string } : {}),\n ...(c.encrypted_index != null ? { encrypted_index: c.encrypted_index as string } : {}),\n };\n}\n\nexport const buildPromptBlueprintFromAnthropicEvent = (\n event: any,\n metadata: Metadata,\n blockTypeByIndex?: Record<number, string>\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n // Merged message (from anthropicStreamMessage): event.content is array of blocks\n if (Array.isArray(event.content)) {\n for (const block of event.content) {\n if (!block || typeof block !== \"object\") continue;\n const blockType = block.type;\n if (blockType === \"text\") {\n const text = block.text ?? \"\";\n const rawCitations = block.citations ?? block.annotations ?? [];\n const annotations: WebAnnotation[] = [];\n for (const c of rawCitations) {\n if (c && typeof c === \"object\") annotations.push(_parseAnthropicWebAnnotation(c as Record<string, unknown>));\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text,\n ...(annotations.length > 0 ? { annotations } : {}),\n })\n );\n } else if (blockType === \"thinking\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: block.thinking ?? \"\",\n signature: block.signature ?? \"\",\n })\n );\n } else if (blockType === \"tool_use\") {\n tool_calls.push(\n _buildToolCall(\n block.id ?? \"\",\n block.name ?? \"\",\n block.input ?? {}\n )\n );\n } else if (blockType === \"server_tool_use\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"server_tool_use\",\n id: block.id ?? \"\",\n name: block.name ?? \"\",\n input: block.input ?? {},\n })\n );\n } else if (blockType === \"web_search_tool_result\") {\n const contentList = block.content ?? [];\n const searchResults: Array<{ type: \"web_search_result\"; url?: string; title?: string; encrypted_content?: string; page_age?: string }> = [];\n for (const r of contentList) {\n if (r && typeof r === \"object\" && (r as Record<string, unknown>).type === \"web_search_result\") {\n const rr = r as Record<string, unknown>;\n searchResults.push({\n type: \"web_search_result\",\n url: rr.url as string | undefined,\n title: rr.title as string | undefined,\n encrypted_content: rr.encrypted_content as string | undefined,\n page_age: rr.page_age as string | undefined,\n });\n }\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"web_search_tool_result\",\n tool_use_id: block.tool_use_id ?? \"\",\n content: searchResults,\n })\n );\n } else if (blockType === \"bash_code_execution_tool_result\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"bash_code_execution_tool_result\",\n tool_use_id: block.tool_use_id ?? \"\",\n content: (block.content as Record<string, unknown>) ?? {},\n })\n );\n }\n }\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n }\n\n // Single stream events (content_block_start / content_block_delta)\n if (event.type === \"content_block_start\") {\n if (event.content_block?.type === \"thinking\") {\n assistantContent.push(\n _buildContentBlock({ type: \"thinking\", thinking: \"\", signature: \"\" })\n );\n } else if (event.content_block?.type === \"text\") {\n assistantContent.push(_buildContentBlock({ type: \"text\", text: \"\" }));\n } else if (event.content_block?.type === \"tool_use\") {\n tool_calls.push(\n _buildToolCall(\n event.content_block.id ?? \"\",\n event.content_block.name ?? \"\",\n {}\n )\n );\n } else if (event.content_block?.type === \"server_tool_use\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"server_tool_use\",\n id: event.content_block.id ?? \"\",\n name: event.content_block.name ?? \"\",\n input: event.content_block.input ?? {},\n })\n );\n } else if (event.content_block?.type === \"web_search_tool_result\") {\n const contentList = event.content_block.content ?? [];\n const searchResults: Array<{ type: \"web_search_result\"; url?: string; title?: string; encrypted_content?: string; page_age?: string }> = [];\n for (const r of contentList) {\n if (r && typeof r === \"object\" && (r as Record<string, unknown>).type === \"web_search_result\") {\n const rr = r as Record<string, unknown>;\n searchResults.push({\n type: \"web_search_result\",\n url: rr.url as string | undefined,\n title: rr.title as string | undefined,\n encrypted_content: rr.encrypted_content as string | undefined,\n page_age: rr.page_age as string | undefined,\n });\n }\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"web_search_tool_result\",\n tool_use_id: event.content_block.tool_use_id ?? \"\",\n content: searchResults,\n })\n );\n } else if (event.content_block?.type === \"bash_code_execution_tool_result\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"bash_code_execution_tool_result\",\n tool_use_id: event.content_block.tool_use_id ?? \"\",\n content: (event.content_block.content as Record<string, unknown>) ?? {},\n })\n );\n }\n } else if (event.type === \"content_block_delta\") {\n if (event.delta?.type === \"thinking_delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: event.delta.thinking ?? \"\",\n signature: \"\",\n })\n );\n } else if (event.delta?.type === \"text_delta\") {\n assistantContent.push(\n _buildContentBlock({ type: \"text\", text: event.delta.text ?? \"\" })\n );\n } else if (event.delta?.type === \"signature_delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: \"\",\n signature: event.delta.signature ?? \"\",\n })\n );\n } else if (event.delta?.type === \"input_json_delta\") {\n const blockType = blockTypeByIndex?.[event.index];\n if (blockType === \"server_tool_use\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"server_tool_use\",\n id: \"\",\n name: \"\",\n input: event.delta.partial_json ?? {} as Record<string, unknown>,\n })\n );\n } else {\n tool_calls.push(_buildToolCall(\"\", \"\", event.delta.partial_json ?? \"\"));\n }\n } else if (event.delta?.type === \"citations_delta\" && event.delta.citation) {\n const citation = event.delta.citation as Record<string, unknown>;\n const annotations: WebAnnotation[] = [_parseAnthropicWebAnnotation(citation)];\n assistantContent.push(\n _buildContentBlock({ type: \"text\", text: \"\", annotations })\n );\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nconst _isImageMimeType = (mimeType: string): boolean =>\n typeof mimeType === \"string\" && mimeType.startsWith(\"image/\");\n\nfunction _getChunkWebInfo(chunk: Record<string, unknown>): { uri: string; title: string } {\n const web = chunk.web as Record<string, unknown> | undefined;\n if (web && typeof web === \"object\") {\n return {\n uri: (web.uri as string) ?? \"\",\n title: (web.title as string) ?? \"\",\n };\n }\n return {\n uri: (chunk.uri as string) ?? \"\",\n title: (chunk.title as string) ?? \"\",\n };\n}\n\nfunction _getFullResponseTextFromCandidate(candidate: Record<string, unknown> | null | undefined): string | undefined {\n if (!candidate || typeof candidate !== \"object\") return undefined;\n const content = candidate.content as { parts?: Array<{ text?: string }> } | undefined;\n const partList = content?.parts;\n if (!Array.isArray(partList)) return undefined;\n const texts: string[] = [];\n for (const part of partList) {\n if (part && typeof part === \"object\" && typeof part.text === \"string\") {\n texts.push(part.text);\n }\n }\n return texts.length > 0 ? texts.join(\"\") : undefined;\n}\n\nfunction _citationMetadataToAnnotations(citationMetadata: Record<string, unknown> | null | undefined): WebAnnotation[] {\n if (!citationMetadata || typeof citationMetadata !== \"object\") return [];\n const citations = (citationMetadata.citations as Record<string, unknown>[]) ?? [];\n const annotations: WebAnnotation[] = [];\n for (const c of citations) {\n if (!c || typeof c !== \"object\") continue;\n const uri = (c.uri as string) ?? \"\";\n if (!uri) continue;\n const startIndex = (c.startIndex as number) ?? 0;\n const endIndex = (c.endIndex as number) ?? 0;\n annotations.push({\n type: \"url_citation\",\n url: uri,\n title: uri,\n start_index: startIndex,\n end_index: endIndex,\n });\n }\n return annotations;\n}\n\nfunction _candidateToAnnotations(\n candidate: Record<string, unknown> | null | undefined,\n fullResponseText?: string\n): Annotation[] {\n if (!candidate || typeof candidate !== \"object\") return [];\n const groundingMetadata = candidate.groundingMetadata as Record<string, unknown> | undefined;\n const citationMetadata = candidate.citationMetadata as Record<string, unknown> | undefined;\n const fromGrounding = _groundingMetadataToAnnotations(groundingMetadata, fullResponseText);\n const fromCitation = _citationMetadataToAnnotations(citationMetadata);\n return [...fromGrounding, ...fromCitation];\n}\n\nfunction _groundingMetadataToAnnotations(\n groundingMetadata: Record<string, unknown> | null | undefined,\n fullResponseText?: string\n): Annotation[] {\n const chunks = groundingMetadata && typeof groundingMetadata === \"object\"\n ? ((groundingMetadata.groundingChunks as Record<string, unknown>[]) ?? [])\n : [];\n const supports = groundingMetadata && typeof groundingMetadata === \"object\"\n ? ((groundingMetadata.groundingSupports as Record<string, unknown>[]) ?? [])\n : [];\n\n function citedTextForSegment(segment: Record<string, unknown>, startIndex: number, endIndex: number): string | undefined {\n const segmentText = segment.text as string | undefined;\n if (segmentText != null && segmentText !== \"\") return segmentText;\n if (fullResponseText != null && endIndex > startIndex) {\n return fullResponseText.slice(startIndex, endIndex) || undefined;\n }\n return undefined;\n }\n\n // Map chunks to supports by matching indices (same as backend): only chunk_idx < chunks.length\n if (supports.length > 0 && chunks.length > 0) {\n const annotations: Annotation[] = [];\n const seenFileIds = new Set<string>();\n for (const support of supports) {\n if (!support || typeof support !== \"object\") continue;\n const segment = (support.segment as Record<string, unknown>) ?? {};\n const chunkIndices = (support.groundingChunkIndices as number[]) ?? [];\n const startIndex = (segment.startIndex as number) ?? 0;\n const endIndex = (segment.endIndex as number) ?? 0;\n const citedText = citedTextForSegment(segment, startIndex, endIndex);\n\n for (const chunkIdx of chunkIndices) {\n if (typeof chunkIdx !== \"number\" || chunkIdx >= chunks.length) continue;\n const chunk = chunks[chunkIdx] as Record<string, unknown>;\n if (!chunk || typeof chunk !== \"object\") continue;\n\n const maps = chunk.maps as Record<string, unknown> | undefined;\n if (maps && typeof maps === \"object\") {\n const uri = (maps.uri as string) ?? \"\";\n const title = (maps.title as string) ?? \"\";\n const placeId = maps.placeId as string | undefined;\n if (uri || title) {\n annotations.push({\n type: \"map_citation\",\n url: uri,\n title: title || uri,\n ...(placeId != null ? { place_id: placeId } : {}),\n start_index: startIndex,\n end_index: endIndex,\n ...(citedText != null ? { cited_text: citedText } : {}),\n } as MapAnnotation);\n }\n continue;\n }\n\n const retrieved = chunk.retrievedContext as Record<string, unknown> | undefined;\n if (retrieved && typeof retrieved === \"object\") {\n const title = (retrieved.title as string) ?? \"\";\n if (title && !seenFileIds.has(title)) {\n seenFileIds.add(title);\n annotations.push({\n type: \"file_citation\",\n file_id: title,\n filename: title,\n index: chunkIdx,\n } as FileAnnotation);\n }\n continue;\n }\n\n const { uri, title } = _getChunkWebInfo(chunk);\n if (uri) {\n annotations.push({\n type: \"url_citation\",\n url: uri,\n title: title || uri,\n start_index: startIndex,\n end_index: endIndex,\n ...(citedText != null ? { cited_text: citedText } : {}),\n } as WebAnnotation);\n }\n }\n }\n return annotations;\n }\n\n if (!groundingMetadata || typeof groundingMetadata !== \"object\") {\n return [];\n }\n\n // Fallback: annotations from chunks only (no segment info)\n const annotations: Annotation[] = [];\n const seenFileIds = new Set<string>();\n chunks.forEach((chunk, idx) => {\n if (!chunk || typeof chunk !== \"object\") return;\n const c = chunk as Record<string, unknown>;\n\n const maps = c.maps as Record<string, unknown> | undefined;\n if (maps && typeof maps === \"object\") {\n const uri = (maps.uri as string) ?? \"\";\n const title = (maps.title as string) ?? \"\";\n const placeId = maps.placeId as string | undefined;\n if (uri || title) {\n annotations.push({\n type: \"map_citation\",\n url: uri,\n title: title || uri,\n ...(placeId != null ? { place_id: placeId } : {}),\n start_index: 0,\n end_index: 0,\n } as MapAnnotation);\n }\n return;\n }\n\n const retrieved = c.retrievedContext as Record<string, unknown> | undefined;\n if (retrieved && typeof retrieved === \"object\") {\n const title = (retrieved.title as string) ?? \"\";\n if (title && !seenFileIds.has(title)) {\n seenFileIds.add(title);\n annotations.push({\n type: \"file_citation\",\n file_id: title,\n filename: title,\n index: idx,\n } as FileAnnotation);\n }\n return;\n }\n\n const { uri, title } = _getChunkWebInfo(c);\n if (uri) {\n annotations.push({\n type: \"url_citation\",\n url: uri,\n title: title || uri,\n start_index: 0,\n end_index: 0,\n } as WebAnnotation);\n }\n });\n return annotations;\n}\n\nexport const buildPromptBlueprintFromGoogleEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n for (const candidate of event.candidates ?? []) {\n if (\n candidate.content &&\n candidate.content.parts &&\n Array.isArray(candidate.content.parts)\n ) {\n for (const part of candidate.content.parts) {\n if (part.text != null) {\n if (part.thought === true) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: part.text,\n signature: part.thoughtSignature ?? \"\",\n })\n );\n } else {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text: part.text,\n ...(part.thoughtSignature ? { thought_signature: part.thoughtSignature } : {}),\n })\n );\n }\n } else if (part.functionCall) {\n tool_calls.push(\n _buildToolCall(\n part.functionCall.id || \"\",\n part.functionCall.name || \"\",\n part.functionCall.args || {}\n )\n );\n } else if (part.executableCode) {\n const exec = part.executableCode;\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n code: exec.code ?? \"\",\n ...(exec.language != null ? { language: exec.language } : {}),\n })\n );\n } else if (part.codeExecutionResult) {\n const result = part.codeExecutionResult;\n assistantContent.push(\n _buildContentBlock({\n type: \"code_execution_result\",\n output: result.output ?? \"\",\n outcome: result.outcome ?? \"OUTCOME_OK\",\n })\n );\n } else {\n const inlineData = part.inlineData;\n if (inlineData && part.thought !== true) {\n const mimeType = inlineData.mimeType ?? \"image/png\";\n const data = inlineData.data ?? \"\";\n if (_isImageMimeType(mimeType) && data) {\n const providerMetadata: Record<string, unknown> = {};\n if (part.thoughtSignature) providerMetadata.thought_signature = part.thoughtSignature;\n if (part.aspectRatio != null) providerMetadata.aspect_ratio = part.aspectRatio;\n if (part.imageSize != null) providerMetadata.image_size = part.imageSize;\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n url: data,\n mime_type: mimeType,\n media_type: \"image\",\n ...(Object.keys(providerMetadata).length ? { provider_metadata: providerMetadata } : {}),\n })\n );\n }\n }\n }\n }\n }\n }\n\n const firstCandidate = event.candidates?.[0] as Record<string, unknown> | undefined;\n const fullResponseText = _getFullResponseTextFromCandidate(firstCandidate);\n const allAnnotations = _candidateToAnnotations(firstCandidate, fullResponseText);\n if (allAnnotations.length > 0) {\n for (let i = 0; i < assistantContent.length; i++) {\n const block = assistantContent[i];\n if (block && typeof block === \"object\" && (block as Content).type === \"text\") {\n const existing = (block as { annotations?: Annotation[] }).annotations ?? [];\n assistantContent[i] = { ...block, annotations: [...existing, ...allAnnotations] } as Content;\n }\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nexport const buildPromptBlueprintFromOpenAIEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n for (const choice of event.choices) {\n if (choice.delta) {\n if (choice.delta.content) {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text: choice.delta.content,\n })\n );\n }\n const toolCalls = choice.delta.tool_calls || choice.delta.toolCalls;\n if (toolCalls && Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n if (toolCall.function) {\n tool_calls.push(\n _buildToolCall(\n toolCall.id || \"\",\n toolCall.function.name || \"\",\n toolCall.function.arguments || \"\"\n )\n );\n }\n }\n }\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nexport const buildPromptBlueprintFromOpenAIResponsesEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n const event_type: string | undefined = event?.type;\n\n if (event_type === \"response.reasoning_summary_text.delta\") {\n const delta: string = event?.delta ?? \"\";\n const item_id: string = event?.item_id ?? \"\";\n if (delta) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: delta,\n signature: \"\",\n })\n );\n }\n } else if (event_type === \"response.reasoning_summary_text.done\") {\n const final_text: string = event?.text ?? \"\";\n const item_id: string = event?.item_id ?? \"\";\n if (final_text) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: final_text,\n signature: \"\",\n })\n );\n }\n } else if (event_type === \"response.reasoning_summary_part.added\") {\n const part = event?.part ?? {};\n const item_id: string = event?.item_id ?? \"\";\n if (part?.type === \"summary_text\") {\n const text: string = part?.text ?? \"\";\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: text,\n signature: \"\",\n })\n );\n }\n } else if (event_type === \"response.reasoning_summary_part.done\") {\n const part = event?.part ?? {};\n const item_id: string = event?.item_id ?? \"\";\n if (part?.type === \"summary_text\") {\n const text: string = part?.text ?? \"\";\n if (text) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: text,\n signature: \"\",\n })\n );\n }\n }\n } else if (event_type === \"response.function_call_arguments.delta\") {\n const item_id: string = event?.item_id ?? \"\";\n const delta: string = event?.delta ?? \"\";\n if (delta) {\n tool_calls.push(_buildToolCall(\"\", \"\", delta, item_id));\n }\n } else if (event_type === \"response.function_call_arguments.done\") {\n const item_id: string = event?.item_id ?? \"\";\n const final_arguments: string = event?.arguments ?? \"\";\n if (final_arguments) {\n tool_calls.push(_buildToolCall(\"\", \"\", final_arguments, item_id));\n }\n } else if (event_type === \"response.output_item.added\") {\n const item = event?.item ?? {};\n const item_type: string | undefined = item?.type;\n const item_id: string = item?.id ?? \"\";\n\n if (item_type === \"reasoning\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: \"\",\n signature: \"\",\n item_id: item_id,\n })\n );\n } else if (item_type === \"function_call\") {\n tool_calls.push(\n _buildToolCall(item?.call_id || \"\", item?.name || \"\", \"\", item_id)\n );\n } else if (item_type === \"message\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: \"\",\n })\n );\n } else if (item_type === \"code_interpreter_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: item_id,\n code: item?.code ?? \"\",\n container_id: item?.container_id ?? \"\",\n })\n );\n } else if (item_type === \"image_generation_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: item_id,\n url: \"\",\n mime_type: \"image/png\",\n media_type: \"image\",\n })\n );\n } else if (item_type === \"mcp_list_tools\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_list_tools\",\n item_id: item_id,\n server_label: item?.server_label ?? \"\",\n tools: item?.tools ?? [],\n })\n );\n } else if (item_type === \"mcp_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_call\",\n item_id: item_id,\n name: item?.name ?? \"\",\n server_label: item?.server_label ?? \"\",\n arguments: item?.arguments ?? \"\",\n output: item?.output,\n error: item?.error,\n approval_request_id: item?.approval_request_id,\n })\n );\n } else if (item_type === \"mcp_approval_request\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_approval_request\",\n item_id: item_id,\n name: item?.name ?? \"\",\n arguments: item?.arguments ?? \"\",\n server_label: item?.server_label ?? \"\",\n })\n );\n } else if (item_type === \"shell_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n action: item?.action ?? {},\n status: item?.status ?? \"in_progress\",\n })\n );\n } else if (item_type === \"shell_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? [],\n status: item?.status ?? \"in_progress\",\n })\n );\n } else if (item_type === \"apply_patch_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n operation: item?.operation ?? {},\n status: item?.status ?? \"in_progress\",\n })\n );\n } else if (item_type === \"apply_patch_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? \"\",\n status: item?.status ?? \"in_progress\",\n })\n );\n }\n } else if (event_type === \"response.content_part.added\") {\n const part = event?.part ?? {};\n const part_type: string = part?.type ?? \"output_text\";\n const item_id: string = event?.item_id ?? \"\";\n\n if (part_type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: part?.text ?? \"\",\n annotations: (part?.annotations || []) as Annotation[],\n })\n );\n }\n } else if (event_type === \"response.content_part.done\") {\n const part = event?.part ?? {};\n const part_type: string = part?.type ?? \"output_text\";\n const item_id: string = event?.item_id ?? \"\";\n if (part_type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: part?.text ?? \"\",\n annotations: (part?.annotations || []) as Annotation[],\n })\n );\n }\n } else if (event_type === \"response.output_text.annotation.added\") {\n const annotation = event?.annotation || {};\n const atype = annotation?.type;\n let mapped_annotation: Annotation | null = null;\n\n if (atype === \"url_citation\") {\n mapped_annotation = {\n type: \"url_citation\",\n title: annotation?.title ?? \"\",\n url: annotation?.url ?? \"\",\n start_index: annotation?.start_index ?? 0,\n end_index: annotation?.end_index ?? 0,\n } as WebAnnotation;\n }\n else if (atype === \"file_citation\") {\n mapped_annotation = {\n type: \"file_citation\",\n index: annotation?.index ?? 0,\n file_id: annotation?.file_id ?? \"\",\n filename: annotation?.filename ?? \"\",\n } as FileAnnotation;\n }\n else {\n mapped_annotation = annotation as Annotation;\n }\n\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: event?.item_id ?? \"\",\n text: \"\",\n annotations: [mapped_annotation],\n })\n );\n } else if (event_type === \"response.code_interpreter_call.in_progress\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.code_interpreter_call_code.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.delta ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.output_text.delta\") {\n const delta_text: string = event?.delta ?? \"\";\n\n if (delta_text) {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: event?.item_id ?? \"\",\n text: delta_text,\n })\n );\n }\n } else if (event_type === \"response.output_text.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: event?.item_id ?? \"\",\n text: event?.text ?? \"\",\n })\n );\n } else if (event_type === \"response.output_item.done\") {\n const item = event?.item ?? {};\n const item_type: string | undefined = item?.type;\n const item_id: string = item?.id ?? \"\";\n\n if (item_type === \"reasoning\") {\n const summary: any[] = item?.summary ?? [];\n const summary_text: string = summary.map((summary_part: any) => summary_part?.text ?? \"\").join(\"\");\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: summary_text,\n signature: \"\",\n })\n );\n } else if (item_type === \"function_call\") {\n tool_calls.push(\n _buildToolCall(\n item?.call_id || \"\",\n item?.name || \"\",\n item?.arguments || \"\",\n item_id\n )\n );\n } else if (item_type === \"message\") {\n const content: any[] = item?.content ?? [];\n for (const content_part of content) {\n if (content_part?.type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: content_part?.text ?? \"\",\n })\n );\n }\n }\n } else if (item_type === \"code_interpreter_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: item_id,\n code: item?.code ?? \"\",\n container_id: item?.container_id ?? \"\",\n })\n );\n } else if (item_type === \"image_generation_call\") {\n const result = item?.result ?? \"\";\n const output_format = item?.output_format ?? \"png\";\n const mime_type = output_format === \"webp\" ? \"image/webp\" : \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of [\"revised_prompt\", \"background\", \"size\", \"quality\", \"output_format\"]) {\n if (item?.[key] != null) provider_metadata[key] = item[key];\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: item_id,\n url: result,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n } else if (item_type === \"mcp_list_tools\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_list_tools\",\n item_id: item_id,\n server_label: item?.server_label ?? \"\",\n tools: item?.tools ?? [],\n error: item?.error,\n })\n );\n } else if (item_type === \"mcp_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_call\",\n item_id: item_id,\n name: item?.name ?? \"\",\n server_label: item?.server_label ?? \"\",\n arguments: item?.arguments ?? \"\",\n output: item?.output,\n error: item?.error,\n approval_request_id: item?.approval_request_id,\n })\n );\n } else if (item_type === \"mcp_approval_request\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_approval_request\",\n item_id: item_id,\n name: item?.name ?? \"\",\n arguments: item?.arguments ?? \"\",\n server_label: item?.server_label ?? \"\",\n })\n );\n } else if (item_type === \"shell_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n action: item?.action ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"shell_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? [],\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n operation: item?.operation ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? \"\",\n status: item?.status ?? \"completed\",\n })\n );\n }\n } else if (event_type === \"response.code_interpreter_call_code.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.code_interpreter_call.interpreting\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.code_interpreter_call.completed\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.image_generation_call.in_progress\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: event?.item_id ?? \"\",\n url: \"\",\n mime_type: \"image/png\",\n media_type: \"image\",\n })\n );\n } else if (event_type === \"response.image_generation_call.generating\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: event?.item_id ?? \"\",\n url: \"\",\n mime_type: \"image/png\",\n media_type: \"image\",\n })\n );\n } else if (event_type === \"response.image_generation_call.partial_image\") {\n const output_format = event?.output_format ?? \"png\";\n const mime_type = output_format === \"webp\" ? \"image/webp\" : \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of [\"background\", \"size\", \"quality\", \"output_format\"]) {\n if (event?.[key] != null) provider_metadata[key] = event[key];\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: event?.item_id ?? \"\",\n url: event?.partial_image_b64 ?? \"\",\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n } else if (event_type === \"response.shell_call_command.added\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n action: { command: event?.command ?? \"\" },\n })\n );\n } else if (event_type === \"response.shell_call_command.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n action: { command: event?.delta ?? \"\" },\n })\n );\n } else if (event_type === \"response.shell_call_command.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n action: { command: event?.command ?? \"\" },\n })\n );\n } else if (event_type === \"response.shell_call_output_content.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: event?.item_id ?? \"\",\n output: [event?.delta ?? {}],\n })\n );\n } else if (event_type === \"response.shell_call_output_content.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: event?.item_id ?? \"\",\n output: event?.output ?? [],\n })\n );\n } else if (event_type === \"response.apply_patch_call_operation_diff.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: event?.item_id ?? \"\",\n operation: { diff: event?.delta ?? \"\" },\n })\n );\n } else if (event_type === \"response.apply_patch_call_operation_diff.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: event?.item_id ?? \"\",\n operation: { diff: event?.diff ?? \"\" },\n })\n );\n } else if (event_type === \"response.completed\") {\n const response = event?.response ?? {};\n const output: any[] = response?.output ?? [];\n\n for (const item of output) {\n const item_type: string | undefined = item?.type;\n const item_id: string = item?.id ?? \"\";\n\n if (item_type === \"reasoning\") {\n const summary: any[] = item?.summary ?? [];\n const summary_text: string = summary.map((summary_part: any) => summary_part?.text ?? \"\").join(\"\");\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: summary_text,\n signature: \"\",\n })\n );\n } else if (item_type === \"function_call\") {\n tool_calls.push(\n _buildToolCall(\n item?.call_id || \"\",\n item?.name || \"\",\n item?.arguments || \"\",\n item_id\n )\n );\n } else if (item_type === \"message\") {\n const content: any[] = item?.content ?? [];\n for (const content_part of content) {\n if (content_part?.type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: content_part?.text ?? \"\",\n annotations: (content_part?.annotations || []) as Annotation[],\n })\n );\n }\n }\n } else if (item_type === \"code_interpreter_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: item_id,\n code: item?.code ?? \"\",\n container_id: item?.container_id ?? \"\",\n })\n );\n } else if (item_type === \"image_generation_call\") {\n const result = item?.result ?? \"\";\n const output_format = item?.output_format ?? \"png\";\n const mime_type = output_format === \"webp\" ? \"image/webp\" : \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of [\"revised_prompt\", \"background\", \"size\", \"quality\", \"output_format\"]) {\n if (item?.[key] != null) provider_metadata[key] = item[key];\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: item_id,\n url: result,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n } else if (item_type === \"mcp_list_tools\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_list_tools\",\n item_id: item_id,\n server_label: item?.server_label ?? \"\",\n tools: item?.tools ?? [],\n error: item?.error,\n })\n );\n } else if (item_type === \"mcp_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_call\",\n item_id: item_id,\n name: item?.name ?? \"\",\n server_label: item?.server_label ?? \"\",\n arguments: item?.arguments ?? \"\",\n output: item?.output,\n error: item?.error,\n approval_request_id: item?.approval_request_id,\n })\n );\n } else if (item_type === \"mcp_approval_request\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_approval_request\",\n item_id: item_id,\n name: item?.name ?? \"\",\n arguments: item?.arguments ?? \"\",\n server_label: item?.server_label ?? \"\",\n })\n );\n } else if (item_type === \"shell_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n action: item?.action ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"shell_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? [],\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n operation: item?.operation ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? \"\",\n status: item?.status ?? \"completed\",\n })\n );\n }\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls || []);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nexport const buildPromptBlueprintFromBedrockEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n if (\"contentBlockDelta\" in event) {\n const delta = event.contentBlockDelta?.delta || {};\n\n if (\"reasoningContent\" in delta) {\n const reasoningText = delta.reasoningContent?.text || \"\";\n const signature = delta.reasoningContent?.signature || \"\";\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: reasoningText,\n signature: signature,\n })\n );\n } else if (\"text\" in delta) {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text: delta.text || \"\",\n })\n );\n } else if (\"toolUse\" in delta) {\n const toolUse = delta.toolUse || {};\n tool_calls.push(\n _buildToolCall(\n toolUse.toolUseId || \"\",\n toolUse.name || \"\",\n toolUse.input || \"\"\n )\n );\n }\n } else if (\"contentBlockStart\" in event) {\n const startBlock = event.contentBlockStart?.start || {};\n\n if (\"toolUse\" in startBlock) {\n const toolUse = startBlock.toolUse || {};\n tool_calls.push(\n _buildToolCall(\n toolUse.toolUseId || \"\",\n toolUse.name || \"\",\n \"\"\n )\n );\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nconst _RESPONSE_METADATA_KEYS = [\"size\", \"quality\", \"background\", \"output_format\"] as const;\n\nexport const buildPromptBlueprintFromOpenAIImagesEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const content: Content[] = [];\n const event_type: string = event?.type ?? \"\";\n\n if (event_type === \"image_generation.partial_image\") {\n const b64 = event?.b64_json ?? \"\";\n if (b64) {\n const output_format: string = event?.output_format ?? \"png\";\n const mime_type = OUTPUT_FORMAT_TO_MIME[output_format] ?? \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n const partial_image_index = event?.partial_image_index;\n if (partial_image_index != null) {\n provider_metadata.partial_image_index = partial_image_index;\n }\n content.push(\n _buildContentBlock({\n type: \"output_media\",\n url: b64,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n }\n } else if (event_type === \"image_generation.completed\") {\n const b64 = event?.b64_json ?? \"\";\n const output_format: string = event?.output_format ?? \"png\";\n const mime_type = OUTPUT_FORMAT_TO_MIME[output_format] ?? \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of _RESPONSE_METADATA_KEYS) {\n if (event?.[key] != null) provider_metadata[key] = event[key];\n }\n content.push(\n _buildContentBlock({\n type: \"output_media\",\n url: b64,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n }\n\n const promptTemplate: CompletionPromptTemplate = {\n type: \"completion\",\n content,\n input_variables: [],\n };\n\n return {\n prompt_template: promptTemplate,\n metadata,\n };\n};\n","import {\n Completion as AnthropicCompletion,\n Message,\n} from \"@anthropic-ai/sdk/resources\";\nimport { MessageStreamEvent } from \"@anthropic-ai/sdk/resources/messages\";\nimport {\n ChatCompletion,\n ChatCompletionChunk,\n Completion,\n} from \"openai/resources\";\nimport {\n buildPromptBlueprintFromAnthropicEvent,\n buildPromptBlueprintFromBedrockEvent,\n buildPromptBlueprintFromGoogleEvent,\n buildPromptBlueprintFromOpenAIEvent,\n buildPromptBlueprintFromOpenAIImagesEvent,\n buildPromptBlueprintFromOpenAIResponsesEvent,\n} from \"./blueprint-builder\";\n\nexport const STREAMING_PROVIDERS_WITH_USAGE = [\"openai\", \"openai.azure\"] as const;\n\n\nexport const openaiResponsesStreamChat = (results: any[]) => {\n const response_data: any = {\n id: null,\n object: \"response\",\n created_at: null,\n status: null,\n error: null,\n incomplete_details: null,\n instructions: null,\n max_output_tokens: null,\n model: null,\n output: [],\n parallel_tool_calls: true,\n previous_response_id: null,\n reasoning: {},\n store: true,\n temperature: 1,\n text: undefined,\n tool_choice: \"auto\",\n tools: [],\n top_p: 1,\n truncation: \"disabled\",\n usage: null,\n user: null,\n metadata: {},\n };\n\n const current_items: Record<string, any> = {};\n const output_index_to_item_id: Record<number, string> = {};\n\n for (const chunk of results as any[]) {\n const event_type = chunk?.type;\n\n if (event_type === \"response.created\") {\n const response = chunk.response || {};\n response_data.id = response.id ?? response_data.id;\n response_data.created_at = response.created_at ?? response_data.created_at;\n response_data.model = response.model ?? response_data.model;\n response_data.status = response.status ?? response_data.status;\n response_data.parallel_tool_calls =\n response.parallel_tool_calls ?? response_data.parallel_tool_calls;\n response_data.temperature =\n response.temperature ?? response_data.temperature;\n response_data.tool_choice = response.tool_choice ?? response_data.tool_choice;\n response_data.tools = response.tools ?? response_data.tools;\n response_data.top_p = response.top_p ?? response_data.top_p;\n response_data.truncation = response.truncation ?? response_data.truncation;\n response_data.max_output_tokens =\n response.max_output_tokens ?? response_data.max_output_tokens;\n response_data.previous_response_id =\n response.previous_response_id ?? response_data.previous_response_id;\n response_data.store = response.store ?? response_data.store;\n response_data.user = response.user ?? response_data.user;\n response_data.metadata = response.metadata ?? response_data.metadata;\n\n const text_config = response.text;\n if (text_config) {\n response_data.text = text_config;\n }\n const reasoning = response.reasoning;\n if (reasoning) {\n response_data.reasoning = reasoning;\n }\n continue;\n }\n\n if (event_type === \"response.in_progress\") {\n const response = chunk.response || {};\n response_data.status = response.status ?? response_data.status;\n continue;\n }\n\n if (event_type === \"response.output_item.added\") {\n const item = chunk.item || {};\n const item_id = item.id;\n const item_type = item.type;\n const output_index = chunk.output_index;\n if (output_index != null && item_id) {\n output_index_to_item_id[output_index] = item_id;\n }\n\n if (item_type === \"reasoning\") {\n current_items[item_id] = {\n type: \"reasoning\",\n id: item_id,\n summary: [],\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"function_call\") {\n current_items[item_id] = {\n type: \"function_call\",\n id: item_id,\n call_id: item.call_id,\n name: item.name,\n arguments: \"\",\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"message\") {\n current_items[item_id] = {\n type: \"message\",\n id: item_id,\n role: item.role ?? \"assistant\",\n content: [],\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"code_interpreter_call\") {\n current_items[item_id] = {\n type: \"code_interpreter_call\",\n id: item_id,\n container_id: item.container_id,\n code: item.code ?? \"\",\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"image_generation_call\") {\n current_items[item_id] = {\n type: \"image_generation_call\",\n id: item_id,\n status: item.status ?? \"in_progress\",\n revised_prompt: item.revised_prompt ?? \"\",\n result: item.result ?? \"\",\n background: item.background,\n size: item.size,\n quality: item.quality,\n output_format: item.output_format,\n };\n } else if (item_type === \"web_search_call\") {\n current_items[item_id] = {\n type: \"web_search_call\",\n id: item_id,\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"file_search_call\") {\n current_items[item_id] = {\n type: \"file_search_call\",\n id: item_id,\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"mcp_list_tools\") {\n current_items[item_id] = {\n type: \"mcp_list_tools\",\n id: item_id,\n server_label: item.server_label ?? \"\",\n tools: item.tools ?? [],\n error: item.error ?? null,\n };\n } else if (item_type === \"mcp_call\") {\n current_items[item_id] = {\n type: \"mcp_call\",\n id: item_id,\n name: item.name ?? \"\",\n server_label: item.server_label ?? \"\",\n arguments: item.arguments ?? \"\",\n output: item.output ?? null,\n error: item.error ?? null,\n approval_request_id: item.approval_request_id ?? null,\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"mcp_approval_request\") {\n current_items[item_id] = {\n type: \"mcp_approval_request\",\n id: item_id,\n name: item.name ?? \"\",\n arguments: item.arguments ?? \"\",\n server_label: item.server_label ?? \"\",\n };\n } else if (item_type === \"shell_call\") {\n current_items[item_id] = {\n type: \"shell_call\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n action: item.action ?? {},\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"shell_call_output\") {\n current_items[item_id] = {\n type: \"shell_call_output\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n output: item.output ?? [],\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"apply_patch_call\") {\n current_items[item_id] = {\n type: \"apply_patch_call\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n operation: item.operation ?? {},\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"apply_patch_call_output\") {\n current_items[item_id] = {\n type: \"apply_patch_call_output\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n output: item.output ?? \"\",\n status: item.status ?? \"in_progress\",\n };\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_part.added\") {\n const item_id = chunk.item_id;\n const part = chunk.part || {};\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n const summary_part = {\n type: part.type ?? \"summary_text\",\n text: part.text ?? \"\",\n };\n current_items[item_id].summary.push(summary_part);\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_text.delta\") {\n const item_id = chunk.item_id;\n const delta = chunk.delta ?? \"\";\n const summary_index = chunk.summary_index ?? 0;\n\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n while ((current_items[item_id].summary as any[]).length <= summary_index) {\n current_items[item_id].summary.push({ type: \"summary_text\", text: \"\" });\n }\n current_items[item_id].summary[summary_index].text += delta;\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_text.done\") {\n const item_id = chunk.item_id;\n const final_text = chunk.text ?? \"\";\n const summary_index = chunk.summary_index ?? 0;\n\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n while ((current_items[item_id].summary as any[]).length <= summary_index) {\n current_items[item_id].summary.push({ type: \"summary_text\", text: \"\" });\n }\n current_items[item_id].summary[summary_index].text = final_text;\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_part.done\") {\n const item_id = chunk.item_id;\n const part = chunk.part || {};\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n const summary_index = chunk.summary_index ?? 0;\n if (summary_index < current_items[item_id].summary.length) {\n current_items[item_id].summary[summary_index] = {\n type: part.type ?? \"summary_text\",\n text: part.text ?? \"\",\n };\n }\n }\n continue;\n }\n\n if (event_type === \"response.function_call_arguments.delta\") {\n const item_id = chunk.item_id;\n const delta = chunk.delta ?? \"\";\n if (item_id in current_items) {\n current_items[item_id].arguments = `${\n current_items[item_id].arguments || \"\"\n }${delta}`;\n }\n continue;\n }\n\n if (event_type === \"response.function_call_arguments.done\") {\n const item_id = chunk.item_id;\n const final_arguments = chunk.arguments ?? \"\";\n if (item_id in current_items) {\n current_items[item_id].arguments = final_arguments;\n }\n continue;\n }\n\n if (event_type === \"response.content_part.added\") {\n const part = chunk.part || {};\n const messageItem = Object.values(current_items).find(\n (it: any) => it.type === \"message\"\n ) as any;\n if (messageItem) {\n const content_part = {\n type: part.type ?? \"output_text\",\n text: part.text ?? \"\",\n annotations: part.annotations ?? [],\n };\n messageItem.content.push(content_part);\n }\n continue;\n }\n\n if (event_type === \"response.output_text.delta\") {\n const delta_text = chunk.delta ?? \"\";\n for (const item of Object.values(current_items) as any[]) {\n if (item.type === \"message\" && item.content && item.content.length) {\n const last = item.content[item.content.length - 1];\n if (last && last.type === \"output_text\") {\n last.text = `${last.text || \"\"}${delta_text}`;\n }\n break;\n }\n }\n continue;\n }\n\n if (event_type === \"response.output_text.done\") {\n const final_text = chunk.text ?? \"\";\n for (const item of Object.values(current_items) as any[]) {\n if (item.type === \"message\" && item.content && item.content.length) {\n const last = item.content[item.content.length - 1];\n if (last && last.type === \"output_text\") {\n last.text = final_text;\n }\n break;\n }\n }\n continue;\n }\n\n if (event_type === \"response.output_item.done\") {\n const item = chunk.item || {};\n const item_id = item.id;\n if (item_id in current_items) {\n current_items[item_id].status = item.status ?? \"completed\";\n if (item.type === \"reasoning\") {\n current_items[item_id].summary =\n item.summary ?? current_items[item_id].summary;\n } else if (item.type === \"function_call\") {\n current_items[item_id].arguments =\n item.arguments ?? current_items[item_id].arguments;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n current_items[item_id].name = item.name ?? current_items[item_id].name;\n } else if (item.type === \"message\") {\n current_items[item_id].content =\n item.content ?? current_items[item_id].content;\n current_items[item_id].role = item.role ?? current_items[item_id].role;\n } else if (item.type === \"image_generation_call\") {\n current_items[item_id].result =\n item.result ?? current_items[item_id].result;\n current_items[item_id].revised_prompt =\n item.revised_prompt ?? current_items[item_id].revised_prompt;\n current_items[item_id].background =\n item.background ?? current_items[item_id].background;\n current_items[item_id].size =\n item.size ?? current_items[item_id].size;\n current_items[item_id].quality =\n item.quality ?? current_items[item_id].quality;\n current_items[item_id].output_format =\n item.output_format ?? current_items[item_id].output_format;\n } else if (item.type === \"code_interpreter_call\") {\n current_items[item_id].code =\n item.code ?? current_items[item_id].code;\n current_items[item_id].container_id =\n item.container_id ?? current_items[item_id].container_id;\n } else if (item.type === \"mcp_list_tools\") {\n current_items[item_id].tools =\n item.tools ?? current_items[item_id].tools;\n current_items[item_id].error =\n item.error ?? current_items[item_id].error;\n } else if (item.type === \"mcp_call\") {\n current_items[item_id].name =\n item.name ?? current_items[item_id].name;\n current_items[item_id].arguments =\n item.arguments ?? current_items[item_id].arguments;\n current_items[item_id].output =\n item.output ?? current_items[item_id].output;\n current_items[item_id].error =\n item.error ?? current_items[item_id].error;\n current_items[item_id].server_label =\n item.server_label ?? current_items[item_id].server_label;\n } else if (item.type === \"mcp_approval_request\") {\n current_items[item_id].name =\n item.name ?? current_items[item_id].name;\n current_items[item_id].arguments =\n item.arguments ?? current_items[item_id].arguments;\n current_items[item_id].server_label =\n item.server_label ?? current_items[item_id].server_label;\n } else if (item.type === \"shell_call\") {\n current_items[item_id].action =\n item.action ?? current_items[item_id].action;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"shell_call_output\") {\n current_items[item_id].output =\n item.output ?? current_items[item_id].output;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"apply_patch_call\") {\n current_items[item_id].operation =\n item.operation ?? current_items[item_id].operation;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"apply_patch_call_output\") {\n current_items[item_id].output =\n item.output ?? current_items[item_id].output;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"web_search_call\") {\n current_items[item_id].action = item.action;\n } else if (item.type === \"file_search_call\") {\n current_items[item_id].action = item.action;\n }\n response_data.output.push(current_items[item_id]);\n }\n continue;\n }\n\n if (event_type === \"response.image_generation_call.in_progress\") {\n const item_id = chunk.item_id;\n if (item_id in current_items) {\n current_items[item_id].status = \"in_progress\";\n }\n continue;\n }\n\n if (event_type === \"response.image_generation_call.generating\") {\n const item_id = chunk.item_id;\n if (item_id in current_items) {\n current_items[item_id].status = \"generating\";\n }\n continue;\n }\n\n if (event_type === \"response.image_generation_call.partial_image\") {\n const item_id = chunk.item_id;\n if (item_id in current_items) {\n current_items[item_id].result = chunk.partial_image_b64 ?? current_items[item_id].result;\n current_items[item_id].background = chunk.background ?? current_items[item_id].background;\n current_items[item_id].size = chunk.size ?? current_items[item_id].size;\n current_items[item_id].quality = chunk.quality ?? current_items[item_id].quality;\n current_items[item_id].output_format = chunk.output_format ?? current_items[item_id].output_format;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_command.added\") {\n const item_id = output_index_to_item_id[chunk.output_index];\n if (item_id && item_id in current_items) {\n const action = current_items[item_id].action || { commands: [] };\n if (!action.commands) action.commands = [];\n action.commands[chunk.command_index] = chunk.command ?? \"\";\n current_items[item_id].action = action;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_command.delta\") {\n const item_id = output_index_to_item_id[chunk.output_index];\n if (item_id && item_id in current_items) {\n const action = current_items[item_id].action || { commands: [] };\n if (!action.commands) action.commands = [];\n const idx = chunk.command_index ?? 0;\n action.commands[idx] = (action.commands[idx] ?? \"\") + (chunk.delta ?? \"\");\n current_items[item_id].action = action;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_command.done\") {\n const item_id = output_index_to_item_id[chunk.output_index];\n if (item_id && item_id in current_items) {\n const action = current_items[item_id].action || { commands: [] };\n if (!action.commands) action.commands = [];\n action.commands[chunk.command_index] = chunk.command ?? \"\";\n current_items[item_id].action = action;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_output_content.delta\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n if (!current_items[item_id].output) current_items[item_id].output = [];\n const idx = chunk.command_index ?? 0;\n const existing = current_items[item_id].output[idx] ?? { stdout: \"\", stderr: \"\" };\n const delta = chunk.delta ?? {};\n if (delta.stdout) existing.stdout = (existing.stdout ?? \"\") + delta.stdout;\n if (delta.stderr) existing.stderr = (existing.stderr ?? \"\") + delta.stderr;\n current_items[item_id].output[idx] = existing;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_output_content.done\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n current_items[item_id].output = chunk.output ?? current_items[item_id].output;\n }\n continue;\n }\n\n if (event_type === \"response.apply_patch_call_operation_diff.delta\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n const operation = current_items[item_id].operation || {};\n operation.diff = (operation.diff ?? \"\") + (chunk.delta ?? \"\");\n current_items[item_id].operation = operation;\n }\n continue;\n }\n\n if (event_type === \"response.apply_patch_call_operation_diff.done\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n const operation = current_items[item_id].operation || {};\n operation.diff = chunk.diff ?? operation.diff;\n current_items[item_id].operation = operation;\n }\n continue;\n }\n\n if (event_type === \"response.completed\") {\n const response = chunk.response || {};\n response_data.status = response.status ?? response_data.status ?? \"completed\";\n response_data.usage = response.usage ?? response_data.usage;\n response_data.output = response.output ?? response_data.output;\n if (response.reasoning) {\n response_data.reasoning = response.reasoning;\n }\n continue;\n }\n }\n\n return response_data;\n}\n\nexport const openaiStreamChat = (results: ChatCompletionChunk[]): ChatCompletion => {\n let content: ChatCompletion.Choice[\"message\"][\"content\"] = null;\n let functionCall: ChatCompletion.Choice[\"message\"][\"function_call\"] =\n undefined;\n const response: ChatCompletion = {\n id: \"\",\n choices: [],\n created: Date.now(),\n model: \"\",\n object: \"chat.completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let toolCalls: any[] | undefined = undefined;\n for (const result of results) {\n if (result.choices.length === 0) continue;\n const delta = result.choices[0].delta;\n\n if (delta.content) {\n content = `${content || \"\"}${delta.content || \"\"}`;\n }\n if (delta.function_call) {\n functionCall = {\n name: `${functionCall ? functionCall.name : \"\"}${\n delta.function_call.name || \"\"\n }`,\n arguments: `${functionCall ? functionCall.arguments : \"\"}${\n delta.function_call.arguments || \"\"\n }`,\n };\n }\n const toolCall = delta.tool_calls?.[0];\n if (toolCall) {\n toolCalls = toolCalls || [];\n const lastToolCall = toolCalls.at(-1);\n if (!lastToolCall || toolCall.id) {\n toolCalls.push({\n id: toolCall.id || \"\",\n type: toolCall.type || \"function\",\n function: {\n name: toolCall.function?.name || \"\",\n arguments: toolCall.function?.arguments || \"\",\n },\n });\n continue;\n }\n (lastToolCall as any).function.name = `${(lastToolCall as any).function.name}${\n toolCall.function?.name || \"\"\n }`;\n (lastToolCall as any).function.arguments = `${(lastToolCall as any).function.arguments}${\n toolCall.function?.arguments || \"\"\n }`;\n }\n }\n const firstChoice = results[0].choices.at(0);\n response.choices.push({\n finish_reason: firstChoice?.finish_reason ?? \"stop\",\n index: firstChoice?.index ?? 0,\n logprobs: firstChoice?.logprobs ?? null,\n message: {\n role: \"assistant\",\n content,\n function_call: functionCall ? functionCall : undefined,\n tool_calls: toolCalls ? toolCalls : undefined,\n refusal: firstChoice?.delta.refusal ?? null,\n },\n });\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.created = lastResult.created;\n response.system_fingerprint = lastResult.system_fingerprint;\n response.usage = lastResult.usage ?? undefined;\n return response;\n};\n\nexport const openaiStreamCompletion = (results: Completion[]) => {\n const response: Completion = {\n id: \"\",\n choices: [\n {\n finish_reason: \"stop\",\n index: 0,\n text: \"\",\n logprobs: null,\n },\n ],\n created: Date.now(),\n model: \"\",\n object: \"text_completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let text = \"\";\n for (const result of results) {\n if (result.choices.length > 0 && result.choices[0].text) {\n text = `${text}${result.choices[0].text}`;\n }\n }\n response.choices[0].text = text;\n response.id = lastResult.id;\n response.created = lastResult.created;\n response.model = lastResult.model;\n response.system_fingerprint = lastResult.system_fingerprint;\n response.usage = lastResult.usage;\n return response;\n};\n\nexport const anthropicStreamMessage = (results: MessageStreamEvent[]): Message => {\n let response: Message = {\n id: \"\",\n model: \"\",\n content: [],\n role: \"assistant\",\n type: \"message\",\n stop_reason: \"stop_sequence\",\n stop_sequence: null,\n usage: {\n input_tokens: 0,\n output_tokens: 0,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n server_tool_use: null,\n service_tier: null,\n },\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let currentBlock: any = null;\n let currentBlockIndex: number | null = null;\n let currentSignature = \"\";\n let currentThinking = \"\";\n let currentText = \"\";\n let currentToolInputJson = \"\";\n const citationsByBlockIndex: Record<number, any[]> = {};\n\n for (const event of results) {\n if (event.type === \"message_start\") {\n response = { ...event.message };\n } else if (event.type === \"content_block_start\") {\n currentBlock = { ...event.content_block };\n currentBlockIndex = \"index\" in event && typeof event.index === \"number\" ? event.index : null;\n if (currentBlock.type === \"thinking\") {\n currentSignature = \"\";\n currentThinking = \"\";\n } else if (currentBlock.type === \"text\") {\n currentText = \"\";\n } else if (\n currentBlock.type === \"tool_use\" ||\n currentBlock.type === \"server_tool_use\"\n ) {\n currentToolInputJson = \"\";\n }\n } else if (event.type === \"content_block_delta\") {\n const delta = event.delta as unknown as Record<string, unknown> | undefined;\n const eventIndex = \"index\" in event && typeof event.index === \"number\" ? event.index : null;\n\n if (delta?.type === \"citations_delta\") {\n const citation = delta.citation as Record<string, unknown> | undefined;\n if (\n citation &&\n typeof citation === \"object\" &&\n citation.type === \"web_search_result_location\" &&\n eventIndex !== null\n ) {\n const annotation = {\n type: \"url_citation\",\n url: citation.url ?? \"\",\n title: citation.title ?? \"\",\n start_index: citation.start_index ?? 0,\n end_index: citation.end_index ?? 0,\n ...(citation.cited_text != null ? { cited_text: citation.cited_text } : {}),\n ...(citation.encrypted_index != null ? { encrypted_index: citation.encrypted_index } : {}),\n };\n if (!citationsByBlockIndex[eventIndex]) citationsByBlockIndex[eventIndex] = [];\n citationsByBlockIndex[eventIndex].push(annotation);\n }\n } else if (currentBlock !== null) {\n if (currentBlock.type === \"thinking\") {\n if (delta && \"signature\" in delta) {\n currentSignature = (delta.signature as string) || \"\";\n }\n if (delta && \"thinking\" in delta) {\n currentThinking += (delta.thinking as string) || \"\";\n }\n } else if (currentBlock.type === \"text\") {\n if (delta && \"text\" in delta) {\n currentText += (delta.text as string) || \"\";\n }\n } else if (\n currentBlock.type === \"tool_use\" ||\n currentBlock.type === \"server_tool_use\"\n ) {\n if (delta?.type === \"input_json_delta\") {\n const inputJsonDelta = delta as { partial_json?: string };\n currentToolInputJson += inputJsonDelta.partial_json || \"\";\n }\n }\n }\n } else if (event.type === \"content_block_stop\" && currentBlock !== null) {\n if (currentBlock.type === \"thinking\") {\n currentBlock.signature = currentSignature;\n currentBlock.thinking = currentThinking;\n } else if (currentBlock.type === \"text\") {\n currentBlock.text = currentText;\n currentBlock.citations = null;\n if (currentBlockIndex !== null && citationsByBlockIndex[currentBlockIndex]?.length) {\n currentBlock.annotations = citationsByBlockIndex[currentBlockIndex];\n }\n } else if (\n currentBlock.type === \"tool_use\" ||\n currentBlock.type === \"server_tool_use\"\n ) {\n try {\n currentBlock.input = currentToolInputJson\n ? JSON.parse(currentToolInputJson)\n : {};\n } catch (e) {\n currentBlock.input = {};\n }\n }\n response.content!.push(currentBlock);\n currentBlock = null;\n currentBlockIndex = null;\n currentSignature = \"\";\n currentThinking = \"\";\n currentText = \"\";\n currentToolInputJson = \"\";\n } else if (event.type === \"message_delta\") {\n if (\"usage\" in event && event.usage) {\n response.usage = {\n ...response.usage,\n output_tokens: event.usage.output_tokens ?? 0,\n };\n }\n if (\"delta\" in event && event.delta) {\n if (\n \"stop_reason\" in event.delta &&\n event.delta.stop_reason !== undefined\n ) {\n response.stop_reason = event.delta.stop_reason;\n }\n if (\n \"stop_sequence\" in event.delta &&\n event.delta.stop_sequence !== undefined\n ) {\n response.stop_sequence = event.delta.stop_sequence;\n }\n }\n }\n }\n\n return response;\n};\n\nexport const anthropicStreamCompletion = (results: AnthropicCompletion[]) => {\n const response: AnthropicCompletion = {\n completion: \"\",\n id: \"\",\n model: \"\",\n stop_reason: \"\",\n type: \"completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let completion = \"\";\n for (const result of results) {\n completion = `${completion}${result.completion}`;\n }\n response.completion = completion;\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.stop_reason = lastResult.stop_reason;\n return response;\n};\n\nexport const mistralStreamChat = (results: any[]) => {\n let content: ChatCompletion.Choice[\"message\"][\"content\"] = null;\n const response: ChatCompletion = {\n id: \"\",\n choices: [],\n created: Date.now(),\n model: \"\",\n object: \"chat.completion\",\n };\n const lastResult = results.at(-1).data;\n if (!lastResult) return response;\n let toolCalls: any[] | undefined = undefined;\n\n for (const result of results) {\n if (result.data.choices.length === 0) continue;\n const delta = result.data.choices[0].delta;\n\n if (delta.content) {\n content = `${content || \"\"}${delta.content || \"\"}`;\n }\n\n const toolCall = delta.toolCalls?.[0];\n if (toolCall) {\n toolCalls = toolCalls || [];\n const lastToolCall = toolCalls.at(-1);\n if (!lastToolCall || toolCall.id) {\n toolCalls.push({\n id: toolCall.id || \"\",\n type: toolCall.type || \"function\",\n function: {\n name: toolCall.function?.name || \"\",\n arguments: toolCall.function?.arguments || \"\",\n },\n });\n continue;\n }\n (lastToolCall as any).function.name = `${(lastToolCall as any).function.name}${\n toolCall.function?.name || \"\"\n }`;\n (lastToolCall as any).function.arguments = `${(lastToolCall as any).function.arguments}${\n toolCall.function?.arguments || \"\"\n }`;\n }\n }\n const firstChoice = results[0].data.choices.at(0);\n response.choices.push({\n finish_reason: firstChoice?.finish_reason ?? \"stop\",\n index: firstChoice?.index ?? 0,\n logprobs: firstChoice?.logprobs ?? null,\n message: {\n role: \"assistant\",\n content,\n tool_calls: toolCalls ? toolCalls : undefined,\n refusal: firstChoice?.delta.refusal ?? null,\n },\n });\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.created = lastResult.created;\n response.usage = lastResult.usage ?? undefined;\n return response;\n};\n\nexport const bedrockStreamMessage = (results: any[]) => {\n const response: any = {\n ResponseMetadata: {},\n output: { message: {} },\n stopReason: \"end_turn\",\n metrics: {},\n usage: {},\n };\n\n const content_blocks: any[] = [];\n let current_tool_call: any = null;\n let current_tool_input = \"\";\n let current_text = \"\";\n let current_signature = \"\";\n let current_thinking = \"\";\n\n for (const event of results) {\n if (\"contentBlockStart\" in event) {\n const content_block = event[\"contentBlockStart\"];\n if (\"start\" in content_block && \"toolUse\" in content_block[\"start\"]) {\n const tool_use = content_block[\"start\"][\"toolUse\"];\n current_tool_call = {\n toolUse: {\n toolUseId: tool_use[\"toolUseId\"],\n name: tool_use[\"name\"],\n },\n };\n current_tool_input = \"\";\n }\n } else if (\"contentBlockDelta\" in event) {\n const delta = event[\"contentBlockDelta\"][\"delta\"];\n if (\"text\" in delta) {\n current_text += delta[\"text\"];\n } else if (\"reasoningContent\" in delta) {\n const reasoning_content = delta[\"reasoningContent\"];\n if (\"text\" in reasoning_content) {\n current_thinking += reasoning_content[\"text\"];\n } else if (\"signature\" in reasoning_content) {\n current_signature += reasoning_content[\"signature\"];\n }\n } else if (\"toolUse\" in delta) {\n if (\"input\" in delta[\"toolUse\"]) {\n const input_chunk = delta[\"toolUse\"][\"input\"];\n current_tool_input += input_chunk;\n if (!input_chunk.trim()) {\n continue;\n }\n }\n }\n } else if (\"contentBlockStop\" in event) {\n if (current_tool_call && current_tool_input) {\n try {\n current_tool_call.toolUse.input = JSON.parse(current_tool_input);\n } catch {\n current_tool_call.toolUse.input = {};\n }\n content_blocks.push(current_tool_call);\n current_tool_call = null;\n current_tool_input = \"\";\n } else if (current_text) {\n content_blocks.push({ text: current_text });\n current_text = \"\";\n } else if (current_thinking && current_signature) {\n content_blocks.push({\n reasoningContent: {\n reasoningText: {\n text: current_thinking,\n signature: current_signature,\n },\n },\n });\n current_thinking = \"\";\n current_signature = \"\";\n }\n } else if (\"messageStop\" in event) {\n response.stopReason = event[\"messageStop\"][\"stopReason\"];\n } else if (\"metadata\" in event) {\n const metadata = event[\"metadata\"];\n response.usage = metadata?.usage || {};\n response.metrics = metadata?.metrics || {};\n }\n }\n\n response.output.message = { role: \"assistant\", content: content_blocks };\n return response;\n};\n\nconst buildGoogleResponseFromParts = (\n thoughtContent: string,\n regularContent: string,\n functionCalls: any[],\n inlineDataParts: any[],\n executableCodeParts: any[],\n codeExecutionResultParts: any[],\n lastResult: any,\n lastThoughtSignature: string | null,\n lastRegularThoughtSignature: string | null\n) => {\n const response = { ...lastResult };\n const finalParts: any[] = [];\n\n if (thoughtContent) {\n const part: any = { text: thoughtContent, thought: true };\n if (lastThoughtSignature) part.thoughtSignature = lastThoughtSignature;\n finalParts.push(part);\n }\n\n if (regularContent) {\n const part: any = { text: regularContent, thought: null };\n if (lastRegularThoughtSignature) part.thoughtSignature = lastRegularThoughtSignature;\n finalParts.push(part);\n }\n\n for (const executableCode of executableCodeParts) {\n finalParts.push({ executableCode });\n }\n\n for (const codeExecutionResult of codeExecutionResultParts) {\n finalParts.push({ codeExecutionResult });\n }\n\n for (const inlineData of inlineDataParts) {\n finalParts.push({ inlineData });\n }\n\n for (const functionCall of functionCalls) {\n finalParts.push({ functionCall });\n }\n\n if (finalParts.length > 0 && response.candidates?.[0]?.content) {\n response.candidates[0].content.parts = finalParts;\n }\n\n const lastCandidate = lastResult?.candidates?.[0];\n if (lastCandidate) {\n if (!response.candidates) response.candidates = [];\n if (!response.candidates[0]) response.candidates[0] = { content: { parts: [] } };\n if (lastCandidate.groundingMetadata != null) {\n response.candidates[0].groundingMetadata = lastCandidate.groundingMetadata;\n }\n if (lastCandidate.urlContextMetadata != null) {\n response.candidates[0].urlContextMetadata = lastCandidate.urlContextMetadata;\n }\n if (lastCandidate.citationMetadata != null) {\n response.candidates[0].citationMetadata = lastCandidate.citationMetadata;\n }\n }\n\n return response;\n};\n\nconst googleStreamResponse = (results: any[]) => {\n const { GenerateContentResponse } = require(\"@google/genai\");\n\n if (!results.length) {\n return new GenerateContentResponse();\n }\n\n let thoughtContent = \"\";\n let regularContent = \"\";\n const functionCalls: any[] = [];\n const inlineDataParts: any[] = [];\n const executableCodeParts: any[] = [];\n const codeExecutionResultParts: any[] = [];\n let lastThoughtSignature: string | null = null;\n let lastRegularThoughtSignature: string | null = null;\n\n for (const result of results) {\n if (result.candidates && result.candidates[0]?.content?.parts) {\n for (const part of result.candidates[0].content.parts) {\n if (part.text != null) {\n if (part.thought === true) {\n thoughtContent += part.text;\n if (part.thoughtSignature) lastThoughtSignature = part.thoughtSignature;\n } else {\n regularContent += part.text;\n if (part.thoughtSignature) lastRegularThoughtSignature = part.thoughtSignature;\n }\n } else if (part.functionCall) {\n functionCalls.push(part.functionCall);\n } else if (part.inlineData) {\n const raw = part.inlineData;\n inlineDataParts.push({\n data: raw.data ?? \"\",\n mimeType: raw.mimeType ?? \"image/png\",\n });\n } else if (part.executableCode) {\n executableCodeParts.push({\n code: part.executableCode.code ?? \"\",\n language: part.executableCode.language,\n });\n } else if (part.codeExecutionResult) {\n codeExecutionResultParts.push({\n output: part.codeExecutionResult.output ?? \"\",\n outcome: part.codeExecutionResult.outcome ?? \"OUTCOME_OK\",\n });\n }\n }\n }\n }\n\n return buildGoogleResponseFromParts(\n thoughtContent,\n regularContent,\n functionCalls,\n inlineDataParts,\n executableCodeParts,\n codeExecutionResultParts,\n results[results.length - 1],\n lastThoughtSignature,\n lastRegularThoughtSignature\n );\n};\n\nexport const googleStreamChat = (results: any[]) => {\n return googleStreamResponse(results);\n};\n\nexport const googleStreamCompletion = (results: any[]) => {\n return googleStreamResponse(results);\n};\n\nconst _RESPONSE_METADATA_KEYS = [\"size\", \"quality\", \"background\", \"output_format\"] as const;\n\nexport const openaiImagesStream = (results: any[]) => {\n const response_data: any = {\n created: null,\n data: [],\n usage: null,\n };\n\n const partial_images_by_index: Record<number, string> = {};\n let output_format = \"png\";\n\n for (const chunk of results as any[]) {\n const event_type = chunk?.type ?? \"\";\n\n if (event_type === \"image_generation.partial_image\") {\n const b64 = chunk.b64_json;\n if (b64 != null) {\n const idx = chunk.partial_image_index ?? 0;\n partial_images_by_index[idx] = b64;\n }\n } else if (event_type === \"image_generation.completed\") {\n const b64 = chunk.b64_json;\n if (b64 != null) {\n const idx = chunk.partial_image_index ?? 0;\n partial_images_by_index[idx] = b64;\n }\n response_data.created = chunk.created_at ?? response_data.created;\n response_data.usage = chunk.usage ?? response_data.usage;\n for (const key of _RESPONSE_METADATA_KEYS) {\n if (chunk[key] != null) response_data[key] = chunk[key];\n }\n if (chunk.output_format) output_format = chunk.output_format;\n }\n }\n\n if (!response_data.output_format) {\n response_data.output_format = output_format;\n }\n\n const indices = Object.keys(partial_images_by_index)\n .map(Number)\n .sort((a, b) => a - b);\n if (indices.length > 0) {\n response_data.data = indices.map((idx) => ({\n b64_json: partial_images_by_index[idx],\n }));\n }\n\n return response_data;\n};\n\nexport const cleaned_result = (\n results: any[],\n function_name = \"openai.chat.completions.create\"\n) => {\n if (\n function_name === \"openai.responses.create\" ||\n function_name === \"openai.AzureOpenAI.responses.create\"\n ) {\n return openaiResponsesStreamChat(results);\n }\n\n if (\n function_name === \"openai.images.generate\" ||\n function_name === \"openai.AzureOpenAI.images.generate\"\n ) {\n return openaiImagesStream(results);\n }\n\n if (\"completion\" in results[0]) {\n return results.reduce(\n (prev, current) => ({\n ...current,\n completion: `${prev.completion}${current.completion}`,\n }),\n {}\n );\n }\n\n if (function_name === \"anthropic.messages.create\")\n return anthropicStreamMessage(results);\n\n if (\"text\" in results[0].choices[0]) {\n let response = \"\";\n for (const result of results) {\n response = `${response}${result.choices[0].text}`;\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0].text = response;\n return final_result;\n }\n\n if (\"delta\" in results[0].choices[0]) {\n const response = openaiStreamChat(results);\n response.choices[0] = {\n ...response.choices[0],\n ...response.choices[0].message,\n };\n return response;\n }\n\n return \"\";\n};\n\n\nconst buildStreamBlueprint = (\n result: any,\n metadata: any,\n streamContext?: { anthropicBlockTypeByIndex?: Record<number, string> }\n) => {\n const provider = metadata.model.provider;\n const model = metadata.model.name;\n\n if (provider === \"anthropic\" || provider === \"anthropic.bedrock\" || (provider === \"vertexai\" && model.startsWith(\"claude\"))) {\n return buildPromptBlueprintFromAnthropicEvent(result, metadata, streamContext?.anthropicBlockTypeByIndex);\n }\n\n if (provider === \"google\" || (provider === \"vertexai\" && model.startsWith(\"gemini\"))) {\n return buildPromptBlueprintFromGoogleEvent(result, metadata);\n }\n\n if (provider === \"amazon.bedrock\") {\n return buildPromptBlueprintFromBedrockEvent(result, metadata);\n }\n\n if (provider === \"mistral\") {\n return buildPromptBlueprintFromOpenAIEvent(result.data, metadata);\n }\n\n if (provider === \"openai\" || provider === \"openai.azure\") {\n const api_type = metadata.model.api_type || \"chat-completions\";\n if (api_type === \"responses\") {\n return buildPromptBlueprintFromOpenAIResponsesEvent(result, metadata);\n }\n if (api_type === \"images\") {\n return buildPromptBlueprintFromOpenAIImagesEvent(result, metadata);\n }\n return buildPromptBlueprintFromOpenAIEvent(result, metadata);\n }\n\n return null;\n}\n\nexport async function* streamResponse<Item>(\n generator: AsyncIterable<Item> | any,\n afterStream: (body: object) => any,\n mapResults: any,\n metadata: any\n) {\n const data: {\n request_id: number | null;\n raw_response: any;\n prompt_blueprint: any;\n } = {\n request_id: null,\n raw_response: null,\n prompt_blueprint: null,\n };\n let response_metadata: any = {};\n const provider = metadata.model.provider;\n if (provider == \"amazon.bedrock\") {\n response_metadata = generator?.$metadata;\n generator = generator?.stream;\n }\n const results = [];\n const isAnthropic = provider === \"anthropic\" || provider === \"anthropic.bedrock\" || (provider === \"vertexai\" && metadata.model?.name?.startsWith?.(\"claude\"));\n const anthropicBlockTypeByIndex: Record<number, string> = {};\n for await (const result of generator) {\n results.push(result);\n if (isAnthropic && result?.type === \"content_block_start\" && result.content_block) {\n anthropicBlockTypeByIndex[result.index] = result.content_block.type;\n }\n data.raw_response = result;\n data.prompt_blueprint = buildStreamBlueprint(result, metadata, { anthropicBlockTypeByIndex });\n\n yield data;\n }\n const request_response = mapResults(results);\n if (provider === \"amazon.bedrock\") {\n request_response.ResponseMetadata = response_metadata;\n }\n data.raw_response = request_response;\n data.prompt_blueprint = buildStreamBlueprint(request_response, metadata);\n yield data;\n const response = await afterStream({ request_response });\n data.request_id = response.request_id;\n data.prompt_blueprint = response.prompt_blueprint;\n yield data;\n}\n\nexport const MAP_PROVIDER_TO_FUNCTION_NAME = {\n \"openai:chat-completions\": {\n chat: {\n function_name: \"openai.chat.completions.create\",\n stream_function: openaiStreamChat,\n },\n completion: {\n function_name: \"openai.completions.create\",\n stream_function: openaiStreamCompletion,\n },\n },\n \"openai:responses\": {\n chat: {\n function_name: \"openai.responses.create\",\n stream_function: openaiResponsesStreamChat,\n },\n },\n \"openai:images\": {\n completion: {\n function_name: \"openai.images.generate\",\n stream_function: openaiImagesStream,\n },\n },\n anthropic: {\n chat: {\n function_name: \"anthropic.messages.create\",\n stream_function: anthropicStreamMessage,\n },\n completion: {\n function_name: \"anthropic.completions.create\",\n stream_function: anthropicStreamCompletion,\n },\n },\n \"openai.azure:chat-completions\": {\n chat: {\n function_name: \"openai.AzureOpenAI.chat.completions.create\",\n stream_function: openaiStreamChat,\n },\n completion: {\n function_name: \"openai.AzureOpenAI.completions.create\",\n stream_function: openaiStreamCompletion,\n },\n },\n \"openai.azure:responses\": {\n chat: {\n function_name: \"openai.AzureOpenAI.responses.create\",\n stream_function: openaiResponsesStreamChat,\n },\n completion: {\n function_name: \"openai.AzureOpenAI.responses.create\",\n stream_function: openaiResponsesStreamChat,\n },\n },\n \"openai.azure:images\": {\n completion: {\n function_name: \"openai.AzureOpenAI.images.generate\",\n stream_function: openaiImagesStream,\n },\n },\n google: {\n chat: {\n function_name: \"google.convo.send_message\",\n stream_function: googleStreamChat,\n },\n completion: {\n function_name: \"google.model.generate_content\",\n stream_function: googleStreamCompletion,\n },\n },\n \"amazon.bedrock\": {\n chat: {\n function_name: \"boto3.bedrock-runtime.converse\",\n stream_function: bedrockStreamMessage,\n },\n completion: {\n function_name: \"boto3.bedrock-runtime.converse\",\n stream_function: bedrockStreamMessage,\n },\n },\n \"anthropic.bedrock\": {\n chat: {\n function_name: \"anthropic.messages.create\",\n stream_function: anthropicStreamMessage,\n },\n completion: {\n function_name: \"anthropic.completions.create\",\n stream_function: anthropicStreamCompletion,\n },\n },\n mistral: {\n chat: {\n function_name: \"mistral.client.chat\",\n stream_function: mistralStreamChat,\n },\n completion: {\n function_name: \"\",\n stream_function: null,\n },\n },\n};\n","import {\n GetPromptTemplateParams,\n GetPromptTemplateResponse,\n ListPromptTemplatesResponse,\n LogRequest,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n RequestLog,\n RunWorkflowRequestParams,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n WorkflowResponse,\n} from \"@/types\";\nimport type { AnthropicBedrock } from \"@anthropic-ai/bedrock-sdk\";\nimport type TypeAnthropic from \"@anthropic-ai/sdk\";\nimport type { AnthropicVertex } from \"@anthropic-ai/vertex-sdk\";\nimport Ably from \"ably\";\nimport { Centrifuge } from \"centrifuge\";\nimport type TypeOpenAI from \"openai\";\nimport pRetry from \"p-retry\";\nimport {\n MAP_PROVIDER_TO_FUNCTION_NAME,\n cleaned_result,\n STREAMING_PROVIDERS_WITH_USAGE,\n} from \"./streaming\";\n\n// SDK version - injected at build time from package.json\ndeclare const __SDK_VERSION__: string;\nexport const SDK_VERSION = __SDK_VERSION__;\n\n// Get Node.js version (major.minor format)\nconst getNodeVersion = (): string => {\n if (typeof process !== \"undefined\" && process.versions?.node) {\n const parts = process.versions.node.split(\".\");\n return `${parts[0]}.${parts[1]}`;\n }\n return \"unknown\";\n};\n\nconst _NODE_VERSION = getNodeVersion();\nconst _PROMPTLAYER_USER_AGENT = `promptlayer-js/${SDK_VERSION} (node ${_NODE_VERSION})`;\n\n/**\n * Returns common headers to be included in all PromptLayer API requests.\n * Includes the SDK version and user agent for tracking and debugging purposes.\n */\nexport const getCommonHeaders = (): Record<string, string> => ({\n \"User-Agent\": _PROMPTLAYER_USER_AGENT,\n \"X-SDK-Version\": SDK_VERSION,\n});\n\nexport const SET_WORKFLOW_COMPLETE_MESSAGE = \"SET_WORKFLOW_COMPLETE\";\n\nexport enum FinalOutputCode {\n OK = \"OK\",\n EXCEEDS_SIZE_LIMIT = \"EXCEEDS_SIZE_LIMIT\",\n}\n\nasync function getFinalOutput(\n baseURL: string,\n executionId: number,\n returnAllOutputs: boolean,\n headers: Record<string, string>\n): Promise<any> {\n const response = await fetchWithRetry(\n `${baseURL}/workflow-version-execution-results?workflow_version_execution_id=${executionId}&return_all_outputs=${returnAllOutputs}`,\n { headers, ...getCommonHeaders() }\n );\n if (!response.ok) {\n throw new Error(\"Failed to fetch final output\");\n }\n return response.json();\n}\n\nfunction makeMessageListener(\n baseURL: string,\n resultsPromise: { resolve: (data: any) => void; reject: (err: any) => void },\n executionId: number,\n returnAllOutputs: boolean,\n headers: Record<string, string>\n) {\n return async function (message: any) {\n if (message.name !== SET_WORKFLOW_COMPLETE_MESSAGE) return;\n\n try {\n const data = JSON.parse(message.data);\n const resultCode = data.result_code;\n let results;\n\n if (resultCode === FinalOutputCode.OK || resultCode == null) {\n results = data.final_output;\n } else if (resultCode === FinalOutputCode.EXCEEDS_SIZE_LIMIT) {\n results = await getFinalOutput(\n baseURL,\n executionId,\n returnAllOutputs,\n headers\n );\n resultsPromise.resolve(results);\n } else {\n throw new Error(`Unsupported final output code: ${resultCode}`);\n }\n\n resultsPromise.resolve(results);\n } catch (err) {\n resultsPromise.reject(err);\n }\n };\n}\n\ninterface WaitForWorkflowCompletionParams {\n token: string;\n channelName: string;\n executionId: number;\n returnAllOutputs: boolean;\n headers: Record<string, string>;\n timeout: number;\n baseURL: string;\n}\n\nasync function waitForWorkflowCompletion({\n token,\n channelName,\n executionId,\n returnAllOutputs,\n headers,\n timeout,\n baseURL,\n}: WaitForWorkflowCompletionParams): Promise<any> {\n const client = new Ably.Realtime(token);\n const channel = client.channels.get(channelName);\n\n const resultsPromise = {} as {\n resolve: (value: any) => void;\n reject: (reason?: any) => void;\n };\n\n const promise = new Promise<any>((resolve, reject) => {\n resultsPromise.resolve = resolve;\n resultsPromise.reject = reject;\n });\n\n const listener = makeMessageListener(\n baseURL,\n resultsPromise,\n executionId,\n returnAllOutputs,\n headers\n );\n await channel.subscribe(SET_WORKFLOW_COMPLETE_MESSAGE, listener);\n\n try {\n return await new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(\n new Error(\"Workflow execution did not complete properly (timeout)\")\n );\n }, timeout);\n\n promise\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((err) => {\n clearTimeout(timer);\n reject(err);\n });\n });\n } finally {\n console.log(\"Closing client\");\n channel.unsubscribe(SET_WORKFLOW_COMPLETE_MESSAGE, listener);\n client.close();\n console.log(\"Closed client\");\n }\n}\n\n/**\n * Wrapper around fetch that retries on 5xx server errors with exponential backoff.\n * Uses p-retry for industry-standard retry logic with exponential backoff.\n *\n * @param input - The URL or Request object to fetch\n * @param init - The request initialization options\n * @returns Promise<Response> - The fetch response\n */\nexport const fetchWithRetry = async (\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response> => {\n return pRetry(\n async () => {\n const response = await fetch(input, init);\n\n if ((response.status >= 500 && response.status < 600) || (response.status === 429)) {\n throw new Error(\n `Server error: ${response.status} ${response.statusText}`\n );\n }\n\n return response;\n },\n {\n retries: 3, // Retry up to 3 times (4 total attempts)\n factor: 2, // Exponential backoff factor\n minTimeout: 2000, // First retry after 2 seconds\n maxTimeout: 15000, // Cap at 15 seconds (gives us ~2s, ~4s, ~8s progression with randomization)\n randomize: true, // Add jitter to avoid thundering herd\n onFailedAttempt: (error) => {\n console.info(\n `PromptLayer API request attempt ${error.attemptNumber} failed. ${error.retriesLeft} retries left.`\n );\n },\n }\n );\n};\n\nconst promptlayerApiHandler = async <Item>(\n apiKey: string,\n baseURL: string,\n body: TrackRequest & {\n request_response: AsyncIterable<Item> | any;\n },\n throwOnError: boolean = true\n) => {\n const isGenerator = body.request_response[Symbol.asyncIterator] !== undefined;\n if (isGenerator) {\n return proxyGenerator(\n apiKey,\n baseURL,\n body.request_response,\n body,\n throwOnError\n );\n }\n return await promptLayerApiRequest(apiKey, baseURL, body, throwOnError);\n};\n\nconst promptLayerApiRequest = async (\n apiKey: string,\n baseURL: string,\n body: TrackRequest,\n throwOnError: boolean = true\n) => {\n try {\n const response = await fetchWithRetry(`${baseURL}/track-request`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to log request\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n }\n if (data && body.return_pl_id) {\n return [body.request_response, data.request_id];\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return body.request_response;\n};\n\nconst promptLayerTrackMetadata = async (\n apiKey: string,\n baseURL: string,\n body: TrackMetadata,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/library-track-metadata`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track metadata\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging metadata to your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackScore = async (\n apiKey: string,\n baseURL: string,\n body: TrackScore,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/library-track-score`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track score\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While scoring your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackPrompt = async (\n apiKey: string,\n baseURL: string,\n body: TrackPrompt,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/library-track-prompt`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track prompt\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackGroup = async (\n apiKey: string,\n baseURL: string,\n body: TrackGroup,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/track-group`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track group\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a group, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerCreateGroup = async (\n apiKey: string,\n baseURL: string,\n throwOnError: boolean = true\n): Promise<number | boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/create-group`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to create group\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While creating a group PromptLayer had the following error\"\n );\n return false;\n }\n }\n return data.id;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While creating a group PromptLayer had the following error: ${e}`\n );\n return false;\n }\n};\n\nconst getPromptTemplate = async (\n apiKey: string,\n baseURL: string,\n promptName: string,\n params?: Partial<GetPromptTemplateParams>,\n throwOnError: boolean = true\n): Promise<GetPromptTemplateResponse | null> => {\n try {\n const url = new URL(`${baseURL}/prompt-templates/${promptName}`);\n const response = await fetchWithRetry(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n ...getCommonHeaders(),\n },\n body: JSON.stringify(params),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to fetch prompt template\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${errorMessage}`\n );\n return null;\n }\n }\n if (data.warning) {\n console.warn(\n `WARNING: While fetching your prompt PromptLayer had the following error: ${data.warning}`\n );\n }\n return data as GetPromptTemplateResponse;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst publishPromptTemplate = async (\n apiKey: string,\n baseURL: string,\n body: PublishPromptTemplate,\n throwOnError: boolean = true\n): Promise<PublishPromptTemplateResponse> => {\n const response = await fetchWithRetry(`${baseURL}/rest/prompt-templates`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n body: JSON.stringify({\n prompt_template: { ...body },\n prompt_version: { ...body },\n release_labels: body.release_labels ? body.release_labels : undefined,\n }),\n });\n const data = await response.json();\n if (response.status !== 200 && response.status !== 201) {\n const errorMessage =\n data.message || data.error || \"Failed to publish prompt template\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a prompt template PromptLayer had the following error\"\n );\n }\n }\n return data as PublishPromptTemplateResponse;\n};\n\nconst getAllPromptTemplates = async (\n apiKey: string,\n baseURL: string,\n params?: Partial<Pagination>,\n throwOnError: boolean = true\n): Promise<Array<ListPromptTemplatesResponse>> => {\n const url = new URL(`${baseURL}/prompt-templates`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value.toString())\n );\n const response = await fetchWithRetry(url, {\n headers: { \"Content-Type\": \"application/json\", \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to fetch prompt templates\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While fetching all prompt templates PromptLayer had the following error\"\n );\n return [];\n }\n }\n return (data.items ?? []) as Array<ListPromptTemplatesResponse>;\n};\n\nconst waitForWorkflowCompletionCentrifugo = async (\n params: WaitForWorkflowCompletionParams\n): Promise<any> => {\n const url = new URL(`${params.baseURL}/connection/websocket`);\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n\n const client = new Centrifuge(url.toString(), { token: params.token });\n const sub = client.newSubscription(params.channelName);\n\n return new Promise((resolve, reject) => {\n const cleanupWithResolve = (data: any) => {\n cleanup();\n resolve(data);\n };\n\n const listener = makeMessageListener(\n params.baseURL,\n { resolve: cleanupWithResolve, reject },\n params.executionId,\n params.returnAllOutputs,\n params.headers\n );\n\n sub.on(\"publication\", (message) => {\n listener({\n name: message.data.message_name,\n data: message.data.data,\n });\n });\n\n const timeout = setTimeout(() => {\n reject(\n new Error(\"Workflow execution did not complete properly (timeout)\")\n );\n }, params.timeout);\n\n const cleanup = () => {\n clearTimeout(timeout);\n sub.unsubscribe();\n client.disconnect();\n };\n\n sub.on(\"error\", (err) => {\n cleanup();\n reject(`Centrifugo subscription error: ${err}`);\n });\n\n client.on(\"error\", (err) => {\n cleanup();\n reject(`Centrifugo client error: ${err}`);\n });\n\n sub.subscribe();\n client.connect();\n });\n};\n\nexport const runWorkflowRequest = async ({\n workflow_name,\n input_variables,\n metadata = {},\n workflow_label_name = null,\n workflow_version_number = null,\n return_all_outputs = false,\n api_key,\n timeout = 3600000, // Default timeout is 1 hour in milliseconds\n baseURL,\n}: RunWorkflowRequestParams): Promise<WorkflowResponse> => {\n const payload = {\n input_variables,\n metadata,\n workflow_label_name,\n workflow_version_number,\n return_all_outputs,\n };\n\n const headers = { \"Content-Type\": \"application/json\", \"X-API-KEY\": api_key, ...getCommonHeaders() };\n\n try {\n const response = await fetchWithRetry(\n `${baseURL}/workflows/${encodeURIComponent(workflow_name)}/run`,\n {\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(payload),\n }\n );\n\n if (response.status !== 201) {\n const errorData = await response.json().catch(() => ({}));\n return {\n success: false,\n message: `Failed to run workflow: ${\n errorData.error || response.statusText\n }`,\n };\n }\n\n const result = await response.json();\n if (result.warning) {\n console.warn(`WARNING: ${result.warning}`);\n }\n const execution_id = result.workflow_version_execution_id;\n if (!execution_id) {\n console.log(\"No execution ID returned from workflow run\");\n return { success: false, message: \"Failed to run workflow\" };\n }\n\n const channel_name = `workflow_updates:${execution_id}`;\n const ws_response = await fetchWithRetry(\n `${baseURL}/ws-token-request-library?capability=${channel_name}`,\n {\n method: \"POST\",\n headers: headers,\n }\n );\n\n const ws_token_response = await ws_response.json();\n const token = ws_token_response.token_details.token;\n\n const params: WaitForWorkflowCompletionParams = {\n token,\n channelName: channel_name,\n executionId: execution_id,\n returnAllOutputs: return_all_outputs,\n headers: headers,\n timeout: timeout,\n baseURL: baseURL,\n };\n if (ws_token_response.messaging_backend === \"centrifugo\")\n return waitForWorkflowCompletionCentrifugo(params);\n return await waitForWorkflowCompletion(params);\n } catch (error) {\n console.error(\n `Failed to run workflow: ${\n error instanceof Error ? error.message : error\n }`\n );\n throw error;\n }\n};\n\nasync function* proxyGenerator<Item>(\n apiKey: string,\n baseURL: string,\n generator: AsyncIterable<Item>,\n body: TrackRequest,\n throwOnError: boolean = true\n) {\n const results = [];\n for await (const value of generator) {\n yield body.return_pl_id ? [value, null] : value;\n results.push(value);\n }\n const request_response = cleaned_result(results, body.function_name);\n const response = await promptLayerApiRequest(\n apiKey,\n baseURL,\n {\n ...body,\n request_response,\n request_end_time: new Date().toISOString(),\n },\n throwOnError\n );\n if (response) {\n if (body.return_pl_id) {\n const request_id = (response as any)[1];\n const lastResult = results.at(-1);\n yield [lastResult, request_id];\n }\n }\n}\n\nconst warnOnBadResponse = (request_response: any, main_message: string) => {\n try {\n console.warn(`${main_message}: ${request_response.message}`);\n } catch (e) {\n console.warn(`${main_message}: ${request_response}`);\n }\n};\n\nconst trackRequest = async (\n baseURL: string,\n body: TrackRequest,\n throwOnError: boolean = true\n) => {\n try {\n const response = await fetchWithRetry(`${baseURL}/track-request`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track request\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n }\n return data;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return {};\n};\n\nconst openaiChatRequest = async (client: TypeOpenAI, kwargs: any) => {\n return await client.chat.completions.create(kwargs);\n};\n\nconst openaiCompletionsRequest = async (client: TypeOpenAI, kwargs: any) => {\n return await client.completions.create(kwargs);\n};\n\nconst MAP_TYPE_TO_OPENAI_FUNCTION = {\n chat: openaiChatRequest,\n completion: openaiCompletionsRequest,\n};\n\nconst openaiRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const OpenAI = require(\"openai\").default;\n const client = new OpenAI({\n baseURL: kwargs.baseURL,\n apiKey: kwargs.apiKey,\n });\n\n delete kwargs?.apiKey;\n delete kwargs?.baseURL;\n\n const api_type = promptBlueprint.metadata?.model?.api_type;\n if (api_type === \"chat-completions\") {\n const requestToMake =\n MAP_TYPE_TO_OPENAI_FUNCTION[promptBlueprint.prompt_template.type];\n return await requestToMake(client, kwargs);\n } else if (api_type === \"images\") {\n return await client.images.generate(kwargs);\n } else {\n return await client.responses.create(kwargs);\n }\n};\n\nconst azureOpenAIRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { AzureOpenAI } = require(\"openai\");\n const client = new AzureOpenAI({\n endpoint: process.env.AZURE_OPENAI_ENDPOINT || kwargs.baseURL,\n apiVersion: process.env.OPENAI_API_VERSION || kwargs.apiVersion,\n apiKey: process.env.AZURE_OPENAI_API_KEY || kwargs.apiKey,\n });\n delete kwargs?.baseURL;\n delete kwargs?.apiVersion;\n delete kwargs?.apiKey;\n\n const api_type = promptBlueprint.metadata?.model?.api_type;\n\n if (api_type === \"chat-completions\") {\n const requestToMake = MAP_TYPE_TO_OPENAI_FUNCTION[promptBlueprint.prompt_template.type];\n return await requestToMake(client, kwargs);\n } else if (api_type === \"images\") {\n return await client.images.generate(kwargs);\n } else {\n return await client.responses.create(kwargs);\n }\n};\n\nconst anthropicChatRequest = async (\n client: TypeAnthropic | AnthropicVertex | AnthropicBedrock,\n kwargs: any\n) => {\n return client.messages.create(kwargs);\n};\n\nconst anthropicCompletionsRequest = async (\n client: TypeAnthropic | AnthropicBedrock,\n kwargs: any\n) => {\n return client.completions.create(kwargs);\n};\n\nconst MAP_TYPE_TO_ANTHROPIC_FUNCTION = {\n chat: anthropicChatRequest,\n completion: anthropicCompletionsRequest,\n};\n\nconst anthropicRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const Anthropic = require(\"@anthropic-ai/sdk\").default;\n const client = new Anthropic({\n baseURL: kwargs.baseURL,\n apiKey: kwargs.apiKey,\n });\n const requestToMake =\n MAP_TYPE_TO_ANTHROPIC_FUNCTION[promptBlueprint.prompt_template.type];\n return requestToMake(client, kwargs);\n};\n\nconst utilLogRequest = async (\n apiKey: string,\n baseURL: string,\n body: LogRequest,\n throwOnError: boolean = true\n): Promise<RequestLog | null> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/log-request`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 201) {\n const errorMessage =\n data.message || data.error || \"Failed to log request\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request PromptLayer had the following error\"\n );\n return null;\n }\n }\n return data;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While tracking your prompt PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst googleChatRequest = async (model_client: any, kwargs: any) => {\n const history = kwargs?.history;\n const generationConfig = kwargs?.generationConfig;\n const lastMessage =\n history.length > 0 ? history[history.length - 1]?.parts : \"\";\n const chat = model_client.chats.create({\n model: kwargs?.model,\n history: history.slice(0, -1) ?? [],\n config: generationConfig,\n });\n\n if (kwargs?.stream)\n return await chat.sendMessageStream({ message: lastMessage });\n return await chat.sendMessage({ message: lastMessage });\n};\n\nconst googleCompletionsRequest = async (\n model_client: any,\n { stream, ...kwargs }: any\n) => {\n if (stream) return await model_client.generateContentStream({ ...kwargs });\n return await model_client.generateContent({ ...kwargs });\n};\n\nconst MAP_TYPE_TO_GOOGLE_FUNCTION = {\n chat: googleChatRequest,\n completion: googleCompletionsRequest,\n};\n\nconst googleRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { GoogleGenAI } = await import(\"@google/genai\");\n\n const geminiAPI = process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY;\n const project =\n process.env.VERTEX_AI_PROJECT_ID ||\n process.env.GOOGLE_PROJECT_ID ||\n process.env.GOOGLE_CLOUD_PROJECT;\n const location =\n process.env.VERTEX_AI_PROJECT_LOCATION ||\n process.env.GOOGLE_PROJECT_LOCATION ||\n process.env.GOOGLE_CLOUD_PROJECT_LOCATION;\n const googleAuthOptions = {\n keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS,\n projectId: project,\n scopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n };\n\n const genAI = geminiAPI\n ? new GoogleGenAI({ apiKey: geminiAPI })\n : new GoogleGenAI({\n vertexai: true,\n project: project,\n location: location,\n googleAuthOptions,\n });\n const requestToMake =\n MAP_TYPE_TO_GOOGLE_FUNCTION[promptBlueprint.prompt_template.type];\n\n return await requestToMake(genAI, kwargs);\n};\n\nconst snakeToCamel = (str: string): string =>\n str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n\nconst convertKeysToCamelCase = <T>(\n obj: T,\n ignoreValuesWithKeys: Set<string> = new Set()\n): T => {\n if (!obj || typeof obj !== \"object\") return obj;\n if (Array.isArray(obj))\n return obj.map((item) =>\n convertKeysToCamelCase(item, ignoreValuesWithKeys)\n ) as T;\n\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n if (ignoreValuesWithKeys.has(key)) {\n return [snakeToCamel(key), value];\n }\n return [\n snakeToCamel(key),\n convertKeysToCamelCase(value, ignoreValuesWithKeys),\n ];\n })\n ) as T;\n};\n\nconst configureProviderSettings = (\n promptBlueprint: any,\n customProvider: any,\n modelParameterOverrides: any = {},\n stream: boolean = false\n) => {\n const provider_type =\n customProvider?.client ?? promptBlueprint.metadata?.model?.provider;\n const api_type = promptBlueprint.metadata?.model?.api_type;\n\n if (!provider_type) {\n throw new Error(\n \"Provider type not found in prompt blueprint or custom provider\"\n );\n }\n\n let kwargs = {\n ...(promptBlueprint.llm_kwargs || {}),\n stream,\n };\n\n if (\n [\"google\", \"vertexai\"].includes(provider_type) &&\n promptBlueprint.metadata?.model?.name.startsWith(\"gemini\")\n )\n kwargs = convertKeysToCamelCase(\n kwargs,\n new Set([\"function_declarations\", \"properties\"])\n );\n\n const providerConfig = {\n baseURL: customProvider?.base_url ?? promptBlueprint.provider_base_url?.url,\n apiKey: customProvider?.api_key,\n };\n\n Object.entries(providerConfig).forEach(([key, value]) => {\n if (value !== undefined) {\n kwargs[key] = value;\n }\n });\n\n if (stream && STREAMING_PROVIDERS_WITH_USAGE.includes(provider_type as any) && api_type === \"chat-completions\") {\n kwargs.stream_options = { include_usage: true };\n }\n\n return { provider_type, kwargs };\n};\n\nconst getProviderConfig = (provider_type: string, promptTemplate: any) => {\n const providerMap =\n MAP_PROVIDER_TO_FUNCTION_NAME[\n provider_type as keyof typeof MAP_PROVIDER_TO_FUNCTION_NAME\n ];\n\n if (!providerMap) {\n throw new Error(`Unsupported provider type: ${provider_type}`);\n }\n\n const templateType = promptTemplate.type as keyof typeof providerMap;\n const config = providerMap[templateType];\n\n if (!config) {\n throw new Error(\n `Unsupported template type '${promptTemplate.type}' for provider '${provider_type}'`\n );\n }\n\n return config;\n};\n\nconst vertexaiRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const model = promptBlueprint.metadata?.model;\n if (!model) throw new Error(\"Model metadata not found in prompt blueprint\");\n if (model.name.startsWith(\"gemini\"))\n return googleRequest(promptBlueprint, kwargs);\n if (model.name.startsWith(\"claude\")) {\n const { AnthropicVertex } = await import(\"@anthropic-ai/vertex-sdk\");\n const client = new AnthropicVertex({ baseURL: kwargs.baseURL });\n if (promptBlueprint.prompt_template.type === \"chat\")\n return anthropicChatRequest(client, kwargs);\n throw new Error(\n `Unsupported prompt template type '${promptBlueprint.prompt_template.type}' for Anthropic Vertex AI`\n );\n }\n throw new Error(\n `Unsupported model name '${model.name}' for Vertex AI request`\n );\n};\n\nconst amazonBedrockRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand } =\n await import(\"@aws-sdk/client-bedrock-runtime\");\n const client = new BedrockRuntimeClient({\n credentials: {\n accessKeyId: kwargs?.aws_access_key || process.env.AWS_ACCESS_KEY_ID,\n secretAccessKey:\n kwargs?.aws_secret_key || process.env.AWS_SECRET_ACCESS_KEY,\n sessionToken: kwargs?.aws_session_token || process.env.AWS_SESSION_TOKEN,\n },\n region:\n kwargs?.aws_region ||\n process.env.AWS_REGION ||\n process.env.AWS_DEFAULT_REGION ||\n \"us-east-1\",\n });\n\n if (kwargs?.stream) {\n delete kwargs.stream;\n const command = new ConverseStreamCommand({\n ...kwargs,\n });\n return await client.send(command);\n } else {\n delete kwargs?.stream;\n const command = new ConverseCommand({\n ...kwargs,\n });\n return await client.send(command);\n }\n};\n\nconst anthropicBedrockRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { AnthropicBedrock } = await import(\"@anthropic-ai/bedrock-sdk\");\n const client = new AnthropicBedrock({\n awsAccessKey: kwargs.aws_access_key,\n awsSecretKey: kwargs.aws_secret_key,\n awsRegion: kwargs.aws_region,\n awsSessionToken: kwargs.aws_session_token,\n baseURL: kwargs.base_url,\n });\n\n const requestToMake =\n MAP_TYPE_TO_ANTHROPIC_FUNCTION[promptBlueprint.prompt_template.type];\n return requestToMake(client, kwargs);\n};\n\nconst mistralRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { Mistral } = await import(\"@mistralai/mistralai\");\n const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });\n kwargs = convertKeysToCamelCase(kwargs, new Set());\n if (kwargs?.stream) {\n delete kwargs.stream;\n return await client.chat.stream(kwargs);\n }\n delete kwargs.stream;\n return await client.chat.complete(kwargs);\n};\n\nexport const readEnv = (env: string): string | undefined => {\n if (typeof (globalThis as any).process !== \"undefined\")\n return (globalThis as any).process.env?.[env]?.trim() ?? undefined;\n\n if (typeof (globalThis as any).Deno !== \"undefined\")\n return (globalThis as any).Deno.env?.get?.(env)?.trim();\n return undefined;\n};\n\nexport const requirePromptLayerApiKey = (apiKey?: string): string => {\n if (apiKey !== undefined) {\n const explicitApiKey = apiKey.trim();\n if (!explicitApiKey) {\n throw new Error(\n \"PromptLayer API key not provided. Please set PROMPTLAYER_API_KEY or pass apiKey.\"\n );\n }\n return explicitApiKey;\n }\n\n const envApiKey = readEnv(\"PROMPTLAYER_API_KEY\");\n if (!envApiKey) {\n throw new Error(\n \"PromptLayer API key not provided. Please set PROMPTLAYER_API_KEY or pass apiKey.\"\n );\n }\n\n return envApiKey;\n};\n\nexport {\n amazonBedrockRequest,\n anthropicBedrockRequest,\n anthropicRequest,\n azureOpenAIRequest,\n configureProviderSettings,\n getAllPromptTemplates,\n getPromptTemplate,\n getProviderConfig,\n googleRequest,\n mistralRequest,\n openaiRequest,\n promptlayerApiHandler,\n promptLayerApiRequest,\n promptLayerCreateGroup,\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n publishPromptTemplate,\n trackRequest,\n utilLogRequest,\n vertexaiRequest,\n};\n"],"mappings":"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","names":["OUTPUT_FORMAT_TO_MIME","_buildToolCall","id","name","args","tool_id","__spreadValues","_buildContentBlock","_a","_b","type","item_id","rest","__objRest","contentBlock","_buildAssistantMessage","content","tool_calls","_buildPromptTemplate","assistantMessage","metadata","_parseAnthropicWebAnnotation","c","_c","_d","buildPromptBlueprintFromAnthropicEvent","event","blockTypeByIndex","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","assistantContent","block","blockType","text","rawCitations","annotations","contentList","searchResults","r","rr","citation","_isImageMimeType","mimeType","_getChunkWebInfo","chunk","web","_getFullResponseTextFromCandidate","candidate","partList","texts","part","_citationMetadataToAnnotations","citationMetadata","citations","uri","startIndex","endIndex","_candidateToAnnotations","fullResponseText","groundingMetadata","fromGrounding","_groundingMetadataToAnnotations","fromCitation","chunks","supports","citedTextForSegment","segment","segmentText","seenFileIds","support","chunkIndices","citedText","chunkIdx","maps","title","placeId","__spreadProps","retrieved","idx","buildPromptBlueprintFromGoogleEvent","exec","result","inlineData","data","providerMetadata","firstCandidate","allAnnotations","i","existing","buildPromptBlueprintFromOpenAIEvent","choice","toolCalls","toolCall","buildPromptBlueprintFromOpenAIResponsesEvent","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","_Ea","_Fa","_Ga","_Ha","_Ia","_Ja","_Ka","_La","_Ma","_Na","_Oa","_Pa","_Qa","_Ra","_Sa","_Ta","_Ua","_Va","_Wa","_Xa","_Ya","_Za","__a","_$a","_ab","_bb","_cb","_db","_eb","_fb","_gb","_hb","_ib","_jb","_kb","_lb","_mb","_nb","_ob","_pb","_qb","_rb","_sb","_tb","_ub","_vb","_wb","_xb","_yb","_zb","_Ab","_Bb","_Cb","_Db","_Eb","_Fb","_Gb","_Hb","_Ib","_Jb","_Kb","_Lb","_Mb","_Nb","event_type","delta","final_text","final_arguments","item","item_type","part_type","annotation","atype","mapped_annotation","delta_text","summary_text","summary_part","content_part","mime_type","provider_metadata","key","response","output","buildPromptBlueprintFromBedrockEvent","reasoningText","signature","toolUse","startBlock","_RESPONSE_METADATA_KEYS","buildPromptBlueprintFromOpenAIImagesEvent","b64","output_format","partial_image_index","STREAMING_PROVIDERS_WITH_USAGE","openaiResponsesStreamChat","results","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","_Ea","_Fa","_Ga","_Ha","_Ia","_Ja","_Ka","_La","_Ma","_Na","_Oa","_Pa","_Qa","_Ra","_Sa","_Ta","_Ua","_Va","_Wa","_Xa","_Ya","_Za","__a","_$a","_ab","_bb","_cb","_db","_eb","_fb","_gb","_hb","_ib","_jb","_kb","_lb","_mb","_nb","_ob","_pb","response_data","current_items","output_index_to_item_id","chunk","event_type","response","text_config","reasoning","item","item_id","item_type","output_index","part","summary_part","delta","summary_index","final_text","final_arguments","messageItem","it","content_part","delta_text","last","action","idx","existing","operation","openaiStreamChat","content","functionCall","lastResult","toolCalls","result","toolCall","lastToolCall","firstChoice","openaiStreamCompletion","text","anthropicStreamMessage","currentBlock","currentBlockIndex","currentSignature","currentThinking","currentText","currentToolInputJson","citationsByBlockIndex","event","__spreadValues","eventIndex","citation","annotation","e","__spreadProps","anthropicStreamCompletion","completion","mistralStreamChat","bedrockStreamMessage","content_blocks","current_tool_call","current_tool_input","current_text","current_signature","current_thinking","content_block","tool_use","reasoning_content","input_chunk","metadata","buildGoogleResponseFromParts","thoughtContent","regularContent","functionCalls","inlineDataParts","executableCodeParts","codeExecutionResultParts","lastThoughtSignature","lastRegularThoughtSignature","finalParts","executableCode","codeExecutionResult","inlineData","lastCandidate","googleStreamResponse","GenerateContentResponse","raw","googleStreamChat","googleStreamCompletion","_RESPONSE_METADATA_KEYS","openaiImagesStream","partial_images_by_index","output_format","b64","key","indices","a","b","cleaned_result","function_name","prev","current","final_result","buildStreamBlueprint","streamContext","provider","model","buildPromptBlueprintFromAnthropicEvent","buildPromptBlueprintFromGoogleEvent","buildPromptBlueprintFromBedrockEvent","buildPromptBlueprintFromOpenAIEvent","api_type","buildPromptBlueprintFromOpenAIResponsesEvent","buildPromptBlueprintFromOpenAIImagesEvent","streamResponse","generator","afterStream","mapResults","__asyncGenerator","data","response_metadata","isAnthropic","anthropicBlockTypeByIndex","iter","__forAwait","more","temp","error","__await","request_response","MAP_PROVIDER_TO_FUNCTION_NAME","Ably","Centrifuge","pRetry","SDK_VERSION","getNodeVersion","_a","parts","_NODE_VERSION","_PROMPTLAYER_USER_AGENT","getCommonHeaders","SET_WORKFLOW_COMPLETE_MESSAGE","getFinalOutput","baseURL","executionId","returnAllOutputs","headers","__async","response","fetchWithRetry","__spreadValues","getCommonHeaders","makeMessageListener","resultsPromise","message","SET_WORKFLOW_COMPLETE_MESSAGE","data","resultCode","results","err","waitForWorkflowCompletion","_0","token","channelName","timeout","client","Ably","channel","promise","resolve","reject","listener","timer","result","input","init","pRetry","error","promptlayerApiHandler","apiKey","body","throwOnError","proxyGenerator","promptLayerApiRequest","errorMessage","warnOnBadResponse","e","promptLayerTrackMetadata","__spreadProps","promptLayerTrackScore","promptLayerTrackPrompt","promptLayerTrackGroup","promptLayerCreateGroup","getPromptTemplate","promptName","params","url","publishPromptTemplate","getAllPromptTemplates","_a","key","value","waitForWorkflowCompletionCentrifugo","Centrifuge","sub","cleanupWithResolve","cleanup","runWorkflowRequest","workflow_name","input_variables","metadata","workflow_label_name","workflow_version_number","return_all_outputs","api_key","payload","execution_id","channel_name","ws_token_response","generator","__asyncGenerator","iter","__forAwait","more","temp","__await","request_response","cleaned_result","request_id","main_message","trackRequest","openaiChatRequest","kwargs","openaiCompletionsRequest","MAP_TYPE_TO_OPENAI_FUNCTION","openaiRequest","promptBlueprint","_b","OpenAI","api_type","requestToMake","azureOpenAIRequest","AzureOpenAI","anthropicChatRequest","anthropicCompletionsRequest","MAP_TYPE_TO_ANTHROPIC_FUNCTION","anthropicRequest","Anthropic","utilLogRequest","googleChatRequest","model_client","history","generationConfig","lastMessage","chat","googleCompletionsRequest","stream","__objRest","MAP_TYPE_TO_GOOGLE_FUNCTION","googleRequest","GoogleGenAI","geminiAPI","project","location","googleAuthOptions","genAI","snakeToCamel","str","_","letter","convertKeysToCamelCase","obj","ignoreValuesWithKeys","item","configureProviderSettings","customProvider","modelParameterOverrides","_c","_d","_e","_f","_g","_h","_i","provider_type","providerConfig","STREAMING_PROVIDERS_WITH_USAGE","getProviderConfig","promptTemplate","providerMap","MAP_PROVIDER_TO_FUNCTION_NAME","templateType","config","vertexaiRequest","model","AnthropicVertex","amazonBedrockRequest","BedrockRuntimeClient","ConverseCommand","ConverseStreamCommand","command","anthropicBedrockRequest","AnthropicBedrock","mistralRequest","Mistral","readEnv","env","requirePromptLayerApiKey","explicitApiKey","envApiKey"]}
1
+ {"version":3,"sources":["../../src/utils/blueprint-builder.ts","../../src/utils/streaming.ts","../../src/utils/utils.ts"],"sourcesContent":["import type {\n Annotation,\n AssistantMessage,\n ChatPromptTemplate,\n CompletionPromptTemplate,\n Content,\n FileAnnotation,\n MapAnnotation,\n Metadata,\n PromptBlueprint,\n ToolCall,\n WebAnnotation,\n} from \"../types\";\n\nconst OUTPUT_FORMAT_TO_MIME: Record<string, string> = {\n png: \"image/png\",\n webp: \"image/webp\",\n jpeg: \"image/jpeg\",\n jpg: \"image/jpeg\",\n gif: \"image/gif\",\n url: \"image/png\",\n};\n\nconst _buildToolCall = (\n id: string,\n name: string,\n args: unknown,\n tool_id?: string\n): ToolCall => ({\n id,\n type: \"function\",\n function: {\n name,\n arguments: typeof args === \"string\" ? args : JSON.stringify(args),\n },\n ...(tool_id ? { tool_id } : {}),\n});\n\nconst _buildContentBlock = ({\n type,\n item_id,\n ...rest\n}: {\n type: string;\n item_id?: string;\n [key: string]: any;\n}): Content => {\n const contentBlock: Record<string, any> = {\n type,\n ...rest,\n };\n if (item_id) {\n contentBlock.id = item_id;\n }\n return contentBlock as Content;\n};\n\nconst _buildAssistantMessage = (\n content: Content[],\n tool_calls: ToolCall[]\n): AssistantMessage => ({\n role: \"assistant\",\n input_variables: [],\n template_format: \"f-string\",\n content,\n tool_calls,\n});\n\nconst _buildPromptTemplate = (\n assistantMessage: AssistantMessage,\n metadata: Metadata\n): PromptBlueprint => {\n const promptTemplate: ChatPromptTemplate = {\n messages: [assistantMessage],\n type: \"chat\",\n input_variables: [],\n };\n\n return {\n prompt_template: promptTemplate,\n metadata: metadata,\n };\n};\n\nfunction _parseAnthropicWebAnnotation(c: Record<string, unknown>): WebAnnotation {\n return {\n type: \"url_citation\",\n url: (c.url as string) ?? \"\",\n title: (c.title as string) ?? \"\",\n start_index: (c.start_index as number) ?? 0,\n end_index: (c.end_index as number) ?? 0,\n ...(c.cited_text != null ? { cited_text: c.cited_text as string } : {}),\n ...(c.encrypted_index != null ? { encrypted_index: c.encrypted_index as string } : {}),\n };\n}\n\nexport const buildPromptBlueprintFromAnthropicEvent = (\n event: any,\n metadata: Metadata,\n blockTypeByIndex?: Record<number, string>\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n // Merged message (from anthropicStreamMessage): event.content is array of blocks\n if (Array.isArray(event.content)) {\n for (const block of event.content) {\n if (!block || typeof block !== \"object\") continue;\n const blockType = block.type;\n if (blockType === \"text\") {\n const text = block.text ?? \"\";\n const rawCitations = block.citations ?? block.annotations ?? [];\n const annotations: WebAnnotation[] = [];\n for (const c of rawCitations) {\n if (c && typeof c === \"object\") annotations.push(_parseAnthropicWebAnnotation(c as Record<string, unknown>));\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text,\n ...(annotations.length > 0 ? { annotations } : {}),\n })\n );\n } else if (blockType === \"thinking\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: block.thinking ?? \"\",\n signature: block.signature ?? \"\",\n })\n );\n } else if (blockType === \"tool_use\") {\n tool_calls.push(\n _buildToolCall(\n block.id ?? \"\",\n block.name ?? \"\",\n block.input ?? {}\n )\n );\n } else if (blockType === \"server_tool_use\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"server_tool_use\",\n id: block.id ?? \"\",\n name: block.name ?? \"\",\n input: block.input ?? {},\n })\n );\n } else if (blockType === \"web_search_tool_result\") {\n const contentList = block.content ?? [];\n const searchResults: Array<{ type: \"web_search_result\"; url?: string; title?: string; encrypted_content?: string; page_age?: string }> = [];\n for (const r of contentList) {\n if (r && typeof r === \"object\" && (r as Record<string, unknown>).type === \"web_search_result\") {\n const rr = r as Record<string, unknown>;\n searchResults.push({\n type: \"web_search_result\",\n url: rr.url as string | undefined,\n title: rr.title as string | undefined,\n encrypted_content: rr.encrypted_content as string | undefined,\n page_age: rr.page_age as string | undefined,\n });\n }\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"web_search_tool_result\",\n tool_use_id: block.tool_use_id ?? \"\",\n content: searchResults,\n })\n );\n } else if (blockType === \"bash_code_execution_tool_result\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"bash_code_execution_tool_result\",\n tool_use_id: block.tool_use_id ?? \"\",\n content: (block.content as Record<string, unknown>) ?? {},\n })\n );\n }\n }\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n }\n\n // Single stream events (content_block_start / content_block_delta)\n if (event.type === \"content_block_start\") {\n if (event.content_block?.type === \"thinking\") {\n assistantContent.push(\n _buildContentBlock({ type: \"thinking\", thinking: \"\", signature: \"\" })\n );\n } else if (event.content_block?.type === \"text\") {\n assistantContent.push(_buildContentBlock({ type: \"text\", text: \"\" }));\n } else if (event.content_block?.type === \"tool_use\") {\n tool_calls.push(\n _buildToolCall(\n event.content_block.id ?? \"\",\n event.content_block.name ?? \"\",\n {}\n )\n );\n } else if (event.content_block?.type === \"server_tool_use\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"server_tool_use\",\n id: event.content_block.id ?? \"\",\n name: event.content_block.name ?? \"\",\n input: event.content_block.input ?? {},\n })\n );\n } else if (event.content_block?.type === \"web_search_tool_result\") {\n const contentList = event.content_block.content ?? [];\n const searchResults: Array<{ type: \"web_search_result\"; url?: string; title?: string; encrypted_content?: string; page_age?: string }> = [];\n for (const r of contentList) {\n if (r && typeof r === \"object\" && (r as Record<string, unknown>).type === \"web_search_result\") {\n const rr = r as Record<string, unknown>;\n searchResults.push({\n type: \"web_search_result\",\n url: rr.url as string | undefined,\n title: rr.title as string | undefined,\n encrypted_content: rr.encrypted_content as string | undefined,\n page_age: rr.page_age as string | undefined,\n });\n }\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"web_search_tool_result\",\n tool_use_id: event.content_block.tool_use_id ?? \"\",\n content: searchResults,\n })\n );\n } else if (event.content_block?.type === \"bash_code_execution_tool_result\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"bash_code_execution_tool_result\",\n tool_use_id: event.content_block.tool_use_id ?? \"\",\n content: (event.content_block.content as Record<string, unknown>) ?? {},\n })\n );\n }\n } else if (event.type === \"content_block_delta\") {\n if (event.delta?.type === \"thinking_delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: event.delta.thinking ?? \"\",\n signature: \"\",\n })\n );\n } else if (event.delta?.type === \"text_delta\") {\n assistantContent.push(\n _buildContentBlock({ type: \"text\", text: event.delta.text ?? \"\" })\n );\n } else if (event.delta?.type === \"signature_delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: \"\",\n signature: event.delta.signature ?? \"\",\n })\n );\n } else if (event.delta?.type === \"input_json_delta\") {\n const blockType = blockTypeByIndex?.[event.index];\n if (blockType === \"server_tool_use\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"server_tool_use\",\n id: \"\",\n name: \"\",\n input: event.delta.partial_json ?? {} as Record<string, unknown>,\n })\n );\n } else {\n tool_calls.push(_buildToolCall(\"\", \"\", event.delta.partial_json ?? \"\"));\n }\n } else if (event.delta?.type === \"citations_delta\" && event.delta.citation) {\n const citation = event.delta.citation as Record<string, unknown>;\n const annotations: WebAnnotation[] = [_parseAnthropicWebAnnotation(citation)];\n assistantContent.push(\n _buildContentBlock({ type: \"text\", text: \"\", annotations })\n );\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nconst _isImageMimeType = (mimeType: string): boolean =>\n typeof mimeType === \"string\" && mimeType.startsWith(\"image/\");\n\nfunction _getChunkWebInfo(chunk: Record<string, unknown>): { uri: string; title: string } {\n const web = chunk.web as Record<string, unknown> | undefined;\n if (web && typeof web === \"object\") {\n return {\n uri: (web.uri as string) ?? \"\",\n title: (web.title as string) ?? \"\",\n };\n }\n return {\n uri: (chunk.uri as string) ?? \"\",\n title: (chunk.title as string) ?? \"\",\n };\n}\n\nfunction _getFullResponseTextFromCandidate(candidate: Record<string, unknown> | null | undefined): string | undefined {\n if (!candidate || typeof candidate !== \"object\") return undefined;\n const content = candidate.content as { parts?: Array<{ text?: string }> } | undefined;\n const partList = content?.parts;\n if (!Array.isArray(partList)) return undefined;\n const texts: string[] = [];\n for (const part of partList) {\n if (part && typeof part === \"object\" && typeof part.text === \"string\") {\n texts.push(part.text);\n }\n }\n return texts.length > 0 ? texts.join(\"\") : undefined;\n}\n\nfunction _citationMetadataToAnnotations(citationMetadata: Record<string, unknown> | null | undefined): WebAnnotation[] {\n if (!citationMetadata || typeof citationMetadata !== \"object\") return [];\n const citations = (citationMetadata.citations as Record<string, unknown>[]) ?? [];\n const annotations: WebAnnotation[] = [];\n for (const c of citations) {\n if (!c || typeof c !== \"object\") continue;\n const uri = (c.uri as string) ?? \"\";\n if (!uri) continue;\n const startIndex = (c.startIndex as number) ?? 0;\n const endIndex = (c.endIndex as number) ?? 0;\n annotations.push({\n type: \"url_citation\",\n url: uri,\n title: uri,\n start_index: startIndex,\n end_index: endIndex,\n });\n }\n return annotations;\n}\n\nfunction _candidateToAnnotations(\n candidate: Record<string, unknown> | null | undefined,\n fullResponseText?: string\n): Annotation[] {\n if (!candidate || typeof candidate !== \"object\") return [];\n const groundingMetadata = candidate.groundingMetadata as Record<string, unknown> | undefined;\n const citationMetadata = candidate.citationMetadata as Record<string, unknown> | undefined;\n const fromGrounding = _groundingMetadataToAnnotations(groundingMetadata, fullResponseText);\n const fromCitation = _citationMetadataToAnnotations(citationMetadata);\n return [...fromGrounding, ...fromCitation];\n}\n\nfunction _groundingMetadataToAnnotations(\n groundingMetadata: Record<string, unknown> | null | undefined,\n fullResponseText?: string\n): Annotation[] {\n const chunks = groundingMetadata && typeof groundingMetadata === \"object\"\n ? ((groundingMetadata.groundingChunks as Record<string, unknown>[]) ?? [])\n : [];\n const supports = groundingMetadata && typeof groundingMetadata === \"object\"\n ? ((groundingMetadata.groundingSupports as Record<string, unknown>[]) ?? [])\n : [];\n\n function citedTextForSegment(segment: Record<string, unknown>, startIndex: number, endIndex: number): string | undefined {\n const segmentText = segment.text as string | undefined;\n if (segmentText != null && segmentText !== \"\") return segmentText;\n if (fullResponseText != null && endIndex > startIndex) {\n return fullResponseText.slice(startIndex, endIndex) || undefined;\n }\n return undefined;\n }\n\n // Map chunks to supports by matching indices (same as backend): only chunk_idx < chunks.length\n if (supports.length > 0 && chunks.length > 0) {\n const annotations: Annotation[] = [];\n const seenFileIds = new Set<string>();\n for (const support of supports) {\n if (!support || typeof support !== \"object\") continue;\n const segment = (support.segment as Record<string, unknown>) ?? {};\n const chunkIndices = (support.groundingChunkIndices as number[]) ?? [];\n const startIndex = (segment.startIndex as number) ?? 0;\n const endIndex = (segment.endIndex as number) ?? 0;\n const citedText = citedTextForSegment(segment, startIndex, endIndex);\n\n for (const chunkIdx of chunkIndices) {\n if (typeof chunkIdx !== \"number\" || chunkIdx >= chunks.length) continue;\n const chunk = chunks[chunkIdx] as Record<string, unknown>;\n if (!chunk || typeof chunk !== \"object\") continue;\n\n const maps = chunk.maps as Record<string, unknown> | undefined;\n if (maps && typeof maps === \"object\") {\n const uri = (maps.uri as string) ?? \"\";\n const title = (maps.title as string) ?? \"\";\n const placeId = maps.placeId as string | undefined;\n if (uri || title) {\n annotations.push({\n type: \"map_citation\",\n url: uri,\n title: title || uri,\n ...(placeId != null ? { place_id: placeId } : {}),\n start_index: startIndex,\n end_index: endIndex,\n ...(citedText != null ? { cited_text: citedText } : {}),\n } as MapAnnotation);\n }\n continue;\n }\n\n const retrieved = chunk.retrievedContext as Record<string, unknown> | undefined;\n if (retrieved && typeof retrieved === \"object\") {\n const title = (retrieved.title as string) ?? \"\";\n if (title && !seenFileIds.has(title)) {\n seenFileIds.add(title);\n annotations.push({\n type: \"file_citation\",\n file_id: title,\n filename: title,\n index: chunkIdx,\n } as FileAnnotation);\n }\n continue;\n }\n\n const { uri, title } = _getChunkWebInfo(chunk);\n if (uri) {\n annotations.push({\n type: \"url_citation\",\n url: uri,\n title: title || uri,\n start_index: startIndex,\n end_index: endIndex,\n ...(citedText != null ? { cited_text: citedText } : {}),\n } as WebAnnotation);\n }\n }\n }\n return annotations;\n }\n\n if (!groundingMetadata || typeof groundingMetadata !== \"object\") {\n return [];\n }\n\n // Fallback: annotations from chunks only (no segment info)\n const annotations: Annotation[] = [];\n const seenFileIds = new Set<string>();\n chunks.forEach((chunk, idx) => {\n if (!chunk || typeof chunk !== \"object\") return;\n const c = chunk as Record<string, unknown>;\n\n const maps = c.maps as Record<string, unknown> | undefined;\n if (maps && typeof maps === \"object\") {\n const uri = (maps.uri as string) ?? \"\";\n const title = (maps.title as string) ?? \"\";\n const placeId = maps.placeId as string | undefined;\n if (uri || title) {\n annotations.push({\n type: \"map_citation\",\n url: uri,\n title: title || uri,\n ...(placeId != null ? { place_id: placeId } : {}),\n start_index: 0,\n end_index: 0,\n } as MapAnnotation);\n }\n return;\n }\n\n const retrieved = c.retrievedContext as Record<string, unknown> | undefined;\n if (retrieved && typeof retrieved === \"object\") {\n const title = (retrieved.title as string) ?? \"\";\n if (title && !seenFileIds.has(title)) {\n seenFileIds.add(title);\n annotations.push({\n type: \"file_citation\",\n file_id: title,\n filename: title,\n index: idx,\n } as FileAnnotation);\n }\n return;\n }\n\n const { uri, title } = _getChunkWebInfo(c);\n if (uri) {\n annotations.push({\n type: \"url_citation\",\n url: uri,\n title: title || uri,\n start_index: 0,\n end_index: 0,\n } as WebAnnotation);\n }\n });\n return annotations;\n}\n\nexport const buildPromptBlueprintFromGoogleEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n for (const candidate of event.candidates ?? []) {\n if (\n candidate.content &&\n candidate.content.parts &&\n Array.isArray(candidate.content.parts)\n ) {\n for (const part of candidate.content.parts) {\n if (part.text != null) {\n if (part.thought === true) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: part.text,\n signature: part.thoughtSignature ?? \"\",\n })\n );\n } else {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text: part.text,\n ...(part.thoughtSignature ? { thought_signature: part.thoughtSignature } : {}),\n })\n );\n }\n } else if (part.functionCall) {\n tool_calls.push(\n _buildToolCall(\n part.functionCall.id || \"\",\n part.functionCall.name || \"\",\n part.functionCall.args || {}\n )\n );\n } else if (part.executableCode) {\n const exec = part.executableCode;\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n code: exec.code ?? \"\",\n ...(exec.language != null ? { language: exec.language } : {}),\n })\n );\n } else if (part.codeExecutionResult) {\n const result = part.codeExecutionResult;\n assistantContent.push(\n _buildContentBlock({\n type: \"code_execution_result\",\n output: result.output ?? \"\",\n outcome: result.outcome ?? \"OUTCOME_OK\",\n })\n );\n } else {\n const inlineData = part.inlineData;\n if (inlineData && part.thought !== true) {\n const mimeType = inlineData.mimeType ?? \"image/png\";\n const data = inlineData.data ?? \"\";\n if (_isImageMimeType(mimeType) && data) {\n const providerMetadata: Record<string, unknown> = {};\n if (part.thoughtSignature) providerMetadata.thought_signature = part.thoughtSignature;\n if (part.aspectRatio != null) providerMetadata.aspect_ratio = part.aspectRatio;\n if (part.imageSize != null) providerMetadata.image_size = part.imageSize;\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n url: data,\n mime_type: mimeType,\n media_type: \"image\",\n ...(Object.keys(providerMetadata).length ? { provider_metadata: providerMetadata } : {}),\n })\n );\n }\n }\n }\n }\n }\n }\n\n const firstCandidate = event.candidates?.[0] as Record<string, unknown> | undefined;\n const fullResponseText = _getFullResponseTextFromCandidate(firstCandidate);\n const allAnnotations = _candidateToAnnotations(firstCandidate, fullResponseText);\n if (allAnnotations.length > 0) {\n for (let i = 0; i < assistantContent.length; i++) {\n const block = assistantContent[i];\n if (block && typeof block === \"object\" && (block as Content).type === \"text\") {\n const existing = (block as { annotations?: Annotation[] }).annotations ?? [];\n assistantContent[i] = { ...block, annotations: [...existing, ...allAnnotations] } as Content;\n }\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nexport const buildPromptBlueprintFromOpenAIEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n for (const choice of event.choices) {\n if (choice.delta) {\n if (choice.delta.content) {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text: choice.delta.content,\n })\n );\n }\n const toolCalls = choice.delta.tool_calls || choice.delta.toolCalls;\n if (toolCalls && Array.isArray(toolCalls)) {\n for (const toolCall of toolCalls) {\n if (toolCall.function) {\n tool_calls.push(\n _buildToolCall(\n toolCall.id || \"\",\n toolCall.function.name || \"\",\n toolCall.function.arguments || \"\"\n )\n );\n }\n }\n }\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nexport const buildPromptBlueprintFromOpenAIResponsesEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n const event_type: string | undefined = event?.type;\n\n if (event_type === \"response.reasoning_summary_text.delta\") {\n const delta: string = event?.delta ?? \"\";\n const item_id: string = event?.item_id ?? \"\";\n if (delta) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: delta,\n signature: \"\",\n })\n );\n }\n } else if (event_type === \"response.reasoning_summary_text.done\") {\n const final_text: string = event?.text ?? \"\";\n const item_id: string = event?.item_id ?? \"\";\n if (final_text) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: final_text,\n signature: \"\",\n })\n );\n }\n } else if (event_type === \"response.reasoning_summary_part.added\") {\n const part = event?.part ?? {};\n const item_id: string = event?.item_id ?? \"\";\n if (part?.type === \"summary_text\") {\n const text: string = part?.text ?? \"\";\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: text,\n signature: \"\",\n })\n );\n }\n } else if (event_type === \"response.reasoning_summary_part.done\") {\n const part = event?.part ?? {};\n const item_id: string = event?.item_id ?? \"\";\n if (part?.type === \"summary_text\") {\n const text: string = part?.text ?? \"\";\n if (text) {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: text,\n signature: \"\",\n })\n );\n }\n }\n } else if (event_type === \"response.function_call_arguments.delta\") {\n const item_id: string = event?.item_id ?? \"\";\n const delta: string = event?.delta ?? \"\";\n if (delta) {\n tool_calls.push(_buildToolCall(\"\", \"\", delta, item_id));\n }\n } else if (event_type === \"response.function_call_arguments.done\") {\n const item_id: string = event?.item_id ?? \"\";\n const final_arguments: string = event?.arguments ?? \"\";\n if (final_arguments) {\n tool_calls.push(_buildToolCall(\"\", \"\", final_arguments, item_id));\n }\n } else if (event_type === \"response.output_item.added\") {\n const item = event?.item ?? {};\n const item_type: string | undefined = item?.type;\n const item_id: string = item?.id ?? \"\";\n\n if (item_type === \"reasoning\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: \"\",\n signature: \"\",\n item_id: item_id,\n })\n );\n } else if (item_type === \"function_call\") {\n tool_calls.push(\n _buildToolCall(item?.call_id || \"\", item?.name || \"\", \"\", item_id)\n );\n } else if (item_type === \"message\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: \"\",\n })\n );\n } else if (item_type === \"code_interpreter_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: item_id,\n code: item?.code ?? \"\",\n container_id: item?.container_id ?? \"\",\n })\n );\n } else if (item_type === \"image_generation_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: item_id,\n url: \"\",\n mime_type: \"image/png\",\n media_type: \"image\",\n })\n );\n } else if (item_type === \"mcp_list_tools\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_list_tools\",\n item_id: item_id,\n server_label: item?.server_label ?? \"\",\n tools: item?.tools ?? [],\n })\n );\n } else if (item_type === \"mcp_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_call\",\n item_id: item_id,\n name: item?.name ?? \"\",\n server_label: item?.server_label ?? \"\",\n arguments: item?.arguments ?? \"\",\n output: item?.output,\n error: item?.error,\n approval_request_id: item?.approval_request_id,\n })\n );\n } else if (item_type === \"mcp_approval_request\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_approval_request\",\n item_id: item_id,\n name: item?.name ?? \"\",\n arguments: item?.arguments ?? \"\",\n server_label: item?.server_label ?? \"\",\n })\n );\n } else if (item_type === \"shell_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n action: item?.action ?? {},\n status: item?.status ?? \"in_progress\",\n })\n );\n } else if (item_type === \"shell_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? [],\n status: item?.status ?? \"in_progress\",\n })\n );\n } else if (item_type === \"apply_patch_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n operation: item?.operation ?? {},\n status: item?.status ?? \"in_progress\",\n })\n );\n } else if (item_type === \"apply_patch_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? \"\",\n status: item?.status ?? \"in_progress\",\n })\n );\n }\n } else if (event_type === \"response.content_part.added\") {\n const part = event?.part ?? {};\n const part_type: string = part?.type ?? \"output_text\";\n const item_id: string = event?.item_id ?? \"\";\n\n if (part_type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: part?.text ?? \"\",\n annotations: (part?.annotations || []) as Annotation[],\n })\n );\n }\n } else if (event_type === \"response.content_part.done\") {\n const part = event?.part ?? {};\n const part_type: string = part?.type ?? \"output_text\";\n const item_id: string = event?.item_id ?? \"\";\n if (part_type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: part?.text ?? \"\",\n annotations: (part?.annotations || []) as Annotation[],\n })\n );\n }\n } else if (event_type === \"response.output_text.annotation.added\") {\n const annotation = event?.annotation || {};\n const atype = annotation?.type;\n let mapped_annotation: Annotation | null = null;\n\n if (atype === \"url_citation\") {\n mapped_annotation = {\n type: \"url_citation\",\n title: annotation?.title ?? \"\",\n url: annotation?.url ?? \"\",\n start_index: annotation?.start_index ?? 0,\n end_index: annotation?.end_index ?? 0,\n } as WebAnnotation;\n }\n else if (atype === \"file_citation\") {\n mapped_annotation = {\n type: \"file_citation\",\n index: annotation?.index ?? 0,\n file_id: annotation?.file_id ?? \"\",\n filename: annotation?.filename ?? \"\",\n } as FileAnnotation;\n }\n else {\n mapped_annotation = annotation as Annotation;\n }\n\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: event?.item_id ?? \"\",\n text: \"\",\n annotations: [mapped_annotation],\n })\n );\n } else if (event_type === \"response.code_interpreter_call.in_progress\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.code_interpreter_call_code.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.delta ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.output_text.delta\") {\n const delta_text: string = event?.delta ?? \"\";\n\n if (delta_text) {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: event?.item_id ?? \"\",\n text: delta_text,\n })\n );\n }\n } else if (event_type === \"response.output_text.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: event?.item_id ?? \"\",\n text: event?.text ?? \"\",\n })\n );\n } else if (event_type === \"response.output_item.done\") {\n const item = event?.item ?? {};\n const item_type: string | undefined = item?.type;\n const item_id: string = item?.id ?? \"\";\n\n if (item_type === \"reasoning\") {\n const summary: any[] = item?.summary ?? [];\n const summary_text: string = summary.map((summary_part: any) => summary_part?.text ?? \"\").join(\"\");\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: summary_text,\n signature: \"\",\n })\n );\n } else if (item_type === \"function_call\") {\n tool_calls.push(\n _buildToolCall(\n item?.call_id || \"\",\n item?.name || \"\",\n item?.arguments || \"\",\n item_id\n )\n );\n } else if (item_type === \"message\") {\n const content: any[] = item?.content ?? [];\n for (const content_part of content) {\n if (content_part?.type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: content_part?.text ?? \"\",\n })\n );\n }\n }\n } else if (item_type === \"code_interpreter_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: item_id,\n code: item?.code ?? \"\",\n container_id: item?.container_id ?? \"\",\n })\n );\n } else if (item_type === \"image_generation_call\") {\n const result = item?.result ?? \"\";\n const output_format = item?.output_format ?? \"png\";\n const mime_type = output_format === \"webp\" ? \"image/webp\" : \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of [\"revised_prompt\", \"background\", \"size\", \"quality\", \"output_format\"]) {\n if (item?.[key] != null) provider_metadata[key] = item[key];\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: item_id,\n url: result,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n } else if (item_type === \"mcp_list_tools\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_list_tools\",\n item_id: item_id,\n server_label: item?.server_label ?? \"\",\n tools: item?.tools ?? [],\n error: item?.error,\n })\n );\n } else if (item_type === \"mcp_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_call\",\n item_id: item_id,\n name: item?.name ?? \"\",\n server_label: item?.server_label ?? \"\",\n arguments: item?.arguments ?? \"\",\n output: item?.output,\n error: item?.error,\n approval_request_id: item?.approval_request_id,\n })\n );\n } else if (item_type === \"mcp_approval_request\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_approval_request\",\n item_id: item_id,\n name: item?.name ?? \"\",\n arguments: item?.arguments ?? \"\",\n server_label: item?.server_label ?? \"\",\n })\n );\n } else if (item_type === \"shell_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n action: item?.action ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"shell_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? [],\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n operation: item?.operation ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? \"\",\n status: item?.status ?? \"completed\",\n })\n );\n }\n } else if (event_type === \"response.code_interpreter_call_code.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.code_interpreter_call.interpreting\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.code_interpreter_call.completed\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: event?.item_id ?? \"\",\n code: event?.code ?? \"\",\n container_id: event?.container_id ?? \"\",\n })\n );\n } else if (event_type === \"response.image_generation_call.in_progress\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: event?.item_id ?? \"\",\n url: \"\",\n mime_type: \"image/png\",\n media_type: \"image\",\n })\n );\n } else if (event_type === \"response.image_generation_call.generating\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: event?.item_id ?? \"\",\n url: \"\",\n mime_type: \"image/png\",\n media_type: \"image\",\n })\n );\n } else if (event_type === \"response.image_generation_call.partial_image\") {\n const output_format = event?.output_format ?? \"png\";\n const mime_type = output_format === \"webp\" ? \"image/webp\" : \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of [\"background\", \"size\", \"quality\", \"output_format\"]) {\n if (event?.[key] != null) provider_metadata[key] = event[key];\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: event?.item_id ?? \"\",\n url: event?.partial_image_b64 ?? \"\",\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n } else if (event_type === \"response.shell_call_command.added\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n action: { command: event?.command ?? \"\" },\n })\n );\n } else if (event_type === \"response.shell_call_command.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n action: { command: event?.delta ?? \"\" },\n })\n );\n } else if (event_type === \"response.shell_call_command.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n action: { command: event?.command ?? \"\" },\n })\n );\n } else if (event_type === \"response.shell_call_output_content.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: event?.item_id ?? \"\",\n output: [event?.delta ?? {}],\n })\n );\n } else if (event_type === \"response.shell_call_output_content.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: event?.item_id ?? \"\",\n output: event?.output ?? [],\n })\n );\n } else if (event_type === \"response.apply_patch_call_operation_diff.delta\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: event?.item_id ?? \"\",\n operation: { diff: event?.delta ?? \"\" },\n })\n );\n } else if (event_type === \"response.apply_patch_call_operation_diff.done\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: event?.item_id ?? \"\",\n operation: { diff: event?.diff ?? \"\" },\n })\n );\n } else if (event_type === \"response.completed\") {\n const response = event?.response ?? {};\n const output: any[] = response?.output ?? [];\n\n for (const item of output) {\n const item_type: string | undefined = item?.type;\n const item_id: string = item?.id ?? \"\";\n\n if (item_type === \"reasoning\") {\n const summary: any[] = item?.summary ?? [];\n const summary_text: string = summary.map((summary_part: any) => summary_part?.text ?? \"\").join(\"\");\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n item_id: item_id,\n thinking: summary_text,\n signature: \"\",\n })\n );\n } else if (item_type === \"function_call\") {\n tool_calls.push(\n _buildToolCall(\n item?.call_id || \"\",\n item?.name || \"\",\n item?.arguments || \"\",\n item_id\n )\n );\n } else if (item_type === \"message\") {\n const content: any[] = item?.content ?? [];\n for (const content_part of content) {\n if (content_part?.type === \"output_text\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n item_id: item_id,\n text: content_part?.text ?? \"\",\n annotations: (content_part?.annotations || []) as Annotation[],\n })\n );\n }\n }\n } else if (item_type === \"code_interpreter_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"code\",\n item_id: item_id,\n code: item?.code ?? \"\",\n container_id: item?.container_id ?? \"\",\n })\n );\n } else if (item_type === \"image_generation_call\") {\n const result = item?.result ?? \"\";\n const output_format = item?.output_format ?? \"png\";\n const mime_type = output_format === \"webp\" ? \"image/webp\" : \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of [\"revised_prompt\", \"background\", \"size\", \"quality\", \"output_format\"]) {\n if (item?.[key] != null) provider_metadata[key] = item[key];\n }\n assistantContent.push(\n _buildContentBlock({\n type: \"output_media\",\n item_id: item_id,\n url: result,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n } else if (item_type === \"mcp_list_tools\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_list_tools\",\n item_id: item_id,\n server_label: item?.server_label ?? \"\",\n tools: item?.tools ?? [],\n error: item?.error,\n })\n );\n } else if (item_type === \"mcp_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_call\",\n item_id: item_id,\n name: item?.name ?? \"\",\n server_label: item?.server_label ?? \"\",\n arguments: item?.arguments ?? \"\",\n output: item?.output,\n error: item?.error,\n approval_request_id: item?.approval_request_id,\n })\n );\n } else if (item_type === \"mcp_approval_request\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"mcp_approval_request\",\n item_id: item_id,\n name: item?.name ?? \"\",\n arguments: item?.arguments ?? \"\",\n server_label: item?.server_label ?? \"\",\n })\n );\n } else if (item_type === \"shell_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n action: item?.action ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"shell_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"shell_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? [],\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n operation: item?.operation ?? {},\n status: item?.status ?? \"completed\",\n })\n );\n } else if (item_type === \"apply_patch_call_output\") {\n assistantContent.push(\n _buildContentBlock({\n type: \"apply_patch_call_output\",\n item_id: item_id,\n call_id: item?.call_id ?? \"\",\n output: item?.output ?? \"\",\n status: item?.status ?? \"completed\",\n })\n );\n }\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls || []);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nexport const buildPromptBlueprintFromBedrockEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const assistantContent: Content[] = [];\n const tool_calls: ToolCall[] = [];\n\n if (\"contentBlockDelta\" in event) {\n const delta = event.contentBlockDelta?.delta || {};\n\n if (\"reasoningContent\" in delta) {\n const reasoningText = delta.reasoningContent?.text || \"\";\n const signature = delta.reasoningContent?.signature || \"\";\n assistantContent.push(\n _buildContentBlock({\n type: \"thinking\",\n thinking: reasoningText,\n signature: signature,\n })\n );\n } else if (\"text\" in delta) {\n assistantContent.push(\n _buildContentBlock({\n type: \"text\",\n text: delta.text || \"\",\n })\n );\n } else if (\"toolUse\" in delta) {\n const toolUse = delta.toolUse || {};\n tool_calls.push(\n _buildToolCall(\n toolUse.toolUseId || \"\",\n toolUse.name || \"\",\n toolUse.input || \"\"\n )\n );\n }\n } else if (\"contentBlockStart\" in event) {\n const startBlock = event.contentBlockStart?.start || {};\n\n if (\"toolUse\" in startBlock) {\n const toolUse = startBlock.toolUse || {};\n tool_calls.push(\n _buildToolCall(\n toolUse.toolUseId || \"\",\n toolUse.name || \"\",\n \"\"\n )\n );\n }\n }\n\n const assistantMessage = _buildAssistantMessage(assistantContent, tool_calls);\n return _buildPromptTemplate(assistantMessage, metadata);\n};\n\nconst _RESPONSE_METADATA_KEYS = [\"size\", \"quality\", \"background\", \"output_format\"] as const;\n\nexport const buildPromptBlueprintFromOpenAIImagesEvent = (\n event: any,\n metadata: Metadata\n): PromptBlueprint => {\n const content: Content[] = [];\n const event_type: string = event?.type ?? \"\";\n\n if (event_type === \"image_generation.partial_image\") {\n const b64 = event?.b64_json ?? \"\";\n if (b64) {\n const output_format: string = event?.output_format ?? \"png\";\n const mime_type = OUTPUT_FORMAT_TO_MIME[output_format] ?? \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n const partial_image_index = event?.partial_image_index;\n if (partial_image_index != null) {\n provider_metadata.partial_image_index = partial_image_index;\n }\n content.push(\n _buildContentBlock({\n type: \"output_media\",\n url: b64,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n }\n } else if (event_type === \"image_generation.completed\") {\n const b64 = event?.b64_json ?? \"\";\n const output_format: string = event?.output_format ?? \"png\";\n const mime_type = OUTPUT_FORMAT_TO_MIME[output_format] ?? \"image/png\";\n const provider_metadata: Record<string, unknown> = {};\n for (const key of _RESPONSE_METADATA_KEYS) {\n if (event?.[key] != null) provider_metadata[key] = event[key];\n }\n content.push(\n _buildContentBlock({\n type: \"output_media\",\n url: b64,\n mime_type,\n media_type: \"image\",\n ...(Object.keys(provider_metadata).length ? { provider_metadata } : {}),\n })\n );\n }\n\n const promptTemplate: CompletionPromptTemplate = {\n type: \"completion\",\n content,\n input_variables: [],\n };\n\n return {\n prompt_template: promptTemplate,\n metadata,\n };\n};\n","import {\n Completion as AnthropicCompletion,\n Message,\n} from \"@anthropic-ai/sdk/resources\";\nimport { MessageStreamEvent } from \"@anthropic-ai/sdk/resources/messages\";\nimport {\n ChatCompletion,\n ChatCompletionChunk,\n Completion,\n} from \"openai/resources\";\nimport {\n buildPromptBlueprintFromAnthropicEvent,\n buildPromptBlueprintFromBedrockEvent,\n buildPromptBlueprintFromGoogleEvent,\n buildPromptBlueprintFromOpenAIEvent,\n buildPromptBlueprintFromOpenAIImagesEvent,\n buildPromptBlueprintFromOpenAIResponsesEvent,\n} from \"./blueprint-builder\";\n\nexport const STREAMING_PROVIDERS_WITH_USAGE = [\"openai\", \"openai.azure\"] as const;\n\n\nexport const openaiResponsesStreamChat = (results: any[]) => {\n const response_data: any = {\n id: null,\n object: \"response\",\n created_at: null,\n status: null,\n error: null,\n incomplete_details: null,\n instructions: null,\n max_output_tokens: null,\n model: null,\n output: [],\n parallel_tool_calls: true,\n previous_response_id: null,\n reasoning: {},\n store: true,\n temperature: 1,\n text: undefined,\n tool_choice: \"auto\",\n tools: [],\n top_p: 1,\n truncation: \"disabled\",\n usage: null,\n user: null,\n metadata: {},\n };\n\n const current_items: Record<string, any> = {};\n const output_index_to_item_id: Record<number, string> = {};\n\n for (const chunk of results as any[]) {\n const event_type = chunk?.type;\n\n if (event_type === \"response.created\") {\n const response = chunk.response || {};\n response_data.id = response.id ?? response_data.id;\n response_data.created_at = response.created_at ?? response_data.created_at;\n response_data.model = response.model ?? response_data.model;\n response_data.status = response.status ?? response_data.status;\n response_data.parallel_tool_calls =\n response.parallel_tool_calls ?? response_data.parallel_tool_calls;\n response_data.temperature =\n response.temperature ?? response_data.temperature;\n response_data.tool_choice = response.tool_choice ?? response_data.tool_choice;\n response_data.tools = response.tools ?? response_data.tools;\n response_data.top_p = response.top_p ?? response_data.top_p;\n response_data.truncation = response.truncation ?? response_data.truncation;\n response_data.max_output_tokens =\n response.max_output_tokens ?? response_data.max_output_tokens;\n response_data.previous_response_id =\n response.previous_response_id ?? response_data.previous_response_id;\n response_data.store = response.store ?? response_data.store;\n response_data.user = response.user ?? response_data.user;\n response_data.metadata = response.metadata ?? response_data.metadata;\n\n const text_config = response.text;\n if (text_config) {\n response_data.text = text_config;\n }\n const reasoning = response.reasoning;\n if (reasoning) {\n response_data.reasoning = reasoning;\n }\n continue;\n }\n\n if (event_type === \"response.in_progress\") {\n const response = chunk.response || {};\n response_data.status = response.status ?? response_data.status;\n continue;\n }\n\n if (event_type === \"response.output_item.added\") {\n const item = chunk.item || {};\n const item_id = item.id;\n const item_type = item.type;\n const output_index = chunk.output_index;\n if (output_index != null && item_id) {\n output_index_to_item_id[output_index] = item_id;\n }\n\n if (item_type === \"reasoning\") {\n current_items[item_id] = {\n type: \"reasoning\",\n id: item_id,\n summary: [],\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"function_call\") {\n current_items[item_id] = {\n type: \"function_call\",\n id: item_id,\n call_id: item.call_id,\n name: item.name,\n arguments: \"\",\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"message\") {\n current_items[item_id] = {\n type: \"message\",\n id: item_id,\n role: item.role ?? \"assistant\",\n content: [],\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"code_interpreter_call\") {\n current_items[item_id] = {\n type: \"code_interpreter_call\",\n id: item_id,\n container_id: item.container_id,\n code: item.code ?? \"\",\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"image_generation_call\") {\n current_items[item_id] = {\n type: \"image_generation_call\",\n id: item_id,\n status: item.status ?? \"in_progress\",\n revised_prompt: item.revised_prompt ?? \"\",\n result: item.result ?? \"\",\n background: item.background,\n size: item.size,\n quality: item.quality,\n output_format: item.output_format,\n };\n } else if (item_type === \"web_search_call\") {\n current_items[item_id] = {\n type: \"web_search_call\",\n id: item_id,\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"file_search_call\") {\n current_items[item_id] = {\n type: \"file_search_call\",\n id: item_id,\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"mcp_list_tools\") {\n current_items[item_id] = {\n type: \"mcp_list_tools\",\n id: item_id,\n server_label: item.server_label ?? \"\",\n tools: item.tools ?? [],\n error: item.error ?? null,\n };\n } else if (item_type === \"mcp_call\") {\n current_items[item_id] = {\n type: \"mcp_call\",\n id: item_id,\n name: item.name ?? \"\",\n server_label: item.server_label ?? \"\",\n arguments: item.arguments ?? \"\",\n output: item.output ?? null,\n error: item.error ?? null,\n approval_request_id: item.approval_request_id ?? null,\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"mcp_approval_request\") {\n current_items[item_id] = {\n type: \"mcp_approval_request\",\n id: item_id,\n name: item.name ?? \"\",\n arguments: item.arguments ?? \"\",\n server_label: item.server_label ?? \"\",\n };\n } else if (item_type === \"shell_call\") {\n current_items[item_id] = {\n type: \"shell_call\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n action: item.action ?? {},\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"shell_call_output\") {\n current_items[item_id] = {\n type: \"shell_call_output\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n output: item.output ?? [],\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"apply_patch_call\") {\n current_items[item_id] = {\n type: \"apply_patch_call\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n operation: item.operation ?? {},\n status: item.status ?? \"in_progress\",\n };\n } else if (item_type === \"apply_patch_call_output\") {\n current_items[item_id] = {\n type: \"apply_patch_call_output\",\n id: item_id,\n call_id: item.call_id ?? \"\",\n output: item.output ?? \"\",\n status: item.status ?? \"in_progress\",\n };\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_part.added\") {\n const item_id = chunk.item_id;\n const part = chunk.part || {};\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n const summary_part = {\n type: part.type ?? \"summary_text\",\n text: part.text ?? \"\",\n };\n current_items[item_id].summary.push(summary_part);\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_text.delta\") {\n const item_id = chunk.item_id;\n const delta = chunk.delta ?? \"\";\n const summary_index = chunk.summary_index ?? 0;\n\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n while ((current_items[item_id].summary as any[]).length <= summary_index) {\n current_items[item_id].summary.push({ type: \"summary_text\", text: \"\" });\n }\n current_items[item_id].summary[summary_index].text += delta;\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_text.done\") {\n const item_id = chunk.item_id;\n const final_text = chunk.text ?? \"\";\n const summary_index = chunk.summary_index ?? 0;\n\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n while ((current_items[item_id].summary as any[]).length <= summary_index) {\n current_items[item_id].summary.push({ type: \"summary_text\", text: \"\" });\n }\n current_items[item_id].summary[summary_index].text = final_text;\n }\n continue;\n }\n\n if (event_type === \"response.reasoning_summary_part.done\") {\n const item_id = chunk.item_id;\n const part = chunk.part || {};\n if (item_id in current_items && current_items[item_id].type === \"reasoning\") {\n const summary_index = chunk.summary_index ?? 0;\n if (summary_index < current_items[item_id].summary.length) {\n current_items[item_id].summary[summary_index] = {\n type: part.type ?? \"summary_text\",\n text: part.text ?? \"\",\n };\n }\n }\n continue;\n }\n\n if (event_type === \"response.function_call_arguments.delta\") {\n const item_id = chunk.item_id;\n const delta = chunk.delta ?? \"\";\n if (item_id in current_items) {\n current_items[item_id].arguments = `${\n current_items[item_id].arguments || \"\"\n }${delta}`;\n }\n continue;\n }\n\n if (event_type === \"response.function_call_arguments.done\") {\n const item_id = chunk.item_id;\n const final_arguments = chunk.arguments ?? \"\";\n if (item_id in current_items) {\n current_items[item_id].arguments = final_arguments;\n }\n continue;\n }\n\n if (event_type === \"response.content_part.added\") {\n const part = chunk.part || {};\n const messageItem = Object.values(current_items).find(\n (it: any) => it.type === \"message\"\n ) as any;\n if (messageItem) {\n const content_part = {\n type: part.type ?? \"output_text\",\n text: part.text ?? \"\",\n annotations: part.annotations ?? [],\n };\n messageItem.content.push(content_part);\n }\n continue;\n }\n\n if (event_type === \"response.output_text.delta\") {\n const delta_text = chunk.delta ?? \"\";\n for (const item of Object.values(current_items) as any[]) {\n if (item.type === \"message\" && item.content && item.content.length) {\n const last = item.content[item.content.length - 1];\n if (last && last.type === \"output_text\") {\n last.text = `${last.text || \"\"}${delta_text}`;\n }\n break;\n }\n }\n continue;\n }\n\n if (event_type === \"response.output_text.done\") {\n const final_text = chunk.text ?? \"\";\n for (const item of Object.values(current_items) as any[]) {\n if (item.type === \"message\" && item.content && item.content.length) {\n const last = item.content[item.content.length - 1];\n if (last && last.type === \"output_text\") {\n last.text = final_text;\n }\n break;\n }\n }\n continue;\n }\n\n if (event_type === \"response.output_item.done\") {\n const item = chunk.item || {};\n const item_id = item.id;\n if (item_id in current_items) {\n current_items[item_id].status = item.status ?? \"completed\";\n if (item.type === \"reasoning\") {\n current_items[item_id].summary =\n item.summary ?? current_items[item_id].summary;\n } else if (item.type === \"function_call\") {\n current_items[item_id].arguments =\n item.arguments ?? current_items[item_id].arguments;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n current_items[item_id].name = item.name ?? current_items[item_id].name;\n } else if (item.type === \"message\") {\n current_items[item_id].content =\n item.content ?? current_items[item_id].content;\n current_items[item_id].role = item.role ?? current_items[item_id].role;\n } else if (item.type === \"image_generation_call\") {\n current_items[item_id].result =\n item.result ?? current_items[item_id].result;\n current_items[item_id].revised_prompt =\n item.revised_prompt ?? current_items[item_id].revised_prompt;\n current_items[item_id].background =\n item.background ?? current_items[item_id].background;\n current_items[item_id].size =\n item.size ?? current_items[item_id].size;\n current_items[item_id].quality =\n item.quality ?? current_items[item_id].quality;\n current_items[item_id].output_format =\n item.output_format ?? current_items[item_id].output_format;\n } else if (item.type === \"code_interpreter_call\") {\n current_items[item_id].code =\n item.code ?? current_items[item_id].code;\n current_items[item_id].container_id =\n item.container_id ?? current_items[item_id].container_id;\n } else if (item.type === \"mcp_list_tools\") {\n current_items[item_id].tools =\n item.tools ?? current_items[item_id].tools;\n current_items[item_id].error =\n item.error ?? current_items[item_id].error;\n } else if (item.type === \"mcp_call\") {\n current_items[item_id].name =\n item.name ?? current_items[item_id].name;\n current_items[item_id].arguments =\n item.arguments ?? current_items[item_id].arguments;\n current_items[item_id].output =\n item.output ?? current_items[item_id].output;\n current_items[item_id].error =\n item.error ?? current_items[item_id].error;\n current_items[item_id].server_label =\n item.server_label ?? current_items[item_id].server_label;\n } else if (item.type === \"mcp_approval_request\") {\n current_items[item_id].name =\n item.name ?? current_items[item_id].name;\n current_items[item_id].arguments =\n item.arguments ?? current_items[item_id].arguments;\n current_items[item_id].server_label =\n item.server_label ?? current_items[item_id].server_label;\n } else if (item.type === \"shell_call\") {\n current_items[item_id].action =\n item.action ?? current_items[item_id].action;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"shell_call_output\") {\n current_items[item_id].output =\n item.output ?? current_items[item_id].output;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"apply_patch_call\") {\n current_items[item_id].operation =\n item.operation ?? current_items[item_id].operation;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"apply_patch_call_output\") {\n current_items[item_id].output =\n item.output ?? current_items[item_id].output;\n current_items[item_id].call_id =\n item.call_id ?? current_items[item_id].call_id;\n } else if (item.type === \"web_search_call\") {\n current_items[item_id].action = item.action;\n } else if (item.type === \"file_search_call\") {\n current_items[item_id].action = item.action;\n }\n response_data.output.push(current_items[item_id]);\n }\n continue;\n }\n\n if (event_type === \"response.image_generation_call.in_progress\") {\n const item_id = chunk.item_id;\n if (item_id in current_items) {\n current_items[item_id].status = \"in_progress\";\n }\n continue;\n }\n\n if (event_type === \"response.image_generation_call.generating\") {\n const item_id = chunk.item_id;\n if (item_id in current_items) {\n current_items[item_id].status = \"generating\";\n }\n continue;\n }\n\n if (event_type === \"response.image_generation_call.partial_image\") {\n const item_id = chunk.item_id;\n if (item_id in current_items) {\n current_items[item_id].result = chunk.partial_image_b64 ?? current_items[item_id].result;\n current_items[item_id].background = chunk.background ?? current_items[item_id].background;\n current_items[item_id].size = chunk.size ?? current_items[item_id].size;\n current_items[item_id].quality = chunk.quality ?? current_items[item_id].quality;\n current_items[item_id].output_format = chunk.output_format ?? current_items[item_id].output_format;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_command.added\") {\n const item_id = output_index_to_item_id[chunk.output_index];\n if (item_id && item_id in current_items) {\n const action = current_items[item_id].action || { commands: [] };\n if (!action.commands) action.commands = [];\n action.commands[chunk.command_index] = chunk.command ?? \"\";\n current_items[item_id].action = action;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_command.delta\") {\n const item_id = output_index_to_item_id[chunk.output_index];\n if (item_id && item_id in current_items) {\n const action = current_items[item_id].action || { commands: [] };\n if (!action.commands) action.commands = [];\n const idx = chunk.command_index ?? 0;\n action.commands[idx] = (action.commands[idx] ?? \"\") + (chunk.delta ?? \"\");\n current_items[item_id].action = action;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_command.done\") {\n const item_id = output_index_to_item_id[chunk.output_index];\n if (item_id && item_id in current_items) {\n const action = current_items[item_id].action || { commands: [] };\n if (!action.commands) action.commands = [];\n action.commands[chunk.command_index] = chunk.command ?? \"\";\n current_items[item_id].action = action;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_output_content.delta\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n if (!current_items[item_id].output) current_items[item_id].output = [];\n const idx = chunk.command_index ?? 0;\n const existing = current_items[item_id].output[idx] ?? { stdout: \"\", stderr: \"\" };\n const delta = chunk.delta ?? {};\n if (delta.stdout) existing.stdout = (existing.stdout ?? \"\") + delta.stdout;\n if (delta.stderr) existing.stderr = (existing.stderr ?? \"\") + delta.stderr;\n current_items[item_id].output[idx] = existing;\n }\n continue;\n }\n\n if (event_type === \"response.shell_call_output_content.done\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n current_items[item_id].output = chunk.output ?? current_items[item_id].output;\n }\n continue;\n }\n\n if (event_type === \"response.apply_patch_call_operation_diff.delta\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n const operation = current_items[item_id].operation || {};\n operation.diff = (operation.diff ?? \"\") + (chunk.delta ?? \"\");\n current_items[item_id].operation = operation;\n }\n continue;\n }\n\n if (event_type === \"response.apply_patch_call_operation_diff.done\") {\n const item_id = chunk.item_id;\n if (item_id && item_id in current_items) {\n const operation = current_items[item_id].operation || {};\n operation.diff = chunk.diff ?? operation.diff;\n current_items[item_id].operation = operation;\n }\n continue;\n }\n\n if (event_type === \"response.completed\") {\n const response = chunk.response || {};\n response_data.status = response.status ?? response_data.status ?? \"completed\";\n response_data.usage = response.usage ?? response_data.usage;\n response_data.output = response.output ?? response_data.output;\n if (response.reasoning) {\n response_data.reasoning = response.reasoning;\n }\n continue;\n }\n }\n\n return response_data;\n}\n\nexport const openaiStreamChat = (results: ChatCompletionChunk[]): ChatCompletion => {\n let content: ChatCompletion.Choice[\"message\"][\"content\"] = null;\n let functionCall: ChatCompletion.Choice[\"message\"][\"function_call\"] =\n undefined;\n const response: ChatCompletion = {\n id: \"\",\n choices: [],\n created: Date.now(),\n model: \"\",\n object: \"chat.completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let toolCalls: any[] | undefined = undefined;\n for (const result of results) {\n if (result.choices.length === 0) continue;\n const delta = result.choices[0].delta;\n\n if (delta.content) {\n content = `${content || \"\"}${delta.content || \"\"}`;\n }\n if (delta.function_call) {\n functionCall = {\n name: `${functionCall ? functionCall.name : \"\"}${\n delta.function_call.name || \"\"\n }`,\n arguments: `${functionCall ? functionCall.arguments : \"\"}${\n delta.function_call.arguments || \"\"\n }`,\n };\n }\n const toolCall = delta.tool_calls?.[0];\n if (toolCall) {\n toolCalls = toolCalls || [];\n const lastToolCall = toolCalls.at(-1);\n if (!lastToolCall || toolCall.id) {\n toolCalls.push({\n id: toolCall.id || \"\",\n type: toolCall.type || \"function\",\n function: {\n name: toolCall.function?.name || \"\",\n arguments: toolCall.function?.arguments || \"\",\n },\n });\n continue;\n }\n (lastToolCall as any).function.name = `${(lastToolCall as any).function.name}${\n toolCall.function?.name || \"\"\n }`;\n (lastToolCall as any).function.arguments = `${(lastToolCall as any).function.arguments}${\n toolCall.function?.arguments || \"\"\n }`;\n }\n }\n const firstChoice = results[0].choices.at(0);\n response.choices.push({\n finish_reason: firstChoice?.finish_reason ?? \"stop\",\n index: firstChoice?.index ?? 0,\n logprobs: firstChoice?.logprobs ?? null,\n message: {\n role: \"assistant\",\n content,\n function_call: functionCall ? functionCall : undefined,\n tool_calls: toolCalls ? toolCalls : undefined,\n refusal: firstChoice?.delta.refusal ?? null,\n },\n });\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.created = lastResult.created;\n response.system_fingerprint = lastResult.system_fingerprint;\n response.usage = lastResult.usage ?? undefined;\n return response;\n};\n\nexport const openaiStreamCompletion = (results: Completion[]) => {\n const response: Completion = {\n id: \"\",\n choices: [\n {\n finish_reason: \"stop\",\n index: 0,\n text: \"\",\n logprobs: null,\n },\n ],\n created: Date.now(),\n model: \"\",\n object: \"text_completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let text = \"\";\n for (const result of results) {\n if (result.choices.length > 0 && result.choices[0].text) {\n text = `${text}${result.choices[0].text}`;\n }\n }\n response.choices[0].text = text;\n response.id = lastResult.id;\n response.created = lastResult.created;\n response.model = lastResult.model;\n response.system_fingerprint = lastResult.system_fingerprint;\n response.usage = lastResult.usage;\n return response;\n};\n\nexport const anthropicStreamMessage = (results: MessageStreamEvent[]): Message => {\n let response: Message = {\n id: \"\",\n model: \"\",\n content: [],\n role: \"assistant\",\n type: \"message\",\n stop_reason: \"stop_sequence\",\n stop_sequence: null,\n usage: {\n input_tokens: 0,\n output_tokens: 0,\n cache_creation_input_tokens: 0,\n cache_read_input_tokens: 0,\n server_tool_use: null,\n service_tier: null,\n },\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let currentBlock: any = null;\n let currentBlockIndex: number | null = null;\n let currentSignature = \"\";\n let currentThinking = \"\";\n let currentText = \"\";\n let currentToolInputJson = \"\";\n const citationsByBlockIndex: Record<number, any[]> = {};\n\n for (const event of results) {\n if (event.type === \"message_start\") {\n response = { ...event.message };\n } else if (event.type === \"content_block_start\") {\n currentBlock = { ...event.content_block };\n currentBlockIndex = \"index\" in event && typeof event.index === \"number\" ? event.index : null;\n if (currentBlock.type === \"thinking\") {\n currentSignature = \"\";\n currentThinking = \"\";\n } else if (currentBlock.type === \"text\") {\n currentText = \"\";\n } else if (\n currentBlock.type === \"tool_use\" ||\n currentBlock.type === \"server_tool_use\"\n ) {\n currentToolInputJson = \"\";\n }\n } else if (event.type === \"content_block_delta\") {\n const delta = event.delta as unknown as Record<string, unknown> | undefined;\n const eventIndex = \"index\" in event && typeof event.index === \"number\" ? event.index : null;\n\n if (delta?.type === \"citations_delta\") {\n const citation = delta.citation as Record<string, unknown> | undefined;\n if (\n citation &&\n typeof citation === \"object\" &&\n citation.type === \"web_search_result_location\" &&\n eventIndex !== null\n ) {\n const annotation = {\n type: \"url_citation\",\n url: citation.url ?? \"\",\n title: citation.title ?? \"\",\n start_index: citation.start_index ?? 0,\n end_index: citation.end_index ?? 0,\n ...(citation.cited_text != null ? { cited_text: citation.cited_text } : {}),\n ...(citation.encrypted_index != null ? { encrypted_index: citation.encrypted_index } : {}),\n };\n if (!citationsByBlockIndex[eventIndex]) citationsByBlockIndex[eventIndex] = [];\n citationsByBlockIndex[eventIndex].push(annotation);\n }\n } else if (currentBlock !== null) {\n if (currentBlock.type === \"thinking\") {\n if (delta && \"signature\" in delta) {\n currentSignature = (delta.signature as string) || \"\";\n }\n if (delta && \"thinking\" in delta) {\n currentThinking += (delta.thinking as string) || \"\";\n }\n } else if (currentBlock.type === \"text\") {\n if (delta && \"text\" in delta) {\n currentText += (delta.text as string) || \"\";\n }\n } else if (\n currentBlock.type === \"tool_use\" ||\n currentBlock.type === \"server_tool_use\"\n ) {\n if (delta?.type === \"input_json_delta\") {\n const inputJsonDelta = delta as { partial_json?: string };\n currentToolInputJson += inputJsonDelta.partial_json || \"\";\n }\n }\n }\n } else if (event.type === \"content_block_stop\" && currentBlock !== null) {\n if (currentBlock.type === \"thinking\") {\n currentBlock.signature = currentSignature;\n currentBlock.thinking = currentThinking;\n } else if (currentBlock.type === \"text\") {\n currentBlock.text = currentText;\n currentBlock.citations = null;\n if (currentBlockIndex !== null && citationsByBlockIndex[currentBlockIndex]?.length) {\n currentBlock.annotations = citationsByBlockIndex[currentBlockIndex];\n }\n } else if (\n currentBlock.type === \"tool_use\" ||\n currentBlock.type === \"server_tool_use\"\n ) {\n try {\n currentBlock.input = currentToolInputJson\n ? JSON.parse(currentToolInputJson)\n : {};\n } catch (e) {\n currentBlock.input = {};\n }\n }\n response.content!.push(currentBlock);\n currentBlock = null;\n currentBlockIndex = null;\n currentSignature = \"\";\n currentThinking = \"\";\n currentText = \"\";\n currentToolInputJson = \"\";\n } else if (event.type === \"message_delta\") {\n if (\"usage\" in event && event.usage) {\n response.usage = {\n ...response.usage,\n output_tokens: event.usage.output_tokens ?? 0,\n };\n }\n if (\"delta\" in event && event.delta) {\n if (\n \"stop_reason\" in event.delta &&\n event.delta.stop_reason !== undefined\n ) {\n response.stop_reason = event.delta.stop_reason;\n }\n if (\n \"stop_sequence\" in event.delta &&\n event.delta.stop_sequence !== undefined\n ) {\n response.stop_sequence = event.delta.stop_sequence;\n }\n }\n }\n }\n\n return response;\n};\n\nexport const anthropicStreamCompletion = (results: AnthropicCompletion[]) => {\n const response: AnthropicCompletion = {\n completion: \"\",\n id: \"\",\n model: \"\",\n stop_reason: \"\",\n type: \"completion\",\n };\n const lastResult = results.at(-1);\n if (!lastResult) return response;\n let completion = \"\";\n for (const result of results) {\n completion = `${completion}${result.completion}`;\n }\n response.completion = completion;\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.stop_reason = lastResult.stop_reason;\n return response;\n};\n\nexport const mistralStreamChat = (results: any[]) => {\n let content: ChatCompletion.Choice[\"message\"][\"content\"] = null;\n const response: ChatCompletion = {\n id: \"\",\n choices: [],\n created: Date.now(),\n model: \"\",\n object: \"chat.completion\",\n };\n const lastResult = results.at(-1).data;\n if (!lastResult) return response;\n let toolCalls: any[] | undefined = undefined;\n\n for (const result of results) {\n if (result.data.choices.length === 0) continue;\n const delta = result.data.choices[0].delta;\n\n if (delta.content) {\n content = `${content || \"\"}${delta.content || \"\"}`;\n }\n\n const toolCall = delta.toolCalls?.[0];\n if (toolCall) {\n toolCalls = toolCalls || [];\n const lastToolCall = toolCalls.at(-1);\n if (!lastToolCall || toolCall.id) {\n toolCalls.push({\n id: toolCall.id || \"\",\n type: toolCall.type || \"function\",\n function: {\n name: toolCall.function?.name || \"\",\n arguments: toolCall.function?.arguments || \"\",\n },\n });\n continue;\n }\n (lastToolCall as any).function.name = `${(lastToolCall as any).function.name}${\n toolCall.function?.name || \"\"\n }`;\n (lastToolCall as any).function.arguments = `${(lastToolCall as any).function.arguments}${\n toolCall.function?.arguments || \"\"\n }`;\n }\n }\n const firstChoice = results[0].data.choices.at(0);\n response.choices.push({\n finish_reason: firstChoice?.finish_reason ?? \"stop\",\n index: firstChoice?.index ?? 0,\n logprobs: firstChoice?.logprobs ?? null,\n message: {\n role: \"assistant\",\n content,\n tool_calls: toolCalls ? toolCalls : undefined,\n refusal: firstChoice?.delta.refusal ?? null,\n },\n });\n response.id = lastResult.id;\n response.model = lastResult.model;\n response.created = lastResult.created;\n response.usage = lastResult.usage ?? undefined;\n return response;\n};\n\nexport const bedrockStreamMessage = (results: any[]) => {\n const response: any = {\n ResponseMetadata: {},\n output: { message: {} },\n stopReason: \"end_turn\",\n metrics: {},\n usage: {},\n };\n\n const content_blocks: any[] = [];\n let current_tool_call: any = null;\n let current_tool_input = \"\";\n let current_text = \"\";\n let current_signature = \"\";\n let current_thinking = \"\";\n\n for (const event of results) {\n if (\"contentBlockStart\" in event) {\n const content_block = event[\"contentBlockStart\"];\n if (\"start\" in content_block && \"toolUse\" in content_block[\"start\"]) {\n const tool_use = content_block[\"start\"][\"toolUse\"];\n current_tool_call = {\n toolUse: {\n toolUseId: tool_use[\"toolUseId\"],\n name: tool_use[\"name\"],\n },\n };\n current_tool_input = \"\";\n }\n } else if (\"contentBlockDelta\" in event) {\n const delta = event[\"contentBlockDelta\"][\"delta\"];\n if (\"text\" in delta) {\n current_text += delta[\"text\"];\n } else if (\"reasoningContent\" in delta) {\n const reasoning_content = delta[\"reasoningContent\"];\n if (\"text\" in reasoning_content) {\n current_thinking += reasoning_content[\"text\"];\n } else if (\"signature\" in reasoning_content) {\n current_signature += reasoning_content[\"signature\"];\n }\n } else if (\"toolUse\" in delta) {\n if (\"input\" in delta[\"toolUse\"]) {\n const input_chunk = delta[\"toolUse\"][\"input\"];\n current_tool_input += input_chunk;\n if (!input_chunk.trim()) {\n continue;\n }\n }\n }\n } else if (\"contentBlockStop\" in event) {\n if (current_tool_call && current_tool_input) {\n try {\n current_tool_call.toolUse.input = JSON.parse(current_tool_input);\n } catch {\n current_tool_call.toolUse.input = {};\n }\n content_blocks.push(current_tool_call);\n current_tool_call = null;\n current_tool_input = \"\";\n } else if (current_text) {\n content_blocks.push({ text: current_text });\n current_text = \"\";\n } else if (current_thinking && current_signature) {\n content_blocks.push({\n reasoningContent: {\n reasoningText: {\n text: current_thinking,\n signature: current_signature,\n },\n },\n });\n current_thinking = \"\";\n current_signature = \"\";\n }\n } else if (\"messageStop\" in event) {\n response.stopReason = event[\"messageStop\"][\"stopReason\"];\n } else if (\"metadata\" in event) {\n const metadata = event[\"metadata\"];\n response.usage = metadata?.usage || {};\n response.metrics = metadata?.metrics || {};\n }\n }\n\n response.output.message = { role: \"assistant\", content: content_blocks };\n return response;\n};\n\nconst buildGoogleResponseFromParts = (\n thoughtContent: string,\n regularContent: string,\n functionCalls: any[],\n inlineDataParts: any[],\n executableCodeParts: any[],\n codeExecutionResultParts: any[],\n lastResult: any,\n lastThoughtSignature: string | null,\n lastRegularThoughtSignature: string | null\n) => {\n const response = { ...lastResult };\n const finalParts: any[] = [];\n\n if (thoughtContent) {\n const part: any = { text: thoughtContent, thought: true };\n if (lastThoughtSignature) part.thoughtSignature = lastThoughtSignature;\n finalParts.push(part);\n }\n\n if (regularContent) {\n const part: any = { text: regularContent, thought: null };\n if (lastRegularThoughtSignature) part.thoughtSignature = lastRegularThoughtSignature;\n finalParts.push(part);\n }\n\n for (const executableCode of executableCodeParts) {\n finalParts.push({ executableCode });\n }\n\n for (const codeExecutionResult of codeExecutionResultParts) {\n finalParts.push({ codeExecutionResult });\n }\n\n for (const inlineData of inlineDataParts) {\n finalParts.push({ inlineData });\n }\n\n for (const functionCall of functionCalls) {\n finalParts.push({ functionCall });\n }\n\n if (finalParts.length > 0 && response.candidates?.[0]?.content) {\n response.candidates[0].content.parts = finalParts;\n }\n\n const lastCandidate = lastResult?.candidates?.[0];\n if (lastCandidate) {\n if (!response.candidates) response.candidates = [];\n if (!response.candidates[0]) response.candidates[0] = { content: { parts: [] } };\n if (lastCandidate.groundingMetadata != null) {\n response.candidates[0].groundingMetadata = lastCandidate.groundingMetadata;\n }\n if (lastCandidate.urlContextMetadata != null) {\n response.candidates[0].urlContextMetadata = lastCandidate.urlContextMetadata;\n }\n if (lastCandidate.citationMetadata != null) {\n response.candidates[0].citationMetadata = lastCandidate.citationMetadata;\n }\n }\n\n return response;\n};\n\nconst googleStreamResponse = (results: any[]) => {\n const { GenerateContentResponse } = require(\"@google/genai\");\n\n if (!results.length) {\n return new GenerateContentResponse();\n }\n\n let thoughtContent = \"\";\n let regularContent = \"\";\n const functionCalls: any[] = [];\n const inlineDataParts: any[] = [];\n const executableCodeParts: any[] = [];\n const codeExecutionResultParts: any[] = [];\n let lastThoughtSignature: string | null = null;\n let lastRegularThoughtSignature: string | null = null;\n\n for (const result of results) {\n if (result.candidates && result.candidates[0]?.content?.parts) {\n for (const part of result.candidates[0].content.parts) {\n if (part.text != null) {\n if (part.thought === true) {\n thoughtContent += part.text;\n if (part.thoughtSignature) lastThoughtSignature = part.thoughtSignature;\n } else {\n regularContent += part.text;\n if (part.thoughtSignature) lastRegularThoughtSignature = part.thoughtSignature;\n }\n } else if (part.functionCall) {\n functionCalls.push(part.functionCall);\n } else if (part.inlineData) {\n const raw = part.inlineData;\n inlineDataParts.push({\n data: raw.data ?? \"\",\n mimeType: raw.mimeType ?? \"image/png\",\n });\n } else if (part.executableCode) {\n executableCodeParts.push({\n code: part.executableCode.code ?? \"\",\n language: part.executableCode.language,\n });\n } else if (part.codeExecutionResult) {\n codeExecutionResultParts.push({\n output: part.codeExecutionResult.output ?? \"\",\n outcome: part.codeExecutionResult.outcome ?? \"OUTCOME_OK\",\n });\n }\n }\n }\n }\n\n return buildGoogleResponseFromParts(\n thoughtContent,\n regularContent,\n functionCalls,\n inlineDataParts,\n executableCodeParts,\n codeExecutionResultParts,\n results[results.length - 1],\n lastThoughtSignature,\n lastRegularThoughtSignature\n );\n};\n\nexport const googleStreamChat = (results: any[]) => {\n return googleStreamResponse(results);\n};\n\nexport const googleStreamCompletion = (results: any[]) => {\n return googleStreamResponse(results);\n};\n\nconst _RESPONSE_METADATA_KEYS = [\"size\", \"quality\", \"background\", \"output_format\"] as const;\n\nexport const openaiImagesStream = (results: any[]) => {\n const response_data: any = {\n created: null,\n data: [],\n usage: null,\n };\n\n const partial_images_by_index: Record<number, string> = {};\n let output_format = \"png\";\n\n for (const chunk of results as any[]) {\n const event_type = chunk?.type ?? \"\";\n\n if (event_type === \"image_generation.partial_image\") {\n const b64 = chunk.b64_json;\n if (b64 != null) {\n const idx = chunk.partial_image_index ?? 0;\n partial_images_by_index[idx] = b64;\n }\n } else if (event_type === \"image_generation.completed\") {\n const b64 = chunk.b64_json;\n if (b64 != null) {\n const idx = chunk.partial_image_index ?? 0;\n partial_images_by_index[idx] = b64;\n }\n response_data.created = chunk.created_at ?? response_data.created;\n response_data.usage = chunk.usage ?? response_data.usage;\n for (const key of _RESPONSE_METADATA_KEYS) {\n if (chunk[key] != null) response_data[key] = chunk[key];\n }\n if (chunk.output_format) output_format = chunk.output_format;\n }\n }\n\n if (!response_data.output_format) {\n response_data.output_format = output_format;\n }\n\n const indices = Object.keys(partial_images_by_index)\n .map(Number)\n .sort((a, b) => a - b);\n if (indices.length > 0) {\n response_data.data = indices.map((idx) => ({\n b64_json: partial_images_by_index[idx],\n }));\n }\n\n return response_data;\n};\n\nexport const cleaned_result = (\n results: any[],\n function_name = \"openai.chat.completions.create\"\n) => {\n if (\n function_name === \"openai.responses.create\" ||\n function_name === \"openai.AzureOpenAI.responses.create\"\n ) {\n return openaiResponsesStreamChat(results);\n }\n\n if (\n function_name === \"openai.images.generate\" ||\n function_name === \"openai.AzureOpenAI.images.generate\"\n ) {\n return openaiImagesStream(results);\n }\n\n if (\"completion\" in results[0]) {\n return results.reduce(\n (prev, current) => ({\n ...current,\n completion: `${prev.completion}${current.completion}`,\n }),\n {}\n );\n }\n\n if (function_name === \"anthropic.messages.create\")\n return anthropicStreamMessage(results);\n\n if (\"text\" in results[0].choices[0]) {\n let response = \"\";\n for (const result of results) {\n response = `${response}${result.choices[0].text}`;\n }\n const final_result = structuredClone(results.at(-1));\n final_result.choices[0].text = response;\n return final_result;\n }\n\n if (\"delta\" in results[0].choices[0]) {\n const response = openaiStreamChat(results);\n response.choices[0] = {\n ...response.choices[0],\n ...response.choices[0].message,\n };\n return response;\n }\n\n return \"\";\n};\n\n\nconst buildStreamBlueprint = (\n result: any,\n metadata: any,\n streamContext?: { anthropicBlockTypeByIndex?: Record<number, string> }\n) => {\n const provider = metadata.model.provider;\n const model = metadata.model.name;\n\n if (provider === \"anthropic\" || provider === \"anthropic.bedrock\" || (provider === \"vertexai\" && model.startsWith(\"claude\"))) {\n return buildPromptBlueprintFromAnthropicEvent(result, metadata, streamContext?.anthropicBlockTypeByIndex);\n }\n\n if (provider === \"google\" || (provider === \"vertexai\" && model.startsWith(\"gemini\"))) {\n return buildPromptBlueprintFromGoogleEvent(result, metadata);\n }\n\n if (provider === \"amazon.bedrock\") {\n return buildPromptBlueprintFromBedrockEvent(result, metadata);\n }\n\n if (provider === \"mistral\") {\n return buildPromptBlueprintFromOpenAIEvent(result.data, metadata);\n }\n\n if (provider === \"openai\" || provider === \"openai.azure\") {\n const api_type = metadata.model.api_type || \"chat-completions\";\n if (api_type === \"responses\") {\n return buildPromptBlueprintFromOpenAIResponsesEvent(result, metadata);\n }\n if (api_type === \"images\") {\n return buildPromptBlueprintFromOpenAIImagesEvent(result, metadata);\n }\n return buildPromptBlueprintFromOpenAIEvent(result, metadata);\n }\n\n return null;\n}\n\nexport async function* streamResponse<Item>(\n generator: AsyncIterable<Item> | any,\n afterStream: (body: object) => any,\n mapResults: any,\n metadata: any\n) {\n const data: {\n request_id: number | null;\n raw_response: any;\n prompt_blueprint: any;\n } = {\n request_id: null,\n raw_response: null,\n prompt_blueprint: null,\n };\n let response_metadata: any = {};\n const provider = metadata.model.provider;\n if (provider == \"amazon.bedrock\") {\n response_metadata = generator?.$metadata;\n generator = generator?.stream;\n }\n const results = [];\n const isAnthropic = provider === \"anthropic\" || provider === \"anthropic.bedrock\" || (provider === \"vertexai\" && metadata.model?.name?.startsWith?.(\"claude\"));\n const anthropicBlockTypeByIndex: Record<number, string> = {};\n for await (const result of generator) {\n results.push(result);\n if (isAnthropic && result?.type === \"content_block_start\" && result.content_block) {\n anthropicBlockTypeByIndex[result.index] = result.content_block.type;\n }\n data.raw_response = result;\n data.prompt_blueprint = buildStreamBlueprint(result, metadata, { anthropicBlockTypeByIndex });\n\n yield data;\n }\n const request_response = mapResults(results);\n if (provider === \"amazon.bedrock\") {\n request_response.ResponseMetadata = response_metadata;\n }\n data.raw_response = request_response;\n data.prompt_blueprint = buildStreamBlueprint(request_response, metadata);\n yield data;\n const response = await afterStream({ request_response });\n data.request_id = response.request_id;\n data.prompt_blueprint = response.prompt_blueprint;\n yield data;\n}\n\nexport const MAP_PROVIDER_TO_FUNCTION_NAME = {\n \"openai:chat-completions\": {\n chat: {\n function_name: \"openai.chat.completions.create\",\n stream_function: openaiStreamChat,\n },\n completion: {\n function_name: \"openai.completions.create\",\n stream_function: openaiStreamCompletion,\n },\n },\n \"openai:responses\": {\n chat: {\n function_name: \"openai.responses.create\",\n stream_function: openaiResponsesStreamChat,\n },\n },\n \"openai:images\": {\n completion: {\n function_name: \"openai.images.generate\",\n stream_function: openaiImagesStream,\n },\n },\n anthropic: {\n chat: {\n function_name: \"anthropic.messages.create\",\n stream_function: anthropicStreamMessage,\n },\n completion: {\n function_name: \"anthropic.completions.create\",\n stream_function: anthropicStreamCompletion,\n },\n },\n \"openai.azure:chat-completions\": {\n chat: {\n function_name: \"openai.AzureOpenAI.chat.completions.create\",\n stream_function: openaiStreamChat,\n },\n completion: {\n function_name: \"openai.AzureOpenAI.completions.create\",\n stream_function: openaiStreamCompletion,\n },\n },\n \"openai.azure:responses\": {\n chat: {\n function_name: \"openai.AzureOpenAI.responses.create\",\n stream_function: openaiResponsesStreamChat,\n },\n completion: {\n function_name: \"openai.AzureOpenAI.responses.create\",\n stream_function: openaiResponsesStreamChat,\n },\n },\n \"openai.azure:images\": {\n completion: {\n function_name: \"openai.AzureOpenAI.images.generate\",\n stream_function: openaiImagesStream,\n },\n },\n google: {\n chat: {\n function_name: \"google.convo.send_message\",\n stream_function: googleStreamChat,\n },\n completion: {\n function_name: \"google.model.generate_content\",\n stream_function: googleStreamCompletion,\n },\n },\n \"amazon.bedrock\": {\n chat: {\n function_name: \"boto3.bedrock-runtime.converse\",\n stream_function: bedrockStreamMessage,\n },\n completion: {\n function_name: \"boto3.bedrock-runtime.converse\",\n stream_function: bedrockStreamMessage,\n },\n },\n \"anthropic.bedrock\": {\n chat: {\n function_name: \"anthropic.messages.create\",\n stream_function: anthropicStreamMessage,\n },\n completion: {\n function_name: \"anthropic.completions.create\",\n stream_function: anthropicStreamCompletion,\n },\n },\n mistral: {\n chat: {\n function_name: \"mistral.client.chat\",\n stream_function: mistralStreamChat,\n },\n completion: {\n function_name: \"\",\n stream_function: null,\n },\n },\n};\n","import {\n GetPromptTemplateParams,\n GetPromptTemplateResponse,\n ListPromptTemplatesResponse,\n LogRequest,\n Pagination,\n PublishPromptTemplate,\n PublishPromptTemplateResponse,\n RequestLog,\n RunWorkflowRequestParams,\n TrackGroup,\n TrackMetadata,\n TrackPrompt,\n TrackRequest,\n TrackScore,\n WorkflowResponse,\n} from \"@/types\";\nimport type { AnthropicBedrock } from \"@anthropic-ai/bedrock-sdk\";\nimport type TypeAnthropic from \"@anthropic-ai/sdk\";\nimport type { AnthropicVertex } from \"@anthropic-ai/vertex-sdk\";\nimport Ably from \"ably\";\nimport { Centrifuge } from \"centrifuge\";\nimport type TypeOpenAI from \"openai\";\nimport pRetry from \"p-retry\";\nimport {\n MAP_PROVIDER_TO_FUNCTION_NAME,\n cleaned_result,\n STREAMING_PROVIDERS_WITH_USAGE,\n} from \"./streaming\";\n\n// SDK version - injected at build time from package.json\ndeclare const __SDK_VERSION__: string;\nexport const SDK_VERSION = __SDK_VERSION__;\n\n// Get Node.js version (major.minor format)\nconst getNodeVersion = (): string => {\n if (typeof process !== \"undefined\" && process.versions?.node) {\n const parts = process.versions.node.split(\".\");\n return `${parts[0]}.${parts[1]}`;\n }\n return \"unknown\";\n};\n\nconst _NODE_VERSION = getNodeVersion();\nconst _PROMPTLAYER_USER_AGENT = `promptlayer-js/${SDK_VERSION} (node ${_NODE_VERSION})`;\n\n/**\n * Returns common headers to be included in all PromptLayer API requests.\n * Includes the SDK version and user agent for tracking and debugging purposes.\n */\nexport const getCommonHeaders = (): Record<string, string> => ({\n \"User-Agent\": _PROMPTLAYER_USER_AGENT,\n \"X-SDK-Version\": SDK_VERSION,\n});\n\nexport const SET_WORKFLOW_COMPLETE_MESSAGE = \"SET_WORKFLOW_COMPLETE\";\n\nexport enum FinalOutputCode {\n OK = \"OK\",\n EXCEEDS_SIZE_LIMIT = \"EXCEEDS_SIZE_LIMIT\",\n}\n\nasync function getFinalOutput(\n baseURL: string,\n executionId: number,\n returnAllOutputs: boolean,\n headers: Record<string, string>\n): Promise<any> {\n const response = await fetchWithRetry(\n `${baseURL}/workflow-version-execution-results?workflow_version_execution_id=${executionId}&return_all_outputs=${returnAllOutputs}`,\n { headers, ...getCommonHeaders() }\n );\n if (!response.ok) {\n throw new Error(\"Failed to fetch final output\");\n }\n return response.json();\n}\n\nfunction makeMessageListener(\n baseURL: string,\n resultsPromise: { resolve: (data: any) => void; reject: (err: any) => void },\n executionId: number,\n returnAllOutputs: boolean,\n headers: Record<string, string>\n) {\n return async function (message: any) {\n if (message.name !== SET_WORKFLOW_COMPLETE_MESSAGE) return;\n\n try {\n const data = JSON.parse(message.data);\n const resultCode = data.result_code;\n let results;\n\n if (resultCode === FinalOutputCode.OK || resultCode == null) {\n results = data.final_output;\n } else if (resultCode === FinalOutputCode.EXCEEDS_SIZE_LIMIT) {\n results = await getFinalOutput(\n baseURL,\n executionId,\n returnAllOutputs,\n headers\n );\n resultsPromise.resolve(results);\n } else {\n throw new Error(`Unsupported final output code: ${resultCode}`);\n }\n\n resultsPromise.resolve(results);\n } catch (err) {\n resultsPromise.reject(err);\n }\n };\n}\n\ninterface WaitForWorkflowCompletionParams {\n token: string;\n channelName: string;\n executionId: number;\n returnAllOutputs: boolean;\n headers: Record<string, string>;\n timeout: number;\n baseURL: string;\n}\n\nasync function waitForWorkflowCompletion({\n token,\n channelName,\n executionId,\n returnAllOutputs,\n headers,\n timeout,\n baseURL,\n}: WaitForWorkflowCompletionParams): Promise<any> {\n const client = new Ably.Realtime(token);\n const channel = client.channels.get(channelName);\n\n const resultsPromise = {} as {\n resolve: (value: any) => void;\n reject: (reason?: any) => void;\n };\n\n const promise = new Promise<any>((resolve, reject) => {\n resultsPromise.resolve = resolve;\n resultsPromise.reject = reject;\n });\n\n const listener = makeMessageListener(\n baseURL,\n resultsPromise,\n executionId,\n returnAllOutputs,\n headers\n );\n await channel.subscribe(SET_WORKFLOW_COMPLETE_MESSAGE, listener);\n\n try {\n return await new Promise((resolve, reject) => {\n const timer = setTimeout(() => {\n reject(\n new Error(\"Workflow execution did not complete properly (timeout)\")\n );\n }, timeout);\n\n promise\n .then((result) => {\n clearTimeout(timer);\n resolve(result);\n })\n .catch((err) => {\n clearTimeout(timer);\n reject(err);\n });\n });\n } finally {\n console.log(\"Closing client\");\n channel.unsubscribe(SET_WORKFLOW_COMPLETE_MESSAGE, listener);\n client.close();\n console.log(\"Closed client\");\n }\n}\n\n/**\n * Wrapper around fetch that retries on 5xx server errors with exponential backoff.\n * Uses p-retry for industry-standard retry logic with exponential backoff.\n *\n * @param input - The URL or Request object to fetch\n * @param init - The request initialization options\n * @returns Promise<Response> - The fetch response\n */\nexport const fetchWithRetry = async (\n input: RequestInfo | URL,\n init?: RequestInit\n): Promise<Response> => {\n return pRetry(\n async () => {\n const response = await fetch(input, init);\n\n if ((response.status >= 500 && response.status < 600) || (response.status === 429)) {\n throw new Error(\n `Server error: ${response.status} ${response.statusText}`\n );\n }\n\n return response;\n },\n {\n retries: 3, // Retry up to 3 times (4 total attempts)\n factor: 2, // Exponential backoff factor\n minTimeout: 2000, // First retry after 2 seconds\n maxTimeout: 15000, // Cap at 15 seconds (gives us ~2s, ~4s, ~8s progression with randomization)\n randomize: true, // Add jitter to avoid thundering herd\n onFailedAttempt: (error) => {\n console.info(\n `PromptLayer API request attempt ${error.attemptNumber} failed. ${error.retriesLeft} retries left.`\n );\n },\n }\n );\n};\n\nconst promptlayerApiHandler = async <Item>(\n apiKey: string,\n baseURL: string,\n body: TrackRequest & {\n request_response: AsyncIterable<Item> | any;\n },\n throwOnError: boolean = true\n) => {\n const isGenerator = body.request_response[Symbol.asyncIterator] !== undefined;\n if (isGenerator) {\n return proxyGenerator(\n apiKey,\n baseURL,\n body.request_response,\n body,\n throwOnError\n );\n }\n return await promptLayerApiRequest(apiKey, baseURL, body, throwOnError);\n};\n\nconst promptLayerApiRequest = async (\n apiKey: string,\n baseURL: string,\n body: TrackRequest,\n throwOnError: boolean = true\n) => {\n try {\n const response = await fetchWithRetry(`${baseURL}/track-request`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to log request\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n }\n if (data && body.return_pl_id) {\n return [body.request_response, data.request_id];\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return body.request_response;\n};\n\nconst promptLayerTrackMetadata = async (\n apiKey: string,\n baseURL: string,\n body: TrackMetadata,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/library-track-metadata`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track metadata\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging metadata to your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While logging metadata to your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackScore = async (\n apiKey: string,\n baseURL: string,\n body: TrackScore,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/library-track-score`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track score\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While scoring your request, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While scoring your request, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackPrompt = async (\n apiKey: string,\n baseURL: string,\n body: TrackPrompt,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/library-track-prompt`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track prompt\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a prompt template, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While associating your request with a prompt template, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerTrackGroup = async (\n apiKey: string,\n baseURL: string,\n body: TrackGroup,\n throwOnError: boolean = true\n): Promise<boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/track-group`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n ...body,\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track group\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While associating your request with a group, PromptLayer experienced the following error\"\n );\n return false;\n }\n }\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While associating your request with a group, PromptLayer experienced the following error: ${e}`\n );\n return false;\n }\n return true;\n};\n\nconst promptLayerCreateGroup = async (\n apiKey: string,\n baseURL: string,\n throwOnError: boolean = true\n): Promise<number | boolean> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/create-group`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify({\n api_key: apiKey,\n }),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to create group\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While creating a group PromptLayer had the following error\"\n );\n return false;\n }\n }\n return data.id;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While creating a group PromptLayer had the following error: ${e}`\n );\n return false;\n }\n};\n\nconst getPromptTemplate = async (\n apiKey: string,\n baseURL: string,\n promptName: string,\n params?: Partial<GetPromptTemplateParams>,\n throwOnError: boolean = true\n): Promise<GetPromptTemplateResponse | null> => {\n try {\n const url = new URL(`${baseURL}/prompt-templates/${promptName}`);\n const response = await fetchWithRetry(url, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-KEY\": apiKey,\n ...getCommonHeaders(),\n },\n body: JSON.stringify(params),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to fetch prompt template\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${errorMessage}`\n );\n return null;\n }\n }\n if (data.warning) {\n console.warn(\n `WARNING: While fetching your prompt PromptLayer had the following error: ${data.warning}`\n );\n }\n return data as GetPromptTemplateResponse;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While fetching a prompt template PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst publishPromptTemplate = async (\n apiKey: string,\n baseURL: string,\n body: PublishPromptTemplate,\n throwOnError: boolean = true\n): Promise<PublishPromptTemplateResponse> => {\n const response = await fetchWithRetry(`${baseURL}/rest/prompt-templates`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n body: JSON.stringify({\n prompt_template: { ...body },\n prompt_version: { ...body },\n release_labels: body.release_labels ? body.release_labels : undefined,\n }),\n });\n const data = await response.json();\n if (response.status !== 200 && response.status !== 201) {\n const errorMessage =\n data.message || data.error || \"Failed to publish prompt template\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While publishing a prompt template PromptLayer had the following error\"\n );\n }\n }\n return data as PublishPromptTemplateResponse;\n};\n\nconst getAllPromptTemplates = async (\n apiKey: string,\n baseURL: string,\n params?: Partial<Pagination>,\n throwOnError: boolean = true\n): Promise<Array<ListPromptTemplatesResponse>> => {\n const url = new URL(`${baseURL}/prompt-templates`);\n Object.entries(params || {}).forEach(([key, value]) =>\n url.searchParams.append(key, value.toString())\n );\n const response = await fetchWithRetry(url, {\n headers: { \"Content-Type\": \"application/json\", \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to fetch prompt templates\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While fetching all prompt templates PromptLayer had the following error\"\n );\n return [];\n }\n }\n return (data.items ?? []) as Array<ListPromptTemplatesResponse>;\n};\n\nconst waitForWorkflowCompletionCentrifugo = async (\n params: WaitForWorkflowCompletionParams\n): Promise<any> => {\n const url = new URL(`${params.baseURL}/connection/websocket`);\n url.protocol = url.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n\n const client = new Centrifuge(url.toString(), { token: params.token });\n const sub = client.newSubscription(params.channelName);\n\n return new Promise((resolve, reject) => {\n const cleanupWithResolve = (data: any) => {\n cleanup();\n resolve(data);\n };\n\n const listener = makeMessageListener(\n params.baseURL,\n { resolve: cleanupWithResolve, reject },\n params.executionId,\n params.returnAllOutputs,\n params.headers\n );\n\n sub.on(\"publication\", (message) => {\n listener({\n name: message.data.message_name,\n data: message.data.data,\n });\n });\n\n const timeout = setTimeout(() => {\n reject(\n new Error(\"Workflow execution did not complete properly (timeout)\")\n );\n }, params.timeout);\n\n const cleanup = () => {\n clearTimeout(timeout);\n sub.unsubscribe();\n client.disconnect();\n };\n\n sub.on(\"error\", (err) => {\n cleanup();\n reject(`Centrifugo subscription error: ${err}`);\n });\n\n client.on(\"error\", (err) => {\n cleanup();\n reject(`Centrifugo client error: ${err}`);\n });\n\n sub.subscribe();\n client.connect();\n });\n};\n\nexport const runWorkflowRequest = async ({\n workflow_name,\n input_variables,\n metadata = {},\n workflow_label_name = null,\n workflow_version_number = null,\n return_all_outputs = false,\n api_key,\n timeout = 3600000, // Default timeout is 1 hour in milliseconds\n baseURL,\n}: RunWorkflowRequestParams): Promise<WorkflowResponse> => {\n const payload = {\n input_variables,\n metadata,\n workflow_label_name,\n workflow_version_number,\n return_all_outputs,\n };\n\n const headers = { \"Content-Type\": \"application/json\", \"X-API-KEY\": api_key, ...getCommonHeaders() };\n\n try {\n const response = await fetchWithRetry(\n `${baseURL}/workflows/${encodeURIComponent(workflow_name)}/run`,\n {\n method: \"POST\",\n headers: headers,\n body: JSON.stringify(payload),\n }\n );\n\n if (response.status !== 201) {\n const errorData = await response.json().catch(() => ({}));\n return {\n success: false,\n message: `Failed to run workflow: ${\n errorData.error || response.statusText\n }`,\n };\n }\n\n const result = await response.json();\n if (result.warning) {\n console.warn(`WARNING: ${result.warning}`);\n }\n const execution_id = result.workflow_version_execution_id;\n if (!execution_id) {\n console.log(\"No execution ID returned from workflow run\");\n return { success: false, message: \"Failed to run workflow\" };\n }\n\n const channel_name = `workflow_updates:${execution_id}`;\n const ws_response = await fetchWithRetry(\n `${baseURL}/ws-token-request-library?capability=${channel_name}`,\n {\n method: \"POST\",\n headers: headers,\n }\n );\n\n const ws_token_response = await ws_response.json();\n const token = ws_token_response.token_details.token;\n\n const params: WaitForWorkflowCompletionParams = {\n token,\n channelName: channel_name,\n executionId: execution_id,\n returnAllOutputs: return_all_outputs,\n headers: headers,\n timeout: timeout,\n baseURL: baseURL,\n };\n if (ws_token_response.messaging_backend === \"centrifugo\")\n return waitForWorkflowCompletionCentrifugo(params);\n return await waitForWorkflowCompletion(params);\n } catch (error) {\n console.error(\n `Failed to run workflow: ${\n error instanceof Error ? error.message : error\n }`\n );\n throw error;\n }\n};\n\nasync function* proxyGenerator<Item>(\n apiKey: string,\n baseURL: string,\n generator: AsyncIterable<Item>,\n body: TrackRequest,\n throwOnError: boolean = true\n) {\n const results = [];\n for await (const value of generator) {\n yield body.return_pl_id ? [value, null] : value;\n results.push(value);\n }\n const request_response = cleaned_result(results, body.function_name);\n const response = await promptLayerApiRequest(\n apiKey,\n baseURL,\n {\n ...body,\n request_response,\n request_end_time: new Date().toISOString(),\n },\n throwOnError\n );\n if (response) {\n if (body.return_pl_id) {\n const request_id = (response as any)[1];\n const lastResult = results.at(-1);\n yield [lastResult, request_id];\n }\n }\n}\n\nconst warnOnBadResponse = (request_response: any, main_message: string) => {\n try {\n console.warn(`${main_message}: ${request_response.message}`);\n } catch (e) {\n console.warn(`${main_message}: ${request_response}`);\n }\n};\n\nconst trackRequest = async (\n baseURL: string,\n body: TrackRequest,\n throwOnError: boolean = true\n) => {\n try {\n const response = await fetchWithRetry(`${baseURL}/track-request`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", ...getCommonHeaders() },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 200) {\n const errorMessage =\n data.message || data.error || \"Failed to track request\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request, PromptLayer experienced the following error:\"\n );\n }\n }\n return data;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While logging your request PromptLayer had the following error: ${e}`\n );\n }\n return {};\n};\n\nconst openaiChatRequest = async (client: TypeOpenAI, kwargs: any) => {\n return await client.chat.completions.create(kwargs);\n};\n\nconst openaiCompletionsRequest = async (client: TypeOpenAI, kwargs: any) => {\n return await client.completions.create(kwargs);\n};\n\nconst MAP_TYPE_TO_OPENAI_FUNCTION = {\n chat: openaiChatRequest,\n completion: openaiCompletionsRequest,\n};\n\nconst openaiRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const OpenAI = require(\"openai\").default;\n const client = new OpenAI({\n baseURL: kwargs.baseURL,\n apiKey: kwargs.apiKey,\n });\n\n delete kwargs?.apiKey;\n delete kwargs?.baseURL;\n\n const api_type = promptBlueprint.metadata?.model?.api_type;\n if (api_type === \"chat-completions\") {\n const requestToMake =\n MAP_TYPE_TO_OPENAI_FUNCTION[promptBlueprint.prompt_template.type];\n return await requestToMake(client, kwargs);\n } else if (api_type === \"images\") {\n return await client.images.generate(kwargs);\n } else {\n return await client.responses.create(kwargs);\n }\n};\n\nconst azureOpenAIRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { AzureOpenAI } = require(\"openai\");\n const client = new AzureOpenAI({\n endpoint: process.env.AZURE_OPENAI_ENDPOINT || kwargs.baseURL,\n apiVersion: process.env.OPENAI_API_VERSION || kwargs.apiVersion,\n apiKey: process.env.AZURE_OPENAI_API_KEY || kwargs.apiKey,\n });\n delete kwargs?.baseURL;\n delete kwargs?.apiVersion;\n delete kwargs?.apiKey;\n\n const api_type = promptBlueprint.metadata?.model?.api_type;\n\n if (api_type === \"chat-completions\") {\n const requestToMake = MAP_TYPE_TO_OPENAI_FUNCTION[promptBlueprint.prompt_template.type];\n return await requestToMake(client, kwargs);\n } else if (api_type === \"images\") {\n return await client.images.generate(kwargs);\n } else {\n return await client.responses.create(kwargs);\n }\n};\n\nconst anthropicChatRequest = async (\n client: TypeAnthropic | AnthropicVertex | AnthropicBedrock,\n kwargs: any\n) => {\n return client.messages.create(kwargs);\n};\n\nconst anthropicCompletionsRequest = async (\n client: TypeAnthropic | AnthropicBedrock,\n kwargs: any\n) => {\n return client.completions.create(kwargs);\n};\n\nconst MAP_TYPE_TO_ANTHROPIC_FUNCTION = {\n chat: anthropicChatRequest,\n completion: anthropicCompletionsRequest,\n};\n\nconst anthropicRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const Anthropic = require(\"@anthropic-ai/sdk\").default;\n const client = new Anthropic({\n baseURL: kwargs.baseURL,\n apiKey: kwargs.apiKey,\n });\n const requestToMake =\n MAP_TYPE_TO_ANTHROPIC_FUNCTION[promptBlueprint.prompt_template.type];\n return requestToMake(client, kwargs);\n};\n\nconst utilLogRequest = async (\n apiKey: string,\n baseURL: string,\n body: LogRequest,\n throwOnError: boolean = true\n): Promise<RequestLog | null> => {\n try {\n const response = await fetchWithRetry(`${baseURL}/log-request`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\", \"X-API-KEY\": apiKey, ...getCommonHeaders() },\n body: JSON.stringify(body),\n });\n const data = await response.json();\n if (response.status !== 201) {\n const errorMessage =\n data.message || data.error || \"Failed to log request\";\n if (throwOnError) {\n throw new Error(errorMessage);\n } else {\n warnOnBadResponse(\n data,\n \"WARNING: While logging your request PromptLayer had the following error\"\n );\n return null;\n }\n }\n return data;\n } catch (e) {\n if (throwOnError) {\n throw e;\n }\n console.warn(\n `WARNING: While tracking your prompt PromptLayer had the following error: ${e}`\n );\n return null;\n }\n};\n\nconst googleChatRequest = async (model_client: any, kwargs: any) => {\n const history = kwargs?.history;\n const generationConfig = kwargs?.generationConfig;\n const lastMessage =\n history.length > 0 ? history[history.length - 1]?.parts : \"\";\n const chat = model_client.chats.create({\n model: kwargs?.model,\n history: history.slice(0, -1) ?? [],\n config: generationConfig,\n });\n\n if (kwargs?.stream)\n return await chat.sendMessageStream({ message: lastMessage });\n return await chat.sendMessage({ message: lastMessage });\n};\n\nconst googleCompletionsRequest = async (\n model_client: any,\n { stream, ...kwargs }: any\n) => {\n if (stream) return await model_client.generateContentStream({ ...kwargs });\n return await model_client.generateContent({ ...kwargs });\n};\n\nconst MAP_TYPE_TO_GOOGLE_FUNCTION = {\n chat: googleChatRequest,\n completion: googleCompletionsRequest,\n};\n\nconst googleRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { GoogleGenAI } = await import(\"@google/genai\");\n\n const geminiAPI = process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY;\n const project =\n process.env.VERTEX_AI_PROJECT_ID ||\n process.env.GOOGLE_PROJECT_ID ||\n process.env.GOOGLE_CLOUD_PROJECT;\n const location =\n process.env.VERTEX_AI_PROJECT_LOCATION ||\n process.env.GOOGLE_PROJECT_LOCATION ||\n process.env.GOOGLE_CLOUD_PROJECT_LOCATION;\n const googleAuthOptions = {\n keyFilename: process.env.GOOGLE_APPLICATION_CREDENTIALS,\n projectId: project,\n scopes: [\"https://www.googleapis.com/auth/cloud-platform\"],\n };\n\n const genAI = geminiAPI\n ? new GoogleGenAI({ apiKey: geminiAPI })\n : new GoogleGenAI({\n vertexai: true,\n project: project,\n location: location,\n googleAuthOptions,\n });\n const requestToMake =\n MAP_TYPE_TO_GOOGLE_FUNCTION[promptBlueprint.prompt_template.type];\n\n return await requestToMake(genAI, kwargs);\n};\n\nconst snakeToCamel = (str: string): string =>\n str.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());\n\nconst convertKeysToCamelCase = <T>(\n obj: T,\n ignoreValuesWithKeys: Set<string> = new Set()\n): T => {\n if (!obj || typeof obj !== \"object\") return obj;\n if (Array.isArray(obj))\n return obj.map((item) =>\n convertKeysToCamelCase(item, ignoreValuesWithKeys)\n ) as T;\n\n return Object.fromEntries(\n Object.entries(obj).map(([key, value]) => {\n if (ignoreValuesWithKeys.has(key)) {\n return [snakeToCamel(key), value];\n }\n return [\n snakeToCamel(key),\n convertKeysToCamelCase(value, ignoreValuesWithKeys),\n ];\n })\n ) as T;\n};\n\nconst configureProviderSettings = (\n promptBlueprint: any,\n customProvider: any,\n modelParameterOverrides: any = {},\n stream: boolean = false\n) => {\n const provider_type =\n customProvider?.client ?? promptBlueprint.metadata?.model?.provider;\n const api_type = promptBlueprint.metadata?.model?.api_type;\n\n if (!provider_type) {\n throw new Error(\n \"Provider type not found in prompt blueprint or custom provider\"\n );\n }\n\n let kwargs = {\n ...(promptBlueprint.llm_kwargs || {}),\n stream,\n };\n\n if (\n [\"google\", \"vertexai\"].includes(provider_type) &&\n promptBlueprint.metadata?.model?.name.startsWith(\"gemini\")\n )\n kwargs = convertKeysToCamelCase(\n kwargs,\n new Set([\"function_declarations\", \"properties\"])\n );\n\n const providerConfig = {\n baseURL: customProvider?.base_url ?? promptBlueprint.provider_base_url?.url,\n apiKey: customProvider?.api_key,\n };\n\n Object.entries(providerConfig).forEach(([key, value]) => {\n if (value !== undefined) {\n kwargs[key] = value;\n }\n });\n\n if (stream && STREAMING_PROVIDERS_WITH_USAGE.includes(provider_type as any) && api_type === \"chat-completions\") {\n kwargs.stream_options = { include_usage: true };\n }\n\n return { provider_type, kwargs };\n};\n\nconst getProviderConfig = (provider_type: string, promptTemplate: any) => {\n const providerMap =\n MAP_PROVIDER_TO_FUNCTION_NAME[\n provider_type as keyof typeof MAP_PROVIDER_TO_FUNCTION_NAME\n ];\n\n if (!providerMap) {\n throw new Error(`Unsupported provider type: ${provider_type}`);\n }\n\n const templateType = promptTemplate.type as keyof typeof providerMap;\n const config = providerMap[templateType];\n\n if (!config) {\n throw new Error(\n `Unsupported template type '${promptTemplate.type}' for provider '${provider_type}'`\n );\n }\n\n return config;\n};\n\nconst vertexaiRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const model = promptBlueprint.metadata?.model;\n if (!model) throw new Error(\"Model metadata not found in prompt blueprint\");\n if (model.name.startsWith(\"gemini\"))\n return googleRequest(promptBlueprint, kwargs);\n if (model.name.startsWith(\"claude\")) {\n const { AnthropicVertex } = await import(\"@anthropic-ai/vertex-sdk\");\n const client = new AnthropicVertex({ baseURL: kwargs.baseURL });\n if (promptBlueprint.prompt_template.type === \"chat\")\n return anthropicChatRequest(client, kwargs);\n throw new Error(\n `Unsupported prompt template type '${promptBlueprint.prompt_template.type}' for Anthropic Vertex AI`\n );\n }\n throw new Error(\n `Unsupported model name '${model.name}' for Vertex AI request`\n );\n};\n\nconst amazonBedrockRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand } =\n await import(\"@aws-sdk/client-bedrock-runtime\");\n const client = new BedrockRuntimeClient({\n credentials: {\n accessKeyId: kwargs?.aws_access_key || process.env.AWS_ACCESS_KEY_ID,\n secretAccessKey:\n kwargs?.aws_secret_key || process.env.AWS_SECRET_ACCESS_KEY,\n sessionToken: kwargs?.aws_session_token || process.env.AWS_SESSION_TOKEN,\n },\n region:\n kwargs?.aws_region ||\n process.env.AWS_REGION ||\n process.env.AWS_DEFAULT_REGION ||\n \"us-east-1\",\n });\n\n if (kwargs?.stream) {\n delete kwargs.stream;\n const command = new ConverseStreamCommand({\n ...kwargs,\n });\n return await client.send(command);\n } else {\n delete kwargs?.stream;\n const command = new ConverseCommand({\n ...kwargs,\n });\n return await client.send(command);\n }\n};\n\nconst anthropicBedrockRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { AnthropicBedrock } = await import(\"@anthropic-ai/bedrock-sdk\");\n const client = new AnthropicBedrock({\n awsAccessKey: kwargs.aws_access_key,\n awsSecretKey: kwargs.aws_secret_key,\n awsRegion: kwargs.aws_region,\n awsSessionToken: kwargs.aws_session_token,\n baseURL: kwargs.base_url,\n });\n\n const requestToMake =\n MAP_TYPE_TO_ANTHROPIC_FUNCTION[promptBlueprint.prompt_template.type];\n return requestToMake(client, kwargs);\n};\n\nconst mistralRequest = async (\n promptBlueprint: GetPromptTemplateResponse,\n kwargs: any\n) => {\n const { Mistral } = await import(\"@mistralai/mistralai\");\n const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });\n kwargs = convertKeysToCamelCase(kwargs, new Set());\n if (kwargs?.stream) {\n delete kwargs.stream;\n return await client.chat.stream(kwargs);\n }\n delete kwargs.stream;\n return await client.chat.complete(kwargs);\n};\n\nexport const readEnv = (env: string): string | undefined => {\n if (typeof (globalThis as any).process !== \"undefined\")\n return (globalThis as any).process.env?.[env]?.trim() ?? undefined;\n\n if (typeof (globalThis as any).Deno !== \"undefined\")\n return (globalThis as any).Deno.env?.get?.(env)?.trim();\n return undefined;\n};\n\nexport const requirePromptLayerApiKey = (apiKey?: string): string => {\n if (apiKey !== undefined) {\n const explicitApiKey = apiKey.trim();\n if (!explicitApiKey) {\n throw new Error(\n \"PromptLayer API key not provided. Please set PROMPTLAYER_API_KEY or pass apiKey.\"\n );\n }\n return explicitApiKey;\n }\n\n const envApiKey = readEnv(\"PROMPTLAYER_API_KEY\");\n if (!envApiKey) {\n throw new Error(\n \"PromptLayer API key not provided. Please set PROMPTLAYER_API_KEY or pass apiKey.\"\n );\n }\n\n return envApiKey;\n};\n\nexport {\n amazonBedrockRequest,\n anthropicBedrockRequest,\n anthropicRequest,\n azureOpenAIRequest,\n configureProviderSettings,\n getAllPromptTemplates,\n getPromptTemplate,\n getProviderConfig,\n googleRequest,\n mistralRequest,\n openaiRequest,\n promptlayerApiHandler,\n promptLayerApiRequest,\n promptLayerCreateGroup,\n promptLayerTrackGroup,\n promptLayerTrackMetadata,\n promptLayerTrackPrompt,\n promptLayerTrackScore,\n publishPromptTemplate,\n trackRequest,\n utilLogRequest,\n vertexaiRequest,\n warnOnBadResponse,\n};\n"],"mappings":"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","names":["OUTPUT_FORMAT_TO_MIME","_buildToolCall","id","name","args","tool_id","__spreadValues","_buildContentBlock","_a","_b","type","item_id","rest","__objRest","contentBlock","_buildAssistantMessage","content","tool_calls","_buildPromptTemplate","assistantMessage","metadata","_parseAnthropicWebAnnotation","c","_c","_d","buildPromptBlueprintFromAnthropicEvent","event","blockTypeByIndex","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","assistantContent","block","blockType","text","rawCitations","annotations","contentList","searchResults","r","rr","citation","_isImageMimeType","mimeType","_getChunkWebInfo","chunk","web","_getFullResponseTextFromCandidate","candidate","partList","texts","part","_citationMetadataToAnnotations","citationMetadata","citations","uri","startIndex","endIndex","_candidateToAnnotations","fullResponseText","groundingMetadata","fromGrounding","_groundingMetadataToAnnotations","fromCitation","chunks","supports","citedTextForSegment","segment","segmentText","seenFileIds","support","chunkIndices","citedText","chunkIdx","maps","title","placeId","__spreadProps","retrieved","idx","buildPromptBlueprintFromGoogleEvent","exec","result","inlineData","data","providerMetadata","firstCandidate","allAnnotations","i","existing","buildPromptBlueprintFromOpenAIEvent","choice","toolCalls","toolCall","buildPromptBlueprintFromOpenAIResponsesEvent","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","_Ea","_Fa","_Ga","_Ha","_Ia","_Ja","_Ka","_La","_Ma","_Na","_Oa","_Pa","_Qa","_Ra","_Sa","_Ta","_Ua","_Va","_Wa","_Xa","_Ya","_Za","__a","_$a","_ab","_bb","_cb","_db","_eb","_fb","_gb","_hb","_ib","_jb","_kb","_lb","_mb","_nb","_ob","_pb","_qb","_rb","_sb","_tb","_ub","_vb","_wb","_xb","_yb","_zb","_Ab","_Bb","_Cb","_Db","_Eb","_Fb","_Gb","_Hb","_Ib","_Jb","_Kb","_Lb","_Mb","_Nb","event_type","delta","final_text","final_arguments","item","item_type","part_type","annotation","atype","mapped_annotation","delta_text","summary_text","summary_part","content_part","mime_type","provider_metadata","key","response","output","buildPromptBlueprintFromBedrockEvent","reasoningText","signature","toolUse","startBlock","_RESPONSE_METADATA_KEYS","buildPromptBlueprintFromOpenAIImagesEvent","b64","output_format","partial_image_index","STREAMING_PROVIDERS_WITH_USAGE","openaiResponsesStreamChat","results","_a","_b","_c","_d","_e","_f","_g","_h","_i","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","_y","_z","_A","_B","_C","_D","_E","_F","_G","_H","_I","_J","_K","_L","_M","_N","_O","_P","_Q","_R","_S","_T","_U","_V","_W","_X","_Y","_Z","__","_$","_aa","_ba","_ca","_da","_ea","_fa","_ga","_ha","_ia","_ja","_ka","_la","_ma","_na","_oa","_pa","_qa","_ra","_sa","_ta","_ua","_va","_wa","_xa","_ya","_za","_Aa","_Ba","_Ca","_Da","_Ea","_Fa","_Ga","_Ha","_Ia","_Ja","_Ka","_La","_Ma","_Na","_Oa","_Pa","_Qa","_Ra","_Sa","_Ta","_Ua","_Va","_Wa","_Xa","_Ya","_Za","__a","_$a","_ab","_bb","_cb","_db","_eb","_fb","_gb","_hb","_ib","_jb","_kb","_lb","_mb","_nb","_ob","_pb","response_data","current_items","output_index_to_item_id","chunk","event_type","response","text_config","reasoning","item","item_id","item_type","output_index","part","summary_part","delta","summary_index","final_text","final_arguments","messageItem","it","content_part","delta_text","last","action","idx","existing","operation","openaiStreamChat","content","functionCall","lastResult","toolCalls","result","toolCall","lastToolCall","firstChoice","openaiStreamCompletion","text","anthropicStreamMessage","currentBlock","currentBlockIndex","currentSignature","currentThinking","currentText","currentToolInputJson","citationsByBlockIndex","event","__spreadValues","eventIndex","citation","annotation","e","__spreadProps","anthropicStreamCompletion","completion","mistralStreamChat","bedrockStreamMessage","content_blocks","current_tool_call","current_tool_input","current_text","current_signature","current_thinking","content_block","tool_use","reasoning_content","input_chunk","metadata","buildGoogleResponseFromParts","thoughtContent","regularContent","functionCalls","inlineDataParts","executableCodeParts","codeExecutionResultParts","lastThoughtSignature","lastRegularThoughtSignature","finalParts","executableCode","codeExecutionResult","inlineData","lastCandidate","googleStreamResponse","GenerateContentResponse","raw","googleStreamChat","googleStreamCompletion","_RESPONSE_METADATA_KEYS","openaiImagesStream","partial_images_by_index","output_format","b64","key","indices","a","b","cleaned_result","function_name","prev","current","final_result","buildStreamBlueprint","streamContext","provider","model","buildPromptBlueprintFromAnthropicEvent","buildPromptBlueprintFromGoogleEvent","buildPromptBlueprintFromBedrockEvent","buildPromptBlueprintFromOpenAIEvent","api_type","buildPromptBlueprintFromOpenAIResponsesEvent","buildPromptBlueprintFromOpenAIImagesEvent","streamResponse","generator","afterStream","mapResults","__asyncGenerator","data","response_metadata","isAnthropic","anthropicBlockTypeByIndex","iter","__forAwait","more","temp","error","__await","request_response","MAP_PROVIDER_TO_FUNCTION_NAME","Ably","Centrifuge","pRetry","SDK_VERSION","getNodeVersion","_a","parts","_NODE_VERSION","_PROMPTLAYER_USER_AGENT","getCommonHeaders","SET_WORKFLOW_COMPLETE_MESSAGE","getFinalOutput","baseURL","executionId","returnAllOutputs","headers","__async","response","fetchWithRetry","__spreadValues","getCommonHeaders","makeMessageListener","resultsPromise","message","SET_WORKFLOW_COMPLETE_MESSAGE","data","resultCode","results","err","waitForWorkflowCompletion","_0","token","channelName","timeout","client","Ably","channel","promise","resolve","reject","listener","timer","result","input","init","pRetry","error","promptlayerApiHandler","apiKey","body","throwOnError","proxyGenerator","promptLayerApiRequest","errorMessage","warnOnBadResponse","e","promptLayerTrackMetadata","__spreadProps","promptLayerTrackScore","promptLayerTrackPrompt","promptLayerTrackGroup","promptLayerCreateGroup","getPromptTemplate","promptName","params","url","publishPromptTemplate","getAllPromptTemplates","_a","key","value","waitForWorkflowCompletionCentrifugo","Centrifuge","sub","cleanupWithResolve","cleanup","runWorkflowRequest","workflow_name","input_variables","metadata","workflow_label_name","workflow_version_number","return_all_outputs","api_key","payload","execution_id","channel_name","ws_token_response","generator","__asyncGenerator","iter","__forAwait","more","temp","__await","request_response","cleaned_result","request_id","main_message","trackRequest","openaiChatRequest","kwargs","openaiCompletionsRequest","MAP_TYPE_TO_OPENAI_FUNCTION","openaiRequest","promptBlueprint","_b","OpenAI","api_type","requestToMake","azureOpenAIRequest","AzureOpenAI","anthropicChatRequest","anthropicCompletionsRequest","MAP_TYPE_TO_ANTHROPIC_FUNCTION","anthropicRequest","Anthropic","utilLogRequest","googleChatRequest","model_client","history","generationConfig","lastMessage","chat","googleCompletionsRequest","stream","__objRest","MAP_TYPE_TO_GOOGLE_FUNCTION","googleRequest","GoogleGenAI","geminiAPI","project","location","googleAuthOptions","genAI","snakeToCamel","str","_","letter","convertKeysToCamelCase","obj","ignoreValuesWithKeys","item","configureProviderSettings","customProvider","modelParameterOverrides","_c","_d","_e","_f","_g","_h","_i","provider_type","providerConfig","STREAMING_PROVIDERS_WITH_USAGE","getProviderConfig","promptTemplate","providerMap","MAP_PROVIDER_TO_FUNCTION_NAME","templateType","config","vertexaiRequest","model","AnthropicVertex","amazonBedrockRequest","BedrockRuntimeClient","ConverseCommand","ConverseStreamCommand","command","anthropicBedrockRequest","AnthropicBedrock","mistralRequest","Mistral","readEnv","env","requirePromptLayerApiKey","explicitApiKey","envApiKey"]}