@ai-sdk/openai 2.1.0-beta.9 → 3.0.0-beta.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +67 -0
- package/dist/index.d.mts +16 -10
- package/dist/index.d.ts +16 -10
- package/dist/index.js +61 -19
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +61 -19
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.d.mts +115 -11
- package/dist/internal/index.d.ts +115 -11
- package/dist/internal/index.js +59 -13
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +56 -13
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/internal/index.ts","../../src/chat/openai-chat-language-model.ts","../../src/openai-error.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-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-options.ts","../../src/embedding/openai-embedding-model.ts","../../src/embedding/openai-embedding-options.ts","../../src/image/openai-image-model.ts","../../src/image/openai-image-options.ts","../../src/transcription/openai-transcription-model.ts","../../src/transcription/openai-transcription-options.ts","../../src/speech/openai-speech-model.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-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"],"sourcesContent":["export * from '../chat/openai-chat-language-model';\nexport * from '../chat/openai-chat-options';\nexport * from '../completion/openai-completion-language-model';\nexport * from '../completion/openai-completion-options';\nexport * from '../embedding/openai-embedding-model';\nexport * from '../embedding/openai-embedding-options';\nexport * from '../image/openai-image-model';\nexport * from '../image/openai-image-options';\nexport * from '../transcription/openai-transcription-model';\nexport * from '../transcription/openai-transcription-options';\nexport * from '../speech/openai-speech-model';\nexport * from '../speech/openai-speech-options';\nexport * from '../responses/openai-responses-language-model';\nexport * from '../tool/code-interpreter';\nexport * from '../tool/file-search';\n","import {\n InvalidResponseDataError,\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} from '../openai-error';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n 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: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<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 isFirstChunk = true;\n let isActiveText = false;\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiChatChunkSchema>>,\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\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\nconst openaiTokenUsageSchema = 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// 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\nconst openaiChatResponseSchema = 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: openaiTokenUsageSchema,\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\nconst openaiChatChunkSchema = 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: openaiTokenUsageSchema,\n }),\n openaiErrorDataSchema,\n]);\n\nfunction isReasoningModel(modelId: string) {\n return (\n (modelId.startsWith('o') || modelId.startsWith('gpt-5')) &&\n !modelId.startsWith('gpt-5-chat')\n );\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return (\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'))\n );\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nfunction getSystemMessageMode(modelId: string) {\n if (!isReasoningModel(modelId)) {\n return 'system';\n }\n\n return (\n reasoningModels[modelId as keyof typeof reasoningModels]\n ?.systemMessageMode ?? 'developer'\n );\n}\n\nconst reasoningModels = {\n 'o1-mini': {\n systemMessageMode: 'remove',\n },\n 'o1-mini-2024-09-12': {\n systemMessageMode: 'remove',\n },\n 'o1-preview': {\n systemMessageMode: 'remove',\n },\n 'o1-preview-2024-09-12': {\n systemMessageMode: 'remove',\n },\n o3: {\n systemMessageMode: 'developer',\n },\n 'o3-2025-04-16': {\n systemMessageMode: 'developer',\n },\n 'o3-mini': {\n systemMessageMode: 'developer',\n },\n 'o3-mini-2025-01-31': {\n systemMessageMode: 'developer',\n },\n 'o4-mini': {\n systemMessageMode: 'developer',\n },\n 'o4-mini-2025-04-16': {\n systemMessageMode: 'developer',\n },\n} as const;\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n 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 '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 != 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';\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 = 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\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 *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority']).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\nexport type OpenAIChatLanguageModelOptions = z.infer<\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-types';\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 SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} 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 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: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<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: SharedV2ProviderMetadata = { 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<z.infer<typeof openaiCompletionChunkSchema>>,\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\nconst usageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\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\nconst openaiCompletionResponseSchema = 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: usageSchema.nullish(),\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\nconst openaiCompletionChunkSchema = 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.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: usageSchema.nullish(),\n }),\n openaiErrorDataSchema,\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';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = 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\nexport type OpenAICompletionProviderOptions = z.infer<\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 { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\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\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\nconst openaiTextEmbeddingResponseSchema = z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n});\n","import { 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 = 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\nexport type OpenAIEmbeddingProviderOptions = z.infer<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { ImageModelV3, ImageModelV3CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\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 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\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\nconst openaiImageResponseSchema = z.object({\n data: z.array(\n z.object({ b64_json: z.string(), revised_prompt: z.string().optional() }),\n ),\n});\n","export type OpenAIImageModelId =\n | 'gpt-image-1'\n | 'dall-e-3'\n | 'dall-e-2'\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};\n\nexport const hasDefaultResponseFormat = new Set(['gpt-image-1']);\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAITranscriptionModelId,\n openAITranscriptionProviderOptions,\n OpenAITranscriptionProviderOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV2CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: OpenAITranscriptionProviderOptions;\n };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n afrikaans: 'af',\n arabic: 'ar',\n armenian: 'hy',\n azerbaijani: 'az',\n belarusian: 'be',\n bosnian: 'bs',\n bulgarian: 'bg',\n catalan: 'ca',\n chinese: 'zh',\n croatian: 'hr',\n czech: 'cs',\n danish: 'da',\n dutch: 'nl',\n english: 'en',\n estonian: 'et',\n finnish: 'fi',\n french: 'fr',\n galician: 'gl',\n german: 'de',\n greek: 'el',\n hebrew: 'he',\n hindi: 'hi',\n hungarian: 'hu',\n icelandic: 'is',\n indonesian: 'id',\n italian: 'it',\n japanese: 'ja',\n kannada: 'kn',\n kazakh: 'kk',\n korean: 'ko',\n latvian: 'lv',\n lithuanian: 'lt',\n macedonian: 'mk',\n malay: 'ms',\n marathi: 'mr',\n maori: 'mi',\n nepali: 'ne',\n norwegian: 'no',\n persian: 'fa',\n polish: 'pl',\n portuguese: 'pt',\n romanian: 'ro',\n russian: 'ru',\n serbian: 'sr',\n slovak: 'sk',\n slovenian: 'sl',\n spanish: 'es',\n swahili: 'sw',\n swedish: 'sv',\n tagalog: 'tl',\n tamil: 'ta',\n thai: 'th',\n turkish: 'tr',\n ukrainian: 'uk',\n urdu: 'ur',\n vietnamese: 'vi',\n welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAITranscriptionModelId,\n private readonly config: OpenAITranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAITranscriptionProviderOptions,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n const fileExtension = mediaTypeToExtension(mediaType);\n formData.append(\n 'file',\n new File([blob], 'audio', { type: mediaType }),\n `audio.${fileExtension}`,\n );\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions = {\n include: openAIOptions.include,\n language: openAIOptions.language,\n prompt: openAIOptions.prompt,\n // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n // prefer verbose_json to get segments for models that support it\n response_format: [\n 'gpt-4o-transcribe',\n 'gpt-4o-mini-transcribe',\n ].includes(this.modelId)\n ? 'json'\n : 'verbose_json',\n temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n if (Array.isArray(value)) {\n for (const item of value) {\n formData.append(`${key}[]`, String(item));\n }\n } else {\n formData.append(key, String(value));\n }\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const language =\n response.language != null && response.language in languageMap\n ? languageMap[response.language as keyof typeof languageMap]\n : undefined;\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ??\n response.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ??\n [],\n language,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst openaiTranscriptionResponseSchema = 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","import { 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 = 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\nexport type OpenAITranscriptionProviderOptions = z.infer<\n typeof openAITranscriptionProviderOptions\n>;\n","import { SpeechModelV2, SpeechModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api-types';\nimport { OpenAISpeechModelId } from './openai-speech-options';\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nconst OpenAIProviderOptionsSchema = z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n});\n\nexport type OpenAISpeechCallOptions = z.infer<\n typeof OpenAIProviderOptionsSchema\n>;\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAISpeechModelId,\n private readonly config: OpenAISpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n language,\n providerOptions,\n }: Parameters<SpeechModelV2['doGenerate']>[0]) {\n const warnings: SpeechModelV2CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: OpenAIProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody: Record<string, unknown> = {\n model: this.modelId,\n input: text,\n voice,\n response_format: 'mp3',\n speed,\n instructions,\n };\n\n if (outputFormat) {\n if (['mp3', 'opus', 'aac', 'flac', 'wav', 'pcm'].includes(outputFormat)) {\n requestBody.response_format = outputFormat;\n } else {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'outputFormat',\n details: `Unsupported output format: ${outputFormat}. Using mp3 instead.`,\n });\n }\n }\n\n // Add provider-specific options\n if (openAIOptions) {\n const speechModelOptions: OpenAISpeechAPITypes = {};\n\n for (const key in speechModelOptions) {\n const value = speechModelOptions[key as keyof OpenAISpeechAPITypes];\n if (value !== undefined) {\n requestBody[key] = value;\n }\n }\n }\n\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n });\n }\n\n return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/audio/speech',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","import {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3ProviderDefinedTool,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\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 { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n OpenAIResponsesIncludeOptions,\n OpenAIResponsesIncludeValue,\n} from './openai-responses-api-types';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport { OpenAIResponsesModelId } from './openai-responses-settings';\nimport { localShellInputSchema } from '../tool/local-shell';\n\nconst webSearchCallItem = z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().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 .nullish(),\n});\n\nconst fileSearchCallItem = z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n});\n\nconst codeInterpreterCallItem = 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\nconst localShellCallItem = 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\nconst imageGenerationCallItem = z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n});\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 */\nconst TOP_LOGPROBS_MAX = 20;\n\nconst LOGPROBS_SCHEMA = z.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\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 include = include != null ? [...include, key] : [key];\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 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: openaiOptions?.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\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 ...(modelConfig.requiredAutoTruncation && {\n truncation: 'auto',\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 } = 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 };\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 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: LOGPROBS_SCHEMA.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 }),\n ]),\n ),\n }),\n ),\n }),\n webSearchCallItem,\n fileSearchCallItem,\n codeInterpreterCallItem,\n imageGenerationCallItem,\n localShellCallItem,\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n ),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: usageSchema,\n }),\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<z.infer<typeof LOGPROBS_SCHEMA>> = [];\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 z.infer<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({ action: part.action } satisfies z.infer<\n typeof localShellInputSchema\n >),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n });\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({ action: part.action }),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: { status: part.status },\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies z.infer<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies z.infer<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 z.infer<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n }\n }\n\n const providerMetadata: SharedV2ProviderMetadata = {\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 } = 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<z.infer<typeof LOGPROBS_SCHEMA>> = [];\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 summaryParts: number[];\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiResponsesChunkSchema>>,\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 });\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 });\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 });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n 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 (isResponseOutputItemAddedReasoningChunk(value)) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: [0],\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-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({ action: value.item.action }),\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'web_search',\n result: { status: value.item.status },\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies z.infer<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies z.infer<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies z.infer<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies z.infer<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 (isResponseOutputItemDoneReasoningChunk(value)) {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n for (const summaryIndex of activeReasoningPart.summaryParts) {\n controller.enqueue({\n type: 'reasoning-end',\n id: `${value.item.id}:${summaryIndex}`,\n providerMetadata: {\n openai: {\n itemId: value.item.id,\n reasoningEncryptedContent:\n value.item.encrypted_content ?? null,\n },\n },\n });\n }\n\n delete activeReasoning[value.item.id];\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: value.delta,\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n // The delta is code, which is embedding in a JSON string.\n // To escape it, we use JSON.stringify and slice to remove the outer quotes.\n delta: JSON.stringify(value.delta).slice(1, -1),\n });\n }\n } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: '\"}',\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n // immediately send the tool call after the input end:\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: value.code,\n containerId: toolCall.codeInterpreter!.containerId,\n } satisfies z.infer<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 (isResponseReasoningSummaryPartAddedChunk(value)) {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk.\n if (value.summary_index > 0) {\n activeReasoning[value.item_id]?.summaryParts.push(\n value.summary_index,\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 (isResponseReasoningSummaryTextDeltaChunk(value)) {\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 (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 });\n }\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n const providerMetadata: SharedV2ProviderMetadata = {\n openai: {\n responseId,\n },\n };\n\n if (logprobs.length > 0) {\n providerMetadata.openai.logprobs = logprobs;\n }\n\n if (serviceTier !== undefined) {\n providerMetadata.openai.serviceTier = serviceTier;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst usageSchema = 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\nconst textDeltaChunkSchema = z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: LOGPROBS_SCHEMA.nullish(),\n});\n\nconst errorChunkSchema = 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\nconst responseFinishedChunkSchema = 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: usageSchema,\n service_tier: z.string().nullish(),\n }),\n});\n\nconst responseCreatedChunkSchema = 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\nconst responseOutputItemAddedSchema = 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 action: z\n .object({\n type: z.literal('search'),\n query: z.string().optional(),\n })\n .nullish(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n});\n\nconst responseOutputItemDoneSchema = 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 codeInterpreterCallItem,\n imageGenerationCallItem,\n webSearchCallItem,\n fileSearchCallItem,\n localShellCallItem,\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n});\n\nconst responseFunctionCallArgumentsDeltaSchema = 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\nconst responseCodeInterpreterCallCodeDeltaSchema = 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\nconst responseCodeInterpreterCallCodeDoneSchema = 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\nconst responseAnnotationAddedSchema = 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 ]),\n});\n\nconst responseReasoningSummaryPartAddedSchema = z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n});\n\nconst responseReasoningSummaryTextDeltaSchema = 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\nconst openaiResponsesChunkSchema = z.union([\n textDeltaChunkSchema,\n responseFinishedChunkSchema,\n responseCreatedChunkSchema,\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n responseFunctionCallArgumentsDeltaSchema,\n responseCodeInterpreterCallCodeDeltaSchema,\n responseCodeInterpreterCallCodeDoneSchema,\n responseAnnotationAddedSchema,\n responseReasoningSummaryPartAddedSchema,\n responseReasoningSummaryTextDeltaSchema,\n errorChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n]);\n\ntype ExtractByType<\n T,\n K extends T extends { type: infer U } ? U : never,\n> = T extends { type: K } ? T : never;\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseOutputItemDoneReasoningChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> & {\n item: ExtractByType<\n z.infer<typeof responseOutputItemDoneSchema>['item'],\n 'reasoning'\n >;\n} {\n return (\n isResponseOutputItemDoneChunk(chunk) && chunk.item.type === 'reasoning'\n );\n}\n\nfunction isResponseFinishedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseFinishedChunkSchema> {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseFunctionCallArgumentsDeltaSchema> {\n return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCodeInterpreterCallCodeDeltaSchema> {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCodeInterpreterCallCodeDoneSchema> {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseOutputItemAddedReasoningChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> & {\n item: ExtractByType<\n z.infer<typeof responseOutputItemAddedSchema>['item'],\n 'reasoning'\n >;\n} {\n return (\n isResponseOutputItemAddedChunk(chunk) && chunk.item.type === 'reasoning'\n );\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseAnnotationAddedSchema> {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isResponseReasoningSummaryPartAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseReasoningSummaryPartAddedSchema> {\n return chunk.type === 'response.reasoning_summary_part.added';\n}\n\nfunction isResponseReasoningSummaryTextDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseReasoningSummaryTextDeltaSchema> {\n return chunk.type === 'response.reasoning_summary_text.delta';\n}\n\nfunction isErrorChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof errorChunkSchema> {\n return chunk.type === 'error';\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n requiredAutoTruncation: boolean;\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n const defaults = {\n requiredAutoTruncation: false,\n systemMessageMode: 'system' as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n };\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith('gpt-5-chat')) {\n return {\n ...defaults,\n isReasoningModel: false,\n };\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('gpt-5') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n if (modelId.startsWith('o1-mini') || modelId.startsWith('o1-preview')) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'remove',\n };\n }\n\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'developer',\n };\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n };\n}\n\n// TODO AI SDK 6: use optional here instead of nullish\nconst openaiResponsesProviderOptionsSchema = z.object({\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content',\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']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n user: z.string().nullish(),\n});\n\nexport type OpenAIResponsesProviderOptions = z.infer<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n LanguageModelV3CallWarning,\n LanguageModelV3Prompt,\n LanguageModelV3ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64, parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api-types';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\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 input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id:\n (part.providerOptions?.openai?.itemId as string) ?? undefined,\n });\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = localShellInputSchema.parse(part.input);\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id:\n (part.providerOptions?.openai?.itemId as string) ??\n undefined,\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 (part.providerOptions?.openai?.itemId as string) ?? undefined,\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 if (reasoningMessage === undefined) {\n // use item references to refer to reasoning (single reference)\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 }\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 input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: localShellOutputSchema.parse(output.value).output,\n });\n break;\n }\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n 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 { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = 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\nexport const localShellOutputSchema = z.object({\n 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 {\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 { OpenAIResponsesTool } from './openai-responses-api-types';\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): {\n tools?: Array<OpenAIResponsesTool>;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: 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 = fileSearchArgsSchema.parse(tool.args);\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 = webSearchPreviewArgsSchema.parse(tool.args);\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 = webSearchArgsSchema.parse(tool.args);\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 = codeInterpreterArgsSchema.parse(tool.args);\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 = imageGenerationArgsSchema.parse(tool.args);\n openaiTools.push({\n type: 'image_generation',\n background: args.background,\n input_fidelity: args.inputFidelity,\n input_image_mask: args.inputImageMask\n ? {\n file_id: args.inputImageMask.fileId,\n image_url: args.inputImageMask.imageUrl,\n }\n : undefined,\n model: args.model,\n size: args.size,\n quality: args.quality,\n moderation: args.moderation,\n output_format: args.outputFormat,\n output_compression: args.outputCompression,\n });\n break;\n }\n }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n});\n\nexport const codeInterpreterOutputSchema = 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\nexport const codeInterpreterArgsSchema = 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\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 { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api-types';\nimport { z } from 'zod/v4';\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 = 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.union([comparisonFilterSchema, compoundFilterSchema]).optional(),\n});\n\nexport const fileSearchOutputSchema = 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\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 { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = z.object({\n filters: z\n .object({\n allowedDomains: z.array(z.string()).optional(),\n })\n .optional(),\n\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n\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\nexport const webSearchToolFactory = createProviderDefinedToolFactory<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\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: z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().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 .nullish(),\n }),\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => {\n return webSearchToolFactory(args);\n};\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Args validation schema\nexport const webSearchPreviewArgsSchema = z.object({\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: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation: z\n .object({\n /**\n * Type of location (always 'approximate')\n */\n type: z.literal('approximate'),\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country: z.string().optional(),\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city: z.string().optional(),\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region: z.string().optional(),\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone: z.string().optional(),\n })\n .optional(),\n});\n\nexport const webSearchPreview = createProviderDefinedToolFactory<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\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: z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().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 .nullish(),\n }),\n});\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = 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 quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n size: z.enum(['1024x1024', '1024x1536', '1536x1024', 'auto']).optional(),\n })\n .strict();\n\nexport const imageGenerationOutputSchema = z.object({\n result: z.string(),\n});\n\ntype ImageGenerationArgs = {\n /**\n * Background type for the generated image. Default is 'auto'.\n */\n background?: 'auto' | 'opaque' | 'transparent';\n\n /**\n * Input fidelity for the generated image. Default is 'low'.\n */\n inputFidelity?: 'low' | 'high';\n\n /**\n * Optional mask for inpainting.\n * Contains image_url (string, optional) and file_id (string, optional).\n */\n inputImageMask?: {\n /**\n * File ID for the mask image.\n */\n fileId?: string;\n\n /**\n * Base64-encoded mask image.\n */\n imageUrl?: string;\n };\n\n /**\n * The image generation model to use. Default: gpt-image-1.\n */\n model?: string;\n\n /**\n * Moderation level for the generated image. Default: auto.\n */\n moderation?: 'auto';\n\n /**\n * Compression level for the output image. Default: 100.\n */\n outputCompression?: number;\n\n /**\n * The output format of the generated image. One of png, webp, or jpeg.\n * Default: png\n */\n outputFormat?: 'png' | 'jpeg' | 'webp';\n\n /**\n * The quality of the generated image.\n * One of low, medium, high, or auto. Default: auto.\n */\n quality?: 'auto' | 'low' | 'medium' | 'high';\n\n /**\n * The size of the generated image.\n * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n * Default: auto.\n */\n size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema<\n {},\n {\n /**\n * The generated image encoded in base64.\n */\n result: string;\n },\n ImageGenerationArgs\n >({\n id: 'openai.image_generation',\n name: 'image_generation',\n inputSchema: z.object({}),\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider","toolCall","import_provider_utils","import_v4","import_provider","getResponseMetadata","mapOpenAIFinishReason","import_v4","mapOpenAIFinishReason","getResponseMetadata","import_provider","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","import_provider","import_provider_utils","import_v4","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","_a","_b","_c","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","usageSchema","supportsFlexProcessing","supportsPriorityProcessing"]}
|
|
1
|
+
{"version":3,"sources":["../../src/internal/index.ts","../../src/chat/openai-chat-language-model.ts","../../src/openai-error.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-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-options.ts","../../src/embedding/openai-embedding-model.ts","../../src/embedding/openai-embedding-options.ts","../../src/image/openai-image-model.ts","../../src/image/openai-image-options.ts","../../src/transcription/openai-transcription-model.ts","../../src/transcription/openai-transcription-options.ts","../../src/speech/openai-speech-model.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-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"],"sourcesContent":["export * from '../chat/openai-chat-language-model';\nexport * from '../chat/openai-chat-options';\nexport * from '../completion/openai-completion-language-model';\nexport * from '../completion/openai-completion-options';\nexport * from '../embedding/openai-embedding-model';\nexport * from '../embedding/openai-embedding-options';\nexport * from '../image/openai-image-model';\nexport * from '../image/openai-image-options';\nexport * from '../transcription/openai-transcription-model';\nexport * from '../transcription/openai-transcription-options';\nexport * from '../speech/openai-speech-model';\nexport * from '../speech/openai-speech-options';\nexport * from '../responses/openai-responses-language-model';\nexport * from '../tool/code-interpreter';\nexport * from '../tool/file-search';\nexport * from '../tool/image-generation';\n","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 { z } from 'zod/v4';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} from '../openai-error';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n 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 isFirstChunk = true;\n let isActiveText = false;\n\n const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiChatChunkSchema>>,\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\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\nconst openaiTokenUsageSchema = 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// 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\nconst openaiChatResponseSchema = 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: openaiTokenUsageSchema,\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\nconst openaiChatChunkSchema = 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: openaiTokenUsageSchema,\n }),\n openaiErrorDataSchema,\n]);\n\nfunction isReasoningModel(modelId: string) {\n return (\n (modelId.startsWith('o') || modelId.startsWith('gpt-5')) &&\n !modelId.startsWith('gpt-5-chat')\n );\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return (\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'))\n );\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nfunction getSystemMessageMode(modelId: string) {\n if (!isReasoningModel(modelId)) {\n return 'system';\n }\n\n return (\n reasoningModels[modelId as keyof typeof reasoningModels]\n ?.systemMessageMode ?? 'developer'\n );\n}\n\nconst reasoningModels = {\n 'o1-mini': {\n systemMessageMode: 'remove',\n },\n 'o1-mini-2024-09-12': {\n systemMessageMode: 'remove',\n },\n 'o1-preview': {\n systemMessageMode: 'remove',\n },\n 'o1-preview-2024-09-12': {\n systemMessageMode: 'remove',\n },\n o3: {\n systemMessageMode: 'developer',\n },\n 'o3-2025-04-16': {\n systemMessageMode: 'developer',\n },\n 'o3-mini': {\n systemMessageMode: 'developer',\n },\n 'o3-mini-2025-01-31': {\n systemMessageMode: 'developer',\n },\n 'o4-mini': {\n systemMessageMode: 'developer',\n },\n 'o4-mini-2025-04-16': {\n systemMessageMode: 'developer',\n },\n} as const;\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n 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 != 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';\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 = 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\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 *\n * @default 'auto'\n */\n serviceTier: z.enum(['auto', 'flex', 'priority']).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\nexport type OpenAIChatLanguageModelOptions = z.infer<\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-types';\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 { z } from 'zod/v4';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} 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 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<z.infer<typeof openaiCompletionChunkSchema>>,\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\nconst usageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\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\nconst openaiCompletionResponseSchema = 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: usageSchema.nullish(),\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\nconst openaiCompletionChunkSchema = 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.array(z.record(z.string(), z.number())).nullish(),\n })\n .nullish(),\n }),\n ),\n usage: usageSchema.nullish(),\n }),\n openaiErrorDataSchema,\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';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId = 'gpt-3.5-turbo-instruct' | (string & {});\n\nexport const openaiCompletionProviderOptions = 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\nexport type OpenAICompletionProviderOptions = z.infer<\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 { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\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\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\nconst openaiTextEmbeddingResponseSchema = z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\n});\n","import { 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 = 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\nexport type OpenAIEmbeddingProviderOptions = z.infer<\n typeof openaiEmbeddingProviderOptions\n>;\n","import { ImageModelV3, ImageModelV3CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\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 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\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\nconst openaiImageResponseSchema = z.object({\n data: z.array(\n z.object({ b64_json: z.string(), revised_prompt: z.string().optional() }),\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 { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\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\nconst openaiTranscriptionResponseSchema = 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","import { 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 = 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\nexport type OpenAITranscriptionProviderOptions = z.infer<\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 { z } from 'zod/v4';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api-types';\nimport { OpenAISpeechModelId } from './openai-speech-options';\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nconst OpenAIProviderOptionsSchema = z.object({\n instructions: z.string().nullish(),\n speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n});\n\nexport type OpenAISpeechCallOptions = z.infer<\n typeof OpenAIProviderOptionsSchema\n>;\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: OpenAIProviderOptionsSchema,\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 {\n APICallError,\n LanguageModelV3,\n LanguageModelV3CallWarning,\n LanguageModelV3Content,\n LanguageModelV3FinishReason,\n LanguageModelV3ProviderDefinedTool,\n LanguageModelV3StreamPart,\n LanguageModelV3Usage,\n SharedV3ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\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 { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n OpenAIResponsesIncludeOptions,\n OpenAIResponsesIncludeValue,\n} from './openai-responses-api-types';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport { OpenAIResponsesModelId } from './openai-responses-settings';\nimport { localShellInputSchema } from '../tool/local-shell';\n\nconst webSearchCallItem = z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string(),\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().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 .nullish(),\n});\n\nconst fileSearchCallItem = z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n queries: z.array(z.string()),\n results: z\n .array(\n z.object({\n attributes: z.record(z.string(), z.unknown()),\n file_id: z.string(),\n filename: z.string(),\n score: z.number(),\n text: z.string(),\n }),\n )\n .nullish(),\n});\n\nconst codeInterpreterCallItem = 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\nconst localShellCallItem = 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\nconst imageGenerationCallItem = z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n result: z.string(),\n});\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 */\nconst TOP_LOGPROBS_MAX = 20;\n\nconst LOGPROBS_SCHEMA = z.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\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 include = include != null ? [...include, key] : [key];\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 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: openaiOptions?.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\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 ...(modelConfig.requiredAutoTruncation && {\n truncation: 'auto',\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 } = 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 };\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 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: LOGPROBS_SCHEMA.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 }),\n ]),\n ),\n }),\n ),\n }),\n webSearchCallItem,\n fileSearchCallItem,\n codeInterpreterCallItem,\n imageGenerationCallItem,\n localShellCallItem,\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string().optional(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n encrypted_content: z.string().nullish(),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n ),\n service_tier: z.string().nullish(),\n incomplete_details: z.object({ reason: z.string() }).nullish(),\n usage: usageSchema,\n }),\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<z.infer<typeof LOGPROBS_SCHEMA>> = [];\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 z.infer<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'local_shell_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({ action: part.action } satisfies z.infer<\n typeof localShellInputSchema\n >),\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n break;\n }\n\n case 'message': {\n for (const contentPart of part.content) {\n if (\n options.providerOptions?.openai?.logprobs &&\n contentPart.logprobs\n ) {\n logprobs.push(contentPart.logprobs);\n }\n\n content.push({\n type: 'text',\n text: contentPart.text,\n providerMetadata: {\n openai: {\n itemId: part.id,\n },\n },\n });\n\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n } else if (annotation.type === 'file_citation') {\n content.push({\n type: 'source',\n sourceType: 'document',\n id: this.config.generateId?.() ?? generateId(),\n mediaType: 'text/plain',\n title: annotation.quote ?? annotation.filename ?? 'Document',\n filename: annotation.filename ?? annotation.file_id,\n });\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({ action: part.action }),\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: webSearchToolName ?? 'web_search',\n result: { status: part.status },\n providerExecuted: true,\n });\n\n break;\n }\n\n case 'computer_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: part.status || 'completed',\n },\n providerExecuted: true,\n });\n break;\n }\n\n case 'file_search_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'file_search',\n result: {\n queries: part.queries,\n results:\n part.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies z.infer<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n break;\n }\n\n case 'code_interpreter_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: 'code_interpreter',\n input: JSON.stringify({\n code: part.code,\n containerId: part.container_id,\n } satisfies z.infer<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 z.infer<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\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 } = 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<z.infer<typeof LOGPROBS_SCHEMA>> = [];\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 summaryParts: number[];\n }\n > = {};\n\n let serviceTier: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiResponsesChunkSchema>>,\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 } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'computer_use',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'computer_use',\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'code_interpreter',\n toolCallId: value.item.id,\n codeInterpreter: {\n containerId: value.item.container_id,\n },\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'code_interpreter',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: value.item.id,\n delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n });\n } else if (value.item.type === 'file_search_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'file_search',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n input: '{}',\n providerExecuted: true,\n });\n } else if (value.item.type === 'message') {\n 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 (isResponseOutputItemAddedReasoningChunk(value)) {\n activeReasoning[value.item.id] = {\n encryptedContent: value.item.encrypted_content,\n summaryParts: [0],\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-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({ action: value.item.action }),\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'web_search',\n result: { status: value.item.status },\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-input-end',\n id: value.item.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'computer_use',\n result: {\n type: 'computer_use_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'file_search_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'file_search',\n result: {\n queries: value.item.queries,\n results:\n value.item.results?.map(result => ({\n attributes: result.attributes,\n fileId: result.file_id,\n filename: result.filename,\n score: result.score,\n text: result.text,\n })) ?? null,\n } satisfies z.infer<typeof fileSearchOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'code_interpreter_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'code_interpreter',\n result: {\n outputs: value.item.outputs,\n } satisfies z.infer<typeof codeInterpreterOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'image_generation_call') {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'image_generation',\n result: {\n result: value.item.result,\n } satisfies z.infer<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\n });\n } else if (value.item.type === 'local_shell_call') {\n ongoingToolCalls[value.output_index] = undefined;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: value.item.call_id,\n toolName: 'local_shell',\n input: JSON.stringify({\n action: {\n type: 'exec',\n command: value.item.action.command,\n timeoutMs: value.item.action.timeout_ms,\n user: value.item.action.user,\n workingDirectory: value.item.action.working_directory,\n env: value.item.action.env,\n },\n } satisfies z.infer<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 (isResponseOutputItemDoneReasoningChunk(value)) {\n const activeReasoningPart = activeReasoning[value.item.id];\n\n for (const summaryIndex of activeReasoningPart.summaryParts) {\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 z.infer<typeof imageGenerationOutputSchema>,\n providerExecuted: true,\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 z.infer<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 (isResponseReasoningSummaryPartAddedChunk(value)) {\n // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk.\n if (value.summary_index > 0) {\n activeReasoning[value.item_id]?.summaryParts.push(\n value.summary_index,\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 (isResponseReasoningSummaryTextDeltaChunk(value)) {\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 (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 });\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\nconst usageSchema = 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\nconst textDeltaChunkSchema = z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n delta: z.string(),\n logprobs: LOGPROBS_SCHEMA.nullish(),\n});\n\nconst errorChunkSchema = 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\nconst responseFinishedChunkSchema = 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: usageSchema,\n service_tier: z.string().nullish(),\n }),\n});\n\nconst responseCreatedChunkSchema = 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\nconst responseOutputItemAddedSchema = 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 action: z\n .object({\n type: z.literal('search'),\n query: z.string().optional(),\n })\n .nullish(),\n }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('file_search_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('image_generation_call'),\n id: z.string(),\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n id: z.string(),\n container_id: z.string(),\n code: z.string().nullable(),\n outputs: z\n .array(\n z.discriminatedUnion('type', [\n z.object({ type: z.literal('logs'), logs: z.string() }),\n z.object({ type: z.literal('image'), url: z.string() }),\n ]),\n )\n .nullable(),\n status: z.string(),\n }),\n ]),\n});\n\nconst responseOutputItemDoneSchema = 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 codeInterpreterCallItem,\n imageGenerationCallItem,\n webSearchCallItem,\n fileSearchCallItem,\n localShellCallItem,\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\n ]),\n});\n\nconst responseFunctionCallArgumentsDeltaSchema = 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\nconst responseImageGenerationCallPartialImageSchema = 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\nconst responseCodeInterpreterCallCodeDeltaSchema = 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\nconst responseCodeInterpreterCallCodeDoneSchema = 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\nconst responseAnnotationAddedSchema = 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 ]),\n});\n\nconst responseReasoningSummaryPartAddedSchema = z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n summary_index: z.number(),\n});\n\nconst responseReasoningSummaryTextDeltaSchema = 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\nconst openaiResponsesChunkSchema = z.union([\n textDeltaChunkSchema,\n responseFinishedChunkSchema,\n responseCreatedChunkSchema,\n responseOutputItemAddedSchema,\n responseOutputItemDoneSchema,\n responseFunctionCallArgumentsDeltaSchema,\n responseImageGenerationCallPartialImageSchema,\n responseCodeInterpreterCallCodeDeltaSchema,\n responseCodeInterpreterCallCodeDoneSchema,\n responseAnnotationAddedSchema,\n responseReasoningSummaryPartAddedSchema,\n responseReasoningSummaryTextDeltaSchema,\n errorChunkSchema,\n z.object({ type: z.string() }).loose(), // fallback for unknown chunks\n]);\n\ntype ExtractByType<\n T,\n K extends T extends { type: infer U } ? U : never,\n> = T extends { type: K } ? T : never;\n\nfunction isTextDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof textDeltaChunkSchema> {\n return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> {\n return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseOutputItemDoneReasoningChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemDoneSchema> & {\n item: ExtractByType<\n z.infer<typeof responseOutputItemDoneSchema>['item'],\n 'reasoning'\n >;\n} {\n return (\n isResponseOutputItemDoneChunk(chunk) && chunk.item.type === 'reasoning'\n );\n}\n\nfunction isResponseFinishedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseFinishedChunkSchema> {\n return (\n chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n );\n}\n\nfunction isResponseCreatedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCreatedChunkSchema> {\n return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseFunctionCallArgumentsDeltaSchema> {\n return chunk.type === 'response.function_call_arguments.delta';\n}\nfunction isResponseImageGenerationCallPartialImageChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseImageGenerationCallPartialImageSchema> {\n return chunk.type === 'response.image_generation_call.partial_image';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCodeInterpreterCallCodeDeltaSchema> {\n return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseCodeInterpreterCallCodeDoneSchema> {\n return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> {\n return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseOutputItemAddedReasoningChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseOutputItemAddedSchema> & {\n item: ExtractByType<\n z.infer<typeof responseOutputItemAddedSchema>['item'],\n 'reasoning'\n >;\n} {\n return (\n isResponseOutputItemAddedChunk(chunk) && chunk.item.type === 'reasoning'\n );\n}\n\nfunction isResponseAnnotationAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseAnnotationAddedSchema> {\n return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isResponseReasoningSummaryPartAddedChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseReasoningSummaryPartAddedSchema> {\n return chunk.type === 'response.reasoning_summary_part.added';\n}\n\nfunction isResponseReasoningSummaryTextDeltaChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof responseReasoningSummaryTextDeltaSchema> {\n return chunk.type === 'response.reasoning_summary_text.delta';\n}\n\nfunction isErrorChunk(\n chunk: z.infer<typeof openaiResponsesChunkSchema>,\n): chunk is z.infer<typeof errorChunkSchema> {\n return chunk.type === 'error';\n}\n\ntype ResponsesModelConfig = {\n isReasoningModel: boolean;\n systemMessageMode: 'remove' | 'system' | 'developer';\n requiredAutoTruncation: boolean;\n supportsFlexProcessing: boolean;\n supportsPriorityProcessing: boolean;\n};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n const supportsFlexProcessing =\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini') ||\n (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n const supportsPriorityProcessing =\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('gpt-5-mini') ||\n (modelId.startsWith('gpt-5') &&\n !modelId.startsWith('gpt-5-nano') &&\n !modelId.startsWith('gpt-5-chat')) ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini');\n const defaults = {\n requiredAutoTruncation: false,\n systemMessageMode: 'system' as const,\n supportsFlexProcessing,\n supportsPriorityProcessing,\n };\n\n // gpt-5-chat models are non-reasoning\n if (modelId.startsWith('gpt-5-chat')) {\n return {\n ...defaults,\n isReasoningModel: false,\n };\n }\n\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('gpt-5') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n if (modelId.startsWith('o1-mini') || modelId.startsWith('o1-preview')) {\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'remove',\n };\n }\n\n return {\n ...defaults,\n isReasoningModel: true,\n systemMessageMode: 'developer',\n };\n }\n\n // gpt models:\n return {\n ...defaults,\n isReasoningModel: false,\n };\n}\n\n// TODO AI SDK 6: use optional here instead of nullish\nconst openaiResponsesProviderOptionsSchema = z.object({\n include: z\n .array(\n z.enum([\n 'reasoning.encrypted_content',\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']).nullish(),\n store: z.boolean().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n user: z.string().nullish(),\n});\n\nexport type OpenAIResponsesProviderOptions = z.infer<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import {\n LanguageModelV3CallWarning,\n LanguageModelV3Prompt,\n LanguageModelV3ToolCallPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64, parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesInput,\n OpenAIResponsesReasoning,\n} from './openai-responses-api-types';\nimport {\n localShellInputSchema,\n localShellOutputSchema,\n} from '../tool/local-shell';\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 input.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n id:\n (part.providerOptions?.openai?.itemId as string) ?? undefined,\n });\n break;\n }\n case 'tool-call': {\n toolCallParts[part.toolCallId] = part;\n\n if (part.providerExecuted) {\n break;\n }\n\n if (hasLocalShellTool && part.toolName === 'local_shell') {\n const parsedInput = localShellInputSchema.parse(part.input);\n input.push({\n type: 'local_shell_call',\n call_id: part.toolCallId,\n id:\n (part.providerOptions?.openai?.itemId as string) ??\n undefined,\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 (part.providerOptions?.openai?.itemId as string) ?? undefined,\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 if (reasoningMessage === undefined) {\n // use item references to refer to reasoning (single reference)\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 }\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 input.push({\n type: 'local_shell_call_output',\n call_id: part.toolCallId,\n output: localShellOutputSchema.parse(output.value).output,\n });\n break;\n }\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 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 { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = 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\nexport const localShellOutputSchema = z.object({\n 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 {\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 { OpenAIResponsesTool } from './openai-responses-api-types';\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV3CallOptions['tools'];\n toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n strictJsonSchema: boolean;\n}): {\n tools?: Array<OpenAIResponsesTool>;\n toolChoice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'file_search' }\n | { type: 'web_search_preview' }\n | { type: 'web_search' }\n | { type: 'function'; name: string }\n | { type: 'code_interpreter' }\n | { type: 'image_generation' };\n toolWarnings: 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 = fileSearchArgsSchema.parse(tool.args);\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 = webSearchPreviewArgsSchema.parse(tool.args);\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 = webSearchArgsSchema.parse(tool.args);\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 = codeInterpreterArgsSchema.parse(tool.args);\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 = imageGenerationArgsSchema.parse(tool.args);\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 }\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice:\n toolChoice.toolName === 'code_interpreter' ||\n toolChoice.toolName === 'file_search' ||\n toolChoice.toolName === 'image_generation' ||\n toolChoice.toolName === 'web_search_preview' ||\n toolChoice.toolName === 'web_search'\n ? { type: toolChoice.toolName }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = z.object({\n code: z.string().nullish(),\n containerId: z.string(),\n});\n\nexport const codeInterpreterOutputSchema = 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\nexport const codeInterpreterArgsSchema = 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\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 { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport {\n OpenAIResponsesFileSearchToolComparisonFilter,\n OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api-types';\nimport { z } from 'zod/v4';\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 = 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.union([comparisonFilterSchema, compoundFilterSchema]).optional(),\n});\n\nexport const fileSearchOutputSchema = 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\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 { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = z.object({\n filters: z\n .object({\n allowedDomains: z.array(z.string()).optional(),\n })\n .optional(),\n\n searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n\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\nexport const webSearchToolFactory = createProviderDefinedToolFactory<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\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: z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().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 .nullish(),\n }),\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => {\n return webSearchToolFactory(args);\n};\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Args validation schema\nexport const webSearchPreviewArgsSchema = z.object({\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: z.enum(['low', 'medium', 'high']).optional(),\n\n /**\n * User location information to provide geographically relevant search results.\n */\n userLocation: z\n .object({\n /**\n * Type of location (always 'approximate')\n */\n type: z.literal('approximate'),\n /**\n * Two-letter ISO country code (e.g., 'US', 'GB')\n */\n country: z.string().optional(),\n /**\n * City name (free text, e.g., 'Minneapolis')\n */\n city: z.string().optional(),\n /**\n * Region name (free text, e.g., 'Minnesota')\n */\n region: z.string().optional(),\n /**\n * IANA timezone (e.g., 'America/Chicago')\n */\n timezone: z.string().optional(),\n })\n .optional(),\n});\n\nexport const webSearchPreview = createProviderDefinedToolFactory<\n {\n // Web search doesn't take input parameters - it's controlled by the prompt\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: z.object({\n action: z\n .discriminatedUnion('type', [\n z.object({\n type: z.literal('search'),\n query: z.string().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 .nullish(),\n }),\n});\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = 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.enum(['1024x1024', '1024x1536', '1536x1024', 'auto']).optional(),\n })\n .strict();\n\nexport const imageGenerationOutputSchema = z.object({\n 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: z.object({}),\n outputSchema: imageGenerationOutputSchema,\n });\n\nexport const imageGeneration = (\n args: ImageGenerationArgs = {}, // default\n) => {\n return imageGenerationToolFactory(args);\n};\n"],"mappings":"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","names":["import_provider","import_provider_utils","import_v4","import_provider_utils","_a","import_v4","import_provider","toolCall","import_provider_utils","import_v4","import_provider","getResponseMetadata","mapOpenAIFinishReason","import_v4","mapOpenAIFinishReason","getResponseMetadata","import_provider","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_v4","import_provider_utils","import_v4","import_provider","import_provider_utils","import_v4","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","_a","_b","_c","import_provider","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","import_provider_utils","import_v4","usageSchema","supportsFlexProcessing","supportsPriorityProcessing"]}
|