{"version":3,"sources":["../../src/chat/openai-chat-language-model.ts","../../src/openai-error.ts","../../src/openai-is-reasoning-model.ts","../../src/chat/convert-to-openai-chat-messages.ts","../../src/chat/get-response-metadata.ts","../../src/chat/map-openai-finish-reason.ts","../../src/chat/openai-chat-api.ts","../../src/chat/openai-chat-options.ts","../../src/chat/openai-chat-prepare-tools.ts","../../src/completion/openai-completion-language-model.ts","../../src/completion/convert-to-openai-completion-prompt.ts","../../src/completion/get-response-metadata.ts","../../src/completion/map-openai-finish-reason.ts","../../src/completion/openai-completion-api.ts","../../src/completion/openai-completion-options.ts","../../src/embedding/openai-embedding-model.ts","../../src/embedding/openai-embedding-options.ts","../../src/embedding/openai-embedding-api.ts","../../src/image/openai-image-model.ts","../../src/image/openai-image-api.ts","../../src/image/openai-image-options.ts","../../src/transcription/openai-transcription-model.ts","../../src/transcription/openai-transcription-api.ts","../../src/transcription/openai-transcription-options.ts","../../src/speech/openai-speech-model.ts","../../src/speech/openai-speech-options.ts","../../src/responses/openai-responses-language-model.ts","../../src/responses/convert-to-openai-responses-input.ts","../../src/tool/local-shell.ts","../../src/responses/map-openai-responses-finish-reason.ts","../../src/responses/openai-responses-api.ts","../../src/responses/openai-responses-options.ts","../../src/responses/openai-responses-prepare-tools.ts","../../src/tool/code-interpreter.ts","../../src/tool/file-search.ts","../../src/tool/web-search.ts","../../src/tool/web-search-preview.ts","../../src/tool/image-generation.ts","../../src/tool/mcp.ts"],"sourcesContent":["import {\n  InvalidResponseDataError,\n  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3CallWarning,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3StreamPart,\n  LanguageModelV3Usage,\n  SharedV3ProviderMetadata,\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 { isReasoningModel } from '../openai-is-reasoning-model';\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 LanguageModelV3 {\n  readonly specificationVersion = 'v3';\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  }: LanguageModelV3CallOptions) {\n    const warnings: LanguageModelV3CallWarning[] = [];\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      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<LanguageModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV3['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<LanguageModelV3Content> = [];\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: SharedV3ProviderMetadata = { 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<LanguageModelV3['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV3['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: LanguageModelV3FinishReason = 'unknown';\n    const usage: LanguageModelV3Usage = {\n      inputTokens: undefined,\n      outputTokens: undefined,\n      totalTokens: undefined,\n    };\n    let metadataExtracted = false;\n    let isActiveText = false;\n\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIChatChunk>,\n          LanguageModelV3StreamPart\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 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  return isReasoningModel(modelId) ? 'developer' : 'system';\n}\n","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","export function isReasoningModel(modelId: string) {\n  if (modelId.startsWith('gpt-3')) return false;\n  if (modelId.startsWith('gpt-4')) return false;\n  if (modelId.startsWith('chatgpt-4o')) return false;\n  if (modelId.startsWith('gpt-5-chat')) return false;\n\n  return true;\n}\n","import {\n  LanguageModelV3CallWarning,\n  LanguageModelV3Prompt,\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: LanguageModelV3Prompt;\n  systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n  messages: OpenAIChatPrompt;\n  warnings: Array<LanguageModelV3CallWarning>;\n} {\n  const messages: OpenAIChatPrompt = [];\n  const warnings: Array<LanguageModelV3CallWarning> = [];\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 'execution-denied':\n              contentValue = output.reason ?? 'Tool execution denied.';\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV3FinishReason {\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 { InferSchema, lazySchema, zodSchema } 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 = lazySchema(() =>\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 = lazySchema(() =>\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 = InferSchema<typeof openaiChatResponseSchema>;\n\nexport type OpenAIChatChunk = InferSchema<typeof openaiChatChunkSchema>;\n","import { InferSchema, lazySchema, zodSchema } 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  | (string & {});\n\nexport const openaiChatLanguageModelOptions = lazySchema(() =>\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.enum(['minimal', 'low', 'medium', 'high']).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       * 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 = InferSchema<\n  typeof openaiChatLanguageModelOptions\n>;\n","import {\n  LanguageModelV3CallOptions,\n  LanguageModelV3CallWarning,\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: LanguageModelV3CallOptions['tools'];\n  toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n  structuredOutputs: boolean;\n  strictJsonSchema: boolean;\n}): {\n  tools?: OpenAIChatFunctionTool[];\n  toolChoice?: OpenAIChatToolChoice;\n  toolWarnings: Array<LanguageModelV3CallWarning>;\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: LanguageModelV3CallWarning[] = [];\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  LanguageModelV3,\n  LanguageModelV3CallWarning,\n  LanguageModelV3FinishReason,\n  LanguageModelV3StreamPart,\n  LanguageModelV3Usage,\n  SharedV3ProviderMetadata,\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 LanguageModelV3 {\n  readonly specificationVersion = 'v3';\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<LanguageModelV3['doGenerate']>[0]) {\n    const warnings: LanguageModelV3CallWarning[] = [];\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<LanguageModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV3['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: SharedV3ProviderMetadata = { 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<LanguageModelV3['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV3['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: LanguageModelV3FinishReason = 'unknown';\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n    const usage: LanguageModelV3Usage = {\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          LanguageModelV3StreamPart\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  InvalidPromptError,\n  LanguageModelV3Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n  prompt,\n  user = 'user',\n  assistant = 'assistant',\n}: {\n  prompt: LanguageModelV3Prompt;\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV3FinishReason {\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 { InferSchema, lazySchema, zodSchema } 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 = lazySchema(() =>\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 = lazySchema(() =>\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 = InferSchema<\n  typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferSchema<\n  typeof openaiCompletionResponseSchema\n>;\n","import { InferSchema, lazySchema, zodSchema } 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 = lazySchema(() =>\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 = InferSchema<\n  typeof openaiCompletionProviderOptions\n>;\n","import {\n  EmbeddingModelV3,\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 EmbeddingModelV3<string> {\n  readonly specificationVersion = 'v3';\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<EmbeddingModelV3<string>['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV3<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 { InferSchema, lazySchema, zodSchema } 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 = lazySchema(() =>\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 = InferSchema<\n  typeof openaiEmbeddingProviderOptions\n>;\n","import { lazySchema, 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 = lazySchema(() =>\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 { ImageModelV3, ImageModelV3CallWarning } 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 ImageModelV3 {\n  readonly specificationVersion = 'v3';\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<ImageModelV3['doGenerate']>[0]): Promise<\n    Awaited<ReturnType<ImageModelV3['doGenerate']>>\n  > {\n    const warnings: Array<ImageModelV3CallWarning> = [];\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      usage:\n        response.usage != null\n          ? {\n              inputTokens: response.usage.input_tokens ?? undefined,\n              outputTokens: response.usage.output_tokens ?? undefined,\n              totalTokens: response.usage.total_tokens ?? undefined,\n            }\n          : undefined,\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 { lazySchema, 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 = lazySchema(() =>\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      usage: z\n        .object({\n          input_tokens: z.number().nullish(),\n          output_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          input_tokens_details: z\n            .object({\n              image_tokens: z.number().nullish(),\n              text_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\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 {\n  TranscriptionModelV3,\n  TranscriptionModelV3CallOptions,\n  TranscriptionModelV3CallWarning,\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  TranscriptionModelV3CallOptions,\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 TranscriptionModelV3 {\n  readonly specificationVersion = 'v3';\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: TranscriptionModelV3CallWarning[] = [];\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<TranscriptionModelV3['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 { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazySchema(() =>\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 { InferSchema, lazySchema, zodSchema } 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 = lazySchema(() =>\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 = InferSchema<\n  typeof openAITranscriptionProviderOptions\n>;\n","import { SpeechModelV3, SpeechModelV3CallWarning } 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 SpeechModelV3 {\n  readonly specificationVersion = 'v3';\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<SpeechModelV3['doGenerate']>[0]) {\n    const warnings: SpeechModelV3CallWarning[] = [];\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<SpeechModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<SpeechModelV3['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 { InferSchema, lazySchema, zodSchema } 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 = lazySchema(() =>\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 = InferSchema<\n  typeof openaiSpeechProviderOptionsSchema\n>;\n","import {\n  APICallError,\n  LanguageModelV3,\n  LanguageModelV3CallWarning,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3ProviderDefinedTool,\n  LanguageModelV3StreamPart,\n  LanguageModelV3Usage,\n  SharedV3ProviderMetadata,\n  JSONValue,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  InferSchema,\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 { mcpOutputSchema } from '../tool/mcp';\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';\nimport { isReasoningModel as modelSupportsReasoning } from '../openai-is-reasoning-model';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\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<LanguageModelV3['doGenerate']>[0]) {\n    const warnings: LanguageModelV3CallWarning[] = [];\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    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 LanguageModelV3ProviderDefinedTool | 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      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      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<LanguageModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV3['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<LanguageModelV3Content> = [];\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\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 InferSchema<typeof imageGenerationOutputSchema>,\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 InferSchema<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            const providerMetadata: SharedV3ProviderMetadata[string] = {\n              itemId: part.id,\n              ...(contentPart.annotations.length > 0 && {\n                annotations: contentPart.annotations,\n              }),\n            };\n\n            content.push({\n              type: 'text',\n              text: contentPart.text,\n              providerMetadata: {\n                openai: providerMetadata,\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              } else if (annotation.type === 'container_file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title:\n                    annotation.filename ?? annotation.file_id ?? 'Document',\n                  filename: annotation.filename ?? annotation.file_id,\n                  providerMetadata: {\n                    openai: {\n                      fileId: annotation.file_id,\n                      containerId: annotation.container_id,\n                      ...(annotation.index != null\n                        ? { index: annotation.index }\n                        : {}),\n                    },\n                  },\n                });\n              } else if (annotation.type === 'file_path') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: annotation.file_id,\n                  filename: annotation.file_id,\n                  providerMetadata: {\n                    openai: {\n                      fileId: annotation.file_id,\n                      ...(annotation.index != null\n                        ? { index: annotation.index }\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          });\n\n          break;\n        }\n\n        case 'mcp_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'mcp',\n            input: JSON.stringify({}),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'mcp',\n            result: {\n              type: 'call',\n              serverLabel: part.server_label,\n              name: part.name,\n              arguments: part.arguments,\n              ...(part.output != null ? { output: part.output } : {}),\n              ...(part.error != null\n                ? { error: part.error as unknown as JSONValue }\n                : {}),\n            } satisfies InferSchema<typeof mcpOutputSchema>,\n          });\n          break;\n        }\n\n        case 'mcp_list_tools': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'mcp',\n            input: JSON.stringify({}),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'mcp',\n            result: {\n              type: 'listTools',\n              serverLabel: part.server_label,\n              tools: part.tools.map(t => ({\n                name: t.name,\n                description: t.description ?? undefined,\n                inputSchema: t.input_schema,\n                annotations:\n                  (t.annotations as Record<string, JSONValue> | undefined) ??\n                  undefined,\n              })),\n              ...(part.error != null\n                ? { error: part.error as unknown as JSONValue }\n                : {}),\n            } satisfies InferSchema<typeof mcpOutputSchema>,\n          });\n          break;\n        }\n\n        case 'mcp_approval_request': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: 'mcp',\n            input: JSON.stringify({}),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: 'mcp',\n            result: {\n              type: 'approvalRequest',\n              serverLabel: part.server_label,\n              name: part.name,\n              arguments: part.arguments,\n              approvalRequestId: part.approval_request_id,\n            } satisfies InferSchema<typeof mcpOutputSchema>,\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          });\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 InferSchema<typeof fileSearchOutputSchema>,\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 InferSchema<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 InferSchema<typeof codeInterpreterOutputSchema>,\n          });\n          break;\n        }\n      }\n    }\n\n    const providerMetadata: SharedV3ProviderMetadata = {\n      openai: { responseId: response.id },\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    return {\n      content,\n      finishReason: mapOpenAIResponseFinishReason({\n        finishReason: response.incomplete_details?.reason,\n        hasFunctionCall,\n      }),\n      usage: {\n        inputTokens: response.usage.input_tokens,\n        outputTokens: response.usage.output_tokens,\n        totalTokens: response.usage.input_tokens + response.usage.output_tokens,\n        reasoningTokens:\n          response.usage.output_tokens_details?.reasoning_tokens ?? undefined,\n        cachedInputTokens:\n          response.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<LanguageModelV3['doStream']>[0],\n  ): Promise<Awaited<ReturnType<LanguageModelV3['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: LanguageModelV3FinishReason = 'unknown';\n    const usage: LanguageModelV3Usage = {\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    // 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          LanguageModelV3StreamPart\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: '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 (\n                value.item.type === 'mcp_call' ||\n                value.item.type === 'mcp_list_tools' ||\n                value.item.type === 'mcp_approval_request'\n              ) {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: 'mcp',\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'message') {\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 (isResponseOutputItemDoneChunk(value)) {\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: 'web_search',\n                  result: mapWebSearchOutput(value.item.action),\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                });\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 InferSchema<typeof fileSearchOutputSchema>,\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 InferSchema<typeof codeInterpreterOutputSchema>,\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 InferSchema<typeof imageGenerationOutputSchema>,\n                });\n              } else if (value.item.type === 'mcp_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'mcp',\n                  result: {\n                    type: 'call',\n                    serverLabel: value.item.server_label,\n                    name: value.item.name,\n                    arguments: value.item.arguments,\n                    ...(value.item.output != null\n                      ? { output: value.item.output }\n                      : {}),\n                    ...(value.item.error != null\n                      ? { error: value.item.error as unknown as JSONValue }\n                      : {}),\n                  } satisfies InferSchema<typeof mcpOutputSchema>,\n                });\n              } else if (value.item.type === 'mcp_list_tools') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'mcp',\n                  result: {\n                    type: 'listTools',\n                    serverLabel: value.item.server_label,\n                    tools: value.item.tools.map(t => ({\n                      name: t.name,\n                      description: t.description ?? undefined,\n                      inputSchema: t.input_schema,\n                      annotations:\n                        (t.annotations as\n                          | Record<string, JSONValue>\n                          | undefined) ?? undefined,\n                    })),\n                    ...(value.item.error != null\n                      ? { error: value.item.error as unknown as JSONValue }\n                      : {}),\n                  } satisfies InferSchema<typeof mcpOutputSchema>,\n                });\n              } else if (value.item.type === 'mcp_approval_request') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: 'mcp',\n                  result: {\n                    type: 'approvalRequest',\n                    serverLabel: value.item.server_label,\n                    name: value.item.name,\n                    arguments: value.item.arguments,\n                    approvalRequestId: value.item.approval_request_id,\n                  } satisfies InferSchema<typeof mcpOutputSchema>,\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 InferSchema<typeof localShellInputSchema>),\n                  providerMetadata: {\n                    openai: { itemId: value.item.id },\n                  },\n                });\n              } else if (value.item.type === 'message') {\n                controller.enqueue({\n                  type: 'text-end',\n                  id: value.item.id,\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 (isResponseImageGenerationCallPartialImageChunk(value)) {\n              controller.enqueue({\n                type: 'tool-result',\n                toolCallId: value.item_id,\n                toolName: 'image_generation',\n                result: {\n                  result: value.partial_image_b64,\n                } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n                preliminary: true,\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 InferSchema<typeof codeInterpreterInputSchema>),\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              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              } else if (value.annotation.type === 'container_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.filename ??\n                    value.annotation.file_id ??\n                    'Document',\n                  filename:\n                    value.annotation.filename ?? value.annotation.file_id,\n                  providerMetadata: {\n                    openai: {\n                      fileId: value.annotation.file_id,\n                      containerId: value.annotation.container_id,\n                      ...(value.annotation.index != null\n                        ? { index: value.annotation.index }\n                        : {}),\n                    },\n                  },\n                });\n              } else if (value.annotation.type === 'file_path') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: value.annotation.file_id,\n                  filename: value.annotation.file_id,\n                  providerMetadata: {\n                    openai: {\n                      fileId: value.annotation.file_id,\n                      ...(value.annotation.index != null\n                        ? { index: value.annotation.index }\n                        : {}),\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: SharedV3ProviderMetadata = {\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}\nfunction isResponseImageGenerationCallPartialImageChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.image_generation_call.partial_image';\n} {\n  return chunk.type === 'response.image_generation_call.partial_image';\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 isReasoningModel = modelSupportsReasoning(modelId);\n  const systemMessageMode = isReasoningModel ? 'developer' : 'system';\n\n  return {\n    systemMessageMode,\n    supportsFlexProcessing,\n    supportsPriorityProcessing,\n    isReasoningModel,\n  };\n}\n\nfunction mapWebSearchOutput(\n  action: OpenAIResponsesWebSearchAction,\n): InferSchema<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  LanguageModelV3CallWarning,\n  LanguageModelV3Prompt,\n  LanguageModelV3ToolCallPart,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n  convertToBase64,\n  isNonNullable,\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: LanguageModelV3Prompt;\n  systemMessageMode: 'system' | 'developer' | 'remove';\n  fileIdPrefixes?: readonly string[];\n  store: boolean;\n  hasLocalShellTool?: boolean;\n}): Promise<{\n  input: OpenAIResponsesInput;\n  warnings: Array<LanguageModelV3CallWarning>;\n}> {\n  const input: OpenAIResponsesInput = [];\n  const warnings: Array<LanguageModelV3CallWarning> = [];\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, LanguageModelV3ToolCallPart> = {};\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 'execution-denied':\n              contentValue = output.reason ?? 'Tool execution denied.';\n              break;\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n            case 'content':\n              contentValue = output.value\n                .map(item => {\n                  switch (item.type) {\n                    case 'text': {\n                      return { type: 'input_text' as const, text: item.text };\n                    }\n\n                    case 'image-data': {\n                      return {\n                        type: 'input_image' as const,\n                        image_url: `data:${item.mediaType};base64,${item.data}`,\n                      };\n                    }\n\n                    case 'file-data': {\n                      return {\n                        type: 'input_file' as const,\n                        filename: item.filename ?? 'data',\n                        file_data: `data:${item.mediaType};base64,${item.data}`,\n                      };\n                    }\n\n                    default: {\n                      warnings.push({\n                        type: 'other',\n                        message: `unsupported tool content part type: ${item.type}`,\n                      });\n                      return undefined;\n                    }\n                  }\n                })\n                .filter(isNonNullable);\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 {\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 { LanguageModelV3FinishReason } 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}): LanguageModelV3FinishReason {\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 { InferSchema, lazySchema, zodSchema } 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      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      partial_images: number | undefined;\n      quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n      size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n    }\n\n  /**\n   * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/create#responses_create-tools-mcp_tool\n   */\n  | {\n      type: 'mcp';\n      server_label: string;\n      allowed_tools:\n        | string[]\n        | {\n            read_only?: boolean;\n            tool_names?: string[];\n          }\n        | undefined;\n      authorization: string | undefined;\n      connector_id: string | undefined;\n      headers: Record<string, string> | undefined;\n      require_approval:\n        | 'always'\n        | 'never'\n        | {\n            read_only?: boolean;\n            tool_names?: string[];\n          }\n        | undefined;\n      server_description: string | undefined;\n      server_url: string | 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 = lazySchema(() =>\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          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: 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(\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('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          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n            arguments: z.string(),\n            name: z.string(),\n            server_label: z.string(),\n            output: z.string().nullish(),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n            server_label: z.string(),\n            tools: z.array(\n              z.object({\n                name: z.string(),\n                description: z.string().optional(),\n                input_schema: z.any(),\n                annotations: z.record(z.string(), z.unknown()).optional(),\n              }),\n            ),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: z.string(),\n            server_label: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            approval_request_id: z.string(),\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            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      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        code: z.string(),\n        message: z.string(),\n        param: z.string().nullish(),\n        sequence_number: z.number(),\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 = InferSchema<\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 = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string(),\n      created_at: z.number(),\n      error: z\n        .object({\n          code: z.string(),\n          message: z.string(),\n        })\n        .nullish(),\n      model: z.string(),\n      output: z.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          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n            arguments: z.string(),\n            name: z.string(),\n            server_label: z.string(),\n            output: z.string().nullish(),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n            server_label: z.string(),\n            tools: z.array(\n              z.object({\n                name: z.string(),\n                description: z.string().optional(),\n                input_schema: z.any(),\n                annotations: z.record(z.string(), z.unknown()).optional(),\n              }),\n            ),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: z.string(),\n            server_label: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            approval_request_id: z.string(),\n          }),\n        ]),\n      ),\n      service_tier: z.string().nullish(),\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    }),\n  ),\n);\n","import { InferSchema, lazySchema, zodSchema } 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] 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-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 = lazySchema(() =>\n  zodSchema(\n    z.object({\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      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 = InferSchema<\n  typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n  LanguageModelV3CallOptions,\n  LanguageModelV3CallWarning,\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 { mcpArgsSchema } from '../tool/mcp';\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: LanguageModelV3CallOptions['tools'];\n  toolChoice?: LanguageModelV3CallOptions['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: 'mcp' }\n    | { type: 'image_generation' };\n  toolWarnings: LanguageModelV3CallWarning[];\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: LanguageModelV3CallWarning[] = [];\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              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              moderation: args.moderation,\n              partial_images: args.partialImages,\n              quality: args.quality,\n              output_compression: args.outputCompression,\n              output_format: args.outputFormat,\n              size: args.size,\n            });\n            break;\n          }\n          case 'openai.mcp': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: mcpArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'mcp',\n              server_label: args.serverLabel,\n              allowed_tools: Array.isArray(args.allowedTools)\n                ? args.allowedTools\n                : args.allowedTools\n                  ? {\n                      read_only: args.allowedTools.readOnly,\n                      tool_names: args.allowedTools.toolNames,\n                    }\n                  : undefined,\n              authorization: args.authorization,\n              connector_id: args.connectorId,\n              headers: args.headers,\n              // require_approval:\n              //   typeof args.requireApproval === 'string'\n              //     ? args.requireApproval\n              //     : args.requireApproval\n              //       ? {\n              //           read_only: args.requireApproval.readOnly,\n              //           tool_names: args.requireApproval.toolNames,\n              //         }\n              //       : undefined,\n              require_approval: 'never',\n              server_description: args.serverDescription,\n              server_url: args.serverUrl,\n            });\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          toolChoice.toolName === 'mcp'\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  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      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       * 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   * Number of partial images to generate in streaming mode, from 0 (default value) to 3.\n   */\n  partialImages?: number;\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  createProviderDefinedToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { JSONValue } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nconst jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n  z.union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.null(),\n    z.array(jsonValueSchema),\n    z.record(z.string(), jsonValueSchema),\n  ]),\n);\n\nexport const mcpArgsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        serverLabel: z.string(),\n        allowedTools: z\n          .union([\n            z.array(z.string()),\n            z.object({\n              readOnly: z.boolean().optional(),\n              toolNames: z.array(z.string()).optional(),\n            }),\n          ])\n          .optional(),\n        authorization: z.string().optional(),\n        connectorId: z.string().optional(),\n        headers: z.record(z.string(), z.string()).optional(),\n\n        // TODO: Integrate this MCP tool approval with our SDK's existing tool approval architecture\n        // requireApproval: z\n        //   .union([\n        //     z.enum(['always', 'never']),\n        //     z.object({\n        //       readOnly: z.boolean().optional(),\n        //       toolNames: z.array(z.string()).optional(),\n        //     }),\n        //   ])\n        //   .optional(),\n        serverDescription: z.string().optional(),\n        serverUrl: z.string().optional(),\n      })\n      .refine(\n        v => v.serverUrl != null || v.connectorId != null,\n        'One of serverUrl or connectorId must be provided.',\n      ),\n  ),\n);\n\nconst mcpInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const mcpOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.discriminatedUnion('type', [\n      z.object({\n        type: z.literal('call'),\n        serverLabel: z.string(),\n        name: z.string(),\n        arguments: z.string(),\n        output: z.string().nullable().optional(),\n        error: z.union([z.string(), jsonValueSchema]).optional(),\n      }),\n      z.object({\n        type: z.literal('listTools'),\n        serverLabel: z.string(),\n        tools: z.array(\n          z.object({\n            name: z.string(),\n            description: z.string().optional(),\n            inputSchema: jsonValueSchema,\n            annotations: z.record(z.string(), jsonValueSchema).optional(),\n          }),\n        ),\n        error: z.union([z.string(), jsonValueSchema]).optional(),\n      }),\n      z.object({\n        type: z.literal('approvalRequest'),\n        serverLabel: z.string(),\n        name: z.string(),\n        arguments: z.string(),\n        approvalRequestId: z.string(),\n      }),\n    ]),\n  ),\n);\n\ntype McpArgs = {\n  /** A label for this MCP server, used to identify it in tool calls. */\n  serverLabel: string;\n  /** List of allowed tool names or a filter object. */\n  allowedTools?:\n    | string[]\n    | {\n        readOnly?: boolean;\n        toolNames?: string[];\n      };\n  /** OAuth access token usable with the remote MCP server or connector. */\n  authorization?: string;\n  /** Identifier for a service connector. */\n  connectorId?: string;\n  /** Optional HTTP headers to send to the MCP server. */\n  headers?: Record<string, string>;\n  // /** Which tools require approval: 'always' | 'never' | filter object. */\n  // requireApproval?:\n  //   | 'always'\n  //   | 'never'\n  //   | {\n  //       readOnly?: boolean;\n  //       toolNames?: string[];\n  //     };\n  /** Optional description of the MCP server. */\n  serverDescription?: string;\n  /** URL for the MCP server. One of serverUrl or connectorId must be provided. */\n  serverUrl?: string;\n};\n\nexport const mcpToolFactory = createProviderDefinedToolFactoryWithOutputSchema<\n  {},\n  | {\n      type: 'call';\n      serverLabel: string;\n      name: string;\n      arguments: string;\n      output?: string | null;\n      error?: JSONValue;\n    }\n  | {\n      type: 'listTools';\n      serverLabel: string;\n      tools: Array<{\n        name: string;\n        description?: string;\n        inputSchema: unknown;\n        annotations?: unknown;\n      }>;\n      error?: JSONValue;\n    }\n  | {\n      type: 'approvalRequest';\n      serverLabel: string;\n      name: string;\n      arguments: string;\n      approvalRequestId: string;\n    },\n  McpArgs\n>({\n  id: 'openai.mcp',\n  name: 'mcp',\n  inputSchema: mcpInputSchema,\n  outputSchema: mcpOutputSchema,\n});\n\nexport const mcp = (args: McpArgs) => mcpToolFactory(args);\n"],"mappings":"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","names":["_a","z","z","lazySchema","zodSchema","z","UnsupportedFunctionalityError","toolCall","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","parseProviderOptions","postJsonToApi","UnsupportedFunctionalityError","getResponseMetadata","mapOpenAIFinishReason","z","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","mapOpenAIFinishReason","getResponseMetadata","createEventSourceResponseHandler","combineHeaders","createJsonResponseHandler","parseProviderOptions","postJsonToApi","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","combineHeaders","createJsonResponseHandler","postJsonToApi","lazySchema","zodSchema","z","postJsonToApi","combineHeaders","createJsonResponseHandler","combineHeaders","createJsonResponseHandler","parseProviderOptions","lazySchema","zodSchema","z","lazySchema","zodSchema","z","parseProviderOptions","combineHeaders","createJsonResponseHandler","combineHeaders","parseProviderOptions","postJsonToApi","lazySchema","zodSchema","z","parseProviderOptions","postJsonToApi","combineHeaders","combineHeaders","createEventSourceResponseHandler","createJsonResponseHandler","generateId","parseProviderOptions","postJsonToApi","UnsupportedFunctionalityError","convertToBase64","parseProviderOptions","z","lazySchema","zodSchema","z","_a","_b","_c","convertToBase64","UnsupportedFunctionalityError","parseProviderOptions","z","lazySchema","zodSchema","z","lazySchema","zodSchema","z","UnsupportedFunctionalityError","createProviderDefinedToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderDefinedToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderDefinedToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderDefinedToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderDefinedToolFactoryWithOutputSchema","lazySchema","zodSchema","z","createProviderDefinedToolFactoryWithOutputSchema","lazySchema","zodSchema","z","validateTypes","UnsupportedFunctionalityError","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","providerMetadata","generateId","_a","_b","createEventSourceResponseHandler","supportsFlexProcessing","supportsPriorityProcessing","isReasoningModel"]}