@langchain/openai 1.2.7 → 1.2.8

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 (220) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/azure/chat_models/common.cjs +9 -10
  3. package/dist/azure/chat_models/common.cjs.map +1 -1
  4. package/dist/azure/chat_models/common.d.cts +0 -1
  5. package/dist/azure/chat_models/common.d.cts.map +1 -1
  6. package/dist/azure/chat_models/common.d.ts +0 -1
  7. package/dist/azure/chat_models/common.d.ts.map +1 -1
  8. package/dist/azure/chat_models/common.js +1 -1
  9. package/dist/azure/chat_models/common.js.map +1 -1
  10. package/dist/azure/chat_models/completions.cjs.map +1 -1
  11. package/dist/azure/chat_models/completions.d.cts.map +1 -1
  12. package/dist/azure/chat_models/completions.d.ts.map +1 -1
  13. package/dist/azure/chat_models/completions.js.map +1 -1
  14. package/dist/azure/chat_models/index.cjs.map +1 -1
  15. package/dist/azure/chat_models/index.d.cts +0 -1
  16. package/dist/azure/chat_models/index.d.cts.map +1 -1
  17. package/dist/azure/chat_models/index.d.ts +0 -1
  18. package/dist/azure/chat_models/index.d.ts.map +1 -1
  19. package/dist/azure/chat_models/index.js.map +1 -1
  20. package/dist/azure/chat_models/responses.cjs.map +1 -1
  21. package/dist/azure/chat_models/responses.d.cts.map +1 -1
  22. package/dist/azure/chat_models/responses.d.ts.map +1 -1
  23. package/dist/azure/chat_models/responses.js.map +1 -1
  24. package/dist/azure/embeddings.cjs +10 -13
  25. package/dist/azure/embeddings.cjs.map +1 -1
  26. package/dist/azure/embeddings.d.cts +1 -2
  27. package/dist/azure/embeddings.d.cts.map +1 -1
  28. package/dist/azure/embeddings.d.ts +1 -2
  29. package/dist/azure/embeddings.d.ts.map +1 -1
  30. package/dist/azure/embeddings.js +3 -5
  31. package/dist/azure/embeddings.js.map +1 -1
  32. package/dist/azure/llms.cjs +9 -10
  33. package/dist/azure/llms.cjs.map +1 -1
  34. package/dist/azure/llms.d.cts +2 -2
  35. package/dist/azure/llms.d.cts.map +1 -1
  36. package/dist/azure/llms.d.ts +2 -2
  37. package/dist/azure/llms.d.ts.map +1 -1
  38. package/dist/azure/llms.js +3 -3
  39. package/dist/azure/llms.js.map +1 -1
  40. package/dist/chat_models/base.cjs +38 -45
  41. package/dist/chat_models/base.cjs.map +1 -1
  42. package/dist/chat_models/base.d.cts.map +1 -1
  43. package/dist/chat_models/base.d.ts.map +1 -1
  44. package/dist/chat_models/base.js +10 -16
  45. package/dist/chat_models/base.js.map +1 -1
  46. package/dist/chat_models/completions.cjs +9 -13
  47. package/dist/chat_models/completions.cjs.map +1 -1
  48. package/dist/chat_models/completions.d.cts.map +1 -1
  49. package/dist/chat_models/completions.d.ts.map +1 -1
  50. package/dist/chat_models/completions.js +3 -6
  51. package/dist/chat_models/completions.js.map +1 -1
  52. package/dist/chat_models/index.cjs.map +1 -1
  53. package/dist/chat_models/index.d.cts.map +1 -1
  54. package/dist/chat_models/index.d.ts.map +1 -1
  55. package/dist/chat_models/index.js.map +1 -1
  56. package/dist/chat_models/profiles.cjs +291 -94
  57. package/dist/chat_models/profiles.cjs.map +1 -1
  58. package/dist/chat_models/profiles.js +291 -94
  59. package/dist/chat_models/profiles.js.map +1 -1
  60. package/dist/chat_models/responses.cjs +4 -7
  61. package/dist/chat_models/responses.cjs.map +1 -1
  62. package/dist/chat_models/responses.d.cts.map +1 -1
  63. package/dist/chat_models/responses.d.ts.map +1 -1
  64. package/dist/chat_models/responses.js +2 -4
  65. package/dist/chat_models/responses.js.map +1 -1
  66. package/dist/converters/completions.cjs +36 -45
  67. package/dist/converters/completions.cjs.map +1 -1
  68. package/dist/converters/completions.d.cts +0 -1
  69. package/dist/converters/completions.d.cts.map +1 -1
  70. package/dist/converters/completions.d.ts +0 -1
  71. package/dist/converters/completions.d.ts.map +1 -1
  72. package/dist/converters/completions.js +14 -22
  73. package/dist/converters/completions.js.map +1 -1
  74. package/dist/converters/index.js +2 -0
  75. package/dist/converters/responses.cjs +39 -54
  76. package/dist/converters/responses.cjs.map +1 -1
  77. package/dist/converters/responses.d.cts.map +1 -1
  78. package/dist/converters/responses.d.ts.map +1 -1
  79. package/dist/converters/responses.js +31 -45
  80. package/dist/converters/responses.js.map +1 -1
  81. package/dist/embeddings.cjs +11 -15
  82. package/dist/embeddings.cjs.map +1 -1
  83. package/dist/embeddings.d.cts +1 -3
  84. package/dist/embeddings.d.cts.map +1 -1
  85. package/dist/embeddings.d.ts +1 -3
  86. package/dist/embeddings.d.ts.map +1 -1
  87. package/dist/embeddings.js +3 -6
  88. package/dist/embeddings.js.map +1 -1
  89. package/dist/index.cjs +2 -2
  90. package/dist/llms.cjs +27 -33
  91. package/dist/llms.cjs.map +1 -1
  92. package/dist/llms.d.cts +0 -1
  93. package/dist/llms.d.cts.map +1 -1
  94. package/dist/llms.d.ts +0 -1
  95. package/dist/llms.d.ts.map +1 -1
  96. package/dist/llms.js +15 -20
  97. package/dist/llms.js.map +1 -1
  98. package/dist/tools/applyPatch.cjs +3 -4
  99. package/dist/tools/applyPatch.cjs.map +1 -1
  100. package/dist/tools/applyPatch.d.cts +0 -1
  101. package/dist/tools/applyPatch.d.cts.map +1 -1
  102. package/dist/tools/applyPatch.d.ts +0 -1
  103. package/dist/tools/applyPatch.d.ts.map +1 -1
  104. package/dist/tools/applyPatch.js.map +1 -1
  105. package/dist/tools/codeInterpreter.cjs.map +1 -1
  106. package/dist/tools/codeInterpreter.d.cts +0 -1
  107. package/dist/tools/codeInterpreter.d.cts.map +1 -1
  108. package/dist/tools/codeInterpreter.d.ts +0 -1
  109. package/dist/tools/codeInterpreter.d.ts.map +1 -1
  110. package/dist/tools/codeInterpreter.js.map +1 -1
  111. package/dist/tools/computerUse.cjs +7 -13
  112. package/dist/tools/computerUse.cjs.map +1 -1
  113. package/dist/tools/computerUse.d.cts +0 -1
  114. package/dist/tools/computerUse.d.cts.map +1 -1
  115. package/dist/tools/computerUse.d.ts +0 -1
  116. package/dist/tools/computerUse.d.ts.map +1 -1
  117. package/dist/tools/computerUse.js +1 -6
  118. package/dist/tools/computerUse.js.map +1 -1
  119. package/dist/tools/custom.cjs +6 -7
  120. package/dist/tools/custom.cjs.map +1 -1
  121. package/dist/tools/custom.d.cts.map +1 -1
  122. package/dist/tools/custom.d.ts.map +1 -1
  123. package/dist/tools/custom.js.map +1 -1
  124. package/dist/tools/dalle.cjs +10 -16
  125. package/dist/tools/dalle.cjs.map +1 -1
  126. package/dist/tools/dalle.d.cts +0 -1
  127. package/dist/tools/dalle.d.cts.map +1 -1
  128. package/dist/tools/dalle.d.ts +0 -1
  129. package/dist/tools/dalle.d.ts.map +1 -1
  130. package/dist/tools/dalle.js +6 -11
  131. package/dist/tools/dalle.js.map +1 -1
  132. package/dist/tools/fileSearch.cjs.map +1 -1
  133. package/dist/tools/fileSearch.d.cts +0 -1
  134. package/dist/tools/fileSearch.d.cts.map +1 -1
  135. package/dist/tools/fileSearch.d.ts +0 -1
  136. package/dist/tools/fileSearch.d.ts.map +1 -1
  137. package/dist/tools/fileSearch.js.map +1 -1
  138. package/dist/tools/imageGeneration.cjs.map +1 -1
  139. package/dist/tools/imageGeneration.d.cts +0 -1
  140. package/dist/tools/imageGeneration.d.cts.map +1 -1
  141. package/dist/tools/imageGeneration.d.ts +0 -1
  142. package/dist/tools/imageGeneration.d.ts.map +1 -1
  143. package/dist/tools/imageGeneration.js.map +1 -1
  144. package/dist/tools/index.cjs.map +1 -1
  145. package/dist/tools/index.d.cts +0 -1
  146. package/dist/tools/index.d.cts.map +1 -1
  147. package/dist/tools/index.d.ts +0 -1
  148. package/dist/tools/index.d.ts.map +1 -1
  149. package/dist/tools/index.js.map +1 -1
  150. package/dist/tools/localShell.cjs +3 -4
  151. package/dist/tools/localShell.cjs.map +1 -1
  152. package/dist/tools/localShell.d.cts +0 -1
  153. package/dist/tools/localShell.d.cts.map +1 -1
  154. package/dist/tools/localShell.d.ts +0 -1
  155. package/dist/tools/localShell.d.ts.map +1 -1
  156. package/dist/tools/localShell.js.map +1 -1
  157. package/dist/tools/mcp.cjs.map +1 -1
  158. package/dist/tools/mcp.d.cts +0 -1
  159. package/dist/tools/mcp.d.cts.map +1 -1
  160. package/dist/tools/mcp.d.ts +0 -1
  161. package/dist/tools/mcp.d.ts.map +1 -1
  162. package/dist/tools/mcp.js.map +1 -1
  163. package/dist/tools/shell.cjs +3 -4
  164. package/dist/tools/shell.cjs.map +1 -1
  165. package/dist/tools/shell.d.cts +0 -1
  166. package/dist/tools/shell.d.cts.map +1 -1
  167. package/dist/tools/shell.d.ts +0 -1
  168. package/dist/tools/shell.d.ts.map +1 -1
  169. package/dist/tools/shell.js.map +1 -1
  170. package/dist/tools/webSearch.cjs.map +1 -1
  171. package/dist/tools/webSearch.d.cts +0 -1
  172. package/dist/tools/webSearch.d.cts.map +1 -1
  173. package/dist/tools/webSearch.d.ts +0 -1
  174. package/dist/tools/webSearch.d.ts.map +1 -1
  175. package/dist/tools/webSearch.js.map +1 -1
  176. package/dist/types.d.cts +0 -1
  177. package/dist/types.d.cts.map +1 -1
  178. package/dist/types.d.ts +0 -1
  179. package/dist/types.d.ts.map +1 -1
  180. package/dist/utils/azure.cjs +2 -3
  181. package/dist/utils/azure.cjs.map +1 -1
  182. package/dist/utils/azure.d.cts.map +1 -1
  183. package/dist/utils/azure.d.ts.map +1 -1
  184. package/dist/utils/azure.js.map +1 -1
  185. package/dist/utils/client.cjs +9 -3
  186. package/dist/utils/client.cjs.map +1 -1
  187. package/dist/utils/client.d.cts.map +1 -1
  188. package/dist/utils/client.d.ts.map +1 -1
  189. package/dist/utils/client.js +8 -1
  190. package/dist/utils/client.js.map +1 -1
  191. package/dist/utils/errors.cjs.map +1 -1
  192. package/dist/utils/errors.js.map +1 -1
  193. package/dist/utils/misc.cjs +2 -3
  194. package/dist/utils/misc.cjs.map +1 -1
  195. package/dist/utils/misc.d.cts +0 -1
  196. package/dist/utils/misc.d.cts.map +1 -1
  197. package/dist/utils/misc.d.ts +0 -1
  198. package/dist/utils/misc.d.ts.map +1 -1
  199. package/dist/utils/misc.js.map +1 -1
  200. package/dist/utils/output.cjs +7 -8
  201. package/dist/utils/output.cjs.map +1 -1
  202. package/dist/utils/output.js.map +1 -1
  203. package/dist/utils/prompts.cjs +1 -2
  204. package/dist/utils/prompts.cjs.map +1 -1
  205. package/dist/utils/prompts.d.cts +0 -1
  206. package/dist/utils/prompts.d.cts.map +1 -1
  207. package/dist/utils/prompts.d.ts +0 -1
  208. package/dist/utils/prompts.d.ts.map +1 -1
  209. package/dist/utils/prompts.js +1 -2
  210. package/dist/utils/prompts.js.map +1 -1
  211. package/dist/utils/tools.cjs +9 -12
  212. package/dist/utils/tools.cjs.map +1 -1
  213. package/dist/utils/tools.d.cts +0 -1
  214. package/dist/utils/tools.d.cts.map +1 -1
  215. package/dist/utils/tools.d.ts +0 -1
  216. package/dist/utils/tools.d.ts.map +1 -1
  217. package/dist/utils/tools.js +5 -7
  218. package/dist/utils/tools.js.map +1 -1
  219. package/package.json +4 -4
  220. package/dist/_virtual/rolldown_runtime.cjs +0 -25
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.cts","names":["OpenAI","OpenAIClient","AIMessage","BaseMessage","UsageMetadata","ChatGenerationChunk","ChatOpenAIReasoningSummary","Converter","ExcludeController","T","ResponsesCreate","Responses","ResponsesParse","ResponsesCreateInvoke","ReturnType","Awaited","ResponsesParseInvoke","ResponsesInputItem","ResponseInputItem","convertResponsesUsageToUsageMetadata","ResponseUsage","convertResponsesMessageToAIMessage","convertReasoningSummaryToResponsesReasoningItem","ResponseReasoningItem","convertResponsesDeltaToChatGenerationChunk","ResponseStreamEvent","convertStandardContentMessageToResponsesInput","convertMessagesToResponsesInput"],"sources":["../../src/converters/responses.d.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { AIMessage, type BaseMessage, type UsageMetadata } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk } from \"@langchain/core/outputs\";\nimport { ChatOpenAIReasoningSummary } from \"../types.js\";\nimport { Converter } from \"@langchain/core/utils/format\";\ntype ExcludeController<T> = T extends {\n controller: unknown;\n} ? never : T;\nexport type ResponsesCreate = OpenAIClient.Responses[\"create\"];\nexport type ResponsesParse = OpenAIClient.Responses[\"parse\"];\nexport type ResponsesCreateInvoke = ExcludeController<Awaited<ReturnType<ResponsesCreate>>>;\nexport type ResponsesParseInvoke = ExcludeController<Awaited<ReturnType<ResponsesParse>>>;\nexport type ResponsesInputItem = OpenAIClient.Responses.ResponseInputItem;\n/**\n * Converts OpenAI Responses API usage statistics to LangChain's UsageMetadata format.\n *\n * This converter transforms token usage information from OpenAI's Responses API into\n * the standardized UsageMetadata format used throughout LangChain. It handles both\n * basic token counts and detailed token breakdowns including cached tokens and\n * reasoning tokens.\n *\n * @param usage - The usage statistics object from OpenAI's Responses API containing\n * token counts and optional detailed breakdowns.\n *\n * @returns A UsageMetadata object containing:\n * - `input_tokens`: Total number of tokens in the input/prompt (defaults to 0 if not provided)\n * - `output_tokens`: Total number of tokens in the model's output (defaults to 0 if not provided)\n * - `total_tokens`: Combined total of input and output tokens (defaults to 0 if not provided)\n * - `input_token_details`: Object containing detailed input token information:\n * - `cache_read`: Number of tokens read from cache (only included if available)\n * - `output_token_details`: Object containing detailed output token information:\n * - `reasoning`: Number of tokens used for reasoning (only included if available)\n *\n * @example\n * ```typescript\n * const usage = {\n * input_tokens: 100,\n * output_tokens: 50,\n * total_tokens: 150,\n * input_tokens_details: { cached_tokens: 20 },\n * output_tokens_details: { reasoning_tokens: 10 }\n * };\n *\n * const metadata = convertResponsesUsageToUsageMetadata(usage);\n * // Returns:\n * // {\n * // input_tokens: 100,\n * // output_tokens: 50,\n * // total_tokens: 150,\n * // input_token_details: { cache_read: 20 },\n * // output_token_details: { reasoning: 10 }\n * // }\n * ```\n *\n * @remarks\n * - The function safely handles undefined or null values by using optional chaining\n * and nullish coalescing operators\n * - Detailed token information (cache_read, reasoning) is only included in the result\n * if the corresponding values are present in the input\n * - Token counts default to 0 if not provided in the usage object\n * - This converter is specifically designed for OpenAI's Responses API format and\n * may differ from other OpenAI API endpoints\n */\nexport declare const convertResponsesUsageToUsageMetadata: Converter<OpenAIClient.Responses.ResponseUsage | undefined, UsageMetadata>;\n/**\n * Converts an OpenAI Responses API response to a LangChain AIMessage.\n *\n * This converter processes the output from OpenAI's Responses API (both `create` and `parse` methods)\n * and transforms it into a LangChain AIMessage object with all relevant metadata, tool calls, and content.\n *\n * @param response - The response object from OpenAI's Responses API. Can be either:\n * - ResponsesCreateInvoke: Result from `responses.create()`\n * - ResponsesParseInvoke: Result from `responses.parse()`\n *\n * @returns An AIMessage containing:\n * - `id`: The message ID from the response output\n * - `content`: Array of message content blocks (text, images, etc.)\n * - `tool_calls`: Array of successfully parsed tool calls\n * - `invalid_tool_calls`: Array of tool calls that failed to parse\n * - `usage_metadata`: Token usage information converted to LangChain format\n * - `additional_kwargs`: Extra data including:\n * - `refusal`: Refusal text if the model refused to respond\n * - `reasoning`: Reasoning output for reasoning models\n * - `tool_outputs`: Results from built-in tools (web search, file search, etc.)\n * - `parsed`: Parsed structured output when using json_schema format\n * - Function call ID mappings for tracking\n * - `response_metadata`: Metadata about the response including model, timestamps, status, etc.\n *\n * @throws Error if the response contains an error object. The error message and code are extracted\n * from the response.error field.\n *\n * @example\n * ```typescript\n * const response = await client.responses.create({\n * model: \"gpt-4\",\n * input: [{ type: \"message\", content: \"Hello\" }]\n * });\n * const message = convertResponsesMessageToAIMessage(response);\n * console.log(message.content); // Message content\n * console.log(message.tool_calls); // Any tool calls made\n * ```\n *\n * @remarks\n * The converter handles multiple output item types:\n * - `message`: Text and structured content from the model\n * - `function_call`: Tool/function calls that need to be executed\n * - `reasoning`: Reasoning traces from reasoning models (o1, o3, etc.)\n * - `custom_tool_call`: Custom tool invocations\n * - Built-in tool outputs: web_search, file_search, code_interpreter, etc.\n *\n * Tool calls are parsed and validated. Invalid tool calls (malformed JSON, etc.) are captured\n * in the `invalid_tool_calls` array rather than throwing errors.\n */\nexport declare const convertResponsesMessageToAIMessage: Converter<ResponsesCreateInvoke | ResponsesParseInvoke, AIMessage>;\n/**\n * Converts a LangChain ChatOpenAI reasoning summary to an OpenAI Responses API reasoning item.\n *\n * This converter transforms reasoning summaries that have been accumulated during streaming\n * (where summary parts may arrive in multiple chunks with the same index) into the final\n * consolidated format expected by OpenAI's Responses API. It combines summary parts that\n * share the same index and removes the index field from the final output.\n *\n * @param reasoning - A ChatOpenAI reasoning summary object containing:\n * - `id`: The reasoning item ID\n * - `type`: The type of reasoning (typically \"reasoning\")\n * - `summary`: Array of summary parts, each with:\n * - `text`: The summary text content\n * - `type`: The summary type (e.g., \"summary_text\")\n * - `index`: The index used to group related summary parts during streaming\n *\n * @returns An OpenAI Responses API ResponseReasoningItem with:\n * - All properties from the input reasoning object\n * - `summary`: Consolidated array of summary objects with:\n * - `text`: Combined text from all parts with the same index\n * - `type`: The summary type\n * - No `index` field (removed after consolidation)\n *\n * @example\n * ```typescript\n * // Input: Reasoning summary with multiple parts at the same index\n * const reasoning = {\n * id: \"reasoning_123\",\n * type: \"reasoning\",\n * summary: [\n * { text: \"First \", type: \"summary_text\", index: 0 },\n * { text: \"part\", type: \"summary_text\", index: 0 },\n * { text: \"Second part\", type: \"summary_text\", index: 1 }\n * ]\n * };\n *\n * const result = convertReasoningSummaryToResponsesReasoningItem(reasoning);\n * // Returns:\n * // {\n * // id: \"reasoning_123\",\n * // type: \"reasoning\",\n * // summary: [\n * // { text: \"First part\", type: \"summary_text\" },\n * // { text: \"Second part\", type: \"summary_text\" }\n * // ]\n * // }\n * ```\n *\n * @remarks\n * - This converter is primarily used when reconstructing complete reasoning items from\n * streaming chunks, where summary parts may arrive incrementally with index markers\n * - Summary parts with the same index are concatenated in the order they appear\n * - If the reasoning summary contains only one part, no reduction is performed\n * - The index field is used internally during streaming to track which summary parts\n * belong together, but is removed from the final output as it's not part of the\n * OpenAI Responses API schema\n * - This is the inverse operation of the streaming accumulation that happens in\n * `convertResponsesDeltaToChatGenerationChunk`\n */\nexport declare const convertReasoningSummaryToResponsesReasoningItem: Converter<ChatOpenAIReasoningSummary, OpenAIClient.Responses.ResponseReasoningItem>;\n/**\n * Converts OpenAI Responses API stream events to LangChain ChatGenerationChunk objects.\n *\n * This converter processes streaming events from OpenAI's Responses API and transforms them\n * into LangChain ChatGenerationChunk objects that can be used in streaming chat applications.\n * It handles various event types including text deltas, tool calls, reasoning, and metadata updates.\n *\n * @param event - A streaming event from OpenAI's Responses API\n *\n * @returns A ChatGenerationChunk containing:\n * - `text`: Concatenated text content from all text parts in the event\n * - `message`: An AIMessageChunk with:\n * - `id`: Message ID (set when a message output item is added)\n * - `content`: Array of content blocks (text with optional annotations)\n * - `tool_call_chunks`: Incremental tool call data (name, args, id)\n * - `usage_metadata`: Token usage information (only in completion events)\n * - `additional_kwargs`: Extra data including:\n * - `refusal`: Refusal text if the model refused to respond\n * - `reasoning`: Reasoning output for reasoning models (id, type, summary)\n * - `tool_outputs`: Results from built-in tools (web search, file search, etc.)\n * - `parsed`: Parsed structured output when using json_schema format\n * - Function call ID mappings for tracking\n * - `response_metadata`: Metadata about the response (model, id, etc.)\n * - `generationInfo`: Additional generation information (e.g., tool output status)\n *\n * Returns `null` for events that don't produce meaningful chunks:\n * - Partial image generation events (to avoid storing all partial images in history)\n * - Unrecognized event types\n *\n * @example\n * ```typescript\n * const stream = await client.responses.create({\n * model: \"gpt-4\",\n * input: [{ type: \"message\", content: \"Hello\" }],\n * stream: true\n * });\n *\n * for await (const event of stream) {\n * const chunk = convertResponsesDeltaToChatGenerationChunk(event);\n * if (chunk) {\n * console.log(chunk.text); // Incremental text\n * console.log(chunk.message.tool_call_chunks); // Tool call updates\n * }\n * }\n * ```\n *\n * @remarks\n * - Text content is accumulated in an array with index tracking for proper ordering\n * - Tool call chunks include incremental arguments that need to be concatenated by the consumer\n * - Reasoning summaries are built incrementally across multiple events\n * - Function call IDs are tracked in `additional_kwargs` to map call_id to item id\n * - The `text` field is provided for legacy compatibility with `onLLMNewToken` callbacks\n * - Usage metadata is only available in `response.completed` events\n * - Partial images are intentionally ignored to prevent memory bloat in conversation history\n */\nexport declare const convertResponsesDeltaToChatGenerationChunk: Converter<OpenAIClient.Responses.ResponseStreamEvent, ChatGenerationChunk | null>;\n/**\n * Converts a single LangChain BaseMessage to OpenAI Responses API input format.\n *\n * This converter transforms a LangChain message into one or more ResponseInputItem objects\n * that can be used with OpenAI's Responses API. It handles complex message structures including\n * tool calls, reasoning blocks, multimodal content, and various content block types.\n *\n * @param message - The LangChain BaseMessage to convert. Can be any message type including\n * HumanMessage, AIMessage, SystemMessage, ToolMessage, etc.\n *\n * @returns An array of ResponseInputItem objects.\n *\n * @example\n * Basic text message conversion:\n * ```typescript\n * const message = new HumanMessage(\"Hello, how are you?\");\n * const items = convertStandardContentMessageToResponsesInput(message);\n * // Returns: [{ type: \"message\", role: \"user\", content: [{ type: \"input_text\", text: \"Hello, how are you?\" }] }]\n * ```\n *\n * @example\n * AI message with tool calls:\n * ```typescript\n * const message = new AIMessage({\n * content: \"I'll check the weather for you.\",\n * tool_calls: [{\n * id: \"call_123\",\n * name: \"get_weather\",\n * args: { location: \"San Francisco\" }\n * }]\n * });\n * const items = convertStandardContentMessageToResponsesInput(message);\n * // Returns:\n * // [\n * // { type: \"message\", role: \"assistant\", content: [{ type: \"input_text\", text: \"I'll check the weather for you.\" }] },\n * // { type: \"function_call\", call_id: \"call_123\", name: \"get_weather\", arguments: '{\"location\":\"San Francisco\"}' }\n * // ]\n * ```\n */\nexport declare const convertStandardContentMessageToResponsesInput: Converter<BaseMessage, OpenAIClient.Responses.ResponseInputItem[]>;\n/**\n * - MCP (Model Context Protocol) approval responses\n * - Zero Data Retention (ZDR) mode handling\n *\n * @param params - Conversion parameters\n * @param params.messages - Array of LangChain BaseMessages to convert\n * @param params.zdrEnabled - Whether Zero Data Retention mode is enabled. When true, certain\n * metadata like message IDs and function call IDs are omitted from the output\n * @param params.model - The model name being used. Used to determine if special role mapping\n * is needed (e.g., \"system\" -> \"developer\" for reasoning models)\n *\n * @returns Array of ResponsesInputItem objects formatted for the OpenAI Responses API\n *\n * @throws {Error} When a function message is encountered (not supported)\n * @throws {Error} When computer call output format is invalid\n *\n * @example\n * ```typescript\n * const messages = [\n * new HumanMessage(\"Hello\"),\n * new AIMessage({ content: \"Hi there!\", tool_calls: [...] })\n * ];\n *\n * const input = convertMessagesToResponsesInput({\n * messages,\n * zdrEnabled: false,\n * model: \"gpt-4\"\n * });\n * ```\n */\nexport declare const convertMessagesToResponsesInput: Converter<{\n messages: BaseMessage[];\n zdrEnabled: boolean;\n model: string;\n}, ResponsesInputItem[]>;\nexport {};\n//# sourceMappingURL=responses.d.ts.map"],"mappings":";;;;;;;KAKKQ,uBAAuBC;;AAD6B,CAAA,GACpDD,KAAAA,GAEOC,CAFPD;AAGOE,KAAAA,eAAAA,GAAkBT,QAAAA,CAAaU,SAAS,CAAA,QAAA,CAAA;AACxCC,KAAAA,cAAAA,GAAiBX,QAAAA,CAAaU,SAAS,CAAA,OAAA,CAAA;AACvCE,KAAAA,qBAAAA,GAAwBL,iBAAH,CAAqBO,OAArB,CAA6BD,UAA7B,CAAwCJ,eAAxC,CAAA,CAAA,CAAA;AAAwCA,KAC7DM,oBAAAA,GAAuBR,iBADsCE,CACpBK,OADoBL,CACZI,UADYJ,CACDE,cADCF,CAAAA,CAAAA,CAAAA;AAAXI,KAElDG,kBAAAA,GAAqBhB,QAAAA,CAAaU,SAAAA,CAAUO,iBAFMJ;;;AAAT;AACrD;;;;;AAAoD;AACpD;AAmDA;;;;AAAoE;AAkDpE;;;;;AAAkE;AA4DlE;;;;AAA+E;AAwD/E;;;;AAA0E;AAwC1E;;;;AAA6E;AA+B7E;;;;AAA+D;;;;;;;;;;cA7O1CK,sCAAsCZ,UAAUN,QAAAA,CAAaU,SAAAA,CAAUS,2BAA2BhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkDlGiB,oCAAoCd,UAAUM,wBAAwBG,sBAAsBd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4D5FoB,iDAAiDf,UAAUD,4BAA4BL,QAAAA,CAAaU,SAAAA,CAAUY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwD9GC,4CAA4CjB,UAAUN,QAAAA,CAAaU,SAAAA,CAAUc,qBAAqBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwClGqB,+CAA+CnB,UAAUJ,aAAaF,QAAAA,CAAaU,SAAAA,CAAUO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+B7FS,iCAAiCpB;YACxCJ;;;GAGXc"}
1
+ {"version":3,"file":"responses.d.cts","names":[],"sources":["../../src/converters/responses.ts"],"mappings":";;;;;;;KA+LK,iBAAA,MAAuB,CAAA;EAAY,UAAA;AAAA,YAAgC,CAAA;AAAA,KAE5D,eAAA,GAAkB,QAAA,CAAa,SAAA;AAAA,KAC/B,cAAA,GAAiB,QAAA,CAAa,SAAA;AAAA,KAE9B,qBAAA,GAAwB,iBAAA,CAClC,OAAA,CAAQ,UAAA,CAAW,eAAA;AAAA,KAET,oBAAA,GAAuB,iBAAA,CACjC,OAAA,CAAQ,UAAA,CAAW,cAAA;AAAA,KAGT,kBAAA,GAAqB,QAAA,CAAa,SAAA,CAAU,iBAAA;;;;;AAVxD;;;;;AACA;;;;;AAEA;;;;;;;;;;;;;;;AAGA;;;;;;;;;;;;;;;AAIA;;;;;;cAoDa,oCAAA,EAAsC,SAAA,CACjD,QAAA,CAAa,SAAA,CAAU,aAAA,cACvB,aAAA;;;AAFF;;;;;;;;;;;;;;;AAwEA;;;;;;;;;;;;;;;AAmOA;;;;;;;;;;;;;;;AAsFA;;cAzTa,kCAAA,EAAoC,SAAA,CAC/C,qBAAA,GAAwB,oBAAA,EACxB,SAAA;;;;;;;;;;;;;AAukBF;;;;;;;;;;;;;;;AAgXA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAttBa,+CAAA,EAAiD,SAAA,CAC5D,0BAAA,EACA,QAAA,CAAa,SAAA,CAAU,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoFZ,0CAAA,EAA4C,SAAA,CACvD,QAAA,CAAa,SAAA,CAAU,mBAAA,EACvB,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8QW,6CAAA,EAA+C,SAAA,CAC1D,WAAA,EACA,QAAA,CAAa,SAAA,CAAU,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8WZ,+BAAA,EAAiC,SAAA;EAC1C,QAAA,EAAU,WAAA;EAAe,UAAA;EAAqB,KAAA;AAAA,GAChD,kBAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"responses.d.ts","names":["OpenAI","OpenAIClient","AIMessage","BaseMessage","UsageMetadata","ChatGenerationChunk","ChatOpenAIReasoningSummary","Converter","ExcludeController","T","ResponsesCreate","Responses","ResponsesParse","ResponsesCreateInvoke","ReturnType","Awaited","ResponsesParseInvoke","ResponsesInputItem","ResponseInputItem","convertResponsesUsageToUsageMetadata","ResponseUsage","convertResponsesMessageToAIMessage","convertReasoningSummaryToResponsesReasoningItem","ResponseReasoningItem","convertResponsesDeltaToChatGenerationChunk","ResponseStreamEvent","convertStandardContentMessageToResponsesInput","convertMessagesToResponsesInput"],"sources":["../../src/converters/responses.d.ts"],"sourcesContent":["import { OpenAI as OpenAIClient } from \"openai\";\nimport { AIMessage, type BaseMessage, type UsageMetadata } from \"@langchain/core/messages\";\nimport { ChatGenerationChunk } from \"@langchain/core/outputs\";\nimport { ChatOpenAIReasoningSummary } from \"../types.js\";\nimport { Converter } from \"@langchain/core/utils/format\";\ntype ExcludeController<T> = T extends {\n controller: unknown;\n} ? never : T;\nexport type ResponsesCreate = OpenAIClient.Responses[\"create\"];\nexport type ResponsesParse = OpenAIClient.Responses[\"parse\"];\nexport type ResponsesCreateInvoke = ExcludeController<Awaited<ReturnType<ResponsesCreate>>>;\nexport type ResponsesParseInvoke = ExcludeController<Awaited<ReturnType<ResponsesParse>>>;\nexport type ResponsesInputItem = OpenAIClient.Responses.ResponseInputItem;\n/**\n * Converts OpenAI Responses API usage statistics to LangChain's UsageMetadata format.\n *\n * This converter transforms token usage information from OpenAI's Responses API into\n * the standardized UsageMetadata format used throughout LangChain. It handles both\n * basic token counts and detailed token breakdowns including cached tokens and\n * reasoning tokens.\n *\n * @param usage - The usage statistics object from OpenAI's Responses API containing\n * token counts and optional detailed breakdowns.\n *\n * @returns A UsageMetadata object containing:\n * - `input_tokens`: Total number of tokens in the input/prompt (defaults to 0 if not provided)\n * - `output_tokens`: Total number of tokens in the model's output (defaults to 0 if not provided)\n * - `total_tokens`: Combined total of input and output tokens (defaults to 0 if not provided)\n * - `input_token_details`: Object containing detailed input token information:\n * - `cache_read`: Number of tokens read from cache (only included if available)\n * - `output_token_details`: Object containing detailed output token information:\n * - `reasoning`: Number of tokens used for reasoning (only included if available)\n *\n * @example\n * ```typescript\n * const usage = {\n * input_tokens: 100,\n * output_tokens: 50,\n * total_tokens: 150,\n * input_tokens_details: { cached_tokens: 20 },\n * output_tokens_details: { reasoning_tokens: 10 }\n * };\n *\n * const metadata = convertResponsesUsageToUsageMetadata(usage);\n * // Returns:\n * // {\n * // input_tokens: 100,\n * // output_tokens: 50,\n * // total_tokens: 150,\n * // input_token_details: { cache_read: 20 },\n * // output_token_details: { reasoning: 10 }\n * // }\n * ```\n *\n * @remarks\n * - The function safely handles undefined or null values by using optional chaining\n * and nullish coalescing operators\n * - Detailed token information (cache_read, reasoning) is only included in the result\n * if the corresponding values are present in the input\n * - Token counts default to 0 if not provided in the usage object\n * - This converter is specifically designed for OpenAI's Responses API format and\n * may differ from other OpenAI API endpoints\n */\nexport declare const convertResponsesUsageToUsageMetadata: Converter<OpenAIClient.Responses.ResponseUsage | undefined, UsageMetadata>;\n/**\n * Converts an OpenAI Responses API response to a LangChain AIMessage.\n *\n * This converter processes the output from OpenAI's Responses API (both `create` and `parse` methods)\n * and transforms it into a LangChain AIMessage object with all relevant metadata, tool calls, and content.\n *\n * @param response - The response object from OpenAI's Responses API. Can be either:\n * - ResponsesCreateInvoke: Result from `responses.create()`\n * - ResponsesParseInvoke: Result from `responses.parse()`\n *\n * @returns An AIMessage containing:\n * - `id`: The message ID from the response output\n * - `content`: Array of message content blocks (text, images, etc.)\n * - `tool_calls`: Array of successfully parsed tool calls\n * - `invalid_tool_calls`: Array of tool calls that failed to parse\n * - `usage_metadata`: Token usage information converted to LangChain format\n * - `additional_kwargs`: Extra data including:\n * - `refusal`: Refusal text if the model refused to respond\n * - `reasoning`: Reasoning output for reasoning models\n * - `tool_outputs`: Results from built-in tools (web search, file search, etc.)\n * - `parsed`: Parsed structured output when using json_schema format\n * - Function call ID mappings for tracking\n * - `response_metadata`: Metadata about the response including model, timestamps, status, etc.\n *\n * @throws Error if the response contains an error object. The error message and code are extracted\n * from the response.error field.\n *\n * @example\n * ```typescript\n * const response = await client.responses.create({\n * model: \"gpt-4\",\n * input: [{ type: \"message\", content: \"Hello\" }]\n * });\n * const message = convertResponsesMessageToAIMessage(response);\n * console.log(message.content); // Message content\n * console.log(message.tool_calls); // Any tool calls made\n * ```\n *\n * @remarks\n * The converter handles multiple output item types:\n * - `message`: Text and structured content from the model\n * - `function_call`: Tool/function calls that need to be executed\n * - `reasoning`: Reasoning traces from reasoning models (o1, o3, etc.)\n * - `custom_tool_call`: Custom tool invocations\n * - Built-in tool outputs: web_search, file_search, code_interpreter, etc.\n *\n * Tool calls are parsed and validated. Invalid tool calls (malformed JSON, etc.) are captured\n * in the `invalid_tool_calls` array rather than throwing errors.\n */\nexport declare const convertResponsesMessageToAIMessage: Converter<ResponsesCreateInvoke | ResponsesParseInvoke, AIMessage>;\n/**\n * Converts a LangChain ChatOpenAI reasoning summary to an OpenAI Responses API reasoning item.\n *\n * This converter transforms reasoning summaries that have been accumulated during streaming\n * (where summary parts may arrive in multiple chunks with the same index) into the final\n * consolidated format expected by OpenAI's Responses API. It combines summary parts that\n * share the same index and removes the index field from the final output.\n *\n * @param reasoning - A ChatOpenAI reasoning summary object containing:\n * - `id`: The reasoning item ID\n * - `type`: The type of reasoning (typically \"reasoning\")\n * - `summary`: Array of summary parts, each with:\n * - `text`: The summary text content\n * - `type`: The summary type (e.g., \"summary_text\")\n * - `index`: The index used to group related summary parts during streaming\n *\n * @returns An OpenAI Responses API ResponseReasoningItem with:\n * - All properties from the input reasoning object\n * - `summary`: Consolidated array of summary objects with:\n * - `text`: Combined text from all parts with the same index\n * - `type`: The summary type\n * - No `index` field (removed after consolidation)\n *\n * @example\n * ```typescript\n * // Input: Reasoning summary with multiple parts at the same index\n * const reasoning = {\n * id: \"reasoning_123\",\n * type: \"reasoning\",\n * summary: [\n * { text: \"First \", type: \"summary_text\", index: 0 },\n * { text: \"part\", type: \"summary_text\", index: 0 },\n * { text: \"Second part\", type: \"summary_text\", index: 1 }\n * ]\n * };\n *\n * const result = convertReasoningSummaryToResponsesReasoningItem(reasoning);\n * // Returns:\n * // {\n * // id: \"reasoning_123\",\n * // type: \"reasoning\",\n * // summary: [\n * // { text: \"First part\", type: \"summary_text\" },\n * // { text: \"Second part\", type: \"summary_text\" }\n * // ]\n * // }\n * ```\n *\n * @remarks\n * - This converter is primarily used when reconstructing complete reasoning items from\n * streaming chunks, where summary parts may arrive incrementally with index markers\n * - Summary parts with the same index are concatenated in the order they appear\n * - If the reasoning summary contains only one part, no reduction is performed\n * - The index field is used internally during streaming to track which summary parts\n * belong together, but is removed from the final output as it's not part of the\n * OpenAI Responses API schema\n * - This is the inverse operation of the streaming accumulation that happens in\n * `convertResponsesDeltaToChatGenerationChunk`\n */\nexport declare const convertReasoningSummaryToResponsesReasoningItem: Converter<ChatOpenAIReasoningSummary, OpenAIClient.Responses.ResponseReasoningItem>;\n/**\n * Converts OpenAI Responses API stream events to LangChain ChatGenerationChunk objects.\n *\n * This converter processes streaming events from OpenAI's Responses API and transforms them\n * into LangChain ChatGenerationChunk objects that can be used in streaming chat applications.\n * It handles various event types including text deltas, tool calls, reasoning, and metadata updates.\n *\n * @param event - A streaming event from OpenAI's Responses API\n *\n * @returns A ChatGenerationChunk containing:\n * - `text`: Concatenated text content from all text parts in the event\n * - `message`: An AIMessageChunk with:\n * - `id`: Message ID (set when a message output item is added)\n * - `content`: Array of content blocks (text with optional annotations)\n * - `tool_call_chunks`: Incremental tool call data (name, args, id)\n * - `usage_metadata`: Token usage information (only in completion events)\n * - `additional_kwargs`: Extra data including:\n * - `refusal`: Refusal text if the model refused to respond\n * - `reasoning`: Reasoning output for reasoning models (id, type, summary)\n * - `tool_outputs`: Results from built-in tools (web search, file search, etc.)\n * - `parsed`: Parsed structured output when using json_schema format\n * - Function call ID mappings for tracking\n * - `response_metadata`: Metadata about the response (model, id, etc.)\n * - `generationInfo`: Additional generation information (e.g., tool output status)\n *\n * Returns `null` for events that don't produce meaningful chunks:\n * - Partial image generation events (to avoid storing all partial images in history)\n * - Unrecognized event types\n *\n * @example\n * ```typescript\n * const stream = await client.responses.create({\n * model: \"gpt-4\",\n * input: [{ type: \"message\", content: \"Hello\" }],\n * stream: true\n * });\n *\n * for await (const event of stream) {\n * const chunk = convertResponsesDeltaToChatGenerationChunk(event);\n * if (chunk) {\n * console.log(chunk.text); // Incremental text\n * console.log(chunk.message.tool_call_chunks); // Tool call updates\n * }\n * }\n * ```\n *\n * @remarks\n * - Text content is accumulated in an array with index tracking for proper ordering\n * - Tool call chunks include incremental arguments that need to be concatenated by the consumer\n * - Reasoning summaries are built incrementally across multiple events\n * - Function call IDs are tracked in `additional_kwargs` to map call_id to item id\n * - The `text` field is provided for legacy compatibility with `onLLMNewToken` callbacks\n * - Usage metadata is only available in `response.completed` events\n * - Partial images are intentionally ignored to prevent memory bloat in conversation history\n */\nexport declare const convertResponsesDeltaToChatGenerationChunk: Converter<OpenAIClient.Responses.ResponseStreamEvent, ChatGenerationChunk | null>;\n/**\n * Converts a single LangChain BaseMessage to OpenAI Responses API input format.\n *\n * This converter transforms a LangChain message into one or more ResponseInputItem objects\n * that can be used with OpenAI's Responses API. It handles complex message structures including\n * tool calls, reasoning blocks, multimodal content, and various content block types.\n *\n * @param message - The LangChain BaseMessage to convert. Can be any message type including\n * HumanMessage, AIMessage, SystemMessage, ToolMessage, etc.\n *\n * @returns An array of ResponseInputItem objects.\n *\n * @example\n * Basic text message conversion:\n * ```typescript\n * const message = new HumanMessage(\"Hello, how are you?\");\n * const items = convertStandardContentMessageToResponsesInput(message);\n * // Returns: [{ type: \"message\", role: \"user\", content: [{ type: \"input_text\", text: \"Hello, how are you?\" }] }]\n * ```\n *\n * @example\n * AI message with tool calls:\n * ```typescript\n * const message = new AIMessage({\n * content: \"I'll check the weather for you.\",\n * tool_calls: [{\n * id: \"call_123\",\n * name: \"get_weather\",\n * args: { location: \"San Francisco\" }\n * }]\n * });\n * const items = convertStandardContentMessageToResponsesInput(message);\n * // Returns:\n * // [\n * // { type: \"message\", role: \"assistant\", content: [{ type: \"input_text\", text: \"I'll check the weather for you.\" }] },\n * // { type: \"function_call\", call_id: \"call_123\", name: \"get_weather\", arguments: '{\"location\":\"San Francisco\"}' }\n * // ]\n * ```\n */\nexport declare const convertStandardContentMessageToResponsesInput: Converter<BaseMessage, OpenAIClient.Responses.ResponseInputItem[]>;\n/**\n * - MCP (Model Context Protocol) approval responses\n * - Zero Data Retention (ZDR) mode handling\n *\n * @param params - Conversion parameters\n * @param params.messages - Array of LangChain BaseMessages to convert\n * @param params.zdrEnabled - Whether Zero Data Retention mode is enabled. When true, certain\n * metadata like message IDs and function call IDs are omitted from the output\n * @param params.model - The model name being used. Used to determine if special role mapping\n * is needed (e.g., \"system\" -> \"developer\" for reasoning models)\n *\n * @returns Array of ResponsesInputItem objects formatted for the OpenAI Responses API\n *\n * @throws {Error} When a function message is encountered (not supported)\n * @throws {Error} When computer call output format is invalid\n *\n * @example\n * ```typescript\n * const messages = [\n * new HumanMessage(\"Hello\"),\n * new AIMessage({ content: \"Hi there!\", tool_calls: [...] })\n * ];\n *\n * const input = convertMessagesToResponsesInput({\n * messages,\n * zdrEnabled: false,\n * model: \"gpt-4\"\n * });\n * ```\n */\nexport declare const convertMessagesToResponsesInput: Converter<{\n messages: BaseMessage[];\n zdrEnabled: boolean;\n model: string;\n}, ResponsesInputItem[]>;\nexport {};\n//# sourceMappingURL=responses.d.ts.map"],"mappings":";;;;;;;KAKKQ,uBAAuBC;;AAD6B,CAAA,GACpDD,KAAAA,GAEOC,CAFPD;AAGOE,KAAAA,eAAAA,GAAkBT,QAAAA,CAAaU,SAAS,CAAA,QAAA,CAAA;AACxCC,KAAAA,cAAAA,GAAiBX,QAAAA,CAAaU,SAAS,CAAA,OAAA,CAAA;AACvCE,KAAAA,qBAAAA,GAAwBL,iBAAH,CAAqBO,OAArB,CAA6BD,UAA7B,CAAwCJ,eAAxC,CAAA,CAAA,CAAA;AAAwCA,KAC7DM,oBAAAA,GAAuBR,iBADsCE,CACpBK,OADoBL,CACZI,UADYJ,CACDE,cADCF,CAAAA,CAAAA,CAAAA;AAAXI,KAElDG,kBAAAA,GAAqBhB,QAAAA,CAAaU,SAAAA,CAAUO,iBAFMJ;;;AAAT;AACrD;;;;;AAAoD;AACpD;AAmDA;;;;AAAoE;AAkDpE;;;;;AAAkE;AA4DlE;;;;AAA+E;AAwD/E;;;;AAA0E;AAwC1E;;;;AAA6E;AA+B7E;;;;AAA+D;;;;;;;;;;cA7O1CK,sCAAsCZ,UAAUN,QAAAA,CAAaU,SAAAA,CAAUS,2BAA2BhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkDlGiB,oCAAoCd,UAAUM,wBAAwBG,sBAAsBd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA4D5FoB,iDAAiDf,UAAUD,4BAA4BL,QAAAA,CAAaU,SAAAA,CAAUY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwD9GC,4CAA4CjB,UAAUN,QAAAA,CAAaU,SAAAA,CAAUc,qBAAqBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwClGqB,+CAA+CnB,UAAUJ,aAAaF,QAAAA,CAAaU,SAAAA,CAAUO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA+B7FS,iCAAiCpB;YACxCJ;;;GAGXc"}
1
+ {"version":3,"file":"responses.d.ts","names":[],"sources":["../../src/converters/responses.ts"],"mappings":";;;;;;;KA+LK,iBAAA,MAAuB,CAAA;EAAY,UAAA;AAAA,YAAgC,CAAA;AAAA,KAE5D,eAAA,GAAkB,QAAA,CAAa,SAAA;AAAA,KAC/B,cAAA,GAAiB,QAAA,CAAa,SAAA;AAAA,KAE9B,qBAAA,GAAwB,iBAAA,CAClC,OAAA,CAAQ,UAAA,CAAW,eAAA;AAAA,KAET,oBAAA,GAAuB,iBAAA,CACjC,OAAA,CAAQ,UAAA,CAAW,cAAA;AAAA,KAGT,kBAAA,GAAqB,QAAA,CAAa,SAAA,CAAU,iBAAA;;;;;AAVxD;;;;;AACA;;;;;AAEA;;;;;;;;;;;;;;;AAGA;;;;;;;;;;;;;;;AAIA;;;;;;cAoDa,oCAAA,EAAsC,SAAA,CACjD,QAAA,CAAa,SAAA,CAAU,aAAA,cACvB,aAAA;;;AAFF;;;;;;;;;;;;;;;AAwEA;;;;;;;;;;;;;;;AAmOA;;;;;;;;;;;;;;;AAsFA;;cAzTa,kCAAA,EAAoC,SAAA,CAC/C,qBAAA,GAAwB,oBAAA,EACxB,SAAA;;;;;;;;;;;;;AAukBF;;;;;;;;;;;;;;;AAgXA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAttBa,+CAAA,EAAiD,SAAA,CAC5D,0BAAA,EACA,QAAA,CAAa,SAAA,CAAU,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAoFZ,0CAAA,EAA4C,SAAA,CACvD,QAAA,CAAa,SAAA,CAAU,mBAAA,EACvB,mBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8QW,6CAAA,EAA+C,SAAA,CAC1D,WAAA,EACA,QAAA,CAAa,SAAA,CAAU,iBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cA8WZ,+BAAA,EAAiC,SAAA;EAC1C,QAAA,EAAU,WAAA;EAAe,UAAA;EAAqB,KAAA;AAAA,GAChD,kBAAA"}
@@ -1,5 +1,5 @@
1
1
  import { isComputerToolCall, isCustomToolCall, parseComputerCall, parseCustomToolCall } from "../utils/tools.js";
2
- import { getFilenameFromMetadata, getRequiredFilenameFromMetadata, iife, isReasoningModel, messageToOpenAIRole } from "../utils/misc.js";
2
+ import { getFilenameFromMetadata, getRequiredFilenameFromMetadata, iife as iife$1, isReasoningModel, messageToOpenAIRole } from "../utils/misc.js";
3
3
  import { completionsApiContentBlockConverter } from "./completions.js";
4
4
  import { AIMessage, AIMessageChunk, convertToProviderContentBlock, isDataContentBlock } from "@langchain/core/messages";
5
5
  import { ChatGenerationChunk } from "@langchain/core/outputs";
@@ -616,7 +616,7 @@ const convertResponsesDeltaToChatGenerationChunk = (event) => {
616
616
  const convertStandardContentMessageToResponsesInput = (message) => {
617
617
  const isResponsesMessage = AIMessage.isInstance(message) && message.response_metadata?.model_provider === "openai";
618
618
  function* iterateItems() {
619
- const messageRole = iife(() => {
619
+ const messageRole = iife$1(() => {
620
620
  try {
621
621
  const role = messageToOpenAIRole(message);
622
622
  if (role === "system" || role === "developer" || role === "assistant" || role === "user") return role;
@@ -657,7 +657,7 @@ const convertStandardContentMessageToResponsesInput = (message) => {
657
657
  }
658
658
  };
659
659
  const resolveImageItem = (block) => {
660
- const detail = iife(() => {
660
+ const detail = iife$1(() => {
661
661
  const raw = block.metadata?.detail;
662
662
  if (raw === "low" || raw === "high" || raw === "auto") return raw;
663
663
  return "auto";
@@ -674,14 +674,12 @@ const convertStandardContentMessageToResponsesInput = (message) => {
674
674
  };
675
675
  if (block.data) {
676
676
  const base64Data = typeof block.data === "string" ? block.data : Buffer.from(block.data).toString("base64");
677
- const mimeType = block.mimeType ?? "image/png";
678
677
  return {
679
678
  type: "input_image",
680
679
  detail,
681
- image_url: `data:${mimeType};base64,${base64Data}`
680
+ image_url: `data:${block.mimeType ?? "image/png"};base64,${base64Data}`
682
681
  };
683
682
  }
684
- return void 0;
685
683
  };
686
684
  const resolveFileItem = (block) => {
687
685
  if (block.fileId) {
@@ -703,20 +701,17 @@ const convertStandardContentMessageToResponsesInput = (message) => {
703
701
  if (block.data) {
704
702
  const filename = getRequiredFilenameFromMetadata(block);
705
703
  const encoded = typeof block.data === "string" ? block.data : Buffer.from(block.data).toString("base64");
706
- const mimeType = block.mimeType ?? "application/octet-stream";
707
704
  return {
708
705
  type: "input_file",
709
- file_data: `data:${mimeType};base64,${encoded}`,
706
+ file_data: `data:${block.mimeType ?? "application/octet-stream"};base64,${encoded}`,
710
707
  ...filename ? { filename } : {}
711
708
  };
712
709
  }
713
- return void 0;
714
710
  };
715
711
  const convertReasoningBlock = (block) => {
716
- const summaryEntries = iife(() => {
712
+ const summaryEntries = iife$1(() => {
717
713
  if (Array.isArray(block.summary)) {
718
- const candidate = block.summary;
719
- const mapped = candidate?.map((item) => item?.text).filter((text) => typeof text === "string") ?? [];
714
+ const mapped = block.summary?.map((item) => item?.text).filter((text) => typeof text === "string") ?? [];
720
715
  if (mapped.length > 0) return mapped;
721
716
  }
722
717
  return block.reasoning ? [block.reasoning] : [];
@@ -885,8 +880,14 @@ const convertMessagesToResponsesInput = ({ messages, zdrEnabled, model }) => {
885
880
  if (role === "function") throw new Error("Function messages are not supported in Responses API");
886
881
  if (role === "tool") {
887
882
  const toolMessage = lcMsg;
888
- if (additional_kwargs?.type === "computer_call_output") {
889
- const output = (() => {
883
+ if (additional_kwargs?.type === "computer_call_output")
884
+ /**
885
+ * Cast needed because OpenAI SDK types don't yet include input_image
886
+ * for computer-use-preview model output format
887
+ */
888
+ return {
889
+ type: "computer_call_output",
890
+ output: (() => {
890
891
  if (typeof toolMessage.content === "string") return {
891
892
  type: "input_image",
892
893
  image_url: toolMessage.content
@@ -912,17 +913,9 @@ const convertMessagesToResponsesInput = ({ messages, zdrEnabled, model }) => {
912
913
  };
913
914
  }
914
915
  throw new Error("Invalid computer call output");
915
- })();
916
- /**
917
- * Cast needed because OpenAI SDK types don't yet include input_image
918
- * for computer-use-preview model output format
919
- */
920
- return {
921
- type: "computer_call_output",
922
- output,
923
- call_id: toolMessage.tool_call_id
924
- };
925
- }
916
+ })(),
917
+ call_id: toolMessage.tool_call_id
918
+ };
926
919
  if (toolMessage.additional_kwargs?.customTool) return {
927
920
  type: "custom_tool_call_output",
928
921
  call_id: toolMessage.tool_call_id,
@@ -966,7 +959,7 @@ const convertMessagesToResponsesInput = ({ messages, zdrEnabled, model }) => {
966
959
  type: "message",
967
960
  role: "assistant",
968
961
  ...lcMsg.id && !zdrEnabled && lcMsg.id.startsWith("msg_") ? { id: lcMsg.id } : {},
969
- content: iife(() => {
962
+ content: iife$1(() => {
970
963
  if (typeof content === "string") return content;
971
964
  return content.flatMap((item) => {
972
965
  if (item.type === "text") return {
@@ -1019,8 +1012,7 @@ const convertMessagesToResponsesInput = ({ messages, zdrEnabled, model }) => {
1019
1012
  "local_shell_call"
1020
1013
  ];
1021
1014
  if (toolOutputs != null) {
1022
- const castToolOutputs = toolOutputs;
1023
- const fallthroughCalls = castToolOutputs?.filter((item) => fallthroughCallTypes.includes(item.type));
1015
+ const fallthroughCalls = toolOutputs?.filter((item) => fallthroughCallTypes.includes(item.type));
1024
1016
  if (fallthroughCalls.length > 0) input.push(...fallthroughCalls);
1025
1017
  }
1026
1018
  return input;
@@ -1031,9 +1023,9 @@ const convertMessagesToResponsesInput = ({ messages, zdrEnabled, model }) => {
1031
1023
  role,
1032
1024
  content: lcMsg.content
1033
1025
  };
1034
- const messages$1 = [];
1026
+ const messages = [];
1035
1027
  const content = lcMsg.content.flatMap((item) => {
1036
- if (item.type === "mcp_approval_response") messages$1.push({
1028
+ if (item.type === "mcp_approval_response") messages.push({
1037
1029
  type: "mcp_approval_response",
1038
1030
  approval_request_id: item.approval_request_id,
1039
1031
  approve: item.approve
@@ -1043,32 +1035,26 @@ const convertMessagesToResponsesInput = ({ messages, zdrEnabled, model }) => {
1043
1035
  type: "input_text",
1044
1036
  text: item.text
1045
1037
  };
1046
- if (item.type === "image_url") {
1047
- const imageUrl = iife(() => {
1038
+ if (item.type === "image_url") return {
1039
+ type: "input_image",
1040
+ image_url: iife$1(() => {
1048
1041
  if (typeof item.image_url === "string") return item.image_url;
1049
1042
  else if (typeof item.image_url === "object" && item.image_url !== null && "url" in item.image_url) return item.image_url.url;
1050
- return void 0;
1051
- });
1052
- const detail = iife(() => {
1043
+ }),
1044
+ detail: iife$1(() => {
1053
1045
  if (typeof item.image_url === "string") return "auto";
1054
1046
  else if (typeof item.image_url === "object" && item.image_url !== null && "detail" in item.image_url) return item.image_url.detail;
1055
- return void 0;
1056
- });
1057
- return {
1058
- type: "input_image",
1059
- image_url: imageUrl,
1060
- detail
1061
- };
1062
- }
1047
+ })
1048
+ };
1063
1049
  if (item.type === "input_text" || item.type === "input_image" || item.type === "input_file") return item;
1064
1050
  return [];
1065
1051
  });
1066
- if (content.length > 0) messages$1.push({
1052
+ if (content.length > 0) messages.push({
1067
1053
  type: "message",
1068
1054
  role,
1069
1055
  content
1070
1056
  });
1071
- return messages$1;
1057
+ return messages;
1072
1058
  }
1073
1059
  console.warn(`Unsupported role found when converting to OpenAI Responses API: ${role}`);
1074
1060
  return [];