@mastra/core 1.0.0-beta.16 → 1.0.0-beta.17

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 (111) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/agent/index.cjs +8 -8
  3. package/dist/agent/index.js +1 -1
  4. package/dist/{chunk-3ZRMVPQA.cjs → chunk-3AISNGWY.cjs} +7 -7
  5. package/dist/{chunk-3ZRMVPQA.cjs.map → chunk-3AISNGWY.cjs.map} +1 -1
  6. package/dist/{chunk-4KVIXN7K.cjs → chunk-4M75INXO.cjs} +11 -11
  7. package/dist/{chunk-4KVIXN7K.cjs.map → chunk-4M75INXO.cjs.map} +1 -1
  8. package/dist/{chunk-A6JNGJIU.cjs → chunk-4QYTF4ZB.cjs} +30 -30
  9. package/dist/{chunk-A6JNGJIU.cjs.map → chunk-4QYTF4ZB.cjs.map} +1 -1
  10. package/dist/{chunk-QD776HMB.js → chunk-5YYAQUEF.js} +3 -3
  11. package/dist/{chunk-QD776HMB.js.map → chunk-5YYAQUEF.js.map} +1 -1
  12. package/dist/{chunk-CSCTVLD5.js → chunk-6RFJWX4V.js} +3 -3
  13. package/dist/{chunk-CSCTVLD5.js.map → chunk-6RFJWX4V.js.map} +1 -1
  14. package/dist/{chunk-5DL6Y7PJ.cjs → chunk-6ZKYNY3H.cjs} +35 -35
  15. package/dist/{chunk-5DL6Y7PJ.cjs.map → chunk-6ZKYNY3H.cjs.map} +1 -1
  16. package/dist/{chunk-UTMBASR5.js → chunk-7CDELQD6.js} +4 -4
  17. package/dist/{chunk-UTMBASR5.js.map → chunk-7CDELQD6.js.map} +1 -1
  18. package/dist/{chunk-KKYAYRIO.js → chunk-ABMWK6JU.js} +4 -4
  19. package/dist/{chunk-KKYAYRIO.js.map → chunk-ABMWK6JU.js.map} +1 -1
  20. package/dist/{chunk-37YWZMBX.js → chunk-AIJLACR2.js} +9 -5
  21. package/dist/chunk-AIJLACR2.js.map +1 -0
  22. package/dist/{chunk-OXV6QFSV.cjs → chunk-G6YCU7HJ.cjs} +8 -8
  23. package/dist/{chunk-OXV6QFSV.cjs.map → chunk-G6YCU7HJ.cjs.map} +1 -1
  24. package/dist/{chunk-K4XAKG7L.js → chunk-GPC7WOLN.js} +4 -4
  25. package/dist/{chunk-K4XAKG7L.js.map → chunk-GPC7WOLN.js.map} +1 -1
  26. package/dist/{chunk-NNFF3URD.js → chunk-HGWVTZWK.js} +7 -7
  27. package/dist/{chunk-NNFF3URD.js.map → chunk-HGWVTZWK.js.map} +1 -1
  28. package/dist/{chunk-4N6WB4EZ.js → chunk-I55X7FYN.js} +4 -4
  29. package/dist/{chunk-4N6WB4EZ.js.map → chunk-I55X7FYN.js.map} +1 -1
  30. package/dist/{chunk-FB5QMTJJ.js → chunk-JBEKXEX6.js} +4 -4
  31. package/dist/{chunk-FB5QMTJJ.js.map → chunk-JBEKXEX6.js.map} +1 -1
  32. package/dist/{chunk-4UH5LAF5.cjs → chunk-N6HPK6I3.cjs} +15 -15
  33. package/dist/{chunk-4UH5LAF5.cjs.map → chunk-N6HPK6I3.cjs.map} +1 -1
  34. package/dist/{chunk-6YUHA5UH.cjs → chunk-O4YSWWLB.cjs} +5 -5
  35. package/dist/{chunk-6YUHA5UH.cjs.map → chunk-O4YSWWLB.cjs.map} +1 -1
  36. package/dist/{chunk-33VDGXRH.cjs → chunk-OHQ4PC6P.cjs} +15 -15
  37. package/dist/{chunk-33VDGXRH.cjs.map → chunk-OHQ4PC6P.cjs.map} +1 -1
  38. package/dist/{chunk-GNUITL2N.js → chunk-RC7RN5MY.js} +3 -3
  39. package/dist/{chunk-GNUITL2N.js.map → chunk-RC7RN5MY.js.map} +1 -1
  40. package/dist/{chunk-NCAMNQC3.cjs → chunk-RGX4NX5L.cjs} +5 -5
  41. package/dist/chunk-RGX4NX5L.cjs.map +1 -0
  42. package/dist/{chunk-AQ22JIR7.cjs → chunk-SDR22R4D.cjs} +16 -16
  43. package/dist/{chunk-AQ22JIR7.cjs.map → chunk-SDR22R4D.cjs.map} +1 -1
  44. package/dist/{chunk-7KL2YFFK.cjs → chunk-SGRMJZMJ.cjs} +15 -15
  45. package/dist/{chunk-7KL2YFFK.cjs.map → chunk-SGRMJZMJ.cjs.map} +1 -1
  46. package/dist/{chunk-J4SXS7KN.js → chunk-SJ3MF5G2.js} +4 -4
  47. package/dist/{chunk-J4SXS7KN.js.map → chunk-SJ3MF5G2.js.map} +1 -1
  48. package/dist/{chunk-DT5RMENY.js → chunk-SRQTDHF5.js} +4 -4
  49. package/dist/chunk-SRQTDHF5.js.map +1 -0
  50. package/dist/{chunk-H2NHG7QL.cjs → chunk-VW7YQWDW.cjs} +9 -5
  51. package/dist/chunk-VW7YQWDW.cjs.map +1 -0
  52. package/dist/{chunk-NK4UN2LF.cjs → chunk-XR7RX2PS.cjs} +5 -5
  53. package/dist/{chunk-NK4UN2LF.cjs.map → chunk-XR7RX2PS.cjs.map} +1 -1
  54. package/dist/{chunk-F7PAZAGE.js → chunk-YORDI4E7.js} +8 -8
  55. package/dist/{chunk-F7PAZAGE.js.map → chunk-YORDI4E7.js.map} +1 -1
  56. package/dist/evals/index.cjs +19 -19
  57. package/dist/evals/index.js +2 -2
  58. package/dist/evals/scoreTraces/index.cjs +5 -5
  59. package/dist/evals/scoreTraces/index.js +2 -2
  60. package/dist/index.cjs +2 -2
  61. package/dist/index.js +1 -1
  62. package/dist/integration/index.cjs +2 -2
  63. package/dist/integration/index.js +1 -1
  64. package/dist/llm/index.cjs +9 -9
  65. package/dist/llm/index.js +2 -2
  66. package/dist/llm/model/provider-types.generated.d.ts +1 -1
  67. package/dist/loop/index.cjs +2 -2
  68. package/dist/loop/index.js +1 -1
  69. package/dist/mastra/index.cjs +2 -2
  70. package/dist/mastra/index.js +1 -1
  71. package/dist/memory/index.cjs +11 -11
  72. package/dist/memory/index.js +1 -1
  73. package/dist/processors/index.cjs +37 -37
  74. package/dist/processors/index.js +1 -1
  75. package/dist/provider-registry-AUJKATCF.cjs +40 -0
  76. package/dist/{provider-registry-YJ2P5YY5.cjs.map → provider-registry-AUJKATCF.cjs.map} +1 -1
  77. package/dist/provider-registry-LUBC7RIO.js +3 -0
  78. package/dist/{provider-registry-LXSWMVEC.js.map → provider-registry-LUBC7RIO.js.map} +1 -1
  79. package/dist/provider-registry.json +2 -2
  80. package/dist/relevance/index.cjs +3 -3
  81. package/dist/relevance/index.js +1 -1
  82. package/dist/storage/constants.cjs +14 -14
  83. package/dist/storage/constants.js +1 -1
  84. package/dist/storage/index.cjs +92 -92
  85. package/dist/storage/index.js +2 -2
  86. package/dist/stream/index.cjs +9 -9
  87. package/dist/stream/index.js +1 -1
  88. package/dist/test-utils/llm-mock.cjs +4 -4
  89. package/dist/test-utils/llm-mock.js +1 -1
  90. package/dist/tool-loop-agent/index.cjs +4 -4
  91. package/dist/tool-loop-agent/index.js +1 -1
  92. package/dist/tools/index.cjs +4 -4
  93. package/dist/tools/index.js +1 -1
  94. package/dist/tools/is-vercel-tool.cjs +2 -2
  95. package/dist/tools/is-vercel-tool.js +1 -1
  96. package/dist/utils/zod-utils.d.ts +7 -1
  97. package/dist/utils/zod-utils.d.ts.map +1 -1
  98. package/dist/utils.cjs +27 -27
  99. package/dist/utils.js +2 -2
  100. package/dist/workflows/evented/index.cjs +10 -10
  101. package/dist/workflows/evented/index.js +1 -1
  102. package/dist/workflows/index.cjs +23 -23
  103. package/dist/workflows/index.js +1 -1
  104. package/package.json +4 -4
  105. package/src/llm/model/provider-types.generated.d.ts +1 -1
  106. package/dist/chunk-37YWZMBX.js.map +0 -1
  107. package/dist/chunk-DT5RMENY.js.map +0 -1
  108. package/dist/chunk-H2NHG7QL.cjs.map +0 -1
  109. package/dist/chunk-NCAMNQC3.cjs.map +0 -1
  110. package/dist/provider-registry-LXSWMVEC.js +0 -3
  111. package/dist/provider-registry-YJ2P5YY5.cjs +0 -40
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-provider.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/index.ts","../src/llm/model/router.ts","../src/llm/model/aisdk/v6/model.ts","../src/llm/model/resolve-model.ts","../src/llm/model/embedding-router.ts"],"names":["z","createJsonErrorResponseHandler","convertToBase64","UnsupportedFunctionalityError","lazyValidator","zodSchema","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","generateId","createEventSourceResponseHandler","InvalidResponseDataError","toolCall","isParsableJson","InvalidPromptError","getResponseMetadata","mapOpenAIFinishReason","TooManyEmbeddingValuesForCallError","convertBase64ToUint8Array","mediaTypeToExtension","postFormDataToApi","createBinaryResponseHandler","lazySchema","createProviderDefinedToolFactoryWithOutputSchema","_a","_b","_c","validateTypes","APICallError","supportsFlexProcessing","supportsPriorityProcessing","loadApiKey","withUserAgentSuffix","loadSetting","MastraModelGateway","InMemoryServerCache","MastraError","PROVIDER_REGISTRY","NetlifyGateway","ModelsDevGateway","parseModelRouterId","AISDKV5LanguageModel","createHash","modelInstance","createOpenAICompatible","createStreamFromGenerateResult","RequestContext","GatewayRegistry","createOpenAI","createGoogleGenerativeAI"],"mappings":"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","file":"chunk-4KVIXN7K.cjs","sourcesContent":["import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n },\n };\n } else if (part.mediaType.startsWith('audio/')) {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'audio file parts with URLs',\n });\n }\n\n switch (part.mediaType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'wav',\n },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'mp3',\n },\n };\n }\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `audio content parts with media type ${part.mediaType}`,\n });\n }\n }\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'file',\n file:\n typeof part.data === 'string' &&\n part.data.startsWith('file-')\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict?: boolean;\n };\n}\n\nexport type OpenAIChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAIChatResponse = InferValidator<\n typeof openaiChatResponseSchema\n>;\n\nexport type OpenAIChatChunk = InferValidator<typeof openaiChatChunkSchema>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n | 'o1'\n | 'o1-2024-12-17'\n | 'o3-mini'\n | 'o3-mini-2025-01-31'\n | 'o3'\n | 'o3-2025-04-16'\n | 'gpt-4.1'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4o'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4-turbo'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4'\n | 'gpt-4-0613'\n | 'gpt-4.5-preview'\n | 'gpt-4.5-preview-2025-02-27'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-1106'\n | 'chatgpt-4o-latest'\n | 'gpt-5'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in\n * the GPT tokenizer) to an associated bias value from -100 to 100.\n */\n logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high'])\n .optional(),\n\n /**\n * Maximum number of completion tokens to generate. Useful for reasoning models.\n */\n maxCompletionTokens: z.number().optional(),\n\n /**\n * Whether to enable persistence in responses API.\n */\n store: z.boolean().optional(),\n\n /**\n * Metadata to associate with the request.\n */\n metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n /**\n * Parameters for prediction mode.\n */\n prediction: z.record(z.string(), z.any()).optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n * Project settings. Unless otherwise configured, the Project will use 'default'.\n * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Controls the verbosity of the model's responses.\n * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n */\n textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n * Useful for improving cache hit rates and working around automatic caching issues.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n /**\n * A stable identifier used to help detect users of your application\n * that may be violating OpenAI's usage policies. The IDs should be a\n * string that uniquely identifies each user. We recommend hashing their\n * username or email address, in order to avoid sending us any identifying\n * information.\n */\n safetyIdentifier: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIChatLanguageModelOptions = InferValidator<\n typeof openaiChatLanguageModelOptions\n>;\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n OpenAIChatToolChoice,\n OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n structuredOutputs: boolean;\n strictJsonSchema: boolean;\n}): {\n tools?: OpenAIChatFunctionTool[];\n toolChoice?: OpenAIChatToolChoice;\n toolWarnings: Array<LanguageModelV2CallWarning>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: OpenAIChatFunctionTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: structuredOutputs ? strictJsonSchema : undefined,\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAIChatChunk,\n openaiChatChunkSchema,\n openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n OpenAIChatModelId,\n openaiChatLanguageModelOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: OpenAIChatConfig;\n\n constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV2CallOptions) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiChatLanguageModelOptions,\n })) ?? {};\n\n const structuredOutputs = openaiOptions.structuredOutputs ?? true;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n {\n prompt,\n systemMessageMode: getSystemMessageMode(this.modelId),\n },\n );\n\n warnings.push(...messageWarnings);\n\n const strictJsonSchema = openaiOptions.strictJsonSchema ?? false;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions.logprobs === true ||\n typeof openaiOptions.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof openaiOptions.logprobs === 'number'\n ? openaiOptions.logprobs\n : typeof openaiOptions.logprobs === 'boolean'\n ? openaiOptions.logprobs\n ? 0\n : undefined\n : undefined,\n user: openaiOptions.user,\n parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n stop: stopSequences,\n seed,\n verbosity: openaiOptions.textVerbosity,\n\n // openai specific settings:\n // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n max_completion_tokens: openaiOptions.maxCompletionTokens,\n store: openaiOptions.store,\n metadata: openaiOptions.metadata,\n prediction: openaiOptions.prediction,\n reasoning_effort: openaiOptions.reasoningEffort,\n service_tier: openaiOptions.serviceTier,\n prompt_cache_key: openaiOptions.promptCacheKey,\n prompt_cache_retention: openaiOptions.promptCacheRetention,\n safety_identifier: openaiOptions.safetyIdentifier,\n\n // messages:\n messages,\n };\n\n if (isReasoningModel(this.modelId)) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n if (baseArgs.frequency_penalty != null) {\n baseArgs.frequency_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n details: 'frequencyPenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.presence_penalty != null) {\n baseArgs.presence_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n details: 'presencePenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.logit_bias != null) {\n baseArgs.logit_bias = undefined;\n warnings.push({\n type: 'other',\n message: 'logitBias is not supported for reasoning models',\n });\n }\n if (baseArgs.logprobs != null) {\n baseArgs.logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'logprobs is not supported for reasoning models',\n });\n }\n if (baseArgs.top_logprobs != null) {\n baseArgs.top_logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'topLogprobs is not supported for reasoning models',\n });\n }\n\n // reasoning models use max_completion_tokens instead of max_tokens:\n if (baseArgs.max_tokens != null) {\n if (baseArgs.max_completion_tokens == null) {\n baseArgs.max_completion_tokens = baseArgs.max_tokens;\n }\n baseArgs.max_tokens = undefined;\n }\n } else if (\n this.modelId.startsWith('gpt-4o-search-preview') ||\n this.modelId.startsWith('gpt-4o-mini-search-preview')\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details:\n 'temperature is not supported for the search preview models and has been removed.',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions.serviceTier === 'flex' &&\n !supportsFlexProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n baseArgs.service_tier = undefined;\n }\n\n // Validate priority processing support\n if (\n openaiOptions.serviceTier === 'priority' &&\n !supportsPriorityProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n baseArgs.service_tier = undefined;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // tool calls:\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n\n // annotations/citations:\n for (const annotation of choice.message.annotations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let metadataExtracted = false;\n let isActiveText = false;\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIChatChunk>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n // extract and emit response metadata once. Usually it comes in the first chunk.\n // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n if (!metadataExtracted) {\n const metadata = getResponseMetadata(value);\n if (Object.values(metadata).some(Boolean)) {\n metadataExtracted = true;\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens ?? undefined;\n usage.outputTokens = value.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.usage.total_tokens ?? undefined;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n\n if (\n value.usage.completion_tokens_details\n ?.accepted_prediction_tokens != null\n ) {\n providerMetadata.openai.acceptedPredictionTokens =\n value.usage.completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n value.usage.completion_tokens_details\n ?.rejected_prediction_tokens != null\n ) {\n providerMetadata.openai.rejectedPredictionTokens =\n value.usage.completion_tokens_details?.rejected_prediction_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.content != null) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n\n // annotations/citations:\n if (delta.annotations != null) {\n for (const annotation of delta.annotations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isReasoningModel(modelId: string) {\n return (\n (modelId.startsWith('o') || modelId.startsWith('gpt-5')) &&\n !modelId.startsWith('gpt-5-chat')\n );\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return (\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'))\n );\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nfunction getSystemMessageMode(modelId: string) {\n if (!isReasoningModel(modelId)) {\n return 'system';\n }\n\n return (\n reasoningModels[modelId as keyof typeof reasoningModels]\n ?.systemMessageMode ?? 'developer'\n );\n}\n\nconst reasoningModels = {\n o3: {\n systemMessageMode: 'developer',\n },\n 'o3-2025-04-16': {\n systemMessageMode: 'developer',\n },\n 'o3-mini': {\n systemMessageMode: 'developer',\n },\n 'o3-mini-2025-01-31': {\n systemMessageMode: 'developer',\n },\n 'o4-mini': {\n systemMessageMode: 'developer',\n },\n 'o4-mini-2025-04-16': {\n systemMessageMode: 'developer',\n },\n} as const;\n","import {\n InvalidPromptError,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0].role === 'system') {\n text += `${prompt[0].content}\\n\\n`;\n prompt = prompt.slice(1);\n }\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n throw new InvalidPromptError({\n message: 'Unexpected system message in prompt: ${content}',\n prompt,\n });\n }\n\n case 'user': {\n const userMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n }\n })\n .filter(Boolean)\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'tool-call': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-call messages',\n });\n }\n }\n })\n .join('');\n\n text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n break;\n }\n\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool messages',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n stopSequences: [`\\n${user}:`],\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z\n .array(z.record(z.string(), z.number()))\n .nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAICompletionChunk = InferValidator<\n typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferValidator<\n typeof openaiCompletionResponseSchema\n>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nEcho back the prompt in addition to the completion.\n */\n echo: z.boolean().optional(),\n\n /**\nModify the likelihood of specified tokens appearing in the completion.\n\nAccepts a JSON object that maps tokens (specified by their token ID in\nthe GPT tokenizer) to an associated bias value from -100 to 100. You\ncan use this tokenizer tool to convert text to token IDs. Mathematically,\nthe bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should\ndecrease or increase likelihood of selection; values like -100 or 100\nshould result in a ban or exclusive selection of the relevant token.\n\nAs an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\ntoken from being generated.\n */\n logitBias: z.record(z.string(), z.number()).optional(),\n\n /**\nThe suffix that comes after a completion of inserted text.\n */\n suffix: z.string().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\nReturn the log probabilities of the tokens. Including logprobs will increase\nthe response size and can slow down response times. However, it can\nbe useful to better understand how the model is behaving.\nSetting to true will return the log probabilities of the tokens that\nwere generated.\nSetting to a number will return the log probabilities of the top n\ntokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n }),\n ),\n);\n\nexport type OpenAICompletionProviderOptions = InferValidator<\n typeof openaiCompletionProviderOptions\n>;\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAICompletionChunk,\n openaiCompletionChunkSchema,\n openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n OpenAICompletionModelId,\n openaiCompletionProviderOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompletionModelId;\n\n private readonly config: OpenAICompletionConfig;\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n constructor(\n modelId: OpenAICompletionModelId,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported for completion models.\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions = {\n ...(await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n ...(await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n };\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (tools?.length) {\n warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n }\n\n if (toolChoice != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { prompt: completionPrompt, stopSequences } =\n convertToOpenAICompletionPrompt({ prompt });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: openaiOptions.echo,\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions?.logprobs === true\n ? 0\n : openaiOptions?.logprobs === false\n ? undefined\n : openaiOptions?.logprobs,\n suffix: openaiOptions.suffix,\n user: openaiOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAICompletionChunk>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({ type: 'text-start', id: '0' });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n if (choice?.text != null && choice.text.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: choice.text,\n });\n }\n },\n\n flush(controller) {\n if (!isFirstChunk) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n providerMetadata,\n usage,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n | 'text-embedding-3-small'\n | 'text-embedding-3-large'\n | 'text-embedding-ada-002'\n | (string & {});\n\nexport const openaiEmbeddingProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nThe number of dimensions the resulting output embeddings should have.\nOnly supported in text-embedding-3 and later models.\n */\n dimensions: z.number().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n*/\n user: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIEmbeddingProviderOptions = InferValidator<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n }),\n ),\n);\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: OpenAIConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiEmbeddingProviderOptions,\n })) ?? {};\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/embeddings',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n dimensions: openaiOptions.dimensions,\n user: openaiOptions.user,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n }),\n ),\n);\n","export type OpenAIImageModelId =\n | 'dall-e-3'\n | 'dall-e-2'\n | 'gpt-image-1'\n | 'gpt-image-1-mini'\n | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n 'dall-e-3': 1,\n 'dall-e-2': 10,\n 'gpt-image-1': 10,\n 'gpt-image-1-mini': 10,\n};\n\nexport const hasDefaultResponseFormat = new Set([\n 'gpt-image-1',\n 'gpt-image-1-mini',\n]);\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n OpenAIImageModelId,\n hasDefaultResponseFormat,\n modelMaxImagesPerCall,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly config: OpenAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n ...(providerOptions.openai ?? {}),\n ...(!hasDefaultResponseFormat.has(this.modelId)\n ? { response_format: 'b64_json' }\n : {}),\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n openai: {\n images: response.data.map(item =>\n item.revised_prompt\n ? {\n revisedPrompt: item.revised_prompt,\n }\n : null,\n ),\n },\n },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n text: z.string(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n words: z\n .array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n | 'whisper-1'\n | 'gpt-4o-mini-transcribe'\n | 'gpt-4o-transcribe'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Additional information to include in the transcription response.\n */\n\n include: z.array(z.string()).optional(),\n\n /**\n * The language of the input audio in ISO-639-1 format.\n */\n language: z.string().optional(),\n\n /**\n * An optional text to guide the model's style or continue a previous audio segment.\n */\n prompt: z.string().optional(),\n\n /**\n * The sampling temperature, between 0 and 1.\n * @default 0\n */\n temperature: z.number().min(0).max(1).default(0).optional(),\n\n /**\n * The timestamp granularities to populate for this transcription.\n * @default ['segment']\n */\n timestampGranularities: z\n .array(z.enum(['word', 'segment']))\n .default(['segment'])\n .optional(),\n }),\n ),\n);\n\nexport type OpenAITranscriptionProviderOptions = InferValidator<\n typeof openAITranscriptionProviderOptions\n>;\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n OpenAITranscriptionModelId,\n openAITranscriptionProviderOptions,\n OpenAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV2CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: OpenAITranscriptionProviderOptions;\n };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n afrikaans: 'af',\n arabic: 'ar',\n armenian: 'hy',\n azerbaijani: 'az',\n belarusian: 'be',\n bosnian: 'bs',\n bulgarian: 'bg',\n catalan: 'ca',\n chinese: 'zh',\n croatian: 'hr',\n czech: 'cs',\n danish: 'da',\n dutch: 'nl',\n english: 'en',\n estonian: 'et',\n finnish: 'fi',\n french: 'fr',\n galician: 'gl',\n german: 'de',\n greek: 'el',\n hebrew: 'he',\n hindi: 'hi',\n hungarian: 'hu',\n icelandic: 'is',\n indonesian: 'id',\n italian: 'it',\n japanese: 'ja',\n kannada: 'kn',\n kazakh: 'kk',\n korean: 'ko',\n latvian: 'lv',\n lithuanian: 'lt',\n macedonian: 'mk',\n malay: 'ms',\n marathi: 'mr',\n maori: 'mi',\n nepali: 'ne',\n norwegian: 'no',\n persian: 'fa',\n polish: 'pl',\n portuguese: 'pt',\n romanian: 'ro',\n russian: 'ru',\n serbian: 'sr',\n slovak: 'sk',\n slovenian: 'sl',\n spanish: 'es',\n swahili: 'sw',\n swedish: 'sv',\n tagalog: 'tl',\n tamil: 'ta',\n thai: 'th',\n turkish: 'tr',\n ukrainian: 'uk',\n urdu: 'ur',\n vietnamese: 'vi',\n welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAITranscriptionModelId,\n private readonly config: OpenAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAITranscriptionProviderOptions,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions = {\n include: openAIOptions.include,\n language: openAIOptions.language,\n prompt: openAIOptions.prompt,\n // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n // prefer verbose_json to get segments for models that support it\n response_format: [\n 'gpt-4o-transcribe',\n 'gpt-4o-mini-transcribe',\n ].includes(this.modelId)\n ? 'json'\n : 'verbose_json',\n temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const language =\n response.language != null && response.language in languageMap\n ? languageMap[response.language as keyof typeof languageMap]\n : undefined;\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ??\n response.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ??\n [],\n language,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n | 'tts-1'\n | 'tts-1-hd'\n | 'gpt-4o-mini-tts'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n }),\n ),\n);\n\nexport type OpenAISpeechCallOptions = InferValidator<\n typeof openaiSpeechProviderOptionsSchema\n>;\n","import { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n openaiSpeechProviderOptionsSchema,\n OpenAISpeechModelId,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAISpeechModelId,\n private readonly config: OpenAISpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n language,\n providerOptions,\n }: Parameters<SpeechModelV2['doGenerate']>[0]) {\n const warnings: SpeechModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n input: text,\n voice,\n response_format: 'mp3',\n speed,\n instructions,\n };\n\n if (outputFormat) {\n if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (openAIOptions) {\n const speechModelOptions: OpenAISpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n });\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/audio/speech',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeoutMs: z.number().optional(),\n user: z.string().optional(),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * Execute a shell command on the server.\n */\n action: {\n type: 'exec';\n\n /**\n * The command to run.\n */\n command: string[];\n\n /**\n * Optional timeout in milliseconds for the command.\n */\n timeoutMs?: number;\n\n /**\n * Optional user to run the command as.\n */\n user?: string;\n\n /**\n * Optional working directory to run the command in.\n */\n workingDirectory?: string;\n\n /**\n * Environment variables to set for the command.\n */\n env?: Record<string, string>;\n };\n },\n {\n /**\n * The output of local shell tool call.\n */\n output: string;\n },\n {}\n>({\n id: 'openai.local_shell',\n name: 'local_shell',\n inputSchema: localShellInputSchema,\n outputSchema: localShellOutputSchema,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n LanguageModelV2ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n parseProviderOptions,\n validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport {\n OpenAIResponsesFunctionCallOutput,\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n if (!prefixes) return false;\n return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode,\n fileIdPrefixes,\n store,\n hasLocalShellTool = false,\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n fileIdPrefixes?: readonly string[];\n store: boolean;\n hasLocalShellTool?: boolean;\n}): Promise<{\n input: OpenAIResponsesInput;\n warnings: Array<LanguageModelV2CallWarning>;\n}> {\n const input: OpenAIResponsesInput = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n input.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n input.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n input.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n ...(part.data instanceof URL\n ? { image_url: part.data.toString() }\n : typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n }),\n detail: part.providerOptions?.openai?.imageDetail,\n };\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n return {\n type: 'input_file',\n file_url: part.data.toString(),\n };\n }\n return {\n type: 'input_file',\n ...(typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n }),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n const toolCallParts: Record<string, LanguageModelV2ToolCallPart> = {};\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id,\n });\n\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = await validateTypes({\n value: part.input,\n schema: localShellInputSchema,\n });\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id: id!,\n action: {\n type: 'exec',\n command: parsedInput.action.command,\n timeout_ms: parsedInput.action.timeoutMs,\n user: parsedInput.action.user,\n working_directory: parsedInput.action.workingDirectory,\n env: parsedInput.action.env,\n },\n });\n\n break;\n }\n\n input.push({\n type: 'function_call',\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n id,\n });\n break;\n }\n\n // assistant tool result parts are from provider-executed tools:\n case 'tool-result': {\n if (store) {\n // use item references to refer to tool results from built-in tools\n input.push({ type: 'item_reference', id: part.toolCallId });\n } else {\n warnings.push({\n type: 'other',\n message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n });\n }\n\n break;\n }\n\n case 'reasoning': {\n const providerOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions: part.providerOptions,\n schema: openaiResponsesReasoningProviderOptionsSchema,\n });\n\n const reasoningId = providerOptions?.itemId;\n\n if (reasoningId != null) {\n const reasoningMessage = reasoningMessages[reasoningId];\n\n if (store) {\n // use item references to refer to reasoning (single reference)\n // when the first part is encountered\n if (reasoningMessage === undefined) {\n input.push({ type: 'item_reference', id: reasoningId });\n\n // store unused reasoning message to mark id as used\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n summary: [],\n };\n }\n } else {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n } else if (reasoningMessage !== undefined) {\n warnings.push({\n type: 'other',\n message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n\n if (reasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n encrypted_content:\n providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n };\n input.push(reasoningMessages[reasoningId]);\n } else {\n reasoningMessage.summary.push(...summaryParts);\n\n // updated encrypted content to enable setting it in the last summary part:\n if (providerOptions?.reasoningEncryptedContent != null) {\n reasoningMessage.encrypted_content =\n providerOptions.reasoningEncryptedContent;\n }\n }\n }\n } else {\n warnings.push({\n type: 'other',\n message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of content) {\n const output = part.output;\n\n if (\n hasLocalShellTool &&\n part.toolName === 'local_shell' &&\n output.type === 'json'\n ) {\n const parsedOutput = await validateTypes({\n value: output.value,\n schema: localShellOutputSchema,\n });\n\n input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: parsedOutput.output,\n });\n break;\n }\n\n let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n case 'content':\n contentValue = output.value.map(item => {\n switch (item.type) {\n case 'text': {\n return { type: 'input_text' as const, text: item.text };\n }\n case 'media': {\n return item.mediaType.startsWith('image/')\n ? {\n type: 'input_image' as const,\n image_url: `data:${item.mediaType};base64,${item.data}`,\n }\n : {\n type: 'input_file' as const,\n filename: 'data',\n file_data: `data:${item.mediaType};base64,${item.data}`,\n };\n }\n }\n });\n break;\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: contentValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasFunctionCall,\n}: {\n finishReason: string | null | undefined;\n // flag that checks if there have been client-side tool calls (not executed by openai)\n hasFunctionCall: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasFunctionCall ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasFunctionCall ? 'tool-calls' : 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n | OpenAIResponsesSystemMessage\n | OpenAIResponsesUserMessage\n | OpenAIResponsesAssistantMessage\n | OpenAIResponsesFunctionCall\n | OpenAIResponsesFunctionCallOutput\n | OpenAIResponsesComputerCall\n | OpenAIResponsesLocalShellCall\n | OpenAIResponsesLocalShellCallOutput\n | OpenAIResponsesReasoning\n | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n | 'web_search_call.action.sources'\n | 'code_interpreter_call.outputs'\n | 'computer_call_output.output.image_url'\n | 'file_search_call.results'\n | 'message.input_image.image_url'\n | 'message.output_text.logprobs'\n | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n | Array<OpenAIResponsesIncludeValue>\n | undefined\n | null;\n\nexport type OpenAIResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n role: 'user';\n content: Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_image'; file_id: string }\n | { type: 'input_file'; file_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n | { type: 'input_file'; file_id: string }\n >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n role: 'assistant';\n content: Array<{ type: 'output_text'; text: string }>;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n type: 'function_call';\n call_id: string;\n name: string;\n arguments: string;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n >;\n};\n\nexport type OpenAIResponsesComputerCall = {\n type: 'computer_call';\n id: string;\n status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n type: 'local_shell_call';\n id: string;\n call_id: string;\n action: {\n type: 'exec';\n command: string[];\n timeout_ms?: number;\n user?: string;\n working_directory?: string;\n env?: Record<string, string>;\n };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n type: 'local_shell_call_output';\n call_id: string;\n output: string;\n};\n\nexport type OpenAIResponsesItemReference = {\n type: 'item_reference';\n id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n /**\n * The key to compare against the value.\n */\n key: string;\n\n /**\n * Specifies the comparison operator: eq, ne, gt, gte, lt, lte.\n */\n type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';\n\n /**\n * The value to compare against the attribute key; supports string, number, or boolean types.\n */\n value: string | number | boolean;\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n /**\n * Type of operation: and or or.\n */\n type: 'and' | 'or';\n\n /**\n * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n */\n filters: Array<\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n >;\n};\n\nexport type OpenAIResponsesTool =\n | {\n type: 'function';\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict: boolean | undefined;\n }\n | {\n type: 'web_search';\n external_web_access: boolean | undefined;\n filters: { allowed_domains: string[] | undefined } | undefined;\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'web_search_preview';\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'code_interpreter';\n container: string | { type: 'auto'; file_ids: string[] | undefined };\n }\n | {\n type: 'file_search';\n vector_store_ids: string[];\n max_num_results: number | undefined;\n ranking_options:\n | { ranker?: string; score_threshold?: number }\n | undefined;\n filters:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n | undefined;\n }\n | {\n type: 'image_generation';\n background: 'auto' | 'opaque' | 'transparent' | undefined;\n input_fidelity: 'low' | 'high' | undefined;\n input_image_mask:\n | {\n file_id: string | undefined;\n image_url: string | undefined;\n }\n | undefined;\n model: string | undefined;\n moderation: 'auto' | undefined;\n output_compression: number | undefined;\n output_format: 'png' | 'jpeg' | 'webp' | undefined;\n quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n }\n | {\n type: 'local_shell';\n };\n\nexport type OpenAIResponsesReasoning = {\n type: 'reasoning';\n id: string;\n encrypted_content?: string | null;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n};\n\nexport const openaiResponsesChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.enum(['response.completed', 'response.incomplete']),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z.object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n }),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n created_at: z.number(),\n model: z.string(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n status: z.literal('completed'),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.partial_image'),\n item_id: z.string(),\n output_index: z.number(),\n partial_image_b64: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n annotation: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n sequence_number: z.number(),\n error: z.object({\n type: z.string(),\n code: z.string(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n }),\n z\n .object({ type: z.string() })\n .loose()\n .transform(value => ({\n type: 'unknown_chunk' as const,\n message: value.type,\n })), // fallback for unknown chunks\n ]),\n ),\n);\n\nexport type OpenAIResponsesChunk = InferValidator<\n typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n (OpenAIResponsesChunk & {\n type: 'response.output_text.delta';\n })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n ((OpenAIResponsesChunk & {\n type: 'response.output_item.done';\n })['item'] & {\n type: 'web_search_call';\n })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().optional(),\n created_at: z.number().optional(),\n error: z\n .object({\n message: z.string(),\n type: z.string(),\n param: z.string().nullish(),\n code: z.string(),\n })\n .nullish(),\n model: z.string().optional(),\n output: z\n .array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n role: z.literal('assistant'),\n id: z.string(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n annotations: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n z.object({\n type: z.literal('container_file_citation'),\n container_id: z.string(),\n file_id: z.string(),\n filename: z.string().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n index: z.number().nullish(),\n }),\n z.object({\n type: z.literal('file_path'),\n file_id: z.string(),\n index: z.number().nullish(),\n }),\n ]),\n ),\n }),\n ),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean()]),\n ),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .optional(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n 'o1',\n 'o1-2024-12-17',\n 'o3',\n 'o3-2025-04-16',\n 'o3-deep-research',\n 'o3-deep-research-2025-06-26',\n 'o3-mini',\n 'o3-mini-2025-01-31',\n 'o4-mini',\n 'o4-mini-2025-04-16',\n 'o4-mini-deep-research',\n 'o4-mini-deep-research-2025-06-26',\n 'codex-mini-latest',\n 'computer-use-preview',\n 'gpt-5',\n 'gpt-5-2025-08-07',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-mini-2025-08-07',\n 'gpt-5-nano',\n 'gpt-5-nano-2025-08-07',\n 'gpt-5-pro',\n 'gpt-5-pro-2025-10-06',\n 'gpt-5.1',\n 'gpt-5.1-chat-latest',\n 'gpt-5.1-codex-mini',\n 'gpt-5.1-codex',\n] as const;\n\nexport const openaiResponsesModelIds = [\n 'gpt-4.1',\n 'gpt-4.1-2025-04-14',\n 'gpt-4.1-mini',\n 'gpt-4.1-mini-2025-04-14',\n 'gpt-4.1-nano',\n 'gpt-4.1-nano-2025-04-14',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-audio-preview',\n 'gpt-4o-audio-preview-2024-10-01',\n 'gpt-4o-audio-preview-2024-12-17',\n 'gpt-4o-search-preview',\n 'gpt-4o-search-preview-2025-03-11',\n 'gpt-4o-mini-search-preview',\n 'gpt-4o-mini-search-preview-2025-03-11',\n 'gpt-4o-mini',\n 'gpt-4o-mini-2024-07-18',\n 'gpt-4-turbo',\n 'gpt-4-turbo-2024-04-09',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-4',\n 'gpt-4-0613',\n 'gpt-4.5-preview',\n 'gpt-4.5-preview-2025-02-27',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'chatgpt-4o-latest',\n 'gpt-5-chat-latest',\n ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n | 'chatgpt-4o-latest'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo-1106'\n | 'gpt-3.5-turbo'\n | 'gpt-4-0613'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4-turbo'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1'\n | 'gpt-4'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4o-mini'\n | 'gpt-4o'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | 'gpt-5.1-codex-mini'\n | 'gpt-5.1-codex'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5-codex'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-pro-2025-10-06'\n | 'gpt-5-pro'\n | 'gpt-5'\n | 'o1-2024-12-17'\n | 'o1'\n | 'o3-2025-04-16'\n | 'o3-mini-2025-01-31'\n | 'o3-mini'\n | 'o3'\n | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiResponsesProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n conversation: z.string().nullish(),\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n 'file_search_call.results',\n 'message.output_text.logprobs',\n ]),\n )\n .nullish(),\n instructions: z.string().nullish(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create\n * @see https://cookbook.openai.com/examples/using_logprobs\n */\n logprobs: z\n .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n .optional(),\n\n /**\n * The maximum number of total calls to built-in tools that can be processed in a response.\n * This maximum number applies across all built-in tool calls, not per individual tool.\n * Any further attempts to call a tool by the model will be ignored.\n */\n maxToolCalls: z.number().nullish(),\n\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n promptCacheKey: z.string().nullish(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n reasoningEffort: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n safetyIdentifier: z.string().nullish(),\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n truncation: z.enum(['auto', 'disabled']).nullish(),\n user: z.string().nullish(),\n }),\n ),\n);\n\nexport type OpenAIResponsesProviderOptions = InferValidator<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n }),\n ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullish(),\n }),\n ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({\n fileIds: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n }),\n ),\n);\n\ntype CodeInterpreterArgs = {\n /**\n * The code interpreter container.\n * Can be a container ID\n * or an object that specifies uploaded file IDs to make available to your code.\n */\n container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * The code to run, or null if not available.\n */\n code?: string | null;\n\n /**\n * The ID of the container used to run the code.\n */\n containerId: string;\n },\n {\n /**\n * The outputs generated by the code interpreter, such as logs or images.\n * Can be null if no outputs are available.\n */\n outputs?: Array<\n | {\n type: 'logs';\n\n /**\n * The logs output from the code interpreter.\n */\n logs: string;\n }\n | {\n type: 'image';\n\n /**\n * The URL of the image output from the code interpreter.\n */\n url: string;\n }\n > | null;\n },\n CodeInterpreterArgs\n >({\n id: 'openai.code_interpreter',\n name: 'code_interpreter',\n inputSchema: codeInterpreterInputSchema,\n outputSchema: codeInterpreterOutputSchema,\n });\n\nexport const codeInterpreter = (\n args: CodeInterpreterArgs = {}, // default\n) => {\n return codeInterpreterToolFactory(args);\n};\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n key: z.string(),\n type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n type: z.enum(['and', 'or']),\n filters: z.array(\n z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n ranking: z\n .object({\n ranker: z.string().optional(),\n scoreThreshold: z.number().optional(),\n })\n .optional(),\n filters: z\n .union([comparisonFilterSchema, compoundFilterSchema])\n .optional(),\n }),\n ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n fileId: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nexport const fileSearch = createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The search query to execute.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object\n * in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters.\n * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n */\n attributes: Record<string, unknown>;\n\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs to search through.\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults?: number;\n\n /**\n * Ranking options for the search.\n */\n ranking?: {\n /**\n * The ranker to use for the file search.\n */\n ranker?: string;\n\n /**\n * The score threshold for the file search, a number between 0 and 1.\n * Numbers closer to 1 will attempt to return only the most relevant results,\n * but may return fewer results.\n */\n scoreThreshold?: number;\n };\n\n /**\n * A filter to apply.\n */\n filters?:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter;\n }\n>({\n id: 'openai.file_search',\n name: 'file_search',\n inputSchema: z.object({}),\n outputSchema: fileSearchOutputSchema,\n});\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n externalWebAccess: z.boolean().optional(),\n filters: z\n .object({ allowedDomains: z.array(z.string()).optional() })\n .optional(),\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .optional(),\n }),\n ),\n);\n\nexport const webSearchToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n\n /**\n * Optional sources cited by the model for the web search call.\n */\n sources?: Array<\n { type: 'url'; url: string } | { type: 'api'; name: string }\n >;\n },\n {\n /**\n * Whether to use external web access for fetching live content.\n * - true: Fetch live web content (default)\n * - false: Use cached/indexed results\n */\n externalWebAccess?: boolean;\n\n /**\n * Filters for the search.\n */\n filters?: {\n /**\n * Allowed domains for the search.\n * If not provided, all domains are allowed.\n * Subdomains of the provided domains are allowed as well.\n */\n allowedDomains?: string[];\n };\n\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search',\n name: 'web_search',\n inputSchema: webSearchInputSchema,\n outputSchema: webSearchOutputSchema,\n });\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n ),\n);\n\nexport const webSearchPreview =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search preview doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n },\n {\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search_preview',\n name: 'web_search_preview',\n inputSchema: webSearchPreviewInputSchema,\n outputSchema: webSearchPreviewOutputSchema,\n });\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n inputFidelity: z.enum(['low', 'high']).optional(),\n inputImageMask: z\n .object({\n fileId: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n .optional(),\n model: z.string().optional(),\n moderation: z.enum(['auto']).optional(),\n outputCompression: z.number().int().min(0).max(100).optional(),\n outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n partialImages: z.number().int().min(0).max(3).optional(),\n quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n size: z\n .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n .optional(),\n })\n .strict(),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: 'auto' | 'opaque' | 'transparent';\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: 'low' | 'high';\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string;\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string;\n };\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string;\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: 'auto';\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number;\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: 'png' | 'jpeg' | 'webp';\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: 'auto' | 'low' | 'medium' | 'high';\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n },\n ImageGenerationArgs\n >({\n id: 'openai.image_generation',\n name: 'image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { OpenAIResponsesTool } from './openai-responses-api';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): Promise<{\n tools?: Array<OpenAIResponsesTool>;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: Array<OpenAIResponsesTool> = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n });\n break;\n case 'provider-defined': {\n switch (tool.id) {\n case 'openai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n openaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n ranking_options: args.ranking\n ? {\n ranker: args.ranking.ranker,\n score_threshold: args.ranking.scoreThreshold,\n }\n : undefined,\n filters: args.filters,\n });\n\n break;\n }\n case 'openai.local_shell': {\n openaiTools.push({\n type: 'local_shell',\n });\n break;\n }\n case 'openai.web_search_preview': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchPreviewArgsSchema,\n });\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n openaiTools.push({\n type: 'web_search',\n filters:\n args.filters != null\n ? { allowed_domains: args.filters.allowedDomains }\n : undefined,\n external_web_access: args.externalWebAccess,\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.code_interpreter': {\n const args = await validateTypes({\n value: tool.args,\n schema: codeInterpreterArgsSchema,\n });\n\n openaiTools.push({\n type: 'code_interpreter',\n container:\n args.container == null\n ? { type: 'auto', file_ids: undefined }\n : typeof args.container === 'string'\n ? args.container\n : { type: 'auto', file_ids: args.container.fileIds },\n });\n break;\n }\n case 'openai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n openaiTools.push({\n type: 'image_generation',\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n size: args.size,\n quality: args.quality,\n moderation: args.moderation,\n output_format: args.outputFormat,\n output_compression: args.outputCompression,\n });\n break;\n }\n }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ProviderDefinedTool,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n InferValidator,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n codeInterpreterInputSchema,\n codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport { fileSearchOutputSchema } from '../tool/file-search';\nimport { imageGenerationOutputSchema } from '../tool/image-generation';\nimport { localShellInputSchema } from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n OpenAIResponsesChunk,\n openaiResponsesChunkSchema,\n OpenAIResponsesIncludeOptions,\n OpenAIResponsesIncludeValue,\n OpenAIResponsesLogprobs,\n openaiResponsesResponseSchema,\n OpenAIResponsesWebSearchAction,\n} from './openai-responses-api';\nimport {\n OpenAIResponsesModelId,\n openaiResponsesProviderOptionsSchema,\n TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIResponsesModelId;\n\n private readonly config: OpenAIConfig;\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n 'application/pdf': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n const modelConfig = getResponsesModelConfig(this.modelId);\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n }\n\n const openaiOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'conversation',\n details: 'conversation and previousResponseId cannot be used together',\n });\n }\n\n const { input, warnings: inputWarnings } =\n await convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n fileIdPrefixes: this.config.fileIdPrefixes,\n store: openaiOptions?.store ?? true,\n hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n });\n\n warnings.push(...inputWarnings);\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n function addInclude(key: OpenAIResponsesIncludeValue) {\n if (include == null) {\n include = [key];\n } else if (!include.includes(key)) {\n include = [...include, key];\n }\n }\n\n function hasOpenAITool(id: string) {\n return (\n tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === id,\n ) != null\n );\n }\n\n // when logprobs are requested, automatically include them:\n const topLogprobs =\n typeof openaiOptions?.logprobs === 'number'\n ? openaiOptions?.logprobs\n : openaiOptions?.logprobs === true\n ? TOP_LOGPROBS_MAX\n : undefined;\n\n if (topLogprobs) {\n addInclude('message.output_text.logprobs');\n }\n\n // when a web search tool is present, automatically include the sources:\n const webSearchToolName = (\n tools?.find(\n tool =>\n tool.type === 'provider-defined' &&\n (tool.id === 'openai.web_search' ||\n tool.id === 'openai.web_search_preview'),\n ) as LanguageModelV2ProviderDefinedTool | undefined\n )?.name;\n\n if (webSearchToolName) {\n addInclude('web_search_call.action.sources');\n }\n\n // when a code interpreter tool is present, automatically include the outputs:\n if (hasOpenAITool('openai.code_interpreter')) {\n addInclude('code_interpreter_call.outputs');\n }\n\n const store = openaiOptions?.store;\n\n // store defaults to true in the OpenAI responses API, so check for false exactly:\n if (store === false && modelConfig.isReasoningModel) {\n addInclude('reasoning.encrypted_content');\n }\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n text: {\n ...(responseFormat?.type === 'json' && {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n }),\n ...(openaiOptions?.textVerbosity && {\n verbosity: openaiOptions.textVerbosity,\n }),\n },\n }),\n\n // provider options:\n conversation: openaiOptions?.conversation,\n max_tool_calls: openaiOptions?.maxToolCalls,\n metadata: openaiOptions?.metadata,\n parallel_tool_calls: openaiOptions?.parallelToolCalls,\n previous_response_id: openaiOptions?.previousResponseId,\n store,\n user: openaiOptions?.user,\n instructions: openaiOptions?.instructions,\n service_tier: openaiOptions?.serviceTier,\n include,\n prompt_cache_key: openaiOptions?.promptCacheKey,\n prompt_cache_retention: openaiOptions?.promptCacheRetention,\n safety_identifier: openaiOptions?.safetyIdentifier,\n top_logprobs: topLogprobs,\n truncation: openaiOptions?.truncation,\n\n // model-specific settings:\n ...(modelConfig.isReasoningModel &&\n (openaiOptions?.reasoningEffort != null ||\n openaiOptions?.reasoningSummary != null) && {\n reasoning: {\n ...(openaiOptions?.reasoningEffort != null && {\n effort: openaiOptions.reasoningEffort,\n }),\n ...(openaiOptions?.reasoningSummary != null && {\n summary: openaiOptions.reasoningSummary,\n }),\n },\n }),\n };\n\n if (modelConfig.isReasoningModel) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n } else {\n if (openaiOptions?.reasoningEffort != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningEffort',\n details: 'reasoningEffort is not supported for non-reasoning models',\n });\n }\n\n if (openaiOptions?.reasoningSummary != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningSummary',\n details: 'reasoningSummary is not supported for non-reasoning models',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions?.serviceTier === 'flex' &&\n !modelConfig.supportsFlexProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n // Validate priority processing support\n if (\n openaiOptions?.serviceTier === 'priority' &&\n !modelConfig.supportsPriorityProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n });\n\n return {\n webSearchToolName,\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n store,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n } = await this.getArgs(options);\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV2Content> = [];\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n // map response content to content array (defined when there is no error)\n for (const part of response.output!) {\n switch (part.type) {\n case 'reasoning': {\n // when there are no summary parts, we need to add an empty reasoning part:\n if (part.summary.length === 0) {\n part.summary.push({ type: 'summary_text', text: '' });\n }\n\n for (const summary of part.summary) {\n content.push({\n type: 'reasoning' as const,\n text: summary.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n reasoningEncryptedContent: part.encrypted_content ?? null,\n },\n },\n });\n }\n break;\n }\n\n case 'image_generation_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'image_generation',\n result: {\n result: part.result,\n } satisfies InferValidator<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: part.action,\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n ...(annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n break;\n }\n\n case 'web_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(part.action),\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies InferValidator<typeof codeInterpreterInputSchema>),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n result: {\n outputs: part.outputs,\n } satisfies InferValidator<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n }\n }\n\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n ...(response.id != null ? { responseId: response.id } : {}),\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (typeof response.service_tier === 'string') {\n providerMetadata.openai.serviceTier = response.service_tier;\n }\n\n const usage = response.usage!; // defined when there is no error\n\n return {\n content,\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n usage: {\n inputTokens: usage.input_tokens,\n outputTokens: usage.output_tokens,\n totalTokens: usage.input_tokens + usage.output_tokens,\n reasoningTokens:\n usage.output_tokens_details?.reasoning_tokens ?? undefined,\n cachedInputTokens:\n usage.input_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at! * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n store,\n } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const self = this;\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n | {\n toolName: string;\n toolCallId: string;\n codeInterpreter?: {\n containerId: string;\n };\n }\n | undefined\n > = {};\n\n // set annotations in 'text-end' part providerMetadata.\n const ongoingAnnotations: Array<\n Extract<\n OpenAIResponsesChunk,\n { type: 'response.output_text.annotation.added' }\n >['annotation']\n > = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n const activeReasoning: Record<\n string,\n {\n encryptedContent?: string | null;\n // summary index as string to reasoning part state:\n summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIResponsesChunk>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: webSearchToolName ?? 'web_search',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'computer_use',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'computer_use',\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'code_interpreter',\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'code_interpreter',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n ongoingAnnotations.splice(0, ongoingAnnotations.length);\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (\n isResponseOutputItemAddedChunk(value) &&\n value.item.type === 'reasoning'\n ) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: { 0: 'active' },\n };\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item.id}:0`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type !== 'message'\n ) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = undefined;\n hasFunctionCall = true;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(value.item.action),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies InferValidator<\n typeof codeInterpreterOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies InferValidator<\n typeof imageGenerationOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: { itemId: value.item.id },\n },\n });\n } else if (value.item.type === 'reasoning') {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n // get all active or can-conclude summary parts' ids\n // to conclude ongoing reasoning parts:\n const summaryPartIndices = Object.entries(\n activeReasoningPart.summaryParts,\n )\n .filter(\n ([_, status]) =>\n status === 'active' || status === 'can-conclude',\n )\n .map(([summaryIndex]) => summaryIndex);\n\n for (const summaryIndex of summaryPartIndices) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item.id}:${summaryIndex}`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n\n delete activeReasoning[value.item.id];\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: value.delta,\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: '\"}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies InferValidator<\n typeof codeInterpreterInputSchema\n >),\n providerExecuted: true,\n });\n }\n } else if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n } else if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n\n if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n logprobs.push(value.logprobs);\n }\n } else if (value.type === 'response.reasoning_summary_part.added') {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n if (value.summary_index > 0) {\n const activeReasoningPart = activeReasoning[value.item_id]!;\n\n activeReasoningPart.summaryParts[value.summary_index] =\n 'active';\n\n // since there is a new active summary part, we can conclude all can-conclude summary parts\n for (const summaryIndex of Object.keys(\n activeReasoningPart.summaryParts,\n )) {\n if (\n activeReasoningPart.summaryParts[summaryIndex] ===\n 'can-conclude'\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${summaryIndex}`,\n providerMetadata: { openai: { itemId: value.item_id } },\n });\n activeReasoningPart.summaryParts[summaryIndex] =\n 'concluded';\n }\n }\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n reasoningEncryptedContent:\n activeReasoning[value.item_id]?.encryptedContent ??\n null,\n },\n },\n });\n }\n } else if (value.type === 'response.reasoning_summary_text.delta') {\n controller.enqueue({\n type: 'reasoning-delta',\n id: `${value.item_id}:${value.summary_index}`,\n delta: value.delta,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n },\n },\n });\n } else if (value.type === 'response.reasoning_summary_part.done') {\n // when OpenAI stores the message data, we can immediately conclude the reasoning part\n // since we do not need to send the encrypted content.\n if (store) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: { itemId: value.item_id },\n },\n });\n\n // mark the summary part as concluded\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'concluded';\n } else {\n // mark the summary part as can-conclude only\n // because we need to have a final summary part with the encrypted content\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'can-conclude';\n }\n } else if (isResponseFinishedChunk(value)) {\n finishReason = mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasFunctionCall,\n });\n usage.inputTokens = value.response.usage.input_tokens;\n usage.outputTokens = value.response.usage.output_tokens;\n usage.totalTokens =\n value.response.usage.input_tokens +\n value.response.usage.output_tokens;\n usage.reasoningTokens =\n value.response.usage.output_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.response.usage.input_tokens_details?.cached_tokens ??\n undefined;\n if (typeof value.response.service_tier === 'string') {\n serviceTier = value.response.service_tier;\n }\n } else if (isResponseAnnotationAddedChunk(value)) {\n ongoingAnnotations.push(value.annotation);\n if (value.annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n });\n } else if (value.annotation.type === 'file_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'document',\n id: self.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title:\n value.annotation.quote ??\n value.annotation.filename ??\n 'Document',\n filename:\n value.annotation.filename ?? value.annotation.file_id,\n ...(value.annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: value.annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type === 'message'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n ...(ongoingAnnotations.length > 0 && {\n annotations: ongoingAnnotations,\n }),\n },\n },\n });\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n responseId,\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (serviceTier !== undefined) {\n providerMetadata.openai.serviceTier = serviceTier;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isTextDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.completed' | 'response.incomplete';\n} {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.function_call_arguments.delta';\n} {\n return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.delta';\n} {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.done';\n} {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.output_text.annotation.added';\n} {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n return chunk.type === 'error';\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n const defaults = {\n systemMessageMode: 'system' as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n };\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith('gpt-5-chat')) {\n return {\n ...defaults,\n isReasoningModel: false,\n };\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('gpt-5') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'developer',\n };\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n };\n}\n\nfunction mapWebSearchOutput(\n action: OpenAIResponsesWebSearchAction,\n): InferValidator<typeof webSearchOutputSchema> {\n switch (action.type) {\n case 'search':\n return {\n action: { type: 'search', query: action.query ?? undefined },\n // include sources when provided by the Responses API (behind include flag)\n ...(action.sources != null && { sources: action.sources }),\n };\n case 'open_page':\n return { action: { type: 'openPage', url: action.url } };\n case 'find':\n return {\n action: { type: 'find', url: action.url, pattern: action.pattern },\n };\n }\n}\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport {\n EmbeddingModelV2,\n LanguageModelV2,\n ProviderV2,\n ImageModelV2,\n SpeechModelV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n loadSetting,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV2 {\n (deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding` instead.\n */\n embedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV2;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV2;\n\n textEmbedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\nCreates an Azure OpenAI model for text embeddings.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV2;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV2;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\nName of the Azure OpenAI resource. Either this or `baseURL` can be used.\n\nThe resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\nWhen a baseURL is provided, the resourceName is ignored.\n\nWith a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nCustom api version to use. Defaults to `preview`.\n */\n apiVersion?: string;\n\n /**\nUse deployment-based URLs for specific model types. Set to true to use legacy deployment format: \n`{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of \n`{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n}\n\n/**\nCreate an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const getHeaders = () => {\n const baseHeaders = {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n ...options.headers,\n };\n return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n };\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch: options.fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(deploymentId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\nDefault Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface AzureTokenResponse {\n token_type: 'Bearer';\n expires_in: number;\n access_token: string;\n}\n\ninterface AzureDeployment {\n name: string;\n properties: {\n model: {\n name: string;\n version: string;\n format: string;\n };\n provisioningState: string;\n };\n}\n\ninterface AzureDeploymentsResponse {\n value: AzureDeployment[];\n nextLink?: string;\n}\n\ninterface CachedToken {\n token: string;\n expiresAt: number;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n resourceName: string;\n apiKey: string;\n apiVersion?: string;\n deployments?: string[];\n management?: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n subscriptionId: string;\n resourceGroup: string;\n };\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n readonly id = 'azure-openai';\n readonly name = 'azure-openai';\n private tokenCache = new InMemoryServerCache();\n\n constructor(private config: AzureOpenAIGatewayConfig) {\n super();\n this.validateConfig();\n }\n\n private validateConfig(): void {\n if (!this.config.resourceName) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'resourceName is required for Azure OpenAI gateway',\n });\n }\n\n if (!this.config.apiKey) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'apiKey is required for Azure OpenAI gateway',\n });\n }\n\n const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n const hasManagement = this.config.management !== undefined;\n\n if (hasDeployments && hasManagement) {\n console.warn(\n '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n );\n }\n\n if (hasManagement) {\n this.getManagementCredentials(this.config.management!);\n }\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n if (this.config.deployments && this.config.deployments.length > 0) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: this.config.deployments,\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n if (!this.config.management) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n try {\n const credentials = this.getManagementCredentials(this.config.management);\n\n const token = await this.getAzureADToken({\n tenantId: credentials.tenantId,\n clientId: credentials.clientId,\n clientSecret: credentials.clientSecret,\n });\n\n const deployments = await this.fetchDeployments(token, {\n subscriptionId: credentials.subscriptionId,\n resourceGroup: credentials.resourceGroup,\n resourceName: this.config.resourceName,\n });\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: deployments.map(d => d.name),\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n console.warn(\n `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n );\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n }\n\n private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n const missing = [];\n if (!tenantId) missing.push('tenantId');\n if (!clientId) missing.push('clientId');\n if (!clientSecret) missing.push('clientSecret');\n if (!subscriptionId) missing.push('subscriptionId');\n if (!resourceGroup) missing.push('resourceGroup');\n\n if (missing.length > 0) {\n throw new MastraError({\n id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n });\n }\n\n return {\n tenantId,\n clientId,\n clientSecret,\n subscriptionId,\n resourceGroup,\n };\n }\n\n private async getAzureADToken(credentials: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n }): Promise<string> {\n const { tenantId, clientId, clientSecret } = credentials;\n\n const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: clientId,\n client_secret: clientSecret,\n scope: 'https://management.azure.com/.default',\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_AD_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Azure AD token: ${response.status} ${error}`,\n });\n }\n\n const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.access_token,\n expiresAt,\n });\n\n return tokenResponse.access_token;\n }\n\n private async fetchDeployments(\n token: string,\n credentials: {\n subscriptionId: string;\n resourceGroup: string;\n resourceName: string;\n },\n ): Promise<AzureDeployment[]> {\n const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n let url: string | undefined =\n `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n const allDeployments: AzureDeployment[] = [];\n\n while (url) {\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n });\n }\n\n const data = (await response.json()) as AzureDeploymentsResponse;\n\n allDeployments.push(...data.value);\n\n url = data.nextLink;\n }\n\n const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n return successfulDeployments;\n }\n\n buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n return undefined;\n }\n\n async getApiKey(_modelId: string): Promise<string> {\n return this.config.apiKey;\n }\n\n async resolveLanguageModel({\n modelId,\n apiKey,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n }): Promise<LanguageModelV2> {\n const apiVersion = this.config.apiVersion || '2024-04-01-preview';\n\n return createAzure({\n resourceName: this.config.resourceName,\n apiKey,\n apiVersion,\n useDeploymentBasedUrls: true,\n })(modelId);\n }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGateway } from './base.js';\nexport { MastraModelGateway, type ProviderConfig } from './base.js';\nexport { AzureOpenAIGateway, type AzureOpenAIGatewayConfig } from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { NetlifyGateway } from './netlify.js';\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(gatewayId: string, gateways: MastraModelGateway[]): MastraModelGateway {\n // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n const prefixedGateway = gateways.find(\n (g: MastraModelGateway) => g.id !== 'models.dev' && (g.id === gatewayId || gatewayId.startsWith(`${g.id}/`)),\n );\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check models.dev (provider registry without prefix)\n const modelsDevGateway = gateways.find((g: MastraModelGateway) => g.id === 'models.dev');\n if (modelsDevGateway) {\n return modelsDevGateway;\n }\n\n throw new MastraError({\n id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n category: 'USER',\n domain: 'MODEL_ROUTER',\n text: `No Mastra model router gateway found for model id ${gatewayId}`,\n });\n}\n","import { createHash } from 'node:crypto';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport type { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2StreamPart } from '@ai-sdk/provider-v5';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { parseModelRouterId } from './gateway-resolver.js';\nimport type { MastraModelGateway } from './gateways/base.js';\nimport { findGatewayForModel } from './gateways/index.js';\n\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport type { ModelRouterModelId } from './provider-registry.js';\nimport { PROVIDER_REGISTRY } from './provider-registry.js';\nimport type { MastraLanguageModelV2, OpenAICompatibleConfig } from './shared.types';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nfunction getStaticProvidersByGateway(name: string) {\n return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nexport const defaultGateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];\n\n/**\n * @deprecated Use defaultGateways instead. This export will be removed in a future version.\n */\nexport const gateways = defaultGateways;\n\nexport class ModelRouterLanguageModel implements MastraLanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n readonly supportedUrls = {} as Record<string, RegExp[]>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private config: OpenAICompatibleConfig & { routerId: string };\n private gateway: MastraModelGateway;\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig, customGateways?: MastraModelGateway[]) {\n // Normalize config to always have an 'id' field for routing\n let normalizedConfig: {\n id: `${string}/${string}`;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n normalizedConfig = { id: config as `${string}/${string}` };\n } else if ('providerId' in config && 'modelId' in config) {\n // Convert providerId/modelId to id format\n normalizedConfig = {\n id: `${config.providerId}/${config.modelId}` as `${string}/${string}`,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n normalizedConfig = {\n id: config.id,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n const parsedConfig: {\n id: `${string}/${string}`;\n routerId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n } = {\n ...normalizedConfig,\n routerId: normalizedConfig.id,\n };\n\n // Resolve gateway once using the normalized ID\n this.gateway = findGatewayForModel(normalizedConfig.id, [...(customGateways || []), ...defaultGateways]);\n // Extract provider from id if present\n // Gateway ID is used as prefix (except for models.dev which is a provider registry)\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const parsed = parseModelRouterId(normalizedConfig.id, gatewayPrefix);\n\n this.provider = parsed.providerId || 'openai-compatible';\n\n if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {\n parsedConfig.id = parsed.modelId as `${string}/${string}`;\n }\n\n this.modelId = parsedConfig.id;\n this.config = parsedConfig;\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doGenerate(options);\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n // Validate API key and return error stream if validation fails\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doStream(options);\n }\n\n private async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<LanguageModelV2> {\n const key = createHash('sha256')\n .update(\n this.gateway.id +\n modelId +\n providerId +\n apiKey +\n (this.config.url || '') +\n (headers ? JSON.stringify(headers) : ''),\n )\n .digest('hex');\n if (ModelRouterLanguageModel.modelInstances.has(key)) return ModelRouterLanguageModel.modelInstances.get(key)!;\n\n // If custom URL is provided, use it directly with openai-compatible\n if (this.config.url) {\n const modelInstance = createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL: this.config.url,\n headers: this.config.headers,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n\n const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey, headers });\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n private static modelInstances = new Map<string, LanguageModelV2>();\n}\n","import type { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider-v6';\nimport type { MastraLanguageModelV3 } from '../../shared.types';\nimport { createStreamFromGenerateResult } from '../generate-to-stream';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV3['doStream']>>;\n\n/**\n * Wrapper class for AI SDK V6 (LanguageModelV3) that converts doGenerate to return\n * a stream format for consistency with Mastra's streaming architecture.\n */\nexport class AISDKV6LanguageModel implements MastraLanguageModelV3 {\n /**\n * The language model must specify which language model interface version it implements.\n */\n readonly specificationVersion: 'v3' = 'v3';\n /**\n * Name of the provider for logging purposes.\n */\n readonly provider: string;\n /**\n * Provider-specific model ID for logging purposes.\n */\n readonly modelId: string;\n /**\n * Supported URL patterns by media type for the provider.\n *\n * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n * and the values are arrays of regular expressions that match the URL paths.\n * The matching should be against lower-case URLs.\n * Matched URLs are supported natively by the model and are not downloaded.\n * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n */\n supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n #model: LanguageModelV3;\n\n constructor(config: LanguageModelV3) {\n this.#model = config;\n this.provider = this.#model.provider;\n this.modelId = this.#model.modelId;\n this.supportedUrls = this.#model.supportedUrls;\n }\n\n async doGenerate(options: LanguageModelV3CallOptions) {\n const result = await this.#model.doGenerate(options);\n\n return {\n request: result.request!,\n response: result.response as unknown as StreamResult['response'],\n stream: createStreamFromGenerateResult(result),\n };\n }\n\n async doStream(options: LanguageModelV3CallOptions) {\n return await this.#model.doStream(options);\n }\n}\n","import type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport type { Mastra } from '../../mastra';\nimport { RequestContext } from '../../request-context';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { ModelRouterLanguageModel } from './router';\nimport type {\n MastraModelConfig,\n OpenAICompatibleConfig,\n MastraLanguageModel,\n MastraLegacyLanguageModel,\n} from './shared.types';\n\n/**\n * Type guard to check if a model config is an OpenAICompatibleConfig object\n * @internal\n */\nexport function isOpenAICompatibleObjectConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n): modelConfig is OpenAICompatibleConfig {\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) return false;\n // Check for OpenAICompatibleConfig - it should have either:\n // 1. 'id' field (but NOT 'model' - that's ModelWithRetries)\n // 2. Both 'providerId' and 'modelId' fields\n if (typeof modelConfig === 'object' && !('model' in modelConfig)) {\n if ('id' in modelConfig) return true;\n if ('providerId' in modelConfig && 'modelId' in modelConfig) return true;\n }\n return false;\n}\n\n/**\n * Resolves a model configuration to a LanguageModel instance.\n * Supports:\n * - Magic strings like \"openai/gpt-4o\"\n * - Config objects like { id: \"openai/gpt-4o\", apiKey: \"...\" }\n * - Direct LanguageModel instances\n * - Dynamic functions that return any of the above\n *\n * @param modelConfig The model configuration\n * @param requestContext Optional request context for dynamic resolution\n * @param mastra Optional Mastra instance for dynamic resolution\n * @returns A resolved LanguageModel instance\n *\n * @example\n * ```typescript\n * // String resolution\n * const model = await resolveModelConfig(\"openai/gpt-4o\");\n *\n * // Config object resolution\n * const model = await resolveModelConfig({\n * id: \"openai/gpt-4o\",\n * apiKey: \"sk-...\"\n * });\n *\n * // Dynamic resolution\n * const model = await resolveModelConfig(\n * ({ requestContext }) => requestContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n requestContext: RequestContext = new RequestContext(),\n mastra?: Mastra,\n): Promise<MastraLanguageModel | MastraLegacyLanguageModel> {\n // If it's a function, resolve it first\n if (typeof modelConfig === 'function') {\n modelConfig = await modelConfig({ requestContext, mastra });\n }\n\n // Filter out custom language model instances\n // TODO need a better trick, maybe symbol\n if (\n modelConfig instanceof ModelRouterLanguageModel ||\n modelConfig instanceof AISDKV5LanguageModel ||\n modelConfig instanceof AISDKV6LanguageModel\n ) {\n return modelConfig;\n }\n\n // If it's already a LanguageModel, wrap it with the appropriate wrapper\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) {\n if (modelConfig.specificationVersion === 'v2') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n if (modelConfig.specificationVersion === 'v3') {\n return new AISDKV6LanguageModel(modelConfig as LanguageModelV3);\n }\n // V1 (legacy) models pass through without wrapping\n return modelConfig;\n }\n\n const gatewayRecord = mastra?.listGateways();\n const customGateways = gatewayRecord ? Object.values(gatewayRecord) : undefined;\n\n // If it's a string (magic string like \"openai/gpt-4o\") or OpenAICompatibleConfig, create ModelRouterLanguageModel\n if (typeof modelConfig === 'string' || isOpenAICompatibleObjectConfig(modelConfig)) {\n return new ModelRouterLanguageModel(modelConfig, customGateways);\n }\n\n throw new Error('Invalid model configuration provided');\n}\n","import { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { EmbeddingModelV2 } from '@internal/ai-sdk-v5';\n\nimport { GatewayRegistry } from './provider-registry.js';\nimport type { OpenAICompatibleConfig } from './shared.types.js';\n\n/**\n * Information about a known embedding model\n */\nexport interface EmbeddingModelInfo {\n id: string;\n provider: string;\n dimensions: number;\n maxInputTokens: number;\n description?: string;\n}\n\n/**\n * Hardcoded list of known embedding models\n * This is a curated list that provides autocomplete support\n */\nexport const EMBEDDING_MODELS: EmbeddingModelInfo[] = [\n // OpenAI\n {\n id: 'text-embedding-3-small',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-small model',\n },\n {\n id: 'text-embedding-3-large',\n provider: 'openai',\n dimensions: 3072,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-large model',\n },\n {\n id: 'text-embedding-ada-002',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-ada-002 model',\n },\n // Google\n {\n id: 'gemini-embedding-001',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 2048,\n description: 'Google gemini-embedding-001 model',\n },\n {\n id: 'text-embedding-004',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 3072,\n description: 'Google text-embedding-004 model',\n },\n];\n\n/**\n * Type for embedding model IDs in the format \"provider/model\"\n */\nexport type EmbeddingModelId =\n | 'openai/text-embedding-3-small'\n | 'openai/text-embedding-3-large'\n | 'openai/text-embedding-ada-002'\n | 'google/gemini-embedding-001'\n | 'google/text-embedding-004';\n\n/**\n * Check if a model ID is a known embedding model\n */\nexport function isKnownEmbeddingModel(modelId: string): boolean {\n return EMBEDDING_MODELS.some(m => m.id === modelId);\n}\n\n/**\n * Get information about a known embedding model\n */\nexport function getEmbeddingModelInfo(modelId: string): EmbeddingModelInfo | undefined {\n return EMBEDDING_MODELS.find(m => m.id === modelId);\n}\n\n/**\n * Model router for embedding models that uses the provider/model string format.\n * Automatically resolves the correct AI SDK provider and initializes the embedding model.\n *\n * @example\n * ```ts\n * const embedder = new ModelRouterEmbeddingModel('openai/text-embedding-3-small');\n * const result = await embedder.doEmbed({ values: ['hello world'] });\n * ```\n */\nexport class ModelRouterEmbeddingModel<VALUE extends string = string> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2' as const;\n readonly modelId: string;\n readonly provider: string;\n maxEmbeddingsPerCall: number | PromiseLike<number | undefined> = 2048;\n supportsParallelCalls: boolean | PromiseLike<boolean> = true;\n\n private providerModel: EmbeddingModelV2<VALUE>;\n\n constructor(config: string | OpenAICompatibleConfig) {\n // Normalize config to always have provider and model IDs\n let normalizedConfig: {\n providerId: string;\n modelId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n // Parse provider/model from string (e.g., \"openai/text-embedding-3-small\")\n const parts = config.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = { providerId, modelId };\n } else if ('providerId' in config && 'modelId' in config) {\n normalizedConfig = {\n providerId: config.providerId,\n modelId: config.modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n const parts = config.id.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = {\n providerId,\n modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n this.provider = normalizedConfig.providerId;\n this.modelId = normalizedConfig.modelId;\n\n // If custom URL is provided, skip provider registry validation\n // and use the provided API key (or empty string if not provided)\n if (normalizedConfig.url) {\n const apiKey = normalizedConfig.apiKey || '';\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: normalizedConfig.url,\n headers: normalizedConfig.headers,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n } else {\n // Get provider config from registry\n const registry = GatewayRegistry.getInstance();\n const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);\n\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);\n }\n\n // Get API key from config or environment\n let apiKey = normalizedConfig.apiKey;\n if (!apiKey) {\n const apiKeyEnvVar = providerConfig.apiKeyEnvVar;\n if (Array.isArray(apiKeyEnvVar)) {\n // Try each possible environment variable\n for (const envVar of apiKeyEnvVar) {\n apiKey = process.env[envVar];\n if (apiKey) break;\n }\n } else {\n apiKey = process.env[apiKeyEnvVar];\n }\n }\n\n if (!apiKey) {\n const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar)\n ? providerConfig.apiKeyEnvVar.join(' or ')\n : providerConfig.apiKeyEnvVar;\n throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);\n }\n\n // Initialize the provider model directly in constructor\n if (normalizedConfig.providerId === 'openai') {\n this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else if (normalizedConfig.providerId === 'google') {\n this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else {\n // Use OpenAI-compatible provider for other providers\n if (!providerConfig.url) {\n throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);\n }\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: providerConfig.url,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n }\n }\n\n // Copy properties from the provider model if available\n if (this.providerModel.maxEmbeddingsPerCall !== undefined) {\n this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;\n }\n if (this.providerModel.supportsParallelCalls !== undefined) {\n this.supportsParallelCalls = this.providerModel.supportsParallelCalls;\n }\n }\n\n async doEmbed(\n args: Parameters<EmbeddingModelV2<VALUE>['doEmbed']>[0],\n ): Promise<Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>> {\n return this.providerModel.doEmbed(args);\n }\n}\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.72_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+azure@2.0.74_zod@3.25.76/node_modules/@ai-sdk/azure/src/azure-openai-provider.ts","../src/llm/model/gateways/azure.ts","../src/llm/model/gateways/index.ts","../src/llm/model/router.ts","../src/llm/model/aisdk/v6/model.ts","../src/llm/model/resolve-model.ts","../src/llm/model/embedding-router.ts"],"names":["z","createJsonErrorResponseHandler","convertToBase64","UnsupportedFunctionalityError","lazyValidator","zodSchema","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","generateId","createEventSourceResponseHandler","InvalidResponseDataError","toolCall","isParsableJson","InvalidPromptError","getResponseMetadata","mapOpenAIFinishReason","TooManyEmbeddingValuesForCallError","convertBase64ToUint8Array","mediaTypeToExtension","postFormDataToApi","createBinaryResponseHandler","lazySchema","createProviderDefinedToolFactoryWithOutputSchema","_a","_b","_c","validateTypes","APICallError","supportsFlexProcessing","supportsPriorityProcessing","loadApiKey","withUserAgentSuffix","loadSetting","MastraModelGateway","InMemoryServerCache","MastraError","PROVIDER_REGISTRY","NetlifyGateway","ModelsDevGateway","parseModelRouterId","AISDKV5LanguageModel","createHash","modelInstance","createOpenAICompatible","createStreamFromGenerateResult","RequestContext","GatewayRegistry","createOpenAI","createGoogleGenerativeAI"],"mappings":"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","file":"chunk-4M75INXO.cjs","sourcesContent":["import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n },\n };\n } else if (part.mediaType.startsWith('audio/')) {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'audio file parts with URLs',\n });\n }\n\n switch (part.mediaType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'wav',\n },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'mp3',\n },\n };\n }\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `audio content parts with media type ${part.mediaType}`,\n });\n }\n }\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'file',\n file:\n typeof part.data === 'string' &&\n part.data.startsWith('file-')\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict?: boolean;\n };\n}\n\nexport type OpenAIChatToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n annotations: z\n .array(\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n )\n .nullish(),\n })\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAIChatResponse = InferValidator<\n typeof openaiChatResponseSchema\n>;\n\nexport type OpenAIChatChunk = InferValidator<typeof openaiChatChunkSchema>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n | 'o1'\n | 'o1-2024-12-17'\n | 'o3-mini'\n | 'o3-mini-2025-01-31'\n | 'o3'\n | 'o3-2025-04-16'\n | 'gpt-4.1'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4o'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4-turbo'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4'\n | 'gpt-4-0613'\n | 'gpt-4.5-preview'\n | 'gpt-4.5-preview-2025-02-27'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-1106'\n | 'chatgpt-4o-latest'\n | 'gpt-5'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Modify the likelihood of specified tokens appearing in the completion.\n *\n * Accepts a JSON object that maps tokens (specified by their token ID in\n * the GPT tokenizer) to an associated bias value from -100 to 100.\n */\n logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n\n /**\n * Reasoning effort for reasoning models. Defaults to `medium`.\n */\n reasoningEffort: z\n .enum(['none', 'minimal', 'low', 'medium', 'high'])\n .optional(),\n\n /**\n * Maximum number of completion tokens to generate. Useful for reasoning models.\n */\n maxCompletionTokens: z.number().optional(),\n\n /**\n * Whether to enable persistence in responses API.\n */\n store: z.boolean().optional(),\n\n /**\n * Metadata to associate with the request.\n */\n metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n /**\n * Parameters for prediction mode.\n */\n prediction: z.record(z.string(), z.any()).optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n * Project settings. Unless otherwise configured, the Project will use 'default'.\n * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Controls the verbosity of the model's responses.\n * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n */\n textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n * Useful for improving cache hit rates and working around automatic caching issues.\n */\n promptCacheKey: z.string().optional(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n /**\n * A stable identifier used to help detect users of your application\n * that may be violating OpenAI's usage policies. The IDs should be a\n * string that uniquely identifies each user. We recommend hashing their\n * username or email address, in order to avoid sending us any identifying\n * information.\n */\n safetyIdentifier: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIChatLanguageModelOptions = InferValidator<\n typeof openaiChatLanguageModelOptions\n>;\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n OpenAIChatToolChoice,\n OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n structuredOutputs: boolean;\n strictJsonSchema: boolean;\n}): {\n tools?: OpenAIChatFunctionTool[];\n toolChoice?: OpenAIChatToolChoice;\n toolWarnings: Array<LanguageModelV2CallWarning>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: OpenAIChatFunctionTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: structuredOutputs ? strictJsonSchema : undefined,\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAIChatChunk,\n openaiChatChunkSchema,\n openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n OpenAIChatModelId,\n openaiChatLanguageModelOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: OpenAIChatConfig;\n\n constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV2CallOptions) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiChatLanguageModelOptions,\n })) ?? {};\n\n const structuredOutputs = openaiOptions.structuredOutputs ?? true;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n {\n prompt,\n systemMessageMode: getSystemMessageMode(this.modelId),\n },\n );\n\n warnings.push(...messageWarnings);\n\n const strictJsonSchema = openaiOptions.strictJsonSchema ?? false;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions.logprobs === true ||\n typeof openaiOptions.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof openaiOptions.logprobs === 'number'\n ? openaiOptions.logprobs\n : typeof openaiOptions.logprobs === 'boolean'\n ? openaiOptions.logprobs\n ? 0\n : undefined\n : undefined,\n user: openaiOptions.user,\n parallel_tool_calls: openaiOptions.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n stop: stopSequences,\n seed,\n verbosity: openaiOptions.textVerbosity,\n\n // openai specific settings:\n // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n max_completion_tokens: openaiOptions.maxCompletionTokens,\n store: openaiOptions.store,\n metadata: openaiOptions.metadata,\n prediction: openaiOptions.prediction,\n reasoning_effort: openaiOptions.reasoningEffort,\n service_tier: openaiOptions.serviceTier,\n prompt_cache_key: openaiOptions.promptCacheKey,\n prompt_cache_retention: openaiOptions.promptCacheRetention,\n safety_identifier: openaiOptions.safetyIdentifier,\n\n // messages:\n messages,\n };\n\n if (isReasoningModel(this.modelId)) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n if (baseArgs.frequency_penalty != null) {\n baseArgs.frequency_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n details: 'frequencyPenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.presence_penalty != null) {\n baseArgs.presence_penalty = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n details: 'presencePenalty is not supported for reasoning models',\n });\n }\n if (baseArgs.logit_bias != null) {\n baseArgs.logit_bias = undefined;\n warnings.push({\n type: 'other',\n message: 'logitBias is not supported for reasoning models',\n });\n }\n if (baseArgs.logprobs != null) {\n baseArgs.logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'logprobs is not supported for reasoning models',\n });\n }\n if (baseArgs.top_logprobs != null) {\n baseArgs.top_logprobs = undefined;\n warnings.push({\n type: 'other',\n message: 'topLogprobs is not supported for reasoning models',\n });\n }\n\n // reasoning models use max_completion_tokens instead of max_tokens:\n if (baseArgs.max_tokens != null) {\n if (baseArgs.max_completion_tokens == null) {\n baseArgs.max_completion_tokens = baseArgs.max_tokens;\n }\n baseArgs.max_tokens = undefined;\n }\n } else if (\n this.modelId.startsWith('gpt-4o-search-preview') ||\n this.modelId.startsWith('gpt-4o-mini-search-preview')\n ) {\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details:\n 'temperature is not supported for the search preview models and has been removed.',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions.serviceTier === 'flex' &&\n !supportsFlexProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n baseArgs.service_tier = undefined;\n }\n\n // Validate priority processing support\n if (\n openaiOptions.serviceTier === 'priority' &&\n !supportsPriorityProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n baseArgs.service_tier = undefined;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareChatTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // tool calls:\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n\n // annotations/citations:\n for (const annotation of choice.message.annotations ?? []) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let metadataExtracted = false;\n let isActiveText = false;\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIChatChunk>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n // extract and emit response metadata once. Usually it comes in the first chunk.\n // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n if (!metadataExtracted) {\n const metadata = getResponseMetadata(value);\n if (Object.values(metadata).some(Boolean)) {\n metadataExtracted = true;\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens ?? undefined;\n usage.outputTokens = value.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.usage.total_tokens ?? undefined;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n\n if (\n value.usage.completion_tokens_details\n ?.accepted_prediction_tokens != null\n ) {\n providerMetadata.openai.acceptedPredictionTokens =\n value.usage.completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n value.usage.completion_tokens_details\n ?.rejected_prediction_tokens != null\n ) {\n providerMetadata.openai.rejectedPredictionTokens =\n value.usage.completion_tokens_details?.rejected_prediction_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.content != null) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n // Tool call start. OpenAI returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n\n // annotations/citations:\n if (delta.annotations != null) {\n for (const annotation of delta.annotations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n },\n\n flush(controller) {\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isReasoningModel(modelId: string) {\n return (\n (modelId.startsWith('o') || modelId.startsWith('gpt-5')) &&\n !modelId.startsWith('gpt-5-chat')\n );\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return (\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'))\n );\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nfunction getSystemMessageMode(modelId: string) {\n if (!isReasoningModel(modelId)) {\n return 'system';\n }\n\n return (\n reasoningModels[modelId as keyof typeof reasoningModels]\n ?.systemMessageMode ?? 'developer'\n );\n}\n\nconst reasoningModels = {\n o3: {\n systemMessageMode: 'developer',\n },\n 'o3-2025-04-16': {\n systemMessageMode: 'developer',\n },\n 'o3-mini': {\n systemMessageMode: 'developer',\n },\n 'o3-mini-2025-01-31': {\n systemMessageMode: 'developer',\n },\n 'o4-mini': {\n systemMessageMode: 'developer',\n },\n 'o4-mini-2025-04-16': {\n systemMessageMode: 'developer',\n },\n} as const;\n","import {\n InvalidPromptError,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0].role === 'system') {\n text += `${prompt[0].content}\\n\\n`;\n prompt = prompt.slice(1);\n }\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n throw new InvalidPromptError({\n message: 'Unexpected system message in prompt: ${content}',\n prompt,\n });\n }\n\n case 'user': {\n const userMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n }\n })\n .filter(Boolean)\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'tool-call': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-call messages',\n });\n }\n }\n })\n .join('');\n\n text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n break;\n }\n\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool messages',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n stopSequences: [`\\n${user}:`],\n };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n logprobs: z\n .object({\n tokens: z.array(z.string()),\n token_logprobs: z.array(z.number()),\n top_logprobs: z\n .array(z.record(z.string(), z.number()))\n .nullish(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n ]),\n ),\n);\n\nexport type OpenAICompletionChunk = InferValidator<\n typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferValidator<\n typeof openaiCompletionResponseSchema\n>;\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nEcho back the prompt in addition to the completion.\n */\n echo: z.boolean().optional(),\n\n /**\nModify the likelihood of specified tokens appearing in the completion.\n\nAccepts a JSON object that maps tokens (specified by their token ID in\nthe GPT tokenizer) to an associated bias value from -100 to 100. You\ncan use this tokenizer tool to convert text to token IDs. Mathematically,\nthe bias is added to the logits generated by the model prior to sampling.\nThe exact effect will vary per model, but values between -1 and 1 should\ndecrease or increase likelihood of selection; values like -100 or 100\nshould result in a ban or exclusive selection of the relevant token.\n\nAs an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\ntoken from being generated.\n */\n logitBias: z.record(z.string(), z.number()).optional(),\n\n /**\nThe suffix that comes after a completion of inserted text.\n */\n suffix: z.string().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\nReturn the log probabilities of the tokens. Including logprobs will increase\nthe response size and can slow down response times. However, it can\nbe useful to better understand how the model is behaving.\nSetting to true will return the log probabilities of the tokens that\nwere generated.\nSetting to a number will return the log probabilities of the top n\ntokens that were generated.\n */\n logprobs: z.union([z.boolean(), z.number()]).optional(),\n }),\n ),\n);\n\nexport type OpenAICompletionProviderOptions = InferValidator<\n typeof openaiCompletionProviderOptions\n>;\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAICompletionChunk,\n openaiCompletionChunkSchema,\n openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n OpenAICompletionModelId,\n openaiCompletionProviderOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompletionModelId;\n\n private readonly config: OpenAICompletionConfig;\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n constructor(\n modelId: OpenAICompletionModelId,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported for completion models.\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions = {\n ...(await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n ...(await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n };\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (tools?.length) {\n warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n }\n\n if (toolChoice != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { prompt: completionPrompt, stopSequences } =\n convertToOpenAICompletionPrompt({ prompt });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: openaiOptions.echo,\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions?.logprobs === true\n ? 0\n : openaiOptions?.logprobs === false\n ? undefined\n : openaiOptions?.logprobs,\n suffix: openaiOptions.suffix,\n user: openaiOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAICompletionChunk>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({ type: 'text-start', id: '0' });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n if (choice?.text != null && choice.text.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: choice.text,\n });\n }\n },\n\n flush(controller) {\n if (!isFirstChunk) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n providerMetadata,\n usage,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n | 'text-embedding-3-small'\n | 'text-embedding-3-large'\n | 'text-embedding-ada-002'\n | (string & {});\n\nexport const openaiEmbeddingProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\nThe number of dimensions the resulting output embeddings should have.\nOnly supported in text-embedding-3 and later models.\n */\n dimensions: z.number().optional(),\n\n /**\nA unique identifier representing your end-user, which can help OpenAI to\nmonitor and detect abuse. Learn more.\n*/\n user: z.string().optional(),\n }),\n ),\n);\n\nexport type OpenAIEmbeddingProviderOptions = InferValidator<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n }),\n ),\n);\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: OpenAIConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiEmbeddingProviderOptions,\n })) ?? {};\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/embeddings',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n dimensions: openaiOptions.dimensions,\n user: openaiOptions.user,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n revised_prompt: z.string().nullish(),\n }),\n ),\n }),\n ),\n);\n","export type OpenAIImageModelId =\n | 'dall-e-3'\n | 'dall-e-2'\n | 'gpt-image-1'\n | 'gpt-image-1-mini'\n | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n 'dall-e-3': 1,\n 'dall-e-2': 10,\n 'gpt-image-1': 10,\n 'gpt-image-1-mini': 10,\n};\n\nexport const hasDefaultResponseFormat = new Set([\n 'gpt-image-1',\n 'gpt-image-1-mini',\n]);\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n OpenAIImageModelId,\n hasDefaultResponseFormat,\n modelMaxImagesPerCall,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly config: OpenAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n ...(providerOptions.openai ?? {}),\n ...(!hasDefaultResponseFormat.has(this.modelId)\n ? { response_format: 'b64_json' }\n : {}),\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n openai: {\n images: response.data.map(item =>\n item.revised_prompt\n ? {\n revisedPrompt: item.revised_prompt,\n }\n : null,\n ),\n },\n },\n };\n }\n}\n","import { lazyValidator, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n text: z.string(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n words: z\n .array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n )\n .nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n | 'whisper-1'\n | 'gpt-4o-mini-transcribe'\n | 'gpt-4o-transcribe'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionProviderOptions = lazyValidator(() =>\n zodSchema(\n z.object({\n /**\n * Additional information to include in the transcription response.\n */\n\n include: z.array(z.string()).optional(),\n\n /**\n * The language of the input audio in ISO-639-1 format.\n */\n language: z.string().optional(),\n\n /**\n * An optional text to guide the model's style or continue a previous audio segment.\n */\n prompt: z.string().optional(),\n\n /**\n * The sampling temperature, between 0 and 1.\n * @default 0\n */\n temperature: z.number().min(0).max(1).default(0).optional(),\n\n /**\n * The timestamp granularities to populate for this transcription.\n * @default ['segment']\n */\n timestampGranularities: z\n .array(z.enum(['word', 'segment']))\n .default(['segment'])\n .optional(),\n }),\n ),\n);\n\nexport type OpenAITranscriptionProviderOptions = InferValidator<\n typeof openAITranscriptionProviderOptions\n>;\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n OpenAITranscriptionModelId,\n openAITranscriptionProviderOptions,\n OpenAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV2CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: OpenAITranscriptionProviderOptions;\n };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n afrikaans: 'af',\n arabic: 'ar',\n armenian: 'hy',\n azerbaijani: 'az',\n belarusian: 'be',\n bosnian: 'bs',\n bulgarian: 'bg',\n catalan: 'ca',\n chinese: 'zh',\n croatian: 'hr',\n czech: 'cs',\n danish: 'da',\n dutch: 'nl',\n english: 'en',\n estonian: 'et',\n finnish: 'fi',\n french: 'fr',\n galician: 'gl',\n german: 'de',\n greek: 'el',\n hebrew: 'he',\n hindi: 'hi',\n hungarian: 'hu',\n icelandic: 'is',\n indonesian: 'id',\n italian: 'it',\n japanese: 'ja',\n kannada: 'kn',\n kazakh: 'kk',\n korean: 'ko',\n latvian: 'lv',\n lithuanian: 'lt',\n macedonian: 'mk',\n malay: 'ms',\n marathi: 'mr',\n maori: 'mi',\n nepali: 'ne',\n norwegian: 'no',\n persian: 'fa',\n polish: 'pl',\n portuguese: 'pt',\n romanian: 'ro',\n russian: 'ru',\n serbian: 'sr',\n slovak: 'sk',\n slovenian: 'sl',\n spanish: 'es',\n swahili: 'sw',\n swedish: 'sv',\n tagalog: 'tl',\n tamil: 'ta',\n thai: 'th',\n turkish: 'tr',\n ukrainian: 'uk',\n urdu: 'ur',\n vietnamese: 'vi',\n welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAITranscriptionModelId,\n private readonly config: OpenAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAITranscriptionProviderOptions,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions = {\n include: openAIOptions.include,\n language: openAIOptions.language,\n prompt: openAIOptions.prompt,\n // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n // prefer verbose_json to get segments for models that support it\n response_format: [\n 'gpt-4o-transcribe',\n 'gpt-4o-mini-transcribe',\n ].includes(this.modelId)\n ? 'json'\n : 'verbose_json',\n temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const language =\n response.language != null && response.language in languageMap\n ? languageMap[response.language as keyof typeof languageMap]\n : undefined;\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ??\n response.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ??\n [],\n language,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n | 'tts-1'\n | 'tts-1-hd'\n | 'gpt-4o-mini-tts'\n | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n }),\n ),\n);\n\nexport type OpenAISpeechCallOptions = InferValidator<\n typeof openaiSpeechProviderOptionsSchema\n>;\n","import { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n openaiSpeechProviderOptionsSchema,\n OpenAISpeechModelId,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAISpeechModelId,\n private readonly config: OpenAISpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n language,\n providerOptions,\n }: Parameters<SpeechModelV2['doGenerate']>[0]) {\n const warnings: SpeechModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n input: text,\n voice,\n response_format: 'mp3',\n speed,\n instructions,\n };\n\n if (outputFormat) {\n if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (openAIOptions) {\n const speechModelOptions: OpenAISpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n });\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/audio/speech',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeoutMs: z.number().optional(),\n user: z.string().optional(),\n workingDirectory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * Execute a shell command on the server.\n */\n action: {\n type: 'exec';\n\n /**\n * The command to run.\n */\n command: string[];\n\n /**\n * Optional timeout in milliseconds for the command.\n */\n timeoutMs?: number;\n\n /**\n * Optional user to run the command as.\n */\n user?: string;\n\n /**\n * Optional working directory to run the command in.\n */\n workingDirectory?: string;\n\n /**\n * Environment variables to set for the command.\n */\n env?: Record<string, string>;\n };\n },\n {\n /**\n * The output of local shell tool call.\n */\n output: string;\n },\n {}\n>({\n id: 'openai.local_shell',\n name: 'local_shell',\n inputSchema: localShellInputSchema,\n outputSchema: localShellOutputSchema,\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n LanguageModelV2ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n convertToBase64,\n parseProviderOptions,\n validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport {\n OpenAIResponsesFunctionCallOutput,\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n if (!prefixes) return false;\n return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode,\n fileIdPrefixes,\n store,\n hasLocalShellTool = false,\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n fileIdPrefixes?: readonly string[];\n store: boolean;\n hasLocalShellTool?: boolean;\n}): Promise<{\n input: OpenAIResponsesInput;\n warnings: Array<LanguageModelV2CallWarning>;\n}> {\n const input: OpenAIResponsesInput = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n input.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n input.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n input.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'input_text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'input_image',\n ...(part.data instanceof URL\n ? { image_url: part.data.toString() }\n : typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n }),\n detail: part.providerOptions?.openai?.imageDetail,\n };\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n return {\n type: 'input_file',\n file_url: part.data.toString(),\n };\n }\n return {\n type: 'input_file',\n ...(typeof part.data === 'string' &&\n isFileId(part.data, fileIdPrefixes)\n ? { file_id: part.data }\n : {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n }),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n const toolCallParts: Record<string, LanguageModelV2ToolCallPart> = {};\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id,\n });\n\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n const id = part.providerOptions?.openai?.itemId as\n | string\n | undefined;\n\n // item references reduce the payload size\n if (store && id != null) {\n input.push({ type: 'item_reference', id });\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = await validateTypes({\n value: part.input,\n schema: localShellInputSchema,\n });\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id: id!,\n action: {\n type: 'exec',\n command: parsedInput.action.command,\n timeout_ms: parsedInput.action.timeoutMs,\n user: parsedInput.action.user,\n working_directory: parsedInput.action.workingDirectory,\n env: parsedInput.action.env,\n },\n });\n\n break;\n }\n\n input.push({\n type: 'function_call',\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n id,\n });\n break;\n }\n\n // assistant tool result parts are from provider-executed tools:\n case 'tool-result': {\n if (store) {\n // use item references to refer to tool results from built-in tools\n input.push({ type: 'item_reference', id: part.toolCallId });\n } else {\n warnings.push({\n type: 'other',\n message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n });\n }\n\n break;\n }\n\n case 'reasoning': {\n const providerOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions: part.providerOptions,\n schema: openaiResponsesReasoningProviderOptionsSchema,\n });\n\n const reasoningId = providerOptions?.itemId;\n\n if (reasoningId != null) {\n const reasoningMessage = reasoningMessages[reasoningId];\n\n if (store) {\n // use item references to refer to reasoning (single reference)\n // when the first part is encountered\n if (reasoningMessage === undefined) {\n input.push({ type: 'item_reference', id: reasoningId });\n\n // store unused reasoning message to mark id as used\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n summary: [],\n };\n }\n } else {\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n\n if (part.text.length > 0) {\n summaryParts.push({\n type: 'summary_text',\n text: part.text,\n });\n } else if (reasoningMessage !== undefined) {\n warnings.push({\n type: 'other',\n message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n\n if (reasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n encrypted_content:\n providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n };\n input.push(reasoningMessages[reasoningId]);\n } else {\n reasoningMessage.summary.push(...summaryParts);\n\n // updated encrypted content to enable setting it in the last summary part:\n if (providerOptions?.reasoningEncryptedContent != null) {\n reasoningMessage.encrypted_content =\n providerOptions.reasoningEncryptedContent;\n }\n }\n }\n } else {\n warnings.push({\n type: 'other',\n message: `Non-OpenAI reasoning parts are not supported. Skipping reasoning part: ${JSON.stringify(part)}.`,\n });\n }\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of content) {\n const output = part.output;\n\n if (\n hasLocalShellTool &&\n part.toolName === 'local_shell' &&\n output.type === 'json'\n ) {\n const parsedOutput = await validateTypes({\n value: output.value,\n schema: localShellOutputSchema,\n });\n\n input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: parsedOutput.output,\n });\n break;\n }\n\n let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n case 'content':\n contentValue = output.value.map(item => {\n switch (item.type) {\n case 'text': {\n return { type: 'input_text' as const, text: item.text };\n }\n case 'media': {\n return item.mediaType.startsWith('image/')\n ? {\n type: 'input_image' as const,\n image_url: `data:${item.mediaType};base64,${item.data}`,\n }\n : {\n type: 'input_file' as const,\n filename: 'data',\n file_data: `data:${item.mediaType};base64,${item.data}`,\n };\n }\n }\n });\n break;\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: contentValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasFunctionCall,\n}: {\n finishReason: string | null | undefined;\n // flag that checks if there have been client-side tool calls (not executed by openai)\n hasFunctionCall: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasFunctionCall ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasFunctionCall ? 'tool-calls' : 'unknown';\n }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n | OpenAIResponsesSystemMessage\n | OpenAIResponsesUserMessage\n | OpenAIResponsesAssistantMessage\n | OpenAIResponsesFunctionCall\n | OpenAIResponsesFunctionCallOutput\n | OpenAIResponsesComputerCall\n | OpenAIResponsesLocalShellCall\n | OpenAIResponsesLocalShellCallOutput\n | OpenAIResponsesReasoning\n | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n | 'web_search_call.action.sources'\n | 'code_interpreter_call.outputs'\n | 'computer_call_output.output.image_url'\n | 'file_search_call.results'\n | 'message.input_image.image_url'\n | 'message.output_text.logprobs'\n | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n | Array<OpenAIResponsesIncludeValue>\n | undefined\n | null;\n\nexport type OpenAIResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n role: 'user';\n content: Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_image'; file_id: string }\n | { type: 'input_file'; file_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n | { type: 'input_file'; file_id: string }\n >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n role: 'assistant';\n content: Array<{ type: 'output_text'; text: string }>;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n type: 'function_call';\n call_id: string;\n name: string;\n arguments: string;\n id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output:\n | string\n | Array<\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string }\n | { type: 'input_file'; filename: string; file_data: string }\n >;\n};\n\nexport type OpenAIResponsesComputerCall = {\n type: 'computer_call';\n id: string;\n status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n type: 'local_shell_call';\n id: string;\n call_id: string;\n action: {\n type: 'exec';\n command: string[];\n timeout_ms?: number;\n user?: string;\n working_directory?: string;\n env?: Record<string, string>;\n };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n type: 'local_shell_call_output';\n call_id: string;\n output: string;\n};\n\nexport type OpenAIResponsesItemReference = {\n type: 'item_reference';\n id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n /**\n * The key to compare against the value.\n */\n key: string;\n\n /**\n * Specifies the comparison operator: eq, ne, gt, gte, lt, lte.\n */\n type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';\n\n /**\n * The value to compare against the attribute key; supports string, number, or boolean types.\n */\n value: string | number | boolean;\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n /**\n * Type of operation: and or or.\n */\n type: 'and' | 'or';\n\n /**\n * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n */\n filters: Array<\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n >;\n};\n\nexport type OpenAIResponsesTool =\n | {\n type: 'function';\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict: boolean | undefined;\n }\n | {\n type: 'web_search';\n external_web_access: boolean | undefined;\n filters: { allowed_domains: string[] | undefined } | undefined;\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'web_search_preview';\n search_context_size: 'low' | 'medium' | 'high' | undefined;\n user_location:\n | {\n type: 'approximate';\n city?: string;\n country?: string;\n region?: string;\n timezone?: string;\n }\n | undefined;\n }\n | {\n type: 'code_interpreter';\n container: string | { type: 'auto'; file_ids: string[] | undefined };\n }\n | {\n type: 'file_search';\n vector_store_ids: string[];\n max_num_results: number | undefined;\n ranking_options:\n | { ranker?: string; score_threshold?: number }\n | undefined;\n filters:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter\n | undefined;\n }\n | {\n type: 'image_generation';\n background: 'auto' | 'opaque' | 'transparent' | undefined;\n input_fidelity: 'low' | 'high' | undefined;\n input_image_mask:\n | {\n file_id: string | undefined;\n image_url: string | undefined;\n }\n | undefined;\n model: string | undefined;\n moderation: 'auto' | undefined;\n output_compression: number | undefined;\n output_format: 'png' | 'jpeg' | 'webp' | undefined;\n quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n }\n | {\n type: 'local_shell';\n };\n\nexport type OpenAIResponsesReasoning = {\n type: 'reasoning';\n id: string;\n encrypted_content?: string | null;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n};\n\nexport const openaiResponsesChunkSchema = lazyValidator(() =>\n zodSchema(\n z.union([\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.enum(['response.completed', 'response.incomplete']),\n response: z.object({\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z.object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n }),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.created'),\n response: z.object({\n id: z.string(),\n created_at: z.number(),\n model: z.string(),\n service_tier: z.string().nullish(),\n }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n output_index: z.number(),\n item: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n z.object({\n type: z.literal('function_call'),\n id: z.string(),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n status: z.literal('completed'),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.function_call_arguments.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.image_generation_call.partial_image'),\n item_id: z.string(),\n output_index: z.number(),\n partial_image_b64: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.delta'),\n item_id: z.string(),\n output_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call_code.done'),\n item_id: z.string(),\n output_index: z.number(),\n code: z.string(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n annotation: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n summary_index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n sequence_number: z.number(),\n error: z.object({\n type: z.string(),\n code: z.string(),\n message: z.string(),\n param: z.string().nullish(),\n }),\n }),\n z\n .object({ type: z.string() })\n .loose()\n .transform(value => ({\n type: 'unknown_chunk' as const,\n message: value.type,\n })), // fallback for unknown chunks\n ]),\n ),\n);\n\nexport type OpenAIResponsesChunk = InferValidator<\n typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n (OpenAIResponsesChunk & {\n type: 'response.output_text.delta';\n })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n ((OpenAIResponsesChunk & {\n type: 'response.output_item.done';\n })['item'] & {\n type: 'web_search_call';\n })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n id: z.string().optional(),\n created_at: z.number().optional(),\n error: z\n .object({\n message: z.string(),\n type: z.string(),\n param: z.string().nullish(),\n code: z.string(),\n })\n .nullish(),\n model: z.string().optional(),\n output: z\n .array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message'),\n role: z.literal('assistant'),\n id: z.string(),\n content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n logprobs: z\n .array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z.object({\n token: z.string(),\n logprob: z.number(),\n }),\n ),\n }),\n )\n .nullish(),\n annotations: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('url_citation'),\n start_index: z.number(),\n end_index: z.number(),\n url: z.string(),\n title: z.string(),\n }),\n z.object({\n type: z.literal('file_citation'),\n file_id: z.string(),\n filename: z.string().nullish(),\n index: z.number().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n quote: z.string().nullish(),\n }),\n z.object({\n type: z.literal('container_file_citation'),\n container_id: z.string(),\n file_id: z.string(),\n filename: z.string().nullish(),\n start_index: z.number().nullish(),\n end_index: z.number().nullish(),\n index: z.number().nullish(),\n }),\n z.object({\n type: z.literal('file_path'),\n file_id: z.string(),\n index: z.number().nullish(),\n }),\n ]),\n ),\n }),\n ),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().nullish(),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('open_page'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(\n z.string(),\n z.union([z.string(), z.number(), z.boolean()]),\n ),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n code: z.string().nullable(),\n container_id: z.string(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n }),\n z.object({\n type: z.literal('local_shell_call'),\n id: z.string(),\n call_id: z.string(),\n action: z.object({\n type: z.literal('exec'),\n command: z.array(z.string()),\n timeout_ms: z.number().optional(),\n user: z.string().optional(),\n working_directory: z.string().optional(),\n env: z.record(z.string(), z.string()).optional(),\n }),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n )\n .optional(),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: z\n .object({\n input_tokens: z.number(),\n input_tokens_details: z\n .object({ cached_tokens: z.number().nullish() })\n .nullish(),\n output_tokens: z.number(),\n output_tokens_details: z\n .object({ reasoning_tokens: z.number().nullish() })\n .nullish(),\n })\n .optional(),\n }),\n ),\n);\n","import {\n InferValidator,\n lazyValidator,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n 'o1',\n 'o1-2024-12-17',\n 'o3',\n 'o3-2025-04-16',\n 'o3-deep-research',\n 'o3-deep-research-2025-06-26',\n 'o3-mini',\n 'o3-mini-2025-01-31',\n 'o4-mini',\n 'o4-mini-2025-04-16',\n 'o4-mini-deep-research',\n 'o4-mini-deep-research-2025-06-26',\n 'codex-mini-latest',\n 'computer-use-preview',\n 'gpt-5',\n 'gpt-5-2025-08-07',\n 'gpt-5-codex',\n 'gpt-5-mini',\n 'gpt-5-mini-2025-08-07',\n 'gpt-5-nano',\n 'gpt-5-nano-2025-08-07',\n 'gpt-5-pro',\n 'gpt-5-pro-2025-10-06',\n 'gpt-5.1',\n 'gpt-5.1-chat-latest',\n 'gpt-5.1-codex-mini',\n 'gpt-5.1-codex',\n] as const;\n\nexport const openaiResponsesModelIds = [\n 'gpt-4.1',\n 'gpt-4.1-2025-04-14',\n 'gpt-4.1-mini',\n 'gpt-4.1-mini-2025-04-14',\n 'gpt-4.1-nano',\n 'gpt-4.1-nano-2025-04-14',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-audio-preview',\n 'gpt-4o-audio-preview-2024-10-01',\n 'gpt-4o-audio-preview-2024-12-17',\n 'gpt-4o-search-preview',\n 'gpt-4o-search-preview-2025-03-11',\n 'gpt-4o-mini-search-preview',\n 'gpt-4o-mini-search-preview-2025-03-11',\n 'gpt-4o-mini',\n 'gpt-4o-mini-2024-07-18',\n 'gpt-4-turbo',\n 'gpt-4-turbo-2024-04-09',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-4',\n 'gpt-4-0613',\n 'gpt-4.5-preview',\n 'gpt-4.5-preview-2025-02-27',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'chatgpt-4o-latest',\n 'gpt-5-chat-latest',\n ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n | 'chatgpt-4o-latest'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo-1106'\n | 'gpt-3.5-turbo'\n | 'gpt-4-0613'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4-turbo'\n | 'gpt-4.1-2025-04-14'\n | 'gpt-4.1-mini-2025-04-14'\n | 'gpt-4.1-mini'\n | 'gpt-4.1-nano-2025-04-14'\n | 'gpt-4.1-nano'\n | 'gpt-4.1'\n | 'gpt-4'\n | 'gpt-4o-2024-05-13'\n | 'gpt-4o-2024-08-06'\n | 'gpt-4o-2024-11-20'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4o-mini'\n | 'gpt-4o'\n | 'gpt-5.1'\n | 'gpt-5.1-chat-latest'\n | 'gpt-5.1-codex-mini'\n | 'gpt-5.1-codex'\n | 'gpt-5-2025-08-07'\n | 'gpt-5-chat-latest'\n | 'gpt-5-codex'\n | 'gpt-5-mini-2025-08-07'\n | 'gpt-5-mini'\n | 'gpt-5-nano-2025-08-07'\n | 'gpt-5-nano'\n | 'gpt-5-pro-2025-10-06'\n | 'gpt-5-pro'\n | 'gpt-5'\n | 'o1-2024-12-17'\n | 'o1'\n | 'o3-2025-04-16'\n | 'o3-mini-2025-01-31'\n | 'o3-mini'\n | 'o3'\n | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiResponsesProviderOptionsSchema = lazyValidator(() =>\n zodSchema(\n z.object({\n conversation: z.string().nullish(),\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n 'file_search_call.results',\n 'message.output_text.logprobs',\n ]),\n )\n .nullish(),\n instructions: z.string().nullish(),\n\n /**\n * Return the log probabilities of the tokens.\n *\n * Setting to true will return the log probabilities of the tokens that\n * were generated.\n *\n * Setting to a number will return the log probabilities of the top n\n * tokens that were generated.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create\n * @see https://cookbook.openai.com/examples/using_logprobs\n */\n logprobs: z\n .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n .optional(),\n\n /**\n * The maximum number of total calls to built-in tools that can be processed in a response.\n * This maximum number applies across all built-in tool calls, not per individual tool.\n * Any further attempts to call a tool by the model will be ignored.\n */\n maxToolCalls: z.number().nullish(),\n\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n promptCacheKey: z.string().nullish(),\n\n /**\n * The retention policy for the prompt cache.\n * - 'in_memory': Default. Standard prompt caching behavior.\n * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n * Currently only available for 5.1 series models.\n *\n * @default 'in_memory'\n */\n promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n reasoningEffort: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n safetyIdentifier: z.string().nullish(),\n serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n truncation: z.enum(['auto', 'disabled']).nullish(),\n user: z.string().nullish(),\n }),\n ),\n);\n\nexport type OpenAIResponsesProviderOptions = InferValidator<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n }),\n ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullish(),\n }),\n ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n container: z\n .union([\n z.string(),\n z.object({\n fileIds: z.array(z.string()).optional(),\n }),\n ])\n .optional(),\n }),\n ),\n);\n\ntype CodeInterpreterArgs = {\n /**\n * The code interpreter container.\n * Can be a container ID\n * or an object that specifies uploaded file IDs to make available to your code.\n */\n container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * The code to run, or null if not available.\n */\n code?: string | null;\n\n /**\n * The ID of the container used to run the code.\n */\n containerId: string;\n },\n {\n /**\n * The outputs generated by the code interpreter, such as logs or images.\n * Can be null if no outputs are available.\n */\n outputs?: Array<\n | {\n type: 'logs';\n\n /**\n * The logs output from the code interpreter.\n */\n logs: string;\n }\n | {\n type: 'image';\n\n /**\n * The URL of the image output from the code interpreter.\n */\n url: string;\n }\n > | null;\n },\n CodeInterpreterArgs\n >({\n id: 'openai.code_interpreter',\n name: 'code_interpreter',\n inputSchema: codeInterpreterInputSchema,\n outputSchema: codeInterpreterOutputSchema,\n });\n\nexport const codeInterpreter = (\n args: CodeInterpreterArgs = {}, // default\n) => {\n return codeInterpreterToolFactory(args);\n};\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n key: z.string(),\n type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte']),\n value: z.union([z.string(), z.number(), z.boolean()]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n type: z.enum(['and', 'or']),\n filters: z.array(\n z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n vectorStoreIds: z.array(z.string()),\n maxNumResults: z.number().optional(),\n ranking: z\n .object({\n ranker: z.string().optional(),\n scoreThreshold: z.number().optional(),\n })\n .optional(),\n filters: z\n .union([comparisonFilterSchema, compoundFilterSchema])\n .optional(),\n }),\n ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n fileId: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullable(),\n }),\n ),\n);\n\nexport const fileSearch = createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The search query to execute.\n */\n queries: string[];\n\n /**\n * The results of the file search tool call.\n */\n results:\n | null\n | {\n /**\n * Set of 16 key-value pairs that can be attached to an object.\n * This can be useful for storing additional information about the object\n * in a structured format, and querying for objects via API or the dashboard.\n * Keys are strings with a maximum length of 64 characters.\n * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n */\n attributes: Record<string, unknown>;\n\n /**\n * The unique ID of the file.\n */\n fileId: string;\n\n /**\n * The name of the file.\n */\n filename: string;\n\n /**\n * The relevance score of the file - a value between 0 and 1.\n */\n score: number;\n\n /**\n * The text that was retrieved from the file.\n */\n text: string;\n }[];\n },\n {\n /**\n * List of vector store IDs to search through.\n */\n vectorStoreIds: string[];\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults?: number;\n\n /**\n * Ranking options for the search.\n */\n ranking?: {\n /**\n * The ranker to use for the file search.\n */\n ranker?: string;\n\n /**\n * The score threshold for the file search, a number between 0 and 1.\n * Numbers closer to 1 will attempt to return only the most relevant results,\n * but may return fewer results.\n */\n scoreThreshold?: number;\n };\n\n /**\n * A filter to apply.\n */\n filters?:\n | OpenAIResponsesFileSearchToolComparisonFilter\n | OpenAIResponsesFileSearchToolCompoundFilter;\n }\n>({\n id: 'openai.file_search',\n name: 'file_search',\n inputSchema: z.object({}),\n outputSchema: fileSearchOutputSchema,\n});\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n externalWebAccess: z.boolean().optional(),\n filters: z\n .object({ allowedDomains: z.array(z.string()).optional() })\n .optional(),\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n sources: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('url'), url: z.string() }),\n z.object({ type: z.literal('api'), name: z.string() }),\n ]),\n )\n .optional(),\n }),\n ),\n);\n\nexport const webSearchToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n\n /**\n * Optional sources cited by the model for the web search call.\n */\n sources?: Array<\n { type: 'url'; url: string } | { type: 'api'; name: string }\n >;\n },\n {\n /**\n * Whether to use external web access for fetching live content.\n * - true: Fetch live web content (default)\n * - false: Use cached/indexed results\n */\n externalWebAccess?: boolean;\n\n /**\n * Filters for the search.\n */\n filters?: {\n /**\n * Allowed domains for the search.\n * If not provided, all domains are allowed.\n * Subdomains of the provided domains are allowed as well.\n */\n allowedDomains?: string[];\n };\n\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search',\n name: 'web_search',\n inputSchema: webSearchInputSchema,\n outputSchema: webSearchOutputSchema,\n });\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n userLocation: z\n .object({\n type: z.literal('approximate'),\n country: z.string().optional(),\n city: z.string().optional(),\n region: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n }),\n ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n action: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().optional(),\n }),\n z.object({\n type: z.literal('openPage'),\n url: z.string(),\n }),\n z.object({\n type: z.literal('find'),\n url: z.string(),\n pattern: z.string(),\n }),\n ]),\n }),\n ),\n);\n\nexport const webSearchPreview =\n createProviderDefinedToolFactoryWithOutputSchema<\n {\n // Web search preview doesn't take input parameters - it's controlled by the prompt\n },\n {\n /**\n * An object describing the specific action taken in this web search call.\n * Includes details on how the model used the web (search, open_page, find).\n */\n action:\n | {\n /**\n * Action type \"search\" - Performs a web search query.\n */\n type: 'search';\n\n /**\n * The search query.\n */\n query?: string;\n }\n | {\n /**\n * Action type \"openPage\" - Opens a specific URL from search results.\n */\n type: 'openPage';\n\n /**\n * The URL opened by the model.\n */\n url: string;\n }\n | {\n /**\n * Action type \"find\": Searches for a pattern within a loaded page.\n */\n type: 'find';\n\n /**\n * The URL of the page searched for the pattern.\n */\n url: string;\n\n /**\n * The pattern or text to search for within the page.\n */\n pattern: string;\n };\n },\n {\n /**\n * Search context size to use for the web search.\n * - high: Most comprehensive context, highest cost, slower response\n * - medium: Balanced context, cost, and latency (default)\n * - low: Least context, lowest cost, fastest response\n */\n searchContextSize?: 'low' | 'medium' | 'high';\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation?: {\n /**\n * Type of location (always 'approximate')\n */\n type: 'approximate';\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country?: string;\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city?: string;\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region?: string;\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone?: string;\n };\n }\n >({\n id: 'openai.web_search_preview',\n name: 'web_search_preview',\n inputSchema: webSearchPreviewInputSchema,\n outputSchema: webSearchPreviewOutputSchema,\n });\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n zodSchema(\n z\n .object({\n background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n inputFidelity: z.enum(['low', 'high']).optional(),\n inputImageMask: z\n .object({\n fileId: z.string().optional(),\n imageUrl: z.string().optional(),\n })\n .optional(),\n model: z.string().optional(),\n moderation: z.enum(['auto']).optional(),\n outputCompression: z.number().int().min(0).max(100).optional(),\n outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n partialImages: z.number().int().min(0).max(3).optional(),\n quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n size: z\n .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n .optional(),\n })\n .strict(),\n ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: 'auto' | 'opaque' | 'transparent';\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: 'low' | 'high';\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string;\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string;\n };\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string;\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: 'auto';\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number;\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: 'png' | 'jpeg' | 'webp';\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: 'auto' | 'low' | 'medium' | 'high';\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n },\n ImageGenerationArgs\n >({\n id: 'openai.image_generation',\n name: 'image_generation',\n inputSchema: imageGenerationInputSchema,\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { OpenAIResponsesTool } from './openai-responses-api';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): Promise<{\n tools?: Array<OpenAIResponsesTool>;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: Array<OpenAIResponsesTool> = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n });\n break;\n case 'provider-defined': {\n switch (tool.id) {\n case 'openai.file_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: fileSearchArgsSchema,\n });\n\n openaiTools.push({\n type: 'file_search',\n vector_store_ids: args.vectorStoreIds,\n max_num_results: args.maxNumResults,\n ranking_options: args.ranking\n ? {\n ranker: args.ranking.ranker,\n score_threshold: args.ranking.scoreThreshold,\n }\n : undefined,\n filters: args.filters,\n });\n\n break;\n }\n case 'openai.local_shell': {\n openaiTools.push({\n type: 'local_shell',\n });\n break;\n }\n case 'openai.web_search_preview': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchPreviewArgsSchema,\n });\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n openaiTools.push({\n type: 'web_search',\n filters:\n args.filters != null\n ? { allowed_domains: args.filters.allowedDomains }\n : undefined,\n external_web_access: args.externalWebAccess,\n search_context_size: args.searchContextSize,\n user_location: args.userLocation,\n });\n break;\n }\n case 'openai.code_interpreter': {\n const args = await validateTypes({\n value: tool.args,\n schema: codeInterpreterArgsSchema,\n });\n\n openaiTools.push({\n type: 'code_interpreter',\n container:\n args.container == null\n ? { type: 'auto', file_ids: undefined }\n : typeof args.container === 'string'\n ? args.container\n : { type: 'auto', file_ids: args.container.fileIds },\n });\n break;\n }\n case 'openai.image_generation': {\n const args = await validateTypes({\n value: tool.args,\n schema: imageGenerationArgsSchema,\n });\n\n openaiTools.push({\n type: 'image_generation',\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n size: args.size,\n quality: args.quality,\n moderation: args.moderation,\n output_format: args.outputFormat,\n output_compression: args.outputCompression,\n });\n break;\n }\n }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ProviderDefinedTool,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n InferValidator,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n codeInterpreterInputSchema,\n codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport { fileSearchOutputSchema } from '../tool/file-search';\nimport { imageGenerationOutputSchema } from '../tool/image-generation';\nimport { localShellInputSchema } from '../tool/local-shell';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n OpenAIResponsesChunk,\n openaiResponsesChunkSchema,\n OpenAIResponsesIncludeOptions,\n OpenAIResponsesIncludeValue,\n OpenAIResponsesLogprobs,\n openaiResponsesResponseSchema,\n OpenAIResponsesWebSearchAction,\n} from './openai-responses-api';\nimport {\n OpenAIResponsesModelId,\n openaiResponsesProviderOptionsSchema,\n TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIResponsesModelId;\n\n private readonly config: OpenAIConfig;\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n 'application/pdf': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n const modelConfig = getResponsesModelConfig(this.modelId);\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n }\n\n const openaiOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'conversation',\n details: 'conversation and previousResponseId cannot be used together',\n });\n }\n\n const { input, warnings: inputWarnings } =\n await convertToOpenAIResponsesInput({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n fileIdPrefixes: this.config.fileIdPrefixes,\n store: openaiOptions?.store ?? true,\n hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n });\n\n warnings.push(...inputWarnings);\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n function addInclude(key: OpenAIResponsesIncludeValue) {\n if (include == null) {\n include = [key];\n } else if (!include.includes(key)) {\n include = [...include, key];\n }\n }\n\n function hasOpenAITool(id: string) {\n return (\n tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === id,\n ) != null\n );\n }\n\n // when logprobs are requested, automatically include them:\n const topLogprobs =\n typeof openaiOptions?.logprobs === 'number'\n ? openaiOptions?.logprobs\n : openaiOptions?.logprobs === true\n ? TOP_LOGPROBS_MAX\n : undefined;\n\n if (topLogprobs) {\n addInclude('message.output_text.logprobs');\n }\n\n // when a web search tool is present, automatically include the sources:\n const webSearchToolName = (\n tools?.find(\n tool =>\n tool.type === 'provider-defined' &&\n (tool.id === 'openai.web_search' ||\n tool.id === 'openai.web_search_preview'),\n ) as LanguageModelV2ProviderDefinedTool | undefined\n )?.name;\n\n if (webSearchToolName) {\n addInclude('web_search_call.action.sources');\n }\n\n // when a code interpreter tool is present, automatically include the outputs:\n if (hasOpenAITool('openai.code_interpreter')) {\n addInclude('code_interpreter_call.outputs');\n }\n\n const store = openaiOptions?.store;\n\n // store defaults to true in the OpenAI responses API, so check for false exactly:\n if (store === false && modelConfig.isReasoningModel) {\n addInclude('reasoning.encrypted_content');\n }\n\n const baseArgs = {\n model: this.modelId,\n input,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n text: {\n ...(responseFormat?.type === 'json' && {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n }),\n ...(openaiOptions?.textVerbosity && {\n verbosity: openaiOptions.textVerbosity,\n }),\n },\n }),\n\n // provider options:\n conversation: openaiOptions?.conversation,\n max_tool_calls: openaiOptions?.maxToolCalls,\n metadata: openaiOptions?.metadata,\n parallel_tool_calls: openaiOptions?.parallelToolCalls,\n previous_response_id: openaiOptions?.previousResponseId,\n store,\n user: openaiOptions?.user,\n instructions: openaiOptions?.instructions,\n service_tier: openaiOptions?.serviceTier,\n include,\n prompt_cache_key: openaiOptions?.promptCacheKey,\n prompt_cache_retention: openaiOptions?.promptCacheRetention,\n safety_identifier: openaiOptions?.safetyIdentifier,\n top_logprobs: topLogprobs,\n truncation: openaiOptions?.truncation,\n\n // model-specific settings:\n ...(modelConfig.isReasoningModel &&\n (openaiOptions?.reasoningEffort != null ||\n openaiOptions?.reasoningSummary != null) && {\n reasoning: {\n ...(openaiOptions?.reasoningEffort != null && {\n effort: openaiOptions.reasoningEffort,\n }),\n ...(openaiOptions?.reasoningSummary != null && {\n summary: openaiOptions.reasoningSummary,\n }),\n },\n }),\n };\n\n if (modelConfig.isReasoningModel) {\n // remove unsupported settings for reasoning models\n // see https://platform.openai.com/docs/guides/reasoning#limitations\n if (baseArgs.temperature != null) {\n baseArgs.temperature = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'temperature',\n details: 'temperature is not supported for reasoning models',\n });\n }\n\n if (baseArgs.top_p != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported for reasoning models',\n });\n }\n } else {\n if (openaiOptions?.reasoningEffort != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningEffort',\n details: 'reasoningEffort is not supported for non-reasoning models',\n });\n }\n\n if (openaiOptions?.reasoningSummary != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'reasoningSummary',\n details: 'reasoningSummary is not supported for non-reasoning models',\n });\n }\n }\n\n // Validate flex processing support\n if (\n openaiOptions?.serviceTier === 'flex' &&\n !modelConfig.supportsFlexProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'flex processing is only available for o3, o4-mini, and gpt-5 models',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n // Validate priority processing support\n if (\n openaiOptions?.serviceTier === 'priority' &&\n !modelConfig.supportsPriorityProcessing\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details:\n 'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n });\n // Remove from args if not supported\n delete (baseArgs as any).service_tier;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n });\n\n return {\n webSearchToolName,\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n store,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n } = await this.getArgs(options);\n const url = this.config.url({\n path: '/responses',\n modelId: this.modelId,\n });\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error) {\n throw new APICallError({\n message: response.error.message,\n url,\n requestBodyValues: body,\n statusCode: 400,\n responseHeaders,\n responseBody: rawResponse as string,\n isRetryable: false,\n });\n }\n\n const content: Array<LanguageModelV2Content> = [];\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n // map response content to content array (defined when there is no error)\n for (const part of response.output!) {\n switch (part.type) {\n case 'reasoning': {\n // when there are no summary parts, we need to add an empty reasoning part:\n if (part.summary.length === 0) {\n part.summary.push({ type: 'summary_text', text: '' });\n }\n\n for (const summary of part.summary) {\n content.push({\n type: 'reasoning' as const,\n text: summary.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n reasoningEncryptedContent: part.encrypted_content ?? null,\n },\n },\n });\n }\n break;\n }\n\n case 'image_generation_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'image_generation',\n result: {\n result: part.result,\n } satisfies InferValidator<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: part.action,\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n ...(annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n hasFunctionCall = true;\n\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n break;\n }\n\n case 'web_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(part.action),\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies InferValidator<typeof codeInterpreterInputSchema>),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n result: {\n outputs: part.outputs,\n } satisfies InferValidator<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n }\n }\n\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n ...(response.id != null ? { responseId: response.id } : {}),\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (typeof response.service_tier === 'string') {\n providerMetadata.openai.serviceTier = response.service_tier;\n }\n\n const usage = response.usage!; // defined when there is no error\n\n return {\n content,\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasFunctionCall,\n }),\n usage: {\n inputTokens: usage.input_tokens,\n outputTokens: usage.output_tokens,\n totalTokens: usage.input_tokens + usage.output_tokens,\n reasoningTokens:\n usage.output_tokens_details?.reasoning_tokens ?? undefined,\n cachedInputTokens:\n usage.input_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at! * 1000),\n modelId: response.model,\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n store,\n } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const self = this;\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n const logprobs: Array<OpenAIResponsesLogprobs> = [];\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n | {\n toolName: string;\n toolCallId: string;\n codeInterpreter?: {\n containerId: string;\n };\n }\n | undefined\n > = {};\n\n // set annotations in 'text-end' part providerMetadata.\n const ongoingAnnotations: Array<\n Extract<\n OpenAIResponsesChunk,\n { type: 'response.output_text.annotation.added' }\n >['annotation']\n > = [];\n\n // flag that checks if there have been client-side tool calls (not executed by openai)\n let hasFunctionCall = false;\n\n const activeReasoning: Record<\n string,\n {\n encryptedContent?: string | null;\n // summary index as string to reasoning part state:\n summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<OpenAIResponsesChunk>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: webSearchToolName ?? 'web_search',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n input: JSON.stringify({}),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'computer_use',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'computer_use',\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'code_interpreter',\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'code_interpreter',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n ongoingAnnotations.splice(0, ongoingAnnotations.length);\n controller.enqueue({\n type: 'text-start',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (\n isResponseOutputItemAddedChunk(value) &&\n value.item.type === 'reasoning'\n ) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: { 0: 'active' },\n };\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item.id}:0`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type !== 'message'\n ) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = undefined;\n hasFunctionCall = true;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n input: value.item.arguments,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n },\n },\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: webSearchToolName ?? 'web_search',\n result: mapWebSearchOutput(value.item.action),\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies InferValidator<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies InferValidator<\n typeof codeInterpreterOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies InferValidator<\n typeof imageGenerationOutputSchema\n >,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies InferValidator<typeof localShellInputSchema>),\n providerMetadata: {\n openai: { itemId: value.item.id },\n },\n });\n } else if (value.item.type === 'reasoning') {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n // get all active or can-conclude summary parts' ids\n // to conclude ongoing reasoning parts:\n const summaryPartIndices = Object.entries(\n activeReasoningPart.summaryParts,\n )\n .filter(\n ([_, status]) =>\n status === 'active' || status === 'can-conclude',\n )\n .map(([summaryIndex]) => summaryIndex);\n\n for (const summaryIndex of summaryPartIndices) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item.id}:${summaryIndex}`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n\n delete activeReasoning[value.item.id];\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: value.delta,\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: '\"}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies InferValidator<\n typeof codeInterpreterInputSchema\n >),\n providerExecuted: true,\n });\n }\n } else if (isResponseCreatedChunk(value)) {\n responseId = value.response.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.response.id,\n timestamp: new Date(value.response.created_at * 1000),\n modelId: value.response.model,\n });\n } else if (isTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'text-delta',\n id: value.item_id,\n delta: value.delta,\n });\n\n if (options.providerOptions?.openai?.logprobs && value.logprobs) {\n logprobs.push(value.logprobs);\n }\n } else if (value.type === 'response.reasoning_summary_part.added') {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n if (value.summary_index > 0) {\n const activeReasoningPart = activeReasoning[value.item_id]!;\n\n activeReasoningPart.summaryParts[value.summary_index] =\n 'active';\n\n // since there is a new active summary part, we can conclude all can-conclude summary parts\n for (const summaryIndex of Object.keys(\n activeReasoningPart.summaryParts,\n )) {\n if (\n activeReasoningPart.summaryParts[summaryIndex] ===\n 'can-conclude'\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${summaryIndex}`,\n providerMetadata: { openai: { itemId: value.item_id } },\n });\n activeReasoningPart.summaryParts[summaryIndex] =\n 'concluded';\n }\n }\n\n controller.enqueue({\n type: 'reasoning-start',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n reasoningEncryptedContent:\n activeReasoning[value.item_id]?.encryptedContent ??\n null,\n },\n },\n });\n }\n } else if (value.type === 'response.reasoning_summary_text.delta') {\n controller.enqueue({\n type: 'reasoning-delta',\n id: `${value.item_id}:${value.summary_index}`,\n delta: value.delta,\n providerMetadata: {\n openai: {\n itemId: value.item_id,\n },\n },\n });\n } else if (value.type === 'response.reasoning_summary_part.done') {\n // when OpenAI stores the message data, we can immediately conclude the reasoning part\n // since we do not need to send the encrypted content.\n if (store) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item_id}:${value.summary_index}`,\n providerMetadata: {\n openai: { itemId: value.item_id },\n },\n });\n\n // mark the summary part as concluded\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'concluded';\n } else {\n // mark the summary part as can-conclude only\n // because we need to have a final summary part with the encrypted content\n activeReasoning[value.item_id]!.summaryParts[\n value.summary_index\n ] = 'can-conclude';\n }\n } else if (isResponseFinishedChunk(value)) {\n finishReason = mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasFunctionCall,\n });\n usage.inputTokens = value.response.usage.input_tokens;\n usage.outputTokens = value.response.usage.output_tokens;\n usage.totalTokens =\n value.response.usage.input_tokens +\n value.response.usage.output_tokens;\n usage.reasoningTokens =\n value.response.usage.output_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.response.usage.input_tokens_details?.cached_tokens ??\n undefined;\n if (typeof value.response.service_tier === 'string') {\n serviceTier = value.response.service_tier;\n }\n } else if (isResponseAnnotationAddedChunk(value)) {\n ongoingAnnotations.push(value.annotation);\n if (value.annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n });\n } else if (value.annotation.type === 'file_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'document',\n id: self.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title:\n value.annotation.quote ??\n value.annotation.filename ??\n 'Document',\n filename:\n value.annotation.filename ?? value.annotation.file_id,\n ...(value.annotation.file_id\n ? {\n providerMetadata: {\n openai: {\n fileId: value.annotation.file_id,\n },\n },\n }\n : {}),\n });\n }\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type === 'message'\n ) {\n controller.enqueue({\n type: 'text-end',\n id: value.item.id,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n ...(ongoingAnnotations.length > 0 && {\n annotations: ongoingAnnotations,\n }),\n },\n },\n });\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n responseId,\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (serviceTier !== undefined) {\n providerMetadata.openai.serviceTier = serviceTier;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction isTextDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.completed' | 'response.incomplete';\n} {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.function_call_arguments.delta';\n} {\n return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.delta';\n} {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.code_interpreter_call_code.done';\n} {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n type: 'response.output_text.annotation.added';\n} {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n return chunk.type === 'error';\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n const defaults = {\n systemMessageMode: 'system' as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n };\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith('gpt-5-chat')) {\n return {\n ...defaults,\n isReasoningModel: false,\n };\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('gpt-5') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'developer',\n };\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n };\n}\n\nfunction mapWebSearchOutput(\n action: OpenAIResponsesWebSearchAction,\n): InferValidator<typeof webSearchOutputSchema> {\n switch (action.type) {\n case 'search':\n return {\n action: { type: 'search', query: action.query ?? undefined },\n // include sources when provided by the Responses API (behind include flag)\n ...(action.sources != null && { sources: action.sources }),\n };\n case 'open_page':\n return { action: { type: 'openPage', url: action.url } };\n case 'find':\n return {\n action: { type: 'find', url: action.url, pattern: action.pattern },\n };\n }\n}\n","import {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n} from '@ai-sdk/openai/internal';\n\nexport const azureOpenaiTools: {\n codeInterpreter: typeof codeInterpreter;\n fileSearch: typeof fileSearch;\n imageGeneration: typeof imageGeneration;\n webSearchPreview: typeof webSearchPreview;\n} = {\n codeInterpreter,\n fileSearch,\n imageGeneration,\n webSearchPreview,\n};\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n","import {\n OpenAIChatLanguageModel,\n OpenAICompletionLanguageModel,\n OpenAIEmbeddingModel,\n OpenAIImageModel,\n OpenAIResponsesLanguageModel,\n OpenAISpeechModel,\n OpenAITranscriptionModel,\n} from '@ai-sdk/openai/internal';\nimport {\n EmbeddingModelV2,\n LanguageModelV2,\n ProviderV2,\n ImageModelV2,\n SpeechModelV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n loadSetting,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { azureOpenaiTools } from './azure-openai-tools';\nimport { VERSION } from './version';\n\nexport interface AzureOpenAIProvider extends ProviderV2 {\n (deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n languageModel(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI chat model for text generation.\n */\n chat(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI responses API model for text generation.\n */\n responses(deploymentId: string): LanguageModelV2;\n\n /**\nCreates an Azure OpenAI completion model for text generation.\n */\n completion(deploymentId: string): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding` instead.\n */\n embedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n image(deploymentId: string): ImageModelV2;\n\n /**\n * Creates an Azure OpenAI DALL-E model for image generation.\n */\n imageModel(deploymentId: string): ImageModelV2;\n\n textEmbedding(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\nCreates an Azure OpenAI model for text embeddings.\n */\n textEmbeddingModel(deploymentId: string): EmbeddingModelV2<string>;\n\n /**\n * Creates an Azure OpenAI model for audio transcription.\n */\n transcription(deploymentId: string): TranscriptionModelV2;\n\n /**\n * Creates an Azure OpenAI model for speech generation.\n */\n speech(deploymentId: string): SpeechModelV2;\n\n /**\n * AzureOpenAI-specific tools.\n */\n tools: typeof azureOpenaiTools;\n}\n\nexport interface AzureOpenAIProviderSettings {\n /**\nName of the Azure OpenAI resource. Either this or `baseURL` can be used.\n\nThe resource name is used in the assembled URL: `https://{resourceName}.openai.azure.com/openai/v1{path}`.\n */\n resourceName?: string;\n\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers. Either this or `resourceName` can be used.\nWhen a baseURL is provided, the resourceName is ignored.\n\nWith a baseURL, the resolved URL is `{baseURL}/v1{path}`.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nCustom api version to use. Defaults to `preview`.\n */\n apiVersion?: string;\n\n /**\nUse deployment-based URLs for specific model types. Set to true to use legacy deployment format: \n`{baseURL}/deployments/{deploymentId}{path}?api-version={apiVersion}` instead of \n`{baseURL}/v1{path}?api-version={apiVersion}`.\n */\n useDeploymentBasedUrls?: boolean;\n}\n\n/**\nCreate an Azure OpenAI provider instance.\n */\nexport function createAzure(\n options: AzureOpenAIProviderSettings = {},\n): AzureOpenAIProvider {\n const getHeaders = () => {\n const baseHeaders = {\n 'api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'AZURE_API_KEY',\n description: 'Azure OpenAI',\n }),\n ...options.headers,\n };\n return withUserAgentSuffix(baseHeaders, `ai-sdk/azure/${VERSION}`);\n };\n\n const getResourceName = () =>\n loadSetting({\n settingValue: options.resourceName,\n settingName: 'resourceName',\n environmentVariableName: 'AZURE_RESOURCE_NAME',\n description: 'Azure OpenAI resource name',\n });\n\n const apiVersion = options.apiVersion ?? 'v1';\n\n const url = ({ path, modelId }: { path: string; modelId: string }) => {\n const baseUrlPrefix =\n options.baseURL ?? `https://${getResourceName()}.openai.azure.com/openai`;\n\n let fullUrl: URL;\n if (options.useDeploymentBasedUrls) {\n // Use deployment-based format for compatibility with certain Azure OpenAI models\n fullUrl = new URL(`${baseUrlPrefix}/deployments/${modelId}${path}`);\n } else {\n // Use v1 API format - no deployment ID in URL\n fullUrl = new URL(`${baseUrlPrefix}/v1${path}`);\n }\n\n fullUrl.searchParams.set('api-version', apiVersion);\n return fullUrl.toString();\n };\n\n const createChatModel = (deploymentName: string) =>\n new OpenAIChatLanguageModel(deploymentName, {\n provider: 'azure.chat',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (modelId: string) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: 'azure.completion',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: string) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: 'azure.embeddings',\n headers: getHeaders,\n url,\n fetch: options.fetch,\n });\n\n const createResponsesModel = (modelId: string) =>\n new OpenAIResponsesLanguageModel(modelId, {\n provider: 'azure.responses',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n fileIdPrefixes: ['assistant-'],\n });\n\n const createImageModel = (modelId: string) =>\n new OpenAIImageModel(modelId, {\n provider: 'azure.image',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: string) =>\n new OpenAITranscriptionModel(modelId, {\n provider: 'azure.transcription',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: string) =>\n new OpenAISpeechModel(modelId, {\n provider: 'azure.speech',\n url,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (deploymentId: string) {\n if (new.target) {\n throw new Error(\n 'The Azure OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(deploymentId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.embedding = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.responses = createResponsesModel;\n provider.transcription = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.tools = azureOpenaiTools;\n return provider;\n}\n\n/**\nDefault Azure OpenAI provider instance.\n */\nexport const azure = createAzure();\n","import { createAzure } from '@ai-sdk/azure';\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport { InMemoryServerCache } from '../../../cache/inmemory.js';\nimport { MastraError } from '../../../error/index.js';\nimport { MastraModelGateway } from './base.js';\nimport type { ProviderConfig } from './base.js';\n\ninterface AzureTokenResponse {\n token_type: 'Bearer';\n expires_in: number;\n access_token: string;\n}\n\ninterface AzureDeployment {\n name: string;\n properties: {\n model: {\n name: string;\n version: string;\n format: string;\n };\n provisioningState: string;\n };\n}\n\ninterface AzureDeploymentsResponse {\n value: AzureDeployment[];\n nextLink?: string;\n}\n\ninterface CachedToken {\n token: string;\n expiresAt: number;\n}\n\nexport interface AzureOpenAIGatewayConfig {\n resourceName: string;\n apiKey: string;\n apiVersion?: string;\n deployments?: string[];\n management?: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n subscriptionId: string;\n resourceGroup: string;\n };\n}\n\nexport class AzureOpenAIGateway extends MastraModelGateway {\n readonly id = 'azure-openai';\n readonly name = 'azure-openai';\n private tokenCache = new InMemoryServerCache();\n\n constructor(private config: AzureOpenAIGatewayConfig) {\n super();\n this.validateConfig();\n }\n\n private validateConfig(): void {\n if (!this.config.resourceName) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'resourceName is required for Azure OpenAI gateway',\n });\n }\n\n if (!this.config.apiKey) {\n throw new MastraError({\n id: 'AZURE_GATEWAY_INVALID_CONFIG',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: 'apiKey is required for Azure OpenAI gateway',\n });\n }\n\n const hasDeployments = this.config.deployments && this.config.deployments.length > 0;\n const hasManagement = this.config.management !== undefined;\n\n if (hasDeployments && hasManagement) {\n console.warn(\n '[AzureOpenAIGateway] Both deployments and management credentials provided. Using static deployments list and ignoring management API.',\n );\n }\n\n if (hasManagement) {\n this.getManagementCredentials(this.config.management!);\n }\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n if (this.config.deployments && this.config.deployments.length > 0) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: this.config.deployments,\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n if (!this.config.management) {\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n\n try {\n const credentials = this.getManagementCredentials(this.config.management);\n\n const token = await this.getAzureADToken({\n tenantId: credentials.tenantId,\n clientId: credentials.clientId,\n clientSecret: credentials.clientSecret,\n });\n\n const deployments = await this.fetchDeployments(token, {\n subscriptionId: credentials.subscriptionId,\n resourceGroup: credentials.resourceGroup,\n resourceName: this.config.resourceName,\n });\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: deployments.map(d => d.name),\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n } catch (error) {\n const errorMsg = error instanceof Error ? error.message : String(error);\n console.warn(\n `[AzureOpenAIGateway] Deployment discovery failed: ${errorMsg}`,\n '\\nReturning fallback configuration. Azure OpenAI can still be used by manually specifying deployment names.',\n );\n\n return {\n 'azure-openai': {\n apiKeyEnvVar: [],\n apiKeyHeader: 'api-key',\n name: 'Azure OpenAI',\n models: [],\n docUrl: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/',\n gateway: 'azure-openai',\n },\n };\n }\n }\n\n private getManagementCredentials(management: NonNullable<AzureOpenAIGatewayConfig['management']>) {\n const { tenantId, clientId, clientSecret, subscriptionId, resourceGroup } = management;\n\n const missing = [];\n if (!tenantId) missing.push('tenantId');\n if (!clientId) missing.push('clientId');\n if (!clientSecret) missing.push('clientSecret');\n if (!subscriptionId) missing.push('subscriptionId');\n if (!resourceGroup) missing.push('resourceGroup');\n\n if (missing.length > 0) {\n throw new MastraError({\n id: 'AZURE_MANAGEMENT_CREDENTIALS_MISSING',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Management credentials incomplete. Missing: ${missing.join(', ')}. Required fields: tenantId, clientId, clientSecret, subscriptionId, resourceGroup.`,\n });\n }\n\n return {\n tenantId,\n clientId,\n clientSecret,\n subscriptionId,\n resourceGroup,\n };\n }\n\n private async getAzureADToken(credentials: {\n tenantId: string;\n clientId: string;\n clientSecret: string;\n }): Promise<string> {\n const { tenantId, clientId, clientSecret } = credentials;\n\n const cacheKey = `azure-mgmt-token:${tenantId}:${clientId}`;\n\n const cached = (await this.tokenCache.get(cacheKey)) as CachedToken | undefined;\n if (cached && cached.expiresAt > Date.now() / 1000 + 60) {\n return cached.token;\n }\n\n const tokenEndpoint = `https://login.microsoftonline.com/${tenantId}/oauth2/v2.0/token`;\n\n const body = new URLSearchParams({\n grant_type: 'client_credentials',\n client_id: clientId,\n client_secret: clientSecret,\n scope: 'https://management.azure.com/.default',\n });\n\n const response = await fetch(tokenEndpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_AD_TOKEN_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to get Azure AD token: ${response.status} ${error}`,\n });\n }\n\n const tokenResponse = (await response.json()) as AzureTokenResponse;\n\n const expiresAt = Math.floor(Date.now() / 1000) + tokenResponse.expires_in;\n\n await this.tokenCache.set(cacheKey, {\n token: tokenResponse.access_token,\n expiresAt,\n });\n\n return tokenResponse.access_token;\n }\n\n private async fetchDeployments(\n token: string,\n credentials: {\n subscriptionId: string;\n resourceGroup: string;\n resourceName: string;\n },\n ): Promise<AzureDeployment[]> {\n const { subscriptionId, resourceGroup, resourceName } = credentials;\n\n let url: string | undefined =\n `https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroup}/providers/Microsoft.CognitiveServices/accounts/${resourceName}/deployments?api-version=2024-10-01`;\n\n const allDeployments: AzureDeployment[] = [];\n\n while (url) {\n const response = await fetch(url, {\n headers: {\n Authorization: `Bearer ${token}`,\n 'Content-Type': 'application/json',\n },\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new MastraError({\n id: 'AZURE_DEPLOYMENTS_FETCH_ERROR',\n domain: 'LLM',\n category: 'UNKNOWN',\n text: `Failed to fetch Azure deployments: ${response.status} ${error}`,\n });\n }\n\n const data = (await response.json()) as AzureDeploymentsResponse;\n\n allDeployments.push(...data.value);\n\n url = data.nextLink;\n }\n\n const successfulDeployments = allDeployments.filter(d => d.properties.provisioningState === 'Succeeded');\n\n return successfulDeployments;\n }\n\n buildUrl(_routerId: string, _envVars?: typeof process.env): undefined {\n return undefined;\n }\n\n async getApiKey(_modelId: string): Promise<string> {\n return this.config.apiKey;\n }\n\n async resolveLanguageModel({\n modelId,\n apiKey,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n }): Promise<LanguageModelV2> {\n const apiVersion = this.config.apiVersion || '2024-04-01-preview';\n\n return createAzure({\n resourceName: this.config.resourceName,\n apiKey,\n apiVersion,\n useDeploymentBasedUrls: true,\n })(modelId);\n }\n}\n","import { MastraError } from '../../../error/index.js';\nimport type { MastraModelGateway } from './base.js';\nexport { MastraModelGateway, type ProviderConfig } from './base.js';\nexport { AzureOpenAIGateway, type AzureOpenAIGatewayConfig } from './azure.js';\nexport { ModelsDevGateway } from './models-dev.js';\nexport { NetlifyGateway } from './netlify.js';\n\n/**\n * Find the gateway that handles a specific model ID based on gateway ID\n * Gateway ID is used as the prefix (e.g., \"netlify\" for netlify gateway)\n * Exception: models.dev is a provider registry and doesn't use a prefix\n */\nexport function findGatewayForModel(gatewayId: string, gateways: MastraModelGateway[]): MastraModelGateway {\n // First, check for gateways whose ID matches the prefix (true gateways like netlify, openrouter, vercel)\n const prefixedGateway = gateways.find(\n (g: MastraModelGateway) => g.id !== 'models.dev' && (g.id === gatewayId || gatewayId.startsWith(`${g.id}/`)),\n );\n if (prefixedGateway) {\n return prefixedGateway;\n }\n\n // Then check models.dev (provider registry without prefix)\n const modelsDevGateway = gateways.find((g: MastraModelGateway) => g.id === 'models.dev');\n if (modelsDevGateway) {\n return modelsDevGateway;\n }\n\n throw new MastraError({\n id: 'MODEL_ROUTER_NO_GATEWAY_FOUND',\n category: 'USER',\n domain: 'MODEL_ROUTER',\n text: `No Mastra model router gateway found for model id ${gatewayId}`,\n });\n}\n","import { createHash } from 'node:crypto';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport type { LanguageModelV2, LanguageModelV2CallOptions, LanguageModelV2StreamPart } from '@ai-sdk/provider-v5';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { parseModelRouterId } from './gateway-resolver.js';\nimport type { MastraModelGateway } from './gateways/base.js';\nimport { findGatewayForModel } from './gateways/index.js';\n\nimport { ModelsDevGateway } from './gateways/models-dev.js';\nimport { NetlifyGateway } from './gateways/netlify.js';\nimport type { ModelRouterModelId } from './provider-registry.js';\nimport { PROVIDER_REGISTRY } from './provider-registry.js';\nimport type { MastraLanguageModelV2, OpenAICompatibleConfig } from './shared.types';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV2['doStream']>>;\n\nfunction getStaticProvidersByGateway(name: string) {\n return Object.fromEntries(Object.entries(PROVIDER_REGISTRY).filter(([_provider, config]) => config.gateway === name));\n}\n\nexport const defaultGateways = [new NetlifyGateway(), new ModelsDevGateway(getStaticProvidersByGateway(`models.dev`))];\n\n/**\n * @deprecated Use defaultGateways instead. This export will be removed in a future version.\n */\nexport const gateways = defaultGateways;\n\nexport class ModelRouterLanguageModel implements MastraLanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly defaultObjectGenerationMode = 'json' as const;\n readonly supportsStructuredOutputs = true;\n readonly supportsImageUrls = true;\n readonly supportedUrls = {} as Record<string, RegExp[]>;\n\n readonly modelId: string;\n readonly provider: string;\n\n private config: OpenAICompatibleConfig & { routerId: string };\n private gateway: MastraModelGateway;\n\n constructor(config: ModelRouterModelId | OpenAICompatibleConfig, customGateways?: MastraModelGateway[]) {\n // Normalize config to always have an 'id' field for routing\n let normalizedConfig: {\n id: `${string}/${string}`;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n normalizedConfig = { id: config as `${string}/${string}` };\n } else if ('providerId' in config && 'modelId' in config) {\n // Convert providerId/modelId to id format\n normalizedConfig = {\n id: `${config.providerId}/${config.modelId}` as `${string}/${string}`,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n normalizedConfig = {\n id: config.id,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n const parsedConfig: {\n id: `${string}/${string}`;\n routerId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n } = {\n ...normalizedConfig,\n routerId: normalizedConfig.id,\n };\n\n // Resolve gateway once using the normalized ID\n this.gateway = findGatewayForModel(normalizedConfig.id, [...(customGateways || []), ...defaultGateways]);\n // Extract provider from id if present\n // Gateway ID is used as prefix (except for models.dev which is a provider registry)\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const parsed = parseModelRouterId(normalizedConfig.id, gatewayPrefix);\n\n this.provider = parsed.providerId || 'openai-compatible';\n\n if (parsed.providerId && parsed.modelId !== normalizedConfig.id) {\n parsedConfig.id = parsed.modelId as `${string}/${string}`;\n }\n\n this.modelId = parsedConfig.id;\n this.config = parsedConfig;\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doGenerate(options);\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<StreamResult> {\n // Validate API key and return error stream if validation fails\n let apiKey: string;\n try {\n // If custom URL is provided, skip gateway API key resolution\n // The provider might not be in the registry (e.g., custom providers like ollama)\n if (this.config.url) {\n apiKey = this.config.apiKey || '';\n } else {\n apiKey = this.config.apiKey || (await this.gateway.getApiKey(this.config.routerId));\n }\n } catch (error) {\n // Return an error stream instead of throwing\n return {\n stream: new ReadableStream({\n start(controller) {\n controller.enqueue({\n type: 'error',\n error: error,\n } as LanguageModelV2StreamPart);\n controller.close();\n },\n }),\n };\n }\n\n const gatewayPrefix = this.gateway.id === 'models.dev' ? undefined : this.gateway.id;\n const model = await this.resolveLanguageModel({\n apiKey,\n headers: this.config.headers,\n ...parseModelRouterId(this.config.routerId, gatewayPrefix),\n });\n\n const aiSDKV5Model = new AISDKV5LanguageModel(model);\n return aiSDKV5Model.doStream(options);\n }\n\n private async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<LanguageModelV2> {\n const key = createHash('sha256')\n .update(\n this.gateway.id +\n modelId +\n providerId +\n apiKey +\n (this.config.url || '') +\n (headers ? JSON.stringify(headers) : ''),\n )\n .digest('hex');\n if (ModelRouterLanguageModel.modelInstances.has(key)) return ModelRouterLanguageModel.modelInstances.get(key)!;\n\n // If custom URL is provided, use it directly with openai-compatible\n if (this.config.url) {\n const modelInstance = createOpenAICompatible({\n name: providerId,\n apiKey,\n baseURL: this.config.url,\n headers: this.config.headers,\n supportsStructuredOutputs: true,\n }).chatModel(modelId);\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n\n const modelInstance = await this.gateway.resolveLanguageModel({ modelId, providerId, apiKey, headers });\n ModelRouterLanguageModel.modelInstances.set(key, modelInstance);\n return modelInstance;\n }\n private static modelInstances = new Map<string, LanguageModelV2>();\n}\n","import type { LanguageModelV3, LanguageModelV3CallOptions } from '@ai-sdk/provider-v6';\nimport type { MastraLanguageModelV3 } from '../../shared.types';\nimport { createStreamFromGenerateResult } from '../generate-to-stream';\n\ntype StreamResult = Awaited<ReturnType<LanguageModelV3['doStream']>>;\n\n/**\n * Wrapper class for AI SDK V6 (LanguageModelV3) that converts doGenerate to return\n * a stream format for consistency with Mastra's streaming architecture.\n */\nexport class AISDKV6LanguageModel implements MastraLanguageModelV3 {\n /**\n * The language model must specify which language model interface version it implements.\n */\n readonly specificationVersion: 'v3' = 'v3';\n /**\n * Name of the provider for logging purposes.\n */\n readonly provider: string;\n /**\n * Provider-specific model ID for logging purposes.\n */\n readonly modelId: string;\n /**\n * Supported URL patterns by media type for the provider.\n *\n * The keys are media type patterns or full media types (e.g. `*\\/*` for everything, `audio/*`, `video/*`, or `application/pdf`).\n * and the values are arrays of regular expressions that match the URL paths.\n * The matching should be against lower-case URLs.\n * Matched URLs are supported natively by the model and are not downloaded.\n * @returns A map of supported URL patterns by media type (as a promise or a plain object).\n */\n supportedUrls: PromiseLike<Record<string, RegExp[]>> | Record<string, RegExp[]>;\n\n #model: LanguageModelV3;\n\n constructor(config: LanguageModelV3) {\n this.#model = config;\n this.provider = this.#model.provider;\n this.modelId = this.#model.modelId;\n this.supportedUrls = this.#model.supportedUrls;\n }\n\n async doGenerate(options: LanguageModelV3CallOptions) {\n const result = await this.#model.doGenerate(options);\n\n return {\n request: result.request!,\n response: result.response as unknown as StreamResult['response'],\n stream: createStreamFromGenerateResult(result),\n };\n }\n\n async doStream(options: LanguageModelV3CallOptions) {\n return await this.#model.doStream(options);\n }\n}\n","import type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\nimport type { Mastra } from '../../mastra';\nimport { RequestContext } from '../../request-context';\nimport { AISDKV5LanguageModel } from './aisdk/v5/model';\nimport { AISDKV6LanguageModel } from './aisdk/v6/model';\nimport { ModelRouterLanguageModel } from './router';\nimport type {\n MastraModelConfig,\n OpenAICompatibleConfig,\n MastraLanguageModel,\n MastraLegacyLanguageModel,\n} from './shared.types';\n\n/**\n * Type guard to check if a model config is an OpenAICompatibleConfig object\n * @internal\n */\nexport function isOpenAICompatibleObjectConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n): modelConfig is OpenAICompatibleConfig {\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) return false;\n // Check for OpenAICompatibleConfig - it should have either:\n // 1. 'id' field (but NOT 'model' - that's ModelWithRetries)\n // 2. Both 'providerId' and 'modelId' fields\n if (typeof modelConfig === 'object' && !('model' in modelConfig)) {\n if ('id' in modelConfig) return true;\n if ('providerId' in modelConfig && 'modelId' in modelConfig) return true;\n }\n return false;\n}\n\n/**\n * Resolves a model configuration to a LanguageModel instance.\n * Supports:\n * - Magic strings like \"openai/gpt-4o\"\n * - Config objects like { id: \"openai/gpt-4o\", apiKey: \"...\" }\n * - Direct LanguageModel instances\n * - Dynamic functions that return any of the above\n *\n * @param modelConfig The model configuration\n * @param requestContext Optional request context for dynamic resolution\n * @param mastra Optional Mastra instance for dynamic resolution\n * @returns A resolved LanguageModel instance\n *\n * @example\n * ```typescript\n * // String resolution\n * const model = await resolveModelConfig(\"openai/gpt-4o\");\n *\n * // Config object resolution\n * const model = await resolveModelConfig({\n * id: \"openai/gpt-4o\",\n * apiKey: \"sk-...\"\n * });\n *\n * // Dynamic resolution\n * const model = await resolveModelConfig(\n * ({ requestContext }) => requestContext.get(\"preferredModel\")\n * );\n * ```\n */\nexport async function resolveModelConfig(\n modelConfig:\n | MastraModelConfig\n | (({\n requestContext,\n mastra,\n }: {\n requestContext: RequestContext;\n mastra?: Mastra;\n }) => MastraModelConfig | Promise<MastraModelConfig>),\n requestContext: RequestContext = new RequestContext(),\n mastra?: Mastra,\n): Promise<MastraLanguageModel | MastraLegacyLanguageModel> {\n // If it's a function, resolve it first\n if (typeof modelConfig === 'function') {\n modelConfig = await modelConfig({ requestContext, mastra });\n }\n\n // Filter out custom language model instances\n // TODO need a better trick, maybe symbol\n if (\n modelConfig instanceof ModelRouterLanguageModel ||\n modelConfig instanceof AISDKV5LanguageModel ||\n modelConfig instanceof AISDKV6LanguageModel\n ) {\n return modelConfig;\n }\n\n // If it's already a LanguageModel, wrap it with the appropriate wrapper\n if (typeof modelConfig === 'object' && 'specificationVersion' in modelConfig) {\n if (modelConfig.specificationVersion === 'v2') {\n return new AISDKV5LanguageModel(modelConfig as LanguageModelV2);\n }\n if (modelConfig.specificationVersion === 'v3') {\n return new AISDKV6LanguageModel(modelConfig as LanguageModelV3);\n }\n // V1 (legacy) models pass through without wrapping\n return modelConfig;\n }\n\n const gatewayRecord = mastra?.listGateways();\n const customGateways = gatewayRecord ? Object.values(gatewayRecord) : undefined;\n\n // If it's a string (magic string like \"openai/gpt-4o\") or OpenAICompatibleConfig, create ModelRouterLanguageModel\n if (typeof modelConfig === 'string' || isOpenAICompatibleObjectConfig(modelConfig)) {\n return new ModelRouterLanguageModel(modelConfig, customGateways);\n }\n\n throw new Error('Invalid model configuration provided');\n}\n","import { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport type { EmbeddingModelV2 } from '@internal/ai-sdk-v5';\n\nimport { GatewayRegistry } from './provider-registry.js';\nimport type { OpenAICompatibleConfig } from './shared.types.js';\n\n/**\n * Information about a known embedding model\n */\nexport interface EmbeddingModelInfo {\n id: string;\n provider: string;\n dimensions: number;\n maxInputTokens: number;\n description?: string;\n}\n\n/**\n * Hardcoded list of known embedding models\n * This is a curated list that provides autocomplete support\n */\nexport const EMBEDDING_MODELS: EmbeddingModelInfo[] = [\n // OpenAI\n {\n id: 'text-embedding-3-small',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-small model',\n },\n {\n id: 'text-embedding-3-large',\n provider: 'openai',\n dimensions: 3072,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-3-large model',\n },\n {\n id: 'text-embedding-ada-002',\n provider: 'openai',\n dimensions: 1536,\n maxInputTokens: 8191,\n description: 'OpenAI text-embedding-ada-002 model',\n },\n // Google\n {\n id: 'gemini-embedding-001',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 2048,\n description: 'Google gemini-embedding-001 model',\n },\n {\n id: 'text-embedding-004',\n provider: 'google',\n dimensions: 768,\n maxInputTokens: 3072,\n description: 'Google text-embedding-004 model',\n },\n];\n\n/**\n * Type for embedding model IDs in the format \"provider/model\"\n */\nexport type EmbeddingModelId =\n | 'openai/text-embedding-3-small'\n | 'openai/text-embedding-3-large'\n | 'openai/text-embedding-ada-002'\n | 'google/gemini-embedding-001'\n | 'google/text-embedding-004';\n\n/**\n * Check if a model ID is a known embedding model\n */\nexport function isKnownEmbeddingModel(modelId: string): boolean {\n return EMBEDDING_MODELS.some(m => m.id === modelId);\n}\n\n/**\n * Get information about a known embedding model\n */\nexport function getEmbeddingModelInfo(modelId: string): EmbeddingModelInfo | undefined {\n return EMBEDDING_MODELS.find(m => m.id === modelId);\n}\n\n/**\n * Model router for embedding models that uses the provider/model string format.\n * Automatically resolves the correct AI SDK provider and initializes the embedding model.\n *\n * @example\n * ```ts\n * const embedder = new ModelRouterEmbeddingModel('openai/text-embedding-3-small');\n * const result = await embedder.doEmbed({ values: ['hello world'] });\n * ```\n */\nexport class ModelRouterEmbeddingModel<VALUE extends string = string> implements EmbeddingModelV2<VALUE> {\n readonly specificationVersion = 'v2' as const;\n readonly modelId: string;\n readonly provider: string;\n maxEmbeddingsPerCall: number | PromiseLike<number | undefined> = 2048;\n supportsParallelCalls: boolean | PromiseLike<boolean> = true;\n\n private providerModel: EmbeddingModelV2<VALUE>;\n\n constructor(config: string | OpenAICompatibleConfig) {\n // Normalize config to always have provider and model IDs\n let normalizedConfig: {\n providerId: string;\n modelId: string;\n url?: string;\n apiKey?: string;\n headers?: Record<string, string>;\n };\n\n if (typeof config === 'string') {\n // Parse provider/model from string (e.g., \"openai/text-embedding-3-small\")\n const parts = config.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = { providerId, modelId };\n } else if ('providerId' in config && 'modelId' in config) {\n normalizedConfig = {\n providerId: config.providerId,\n modelId: config.modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n } else {\n // config has 'id' field\n const parts = config.id.split('/');\n if (parts.length !== 2) {\n throw new Error(`Invalid model string format: \"${config.id}\". Expected format: \"provider/model\"`);\n }\n const [providerId, modelId] = parts as [string, string];\n normalizedConfig = {\n providerId,\n modelId,\n url: config.url,\n apiKey: config.apiKey,\n headers: config.headers,\n };\n }\n\n this.provider = normalizedConfig.providerId;\n this.modelId = normalizedConfig.modelId;\n\n // If custom URL is provided, skip provider registry validation\n // and use the provided API key (or empty string if not provided)\n if (normalizedConfig.url) {\n const apiKey = normalizedConfig.apiKey || '';\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: normalizedConfig.url,\n headers: normalizedConfig.headers,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n } else {\n // Get provider config from registry\n const registry = GatewayRegistry.getInstance();\n const providerConfig = registry.getProviderConfig(normalizedConfig.providerId);\n\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${normalizedConfig.providerId}`);\n }\n\n // Get API key from config or environment\n let apiKey = normalizedConfig.apiKey;\n if (!apiKey) {\n const apiKeyEnvVar = providerConfig.apiKeyEnvVar;\n if (Array.isArray(apiKeyEnvVar)) {\n // Try each possible environment variable\n for (const envVar of apiKeyEnvVar) {\n apiKey = process.env[envVar];\n if (apiKey) break;\n }\n } else {\n apiKey = process.env[apiKeyEnvVar];\n }\n }\n\n if (!apiKey) {\n const envVarDisplay = Array.isArray(providerConfig.apiKeyEnvVar)\n ? providerConfig.apiKeyEnvVar.join(' or ')\n : providerConfig.apiKeyEnvVar;\n throw new Error(`API key not found for provider ${normalizedConfig.providerId}. Set ${envVarDisplay}`);\n }\n\n // Initialize the provider model directly in constructor\n if (normalizedConfig.providerId === 'openai') {\n this.providerModel = createOpenAI({ apiKey }).textEmbeddingModel(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else if (normalizedConfig.providerId === 'google') {\n this.providerModel = createGoogleGenerativeAI({ apiKey }).textEmbedding(\n normalizedConfig.modelId,\n ) as EmbeddingModelV2<VALUE>;\n } else {\n // Use OpenAI-compatible provider for other providers\n if (!providerConfig.url) {\n throw new Error(`Provider ${normalizedConfig.providerId} does not have a URL configured`);\n }\n this.providerModel = createOpenAICompatible({\n name: normalizedConfig.providerId,\n apiKey,\n baseURL: providerConfig.url,\n }).textEmbeddingModel(normalizedConfig.modelId) as EmbeddingModelV2<VALUE>;\n }\n }\n\n // Copy properties from the provider model if available\n if (this.providerModel.maxEmbeddingsPerCall !== undefined) {\n this.maxEmbeddingsPerCall = this.providerModel.maxEmbeddingsPerCall;\n }\n if (this.providerModel.supportsParallelCalls !== undefined) {\n this.supportsParallelCalls = this.providerModel.supportsParallelCalls;\n }\n }\n\n async doEmbed(\n args: Parameters<EmbeddingModelV2<VALUE>['doEmbed']>[0],\n ): Promise<Awaited<ReturnType<EmbeddingModelV2<VALUE>['doEmbed']>>> {\n return this.providerModel.doEmbed(args);\n }\n}\n"]}