@mastra/server 0.14.0 → 0.14.1-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../node_modules/.pnpm/secure-json-parse@2.7.0/node_modules/secure-json-parse/index.js","../src/server/handlers/agents.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@1.1.3/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/nanoid@3.3.11/node_modules/nanoid/non-secure/index.js","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/event-source-parser-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/resolve.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@2.2.8_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@1.2.12_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/errors.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/parse.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/types/tool.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/provider-defined-tool-factory.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/resolve.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.0_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-messages-options.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/get-cache-control.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/web-search_20250305.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/bash_20241022.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/bash_20250124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/computer_20241022.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/computer_20250124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20241022.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250429.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@2.0.0_zod@3.25.76/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/convert-json-schema-to-openapi-schema.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/convert-to-google-generative-ai-messages.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/get-model-path.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/google-error.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/google-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/map-google-generative-ai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/google-supported-file-url.ts","../../../node_modules/.pnpm/@ai-sdk+google@1.2.21_zod@3.25.76/node_modules/@ai-sdk/google/src/google-provider.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-error.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/convert-json-schema-to-openapi-schema.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/convert-to-google-generative-ai-messages.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/get-model-path.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-options.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/map-google-generative-ai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/tool/google-search.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/tool/url-context.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/tool/code-execution.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-tools.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-generative-ai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@2.0.0_zod@3.25.76/node_modules/@ai-sdk/google/src/google-provider.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/convert-to-groq-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-error.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/map-groq-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@1.2.9_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-provider.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/convert-to-groq-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-error.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/map-groq-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.0_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-provider.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/map-openai-chat-logprobs.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/map-openai-completion-logprobs.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-image-settings.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@1.3.24_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-provider.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-image-settings.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-transcription-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/openai/src/openai-provider.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/convert-to-openai-compatible-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/map-openai-compatible-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@0.2.16_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@1.2.18_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-settings.ts","../../../node_modules/.pnpm/@ai-sdk+xai@1.2.18_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-error.ts","../../../node_modules/.pnpm/@ai-sdk+xai@1.2.18_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-provider.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.0_zod@3.25.76/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/convert-to-xai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/map-xai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-error.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.0_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-provider.ts"],"names":["__commonJS","suspectProtoRx","suspectConstructorRx","_parse","filter","__export","_AISDKError","name","marker","symbol","_a","_TypeValidationError","__toESM","validator","SecureJSON","TypeValidationError","InvalidArgumentError","getOriginalFetch","APICallError","chunkSchema","responseSchema","z","anthropicTools","tool","getCacheControl","anthropic","UnsupportedFunctionalityError","i","part","AISDKError","EmptyResponseBodyError","getErrorMessage","InvalidPromptError","InvalidResponseDataError","JSONParseError","LoadAPIKeyError","NoSuchModelError","TooManyEmbeddingValuesForCallError","splitLines","combineHeaders","extractResponseHeaders","createIdGenerator","generateId","isAbortError","removeUndefinedEntries","loadApiKey","validatorSymbol","isValidator","asValidator","validateTypes","safeValidateTypes","parseJSON","safeParseJSON","isParsableJson","parseProviderOptions","postJsonToApi","postToApi","postFormDataToApi","resolve","createJsonErrorResponseHandler","createEventSourceResponseHandler","createJsonResponseHandler","createBinaryResponseHandler","btoa","atob","convertBase64ToUint8Array","convertUint8ArrayToBase64","withoutTrailingSlash","anthropicErrorDataSchema","anthropicFailedResponseHandler","prepareTools","convertToAnthropicMessagesPrompt","groupIntoBlocks","_b","mapAnthropicStopReason","AnthropicMessagesLanguageModel","anthropicMessagesResponseSchema","anthropicMessagesChunkSchema","createProviderDefinedToolFactory","createAnthropic","googleErrorDataSchema","googleFailedResponseHandler","GoogleGenerativeAIEmbeddingModel","responseHeaders","response","rawValue","googleGenerativeAITextEmbeddingResponseSchema","convertJSONSchemaToOpenAPISchema","isEmptyObjectSchema","convertToGoogleGenerativeAIMessages","getModelPath","googleTools","mapGoogleGenerativeAIFinishReason","groundingChunkSchema","groundingMetadataSchema","GoogleGenerativeAILanguageModel","extractSources","getInlineDataParts","getToolCallsFromParts","contentSchema","safetyRatingSchema","createGoogleGenerativeAI","google","toolCall","convertToGroqChatMessages","getResponseMetadata","groqErrorDataSchema","groqFailedResponseHandler","mapGroqFinishReason","GroqChatLanguageModel","groqChatResponseSchema","groqChatChunkSchema","groqProviderOptionsSchema","GroqTranscriptionModel","groqTranscriptionResponseSchema","createGroq","groq","token","logprob","type","openaiTools","usageSchema","_c","convertToOpenAIChatMessages","mapOpenAIFinishReason","openaiErrorDataSchema","openaiFailedResponseHandler","OpenAIChatLanguageModel","getSystemMessageMode","isReasoningModel","openaiChatResponseSchema","openaiChatChunkSchema","openaiTokenUsageSchema","reasoningModels","convertToOpenAICompletionPrompt","OpenAICompletionLanguageModel","openaiCompletionResponseSchema","openaiCompletionChunkSchema","OpenAIEmbeddingModel","openaiTextEmbeddingResponseSchema","modelMaxImagesPerCall","hasDefaultResponseFormat","OpenAIImageModel","openaiImageResponseSchema","languageMap","OpenAITranscriptionModel","openaiTranscriptionResponseSchema","convertToOpenAIResponsesMessages","mapOpenAIResponseFinishReason","prepareResponsesTools","OpenAIResponsesLanguageModel","getResponsesModelConfig","openaiResponsesProviderOptionsSchema","supportsFlexProcessing","supportsPriorityProcessing","openaiResponsesChunkSchema","isResponseOutputItemAddedChunk","isResponseOutputItemDoneChunk","isResponseFunctionCallArgumentsDeltaChunk","isResponseCreatedChunk","isTextDeltaChunk","isResponseReasoningSummaryTextDeltaChunk","isResponseFinishedChunk","isResponseAnnotationAddedChunk","isErrorChunk","textDeltaChunkSchema","errorChunkSchema","responseFinishedChunkSchema","responseCreatedChunkSchema","responseOutputItemAddedSchema","responseOutputItemDoneSchema","responseFunctionCallArgumentsDeltaSchema","responseAnnotationAddedSchema","responseReasoningSummaryTextDeltaSchema","OpenAIProviderOptionsSchema","OpenAISpeechModel","createOpenAI","openai","openaiCompatibleErrorDataSchema","defaultOpenAICompatibleErrorStructure","openaiCompatibleTokenUsageSchema","OpenAICompatibleImageModel","openaiCompatibleImageResponseSchema","xaiErrorStructure","createXai","xai","stringify","esm_default","handleError","HTTPException","acc","key","runtimeContext","RuntimeContext","validateBody"],"mappings":"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","file":"chunk-ZROTEYUT.cjs","sourcesContent":["'use strict'\n\nconst hasBuffer = typeof Buffer !== 'undefined'\nconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/\n\nfunction _parse (text, reviver, options) {\n // Normalize arguments\n if (options == null) {\n if (reviver !== null && typeof reviver === 'object') {\n options = reviver\n reviver = undefined\n }\n }\n\n if (hasBuffer && Buffer.isBuffer(text)) {\n text = text.toString()\n }\n\n // BOM checker\n if (text && text.charCodeAt(0) === 0xFEFF) {\n text = text.slice(1)\n }\n\n // Parse normally, allowing exceptions\n const obj = JSON.parse(text, reviver)\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj\n }\n\n const protoAction = (options && options.protoAction) || 'error'\n const constructorAction = (options && options.constructorAction) || 'error'\n\n // options: 'error' (default) / 'remove' / 'ignore'\n if (protoAction === 'ignore' && constructorAction === 'ignore') {\n return obj\n }\n\n if (protoAction !== 'ignore' && constructorAction !== 'ignore') {\n if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n return obj\n }\n } else if (protoAction !== 'ignore' && constructorAction === 'ignore') {\n if (suspectProtoRx.test(text) === false) {\n return obj\n }\n } else {\n if (suspectConstructorRx.test(text) === false) {\n return obj\n }\n }\n\n // Scan result for proto keys\n return filter(obj, { protoAction, constructorAction, safe: options && options.safe })\n}\n\nfunction filter (obj, { protoAction = 'error', constructorAction = 'error', safe } = {}) {\n let next = [obj]\n\n while (next.length) {\n const nodes = next\n next = []\n\n for (const node of nodes) {\n if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (protoAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.__proto__ // eslint-disable-line no-proto\n }\n\n if (constructorAction !== 'ignore' &&\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly\n if (safe === true) {\n return null\n } else if (constructorAction === 'error') {\n throw new SyntaxError('Object contains forbidden prototype property')\n }\n\n delete node.constructor\n }\n\n for (const key in node) {\n const value = node[key]\n if (value && typeof value === 'object') {\n next.push(value)\n }\n }\n }\n }\n return obj\n}\n\nfunction parse (text, reviver, options) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, options)\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nfunction safeParse (text, reviver) {\n const stackTraceLimit = Error.stackTraceLimit\n Error.stackTraceLimit = 0\n try {\n return _parse(text, reviver, { safe: true })\n } catch (_e) {\n return null\n } finally {\n Error.stackTraceLimit = stackTraceLimit\n }\n}\n\nmodule.exports = parse\nmodule.exports.default = parse\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.scan = filter\n","import { anthropic } from '@ai-sdk/anthropic';\nimport { anthropic as anthropicV5 } from '@ai-sdk/anthropic-v5';\nimport { google } from '@ai-sdk/google';\nimport { google as googleV5 } from '@ai-sdk/google-v5';\nimport { groq } from '@ai-sdk/groq';\nimport { groq as groqV5 } from '@ai-sdk/groq-v5';\nimport { openai } from '@ai-sdk/openai';\nimport { openai as openaiV5 } from '@ai-sdk/openai-v5';\nimport { xai } from '@ai-sdk/xai';\nimport { xai as xaiV5 } from '@ai-sdk/xai-v5';\nimport type { Agent } from '@mastra/core/agent';\nimport { RuntimeContext } from '@mastra/core/runtime-context';\nimport { stringify } from 'superjson';\nimport zodToJsonSchema from 'zod-to-json-schema';\nimport { HTTPException } from '../http-exception';\nimport type { Context } from '../types';\n\nimport { handleError } from './error';\nimport { validateBody } from './utils';\n\ntype GetBody<\n T extends keyof Agent & { [K in keyof Agent]: Agent[K] extends (...args: any) => any ? K : never }[keyof Agent],\n> = {\n messages: Parameters<Agent[T]>[0];\n} & Parameters<Agent[T]>[1];\n\nexport async function getSerializedAgentTools(tools: Record<string, any>) {\n return Object.entries(tools || {}).reduce<any>((acc, [key, tool]) => {\n const _tool = tool as any;\n\n const toolId = _tool.id ?? `tool-${key}`;\n\n let inputSchemaForReturn = undefined;\n\n if (_tool.inputSchema) {\n if (_tool.inputSchema?.jsonSchema) {\n inputSchemaForReturn = stringify(_tool.inputSchema.jsonSchema);\n } else {\n inputSchemaForReturn = stringify(zodToJsonSchema(_tool.inputSchema));\n }\n }\n\n let outputSchemaForReturn = undefined;\n\n if (_tool.outputSchema) {\n if (_tool.outputSchema?.jsonSchema) {\n outputSchemaForReturn = stringify(_tool.outputSchema.jsonSchema);\n } else {\n outputSchemaForReturn = stringify(zodToJsonSchema(_tool.outputSchema));\n }\n }\n\n acc[key] = {\n ..._tool,\n id: toolId,\n inputSchema: inputSchemaForReturn,\n outputSchema: outputSchemaForReturn,\n };\n return acc;\n }, {});\n}\n\n// Agent handlers\nexport async function getAgentsHandler({ mastra, runtimeContext }: Context & { runtimeContext: RuntimeContext }) {\n try {\n const agents = mastra.getAgents();\n\n const serializedAgentsMap = await Promise.all(\n Object.entries(agents).map(async ([id, agent]) => {\n const instructions = await agent.getInstructions({ runtimeContext });\n const tools = await agent.getTools({ runtimeContext });\n const llm = await agent.getLLM({ runtimeContext });\n const defaultGenerateOptions = await agent.getDefaultGenerateOptions({ runtimeContext });\n const defaultStreamOptions = await agent.getDefaultStreamOptions({ runtimeContext });\n\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows = {};\n\n if ('getWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.getWorkflows({ runtimeContext });\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<any>((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name,\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n const model = llm?.getModel();\n\n return {\n id,\n name: agent.name,\n instructions,\n tools: serializedAgentTools,\n workflows: serializedAgentWorkflows,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n defaultGenerateOptions: defaultGenerateOptions as any,\n defaultStreamOptions: defaultStreamOptions as any,\n };\n }),\n );\n\n const serializedAgents = serializedAgentsMap.reduce<\n Record<string, Omit<(typeof serializedAgentsMap)[number], 'id'>>\n >((acc, { id, ...rest }) => {\n acc[id] = rest;\n return acc;\n }, {});\n\n return serializedAgents;\n } catch (error) {\n return handleError(error, 'Error getting agents');\n }\n}\n\nexport async function getAgentByIdHandler({\n mastra,\n runtimeContext,\n agentId,\n isPlayground = false,\n}: Context & { isPlayground?: boolean; runtimeContext: RuntimeContext; agentId: string }) {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const tools = await agent.getTools({ runtimeContext });\n\n const serializedAgentTools = await getSerializedAgentTools(tools);\n\n let serializedAgentWorkflows = {};\n\n if ('getWorkflows' in agent) {\n const logger = mastra.getLogger();\n try {\n const workflows = await agent.getWorkflows({ runtimeContext });\n\n serializedAgentWorkflows = Object.entries(workflows || {}).reduce<any>((acc, [key, workflow]) => {\n return {\n ...acc,\n [key]: {\n name: workflow.name,\n steps: Object.entries(workflow.steps).reduce<any>((acc, [key, step]) => {\n return {\n ...acc,\n [key]: {\n id: step.id,\n description: step.description,\n },\n };\n }, {}),\n },\n };\n }, {});\n } catch (error) {\n logger.error('Error getting workflows for agent', { agentName: agent.name, error });\n }\n }\n\n let proxyRuntimeContext = runtimeContext;\n if (isPlayground) {\n proxyRuntimeContext = new Proxy(runtimeContext, {\n get(target, prop) {\n if (prop === 'get') {\n return function (key: string) {\n const value = target.get(key);\n return value ?? `<${key}>`;\n };\n }\n return Reflect.get(target, prop);\n },\n });\n }\n\n const instructions = await agent.getInstructions({ runtimeContext: proxyRuntimeContext });\n const llm = await agent.getLLM({ runtimeContext });\n const defaultGenerateOptions = await agent.getDefaultGenerateOptions({ runtimeContext: proxyRuntimeContext });\n const defaultStreamOptions = await agent.getDefaultStreamOptions({ runtimeContext: proxyRuntimeContext });\n\n const model = llm?.getModel();\n\n return {\n name: agent.name,\n instructions,\n tools: serializedAgentTools,\n workflows: serializedAgentWorkflows,\n provider: llm?.getProvider(),\n modelId: llm?.getModelId(),\n modelVersion: model?.specificationVersion,\n defaultGenerateOptions: defaultGenerateOptions as any,\n defaultStreamOptions: defaultStreamOptions as any,\n };\n } catch (error) {\n return handleError(error, 'Error getting agent');\n }\n}\n\nexport async function getEvalsByAgentIdHandler({\n mastra,\n runtimeContext,\n agentId,\n}: Context & { runtimeContext: RuntimeContext; agentId: string }) {\n try {\n const agent = mastra.getAgent(agentId);\n const evals = (await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, 'test')) || [];\n const instructions = await agent.getInstructions({ runtimeContext });\n return {\n id: agentId,\n name: agent.name,\n instructions,\n evals,\n };\n } catch (error) {\n return handleError(error, 'Error getting test evals');\n }\n}\n\nexport async function getLiveEvalsByAgentIdHandler({\n mastra,\n runtimeContext,\n agentId,\n}: Context & { runtimeContext: RuntimeContext; agentId: string }) {\n try {\n const agent = mastra.getAgent(agentId);\n const evals = (await mastra.getStorage()?.getEvalsByAgentName?.(agent.name, 'live')) || [];\n const instructions = await agent.getInstructions({ runtimeContext });\n\n return {\n id: agentId,\n name: agent.name,\n instructions,\n evals,\n };\n } catch (error) {\n return handleError(error, 'Error getting live evals');\n }\n}\n\nexport async function generateHandler({\n mastra,\n runtimeContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: string;\n body: GetBody<'generate'> & {\n // @deprecated use resourceId\n resourceid?: string;\n runtimeContext?: Record<string, unknown>;\n };\n abortSignal?: AbortSignal;\n}) {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const { messages, resourceId, resourceid, runtimeContext: agentRuntimeContext, ...rest } = body;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const finalResourceId = resourceId ?? resourceid;\n\n const finalRuntimeContext = new RuntimeContext<Record<string, unknown>>([\n ...Array.from(runtimeContext.entries()),\n ...Array.from(Object.entries(agentRuntimeContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const result = await agent.generate(messages, {\n ...rest,\n // @ts-expect-error TODO fix types\n resourceId: finalResourceId,\n runtimeContext: finalRuntimeContext,\n signal: abortSignal,\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function generateVNextHandler({\n mastra,\n runtimeContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: string;\n body: GetBody<'generateVNext'> & {\n runtimeContext?: Record<string, unknown>;\n format?: 'mastra' | 'aisdk';\n };\n abortSignal?: AbortSignal;\n}): Promise<ReturnType<Agent['generateVNext']>> {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const { messages, runtimeContext: agentRuntimeContext, ...rest } = body;\n\n const finalRuntimeContext = new RuntimeContext<Record<string, unknown>>([\n ...Array.from(runtimeContext.entries()),\n ...Array.from(Object.entries(agentRuntimeContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const result = await agent.generateVNext(messages, {\n ...rest,\n runtimeContext: finalRuntimeContext,\n format: rest.format || 'mastra',\n options: {\n ...(rest?.options ?? {}),\n abortSignal,\n },\n });\n\n return result;\n } catch (error) {\n return handleError(error, 'Error generating from agent');\n }\n}\n\nexport async function streamGenerateHandler({\n mastra,\n runtimeContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: string;\n body: GetBody<'stream'> & {\n // @deprecated use resourceId\n resourceid?: string;\n runtimeContext?: string;\n };\n abortSignal?: AbortSignal;\n}): Promise<Response | undefined> {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const { messages, resourceId, resourceid, runtimeContext: agentRuntimeContext, ...rest } = body;\n // Use resourceId if provided, fall back to resourceid (deprecated)\n const finalResourceId = resourceId ?? resourceid;\n\n const finalRuntimeContext = new RuntimeContext<Record<string, unknown>>([\n ...Array.from(runtimeContext.entries()),\n ...Array.from(Object.entries(agentRuntimeContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = await agent.stream(messages, {\n ...rest,\n // @ts-expect-error TODO fix types\n resourceId: finalResourceId,\n runtimeContext: finalRuntimeContext,\n signal: abortSignal,\n });\n\n const streamResponse = rest.output\n ? streamResult.toTextStreamResponse({\n headers: {\n 'Transfer-Encoding': 'chunked',\n },\n })\n : streamResult.toDataStreamResponse({\n sendUsage: true,\n sendReasoning: true,\n getErrorMessage: (error: any) => {\n return `An error occurred while processing your request. ${error instanceof Error ? error.message : JSON.stringify(error)}`;\n },\n headers: {\n 'Transfer-Encoding': 'chunked',\n },\n });\n\n return streamResponse;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport function streamVNextGenerateHandler({\n mastra,\n runtimeContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: string;\n body: GetBody<'streamVNext'> & {\n runtimeContext?: string;\n format?: 'aisdk' | 'mastra';\n };\n abortSignal?: AbortSignal;\n}): ReturnType<Agent['streamVNext']> {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const { messages, runtimeContext: agentRuntimeContext, ...rest } = body;\n const finalRuntimeContext = new RuntimeContext<Record<string, unknown>>([\n ...Array.from(runtimeContext.entries()),\n ...Array.from(Object.entries(agentRuntimeContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = agent.streamVNext(messages, {\n ...rest,\n runtimeContext: finalRuntimeContext,\n options: {\n ...(rest?.options ?? {}),\n abortSignal,\n },\n format: body.format ?? 'mastra',\n });\n\n return streamResult;\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function streamVNextUIMessageHandler({\n mastra,\n runtimeContext,\n agentId,\n body,\n abortSignal,\n}: Context & {\n runtimeContext: RuntimeContext;\n agentId: string;\n body: GetBody<'streamVNext'> & {\n runtimeContext?: string;\n };\n abortSignal?: AbortSignal;\n}): Promise<Response | undefined> {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const { messages, runtimeContext: agentRuntimeContext, ...rest } = body;\n const finalRuntimeContext = new RuntimeContext<Record<string, unknown>>([\n ...Array.from(runtimeContext.entries()),\n ...Array.from(Object.entries(agentRuntimeContext ?? {})),\n ]);\n\n validateBody({ messages });\n\n const streamResult = await agent.streamVNext(messages, {\n ...rest,\n runtimeContext: finalRuntimeContext,\n options: {\n ...(rest?.options ?? {}),\n abortSignal,\n },\n format: 'aisdk',\n });\n\n return streamResult.toUIMessageStreamResponse();\n } catch (error) {\n return handleError(error, 'error streaming agent response');\n }\n}\n\nexport async function updateAgentModelHandler({\n mastra,\n agentId,\n body,\n}: Context & {\n agentId: string;\n body: {\n modelId: string;\n provider: 'openai' | 'anthropic' | 'groq' | 'xai' | 'google';\n };\n}): Promise<{ message: string }> {\n try {\n const agent = mastra.getAgent(agentId);\n\n if (!agent) {\n throw new HTTPException(404, { message: 'Agent not found' });\n }\n\n const agentModel = await agent.getModel();\n const modelVersion = agentModel.specificationVersion;\n\n const { modelId, provider } = body;\n\n const providerMap = {\n v1: {\n openai: openai(modelId),\n anthropic: anthropic(modelId),\n groq: groq(modelId),\n xai: xai(modelId),\n google: google(modelId),\n },\n v2: {\n openai: openaiV5(modelId),\n anthropic: anthropicV5(modelId),\n groq: groqV5(modelId),\n xai: xaiV5(modelId),\n google: googleV5(modelId),\n },\n };\n\n const modelVersionKey = modelVersion === 'v2' ? 'v2' : 'v1';\n\n let model = providerMap[modelVersionKey][provider];\n\n agent.__updateModel({ model });\n\n return { message: 'Agent model updated' };\n } catch (error) {\n return handleError(error, 'error updating agent model');\n }\n}\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidResponseDataError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Server returned a response with invalid data content.\n * This should be thrown by providers when they cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super({ name, message });\n\n this.data = data;\n }\n\n static isInstance(error: unknown): error is InvalidResponseDataError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadAPIKeyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadAPIKeyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadAPIKeyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_NoSuchModelError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class NoSuchModelError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly modelId: string;\n readonly modelType: 'languageModel' | 'textEmbeddingModel' | 'imageModel';\n\n constructor({\n errorName = name,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`,\n }: {\n errorName?: string;\n modelId: string;\n modelType: 'languageModel' | 'textEmbeddingModel' | 'imageModel';\n message?: string;\n }) {\n super({ name: errorName, message });\n\n this.modelId = modelId;\n this.modelType = modelType;\n }\n\n static isInstance(error: unknown): error is NoSuchModelError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_TooManyEmbeddingValuesForCallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TooManyEmbeddingValuesForCallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly provider: string;\n readonly modelId: string;\n readonly maxEmbeddingsPerCall: number;\n readonly values: Array<unknown>;\n\n constructor(options: {\n provider: string;\n modelId: string;\n maxEmbeddingsPerCall: number;\n values: Array<unknown>;\n }) {\n super({\n name,\n message:\n `Too many values for a single embedding call. ` +\n `The ${options.provider} model \"${options.modelId}\" can only embed up to ` +\n `${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`,\n });\n\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n\n static isInstance(\n error: unknown,\n ): error is TooManyEmbeddingValuesForCallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_UnsupportedFunctionalityError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class UnsupportedFunctionalityError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly functionality: string;\n\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`,\n }: {\n functionality: string;\n message?: string;\n }) {\n super({ name, message });\n this.functionality = functionality;\n }\n\n static isInstance(error: unknown): error is UnsupportedFunctionalityError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","let urlAlphabet =\n 'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\nlet customAlphabet = (alphabet, defaultSize = 21) => {\n return (size = defaultSize) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += alphabet[(Math.random() * alphabet.length) | 0]\n }\n return id\n }\n}\nlet nanoid = (size = 21) => {\n let id = ''\n let i = size | 0\n while (i--) {\n id += urlAlphabet[(Math.random() * 64) | 0]\n }\n return id\n}\nexport { nanoid, customAlphabet }\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport SecureJSON from 'secure-json-parse';\nimport { ZodSchema } from 'zod';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): JSONValue;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {T} - The parsed object.\n */\nexport function parseJSON<T>(options: {\n text: string;\n schema: ZodSchema<T> | Validator<T>;\n}): T;\nexport function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T> | Validator<T>;\n}): T {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | { success: false; error: JSONParseError | TypeValidationError };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {object} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): ParseResult<JSONValue>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeParseJSON<T>(options: {\n text: string;\n schema: ZodSchema<T> | Validator<T>;\n}): ParseResult<T>;\nexport function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: ZodSchema<T> | Validator<T>;\n}): ParseResult<T> {\n try {\n const value = SecureJSON.parse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n const validationResult = safeValidateTypes({ value, schema });\n\n return validationResult.success\n ? { ...validationResult, rawValue: value }\n : validationResult;\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n SecureJSON.parse(input);\n return true;\n } catch {\n return false;\n }\n}\n","export function combineHeaders(\n ...headers: Array<Record<string, string | undefined> | undefined>\n): Record<string, string | undefined> {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...(currentHeaders ?? {}),\n }),\n {},\n ) as Record<string, string | undefined>;\n}\n","export type EventSourceChunk = {\n event: string | undefined;\n data: string;\n id?: string;\n retry?: number;\n};\n\nexport function createEventSourceParserStream() {\n let buffer = '';\n let event: string | undefined = undefined;\n let data: string[] = [];\n let lastEventId: string | undefined = undefined;\n let retry: number | undefined = undefined;\n\n function parseLine(\n line: string,\n controller: TransformStreamDefaultController<EventSourceChunk>,\n ) {\n // Empty line means dispatch the event\n if (line === '') {\n dispatchEvent(controller);\n return;\n }\n\n // Comments start with colon\n if (line.startsWith(':')) {\n return;\n }\n\n // Field parsing\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) {\n // field with no value\n handleField(line, '');\n return;\n }\n\n const field = line.slice(0, colonIndex);\n // If there's a space after the colon, it should be ignored\n const valueStart = colonIndex + 1;\n const value =\n valueStart < line.length && line[valueStart] === ' '\n ? line.slice(valueStart + 1)\n : line.slice(valueStart);\n\n handleField(field, value);\n }\n\n function dispatchEvent(\n controller: TransformStreamDefaultController<EventSourceChunk>,\n ) {\n if (data.length > 0) {\n controller.enqueue({\n event,\n data: data.join('\\n'),\n id: lastEventId,\n retry,\n });\n\n // Reset data but keep lastEventId as per spec\n data = [];\n event = undefined;\n retry = undefined;\n }\n }\n\n function handleField(field: string, value: string) {\n switch (field) {\n case 'event':\n event = value;\n break;\n case 'data':\n data.push(value);\n break;\n case 'id':\n lastEventId = value;\n break;\n case 'retry':\n const parsedRetry = parseInt(value, 10);\n if (!isNaN(parsedRetry)) {\n retry = parsedRetry;\n }\n break;\n }\n }\n\n return new TransformStream<string, EventSourceChunk>({\n transform(chunk, controller) {\n const { lines, incompleteLine } = splitLines(buffer, chunk);\n\n buffer = incompleteLine;\n\n // using for loop for performance\n for (let i = 0; i < lines.length; i++) {\n parseLine(lines[i], controller);\n }\n },\n\n flush(controller) {\n parseLine(buffer, controller);\n dispatchEvent(controller);\n },\n });\n}\n\n// performance: send in already scanned buffer separately, do not scan again\nfunction splitLines(buffer: string, chunk: string) {\n const lines: Array<string> = [];\n let currentLine = buffer;\n\n // using for loop for performance\n for (let i = 0; i < chunk.length; ) {\n const char = chunk[i++];\n\n // order is performance-optimized\n if (char === '\\n') {\n // Standalone LF\n lines.push(currentLine);\n currentLine = '';\n } else if (char === '\\r') {\n lines.push(currentLine);\n currentLine = '';\n if (chunk[i] === '\\n') {\n i++; // CRLF case: Skip the LF character\n }\n } else {\n currentLine += char;\n }\n }\n\n return { lines, incompleteLine: currentLine };\n}\n","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(\n response: Response,\n): Record<string, string> {\n const headers: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headers[key] = value;\n });\n return headers;\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport { customAlphabet } from 'nanoid/non-secure';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNon-secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Default: ''.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\n// TODO 5.0 breaking change: change the return type to IDGenerator\nexport const createIdGenerator = ({\n prefix,\n size: defaultSize = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): ((size?: number) => string) => {\n const generator = customAlphabet(alphabet, defaultSize);\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return size => `${prefix}${separator}${generator(size)}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IDGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs. Not secure.\n\n@param size - The size of the ID to generate. Default: 16.\n */\nexport const generateId = createIdGenerator();\n","/**\n * Removes entries from a record where the value is null or undefined.\n * @param record - The input object whose entries may be null or undefined.\n * @returns A new object containing only entries with non-null and non-undefined values.\n */\nexport function removeUndefinedEntries<T>(\n record: Record<string, T | undefined>,\n): Record<string, T> {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null),\n ) as Record<string, T>;\n}\n","export function isAbortError(error: unknown): error is Error {\n return (\n error instanceof Error &&\n (error.name === 'AbortError' || error.name === 'TimeoutError')\n );\n}\n","import { LoadAPIKeyError } from '@ai-sdk/provider';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","import { z } from 'zod';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (value: unknown) => ValidationResult<OBJECT>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?: undefined | ((value: unknown) => ValidationResult<OBJECT>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\nexport function asValidator<OBJECT>(\n value: Validator<OBJECT> | z.Schema<OBJECT, z.ZodTypeDef, any>,\n): Validator<OBJECT> {\n return isValidator(value) ? value : zodValidator(value);\n}\n\nexport function zodValidator<OBJECT>(\n zodSchema: z.Schema<OBJECT, z.ZodTypeDef, any>,\n): Validator<OBJECT> {\n return validator(value => {\n const result = zodSchema.safeParse(value);\n return result.success\n ? { success: true, value: result.data }\n : { success: false, error: result.error };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { z } from 'zod';\nimport { Validator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {T} - The typed object.\n */\nexport function validateTypes<T>({\n value,\n schema: inputSchema,\n}: {\n value: unknown;\n schema: z.Schema<T, z.ZodTypeDef, any> | Validator<T>;\n}): T {\n const result = safeValidateTypes({ value, schema: inputSchema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport function safeValidateTypes<T>({\n value,\n schema,\n}: {\n value: unknown;\n schema: z.Schema<T, z.ZodTypeDef, any> | Validator<T>;\n}):\n | { success: true; value: T }\n | { success: false; error: TypeValidationError } {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as T };\n }\n\n const result = validator.validate(value);\n\n if (result.success) {\n return result;\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n };\n }\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport { safeValidateTypes } from './validate-types';\nimport { z } from 'zod';\n\nexport function parseProviderOptions<T>({\n provider,\n providerOptions,\n schema,\n}: {\n provider: string;\n providerOptions: Record<string, unknown> | undefined;\n schema: z.ZodSchema<T>;\n}): T | undefined {\n if (providerOptions?.[provider] == null) {\n return undefined;\n }\n\n const parsedProviderOptions = safeValidateTypes({\n value: providerOptions[provider],\n schema,\n });\n\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError({\n argument: 'providerOptions',\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error,\n });\n }\n\n return parsedProviderOptions.value;\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { isAbortError } from './is-abort-error';\nimport { removeUndefinedEntries } from './remove-undefined-entries';\nimport { ResponseHandler } from './response-handler';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: removeUndefinedEntries(headers),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n if (isAbortError(error)) {\n throw error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (error instanceof TypeError && error.message === 'fetch failed') {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n throw new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues: body.values,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n throw error;\n }\n};\n","export type Resolvable<T> =\n | T // Raw value\n | Promise<T> // Promise of value\n | (() => T) // Function returning value\n | (() => Promise<T>); // Function returning promise of value\n\n/**\n * Resolves a value that could be a raw value, a Promise, a function returning a value,\n * or a function returning a Promise.\n */\nexport async function resolve<T>(value: Resolvable<T>): Promise<T> {\n // If it's a function, call it to get the value/promise\n if (typeof value === 'function') {\n value = (value as Function)();\n }\n\n // Otherwise just resolve whatever we got (value or promise)\n return Promise.resolve(value as T);\n}\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodSchema } from 'zod';\nimport {\n createEventSourceParserStream,\n EventSourceChunk,\n} from './event-source-parser-stream';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodSchema<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: response.body\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(createEventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceChunk, ParseResult<T>>({\n transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(\n safeParseJSON({\n text: data,\n schema: chunkSchema,\n }),\n );\n },\n }),\n ),\n };\n };\n\nexport const createJsonStreamResponseHandler =\n <T>(\n chunkSchema: ZodSchema<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n let buffer = '';\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream<string, ParseResult<T>>({\n transform(chunkText, controller) {\n if (chunkText.endsWith('\\n')) {\n controller.enqueue(\n safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema,\n }),\n );\n buffer = '';\n } else {\n buffer += chunkText;\n }\n },\n }),\n ),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodSchema<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n","export function withoutTrailingSlash(url: string | undefined) {\n return url?.replace(/\\/$/, '');\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst anthropicErrorDataSchema = z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n});\n\nexport type AnthropicErrorData = z.infer<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: anthropicErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { AnthropicTool, AnthropicToolChoice } from './anthropic-api-types';\n\nexport function prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n): {\n tools: Array<AnthropicTool> | undefined;\n tool_choice: AnthropicToolChoice | undefined;\n toolWarnings: LanguageModelV1CallWarning[];\n betas: Set<string>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n const betas = new Set<string>();\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings, betas };\n }\n\n const anthropicTools: AnthropicTool[] = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n anthropicTools.push({\n name: tool.name,\n description: tool.description,\n input_schema: tool.parameters,\n });\n break;\n case 'provider-defined':\n switch (tool.id) {\n case 'anthropic.computer_20250124':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: tool.name,\n type: 'computer_20250124',\n display_width_px: tool.args.displayWidthPx as number,\n display_height_px: tool.args.displayHeightPx as number,\n display_number: tool.args.displayNumber as number,\n });\n break;\n case 'anthropic.computer_20241022':\n betas.add('computer-use-2024-10-22');\n anthropicTools.push({\n name: tool.name,\n type: 'computer_20241022',\n display_width_px: tool.args.displayWidthPx as number,\n display_height_px: tool.args.displayHeightPx as number,\n display_number: tool.args.displayNumber as number,\n });\n break;\n case 'anthropic.text_editor_20250124':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: tool.name,\n type: 'text_editor_20250124',\n });\n break;\n case 'anthropic.text_editor_20241022':\n betas.add('computer-use-2024-10-22');\n anthropicTools.push({\n name: tool.name,\n type: 'text_editor_20241022',\n });\n break;\n case 'anthropic.bash_20250124':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: tool.name,\n type: 'bash_20250124',\n });\n break;\n case 'anthropic.bash_20241022':\n betas.add('computer-use-2024-10-22');\n anthropicTools.push({\n name: tool.name,\n type: 'bash_20241022',\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return {\n tools: anthropicTools,\n tool_choice: undefined,\n toolWarnings,\n betas,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n tools: anthropicTools,\n tool_choice: { type: 'auto' },\n toolWarnings,\n betas,\n };\n case 'required':\n return {\n tools: anthropicTools,\n tool_choice: { type: 'any' },\n toolWarnings,\n betas,\n };\n case 'none':\n // Anthropic does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, tool_choice: undefined, toolWarnings, betas };\n case 'tool':\n return {\n tools: anthropicTools,\n tool_choice: { type: 'tool', name: toolChoice.toolName },\n toolWarnings,\n betas,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n LanguageModelV1CallWarning,\n LanguageModelV1Message,\n LanguageModelV1Prompt,\n LanguageModelV1ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport {\n AnthropicAssistantMessage,\n AnthropicCacheControl,\n AnthropicMessagesPrompt,\n AnthropicUserMessage,\n} from './anthropic-api-types';\n\nexport function convertToAnthropicMessagesPrompt({\n prompt,\n sendReasoning,\n warnings,\n}: {\n prompt: LanguageModelV1Prompt;\n sendReasoning: boolean;\n warnings: LanguageModelV1CallWarning[];\n}): {\n prompt: AnthropicMessagesPrompt;\n betas: Set<string>;\n} {\n const betas = new Set<string>();\n const blocks = groupIntoBlocks(prompt);\n\n let system: AnthropicMessagesPrompt['system'] = undefined;\n const messages: AnthropicMessagesPrompt['messages'] = [];\n\n function getCacheControl(\n providerMetadata: LanguageModelV1ProviderMetadata | undefined,\n ): AnthropicCacheControl | undefined {\n const anthropic = providerMetadata?.anthropic;\n\n // allow both cacheControl and cache_control:\n const cacheControlValue =\n anthropic?.cacheControl ?? anthropic?.cache_control;\n\n // Pass through value assuming it is of the correct type.\n // The Anthropic API will validate the value.\n return cacheControlValue as AnthropicCacheControl | undefined;\n }\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const isLastBlock = i === blocks.length - 1;\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content, providerMetadata }) => ({\n type: 'text',\n text: content,\n cache_control: getCacheControl(providerMetadata),\n }));\n\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const anthropicContent: AnthropicUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n // cache control: first add cache control from part.\n // for the last part of a message,\n // check also if the message has cache control.\n const isLastPart = j === content.length - 1;\n\n const cacheControl =\n getCacheControl(part.providerMetadata) ??\n (isLastPart\n ? getCacheControl(message.providerMetadata)\n : undefined);\n\n switch (part.type) {\n case 'text': {\n anthropicContent.push({\n type: 'text',\n text: part.text,\n cache_control: cacheControl,\n });\n break;\n }\n\n case 'image': {\n anthropicContent.push({\n type: 'image',\n source:\n part.image instanceof URL\n ? {\n type: 'url',\n url: part.image.toString(),\n }\n : {\n type: 'base64',\n media_type: part.mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(part.image),\n },\n cache_control: cacheControl,\n });\n\n break;\n }\n\n case 'file': {\n if (part.mimeType !== 'application/pdf') {\n throw new UnsupportedFunctionalityError({\n functionality: 'Non-PDF files in user messages',\n });\n }\n\n betas.add('pdfs-2024-09-25');\n\n anthropicContent.push({\n type: 'document',\n source:\n part.data instanceof URL\n ? {\n type: 'url',\n url: part.data.toString(),\n }\n : {\n type: 'base64',\n media_type: 'application/pdf',\n data: part.data,\n },\n cache_control: cacheControl,\n });\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n\n // cache control: first add cache control from part.\n // for the last part of a message,\n // check also if the message has cache control.\n const isLastPart = i === content.length - 1;\n\n const cacheControl =\n getCacheControl(part.providerMetadata) ??\n (isLastPart\n ? getCacheControl(message.providerMetadata)\n : undefined);\n\n const toolResultContent =\n part.content != null\n ? part.content.map(part => {\n switch (part.type) {\n case 'text':\n return {\n type: 'text' as const,\n text: part.text,\n cache_control: undefined,\n };\n case 'image':\n return {\n type: 'image' as const,\n source: {\n type: 'base64' as const,\n media_type: part.mimeType ?? 'image/jpeg',\n data: part.data,\n },\n cache_control: undefined,\n };\n }\n })\n : JSON.stringify(part.result);\n\n anthropicContent.push({\n type: 'tool_result',\n tool_use_id: part.toolCallId,\n content: toolResultContent,\n is_error: part.isError,\n cache_control: cacheControl,\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: anthropicContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const anthropicContent: AnthropicAssistantMessage['content'] = [];\n\n for (let j = 0; j < block.messages.length; j++) {\n const message = block.messages[j];\n const isLastMessage = j === block.messages.length - 1;\n const { content } = message;\n\n for (let k = 0; k < content.length; k++) {\n const part = content[k];\n const isLastContentPart = k === content.length - 1;\n\n // cache control: first add cache control from part.\n // for the last part of a message,\n // check also if the message has cache control.\n const cacheControl =\n getCacheControl(part.providerMetadata) ??\n (isLastContentPart\n ? getCacheControl(message.providerMetadata)\n : undefined);\n\n switch (part.type) {\n case 'text': {\n anthropicContent.push({\n type: 'text',\n text:\n // trim the last text part if it's the last message in the block\n // because Anthropic does not allow trailing whitespace\n // in pre-filled assistant responses\n isLastBlock && isLastMessage && isLastContentPart\n ? part.text.trim()\n : part.text,\n\n cache_control: cacheControl,\n });\n break;\n }\n\n case 'reasoning': {\n if (sendReasoning) {\n anthropicContent.push({\n type: 'thinking',\n thinking: part.text,\n signature: part.signature!,\n cache_control: cacheControl,\n });\n } else {\n warnings.push({\n type: 'other',\n message:\n 'sending reasoning content is disabled for this model',\n });\n }\n break;\n }\n\n case 'redacted-reasoning': {\n anthropicContent.push({\n type: 'redacted_thinking',\n data: part.data,\n cache_control: cacheControl,\n });\n break;\n }\n\n case 'tool-call': {\n anthropicContent.push({\n type: 'tool_use',\n id: part.toolCallId,\n name: part.toolName,\n input: part.args,\n cache_control: cacheControl,\n });\n break;\n }\n }\n }\n }\n\n messages.push({ role: 'assistant', content: anthropicContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n prompt: { system, messages },\n betas,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV1Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV1Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV1Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV1Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapAnthropicStopReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'end_turn':\n case 'stop_sequence':\n return 'stop';\n case 'tool_use':\n return 'tool-calls';\n case 'max_tokens':\n return 'length';\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1FunctionToolCall,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n Resolvable,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { prepareTools } from './anthropic-prepare-tools';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\ntype AnthropicMessagesConfig = {\n provider: string;\n baseURL: string;\n headers: Resolvable<Record<string, string | undefined>>;\n supportsImageUrls: boolean;\n fetch?: FetchFunction;\n buildRequestUrl?: (baseURL: string, isStreaming: boolean) => string;\n transformRequestBody?: (args: Record<string, any>) => Record<string, any>;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'tool';\n\n readonly modelId: AnthropicMessagesModelId;\n readonly settings: AnthropicMessagesSettings;\n\n private readonly config: AnthropicMessagesConfig;\n\n constructor(\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings,\n config: AnthropicMessagesConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n supportsUrl(url: URL): boolean {\n return url.protocol === 'https:';\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportsImageUrls(): boolean {\n return this.config.supportsImageUrls;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens = 4096, // 4096: max model output tokens TODO update default in v5\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata: providerOptions,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\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: messagesPrompt, betas: messagesBetas } =\n convertToAnthropicMessagesPrompt({\n prompt,\n sendReasoning: this.settings.sendReasoning ?? true,\n warnings,\n });\n\n const anthropicOptions = parseProviderOptions({\n provider: 'anthropic',\n providerOptions,\n schema: anthropicProviderOptionsSchema,\n });\n\n const isThinking = anthropicOptions?.thinking?.type === 'enabled';\n const thinkingBudget = anthropicOptions?.thinking?.budgetTokens;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_k: topK,\n top_p: topP,\n stop_sequences: stopSequences,\n\n // provider specific settings:\n ...(isThinking && {\n thinking: { type: 'enabled', budget_tokens: thinkingBudget },\n }),\n\n // prompt:\n system: messagesPrompt.system,\n messages: messagesPrompt.messages,\n };\n\n if (isThinking) {\n if (thinkingBudget == null) {\n throw new UnsupportedFunctionalityError({\n functionality: 'thinking requires a budget',\n });\n }\n\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 when thinking is enabled',\n });\n }\n\n if (topK != null) {\n baseArgs.top_k = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n details: 'topK is not supported when thinking is enabled',\n });\n }\n\n if (topP != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n // adjust max tokens to account for thinking:\n baseArgs.max_tokens = maxTokens + thinkingBudget;\n }\n\n switch (type) {\n case 'regular': {\n const {\n tools,\n tool_choice,\n toolWarnings,\n betas: toolsBetas,\n } = prepareTools(mode);\n\n return {\n args: { ...baseArgs, tools, tool_choice },\n warnings: [...warnings, ...toolWarnings],\n betas: new Set([...messagesBetas, ...toolsBetas]),\n };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'json-mode object generation',\n });\n }\n\n case 'object-tool': {\n const { name, description, parameters } = mode.tool;\n\n return {\n args: {\n ...baseArgs,\n tools: [{ name, description, input_schema: parameters }],\n tool_choice: { type: 'tool', name },\n },\n warnings,\n betas: messagesBetas,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n private async getHeaders({\n betas,\n headers,\n }: {\n betas: Set<string>;\n headers: Record<string, string | undefined> | undefined;\n }) {\n return combineHeaders(\n await resolve(this.config.headers),\n betas.size > 0 ? { 'anthropic-beta': Array.from(betas).join(',') } : {},\n headers,\n );\n }\n\n private buildRequestUrl(isStreaming: boolean): string {\n return (\n this.config.buildRequestUrl?.(this.config.baseURL, isStreaming) ??\n `${this.config.baseURL}/messages`\n );\n }\n\n private transformRequestBody(args: Record<string, any>): Record<string, any> {\n return this.config.transformRequestBody?.(args) ?? args;\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings, betas } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.buildRequestUrl(false),\n headers: await this.getHeaders({ betas, headers: options.headers }),\n body: this.transformRequestBody(args),\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n anthropicMessagesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n // extract text\n let text = '';\n for (const content of response.content) {\n if (content.type === 'text') {\n text += content.text;\n }\n }\n\n // extract tool calls\n let toolCalls: LanguageModelV1FunctionToolCall[] | undefined = undefined;\n if (response.content.some(content => content.type === 'tool_use')) {\n toolCalls = [];\n for (const content of response.content) {\n if (content.type === 'tool_use') {\n toolCalls.push({\n toolCallType: 'function',\n toolCallId: content.id,\n toolName: content.name,\n args: JSON.stringify(content.input),\n });\n }\n }\n }\n\n const reasoning = response.content\n .filter(\n content =>\n content.type === 'redacted_thinking' || content.type === 'thinking',\n )\n .map(content =>\n content.type === 'thinking'\n ? {\n type: 'text' as const,\n text: content.thinking,\n signature: content.signature,\n }\n : {\n type: 'redacted' as const,\n data: content.data,\n },\n );\n\n return {\n text,\n reasoning: reasoning.length > 0 ? reasoning : undefined,\n toolCalls,\n finishReason: mapAnthropicStopReason(response.stop_reason),\n usage: {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: {\n headers: responseHeaders,\n body: rawResponse,\n },\n response: {\n id: response.id ?? undefined,\n modelId: response.model ?? undefined,\n },\n warnings,\n providerMetadata: {\n anthropic: {\n cacheCreationInputTokens:\n response.usage.cache_creation_input_tokens ?? null,\n cacheReadInputTokens: response.usage.cache_read_input_tokens ?? null,\n },\n },\n request: { body: JSON.stringify(args) },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings, betas } = await this.getArgs(options);\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.buildRequestUrl(true),\n headers: await this.getHeaders({ betas, headers: options.headers }),\n body: this.transformRequestBody(body),\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n anthropicMessagesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n const usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n\n const toolCallContentBlocks: Record<\n number,\n {\n toolCallId: string;\n toolName: string;\n jsonText: string;\n }\n > = {};\n\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined =\n undefined;\n\n let blockType:\n | 'text'\n | 'thinking'\n | 'tool_use'\n | 'redacted_thinking'\n | undefined = undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof anthropicMessagesChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n switch (value.type) {\n case 'ping': {\n return; // ignored\n }\n\n case 'content_block_start': {\n const contentBlockType = value.content_block.type;\n\n blockType = contentBlockType;\n\n switch (contentBlockType) {\n case 'text':\n case 'thinking': {\n return; // ignored\n }\n\n case 'redacted_thinking': {\n controller.enqueue({\n type: 'redacted-reasoning',\n data: value.content_block.data,\n });\n return;\n }\n\n case 'tool_use': {\n toolCallContentBlocks[value.index] = {\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n jsonText: '',\n };\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = contentBlockType;\n throw new Error(\n `Unsupported content block type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'content_block_stop': {\n // when finishing a tool call block, send the full tool call:\n if (toolCallContentBlocks[value.index] != null) {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n args: contentBlock.jsonText,\n });\n\n delete toolCallContentBlocks[value.index];\n }\n\n blockType = undefined; // reset block type\n\n return;\n }\n\n case 'content_block_delta': {\n const deltaType = value.delta.type;\n switch (deltaType) {\n case 'text_delta': {\n controller.enqueue({\n type: 'text-delta',\n textDelta: value.delta.text,\n });\n\n return;\n }\n\n case 'thinking_delta': {\n controller.enqueue({\n type: 'reasoning',\n textDelta: value.delta.thinking,\n });\n\n return;\n }\n\n case 'signature_delta': {\n // signature are only supported on thinking blocks:\n if (blockType === 'thinking') {\n controller.enqueue({\n type: 'reasoning-signature',\n signature: value.delta.signature,\n });\n }\n\n return;\n }\n\n case 'input_json_delta': {\n const contentBlock = toolCallContentBlocks[value.index];\n\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: contentBlock.toolCallId,\n toolName: contentBlock.toolName,\n argsTextDelta: value.delta.partial_json,\n });\n\n contentBlock.jsonText += value.delta.partial_json;\n\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = deltaType;\n throw new Error(\n `Unsupported delta type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'message_start': {\n usage.promptTokens = value.message.usage.input_tokens;\n usage.completionTokens = value.message.usage.output_tokens;\n\n providerMetadata = {\n anthropic: {\n cacheCreationInputTokens:\n value.message.usage.cache_creation_input_tokens ?? null,\n cacheReadInputTokens:\n value.message.usage.cache_read_input_tokens ?? null,\n },\n };\n\n controller.enqueue({\n type: 'response-metadata',\n id: value.message.id ?? undefined,\n modelId: value.message.model ?? undefined,\n });\n\n return;\n }\n\n case 'message_delta': {\n usage.completionTokens = value.usage.output_tokens;\n finishReason = mapAnthropicStopReason(value.delta.stop_reason);\n return;\n }\n\n case 'message_stop': {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n return;\n }\n\n case 'error': {\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = value;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body: JSON.stringify(body) },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesResponseSchema = z.object({\n type: z.literal('message'),\n id: z.string().nullish(),\n model: z.string().nullish(),\n content: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('thinking'),\n thinking: z.string(),\n signature: z.string(),\n }),\n z.object({\n type: z.literal('redacted_thinking'),\n data: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.unknown(),\n }),\n ]),\n ),\n stop_reason: z.string().nullish(),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_creation_input_tokens: z.number().nullish(),\n cache_read_input_tokens: z.number().nullish(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message_start'),\n message: z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n usage: z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_creation_input_tokens: z.number().nullish(),\n cache_read_input_tokens: z.number().nullish(),\n }),\n }),\n }),\n z.object({\n type: z.literal('content_block_start'),\n index: z.number(),\n content_block: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('thinking'),\n thinking: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n }),\n z.object({\n type: z.literal('redacted_thinking'),\n data: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_delta'),\n index: z.number(),\n delta: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('input_json_delta'),\n partial_json: z.string(),\n }),\n z.object({\n type: z.literal('text_delta'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('thinking_delta'),\n thinking: z.string(),\n }),\n z.object({\n type: z.literal('signature_delta'),\n signature: z.string(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_stop'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n }),\n z.object({\n type: z.literal('message_delta'),\n delta: z.object({ stop_reason: z.string().nullish() }),\n usage: z.object({ output_tokens: z.number() }),\n }),\n z.object({\n type: z.literal('message_stop'),\n }),\n z.object({\n type: z.literal('ping'),\n }),\n]);\n\nconst anthropicProviderOptionsSchema = z.object({\n thinking: z\n .object({\n type: z.union([z.literal('enabled'), z.literal('disabled')]),\n budgetTokens: z.number().optional(),\n })\n .optional(),\n});\n\nexport type AnthropicProviderOptions = z.infer<\n typeof anthropicProviderOptionsSchema\n>;\n","import { z } from 'zod';\n\n// Copied from ai package\ntype ExecuteFunction<PARAMETERS, RESULT> =\n | undefined\n | ((\n args: PARAMETERS,\n options: { abortSignal?: AbortSignal },\n ) => Promise<RESULT>);\n\n// Copied from ai package\nexport type ToolResultContent = Array<\n | {\n type: 'text';\n text: string;\n }\n | {\n type: 'image';\n data: string; // base64 encoded png image, e.g. screenshot\n mimeType?: string; // e.g. 'image/png';\n }\n>;\n\nconst Bash20241022Parameters = z.object({\n command: z.string(),\n restart: z.boolean().optional(),\n});\n\n/**\n * Creates a tool for running a bash command. Must have name \"bash\".\n *\n * Image results are supported.\n *\n * @param execute - The function to execute the tool. Optional.\n */\nfunction bashTool_20241022<RESULT>(\n options: {\n execute?: ExecuteFunction<\n {\n /**\n * The bash command to run. Required unless the tool is being restarted.\n */\n command: string;\n\n /**\n * Specifying true will restart this tool. Otherwise, leave this unspecified.\n */\n restart?: boolean;\n },\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n } = {},\n): {\n type: 'provider-defined';\n id: 'anthropic.bash_20241022';\n args: {};\n parameters: typeof Bash20241022Parameters;\n execute: ExecuteFunction<z.infer<typeof Bash20241022Parameters>, RESULT>;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n} {\n return {\n type: 'provider-defined',\n id: 'anthropic.bash_20241022',\n args: {},\n parameters: Bash20241022Parameters,\n execute: options.execute,\n experimental_toToolResultContent: options.experimental_toToolResultContent,\n };\n}\n\nconst Bash20250124Parameters = z.object({\n command: z.string(),\n restart: z.boolean().optional(),\n});\n\n/**\n * Creates a tool for running a bash command. Must have name \"bash\".\n *\n * Image results are supported.\n *\n * @param execute - The function to execute the tool. Optional.\n */\nfunction bashTool_20250124<RESULT>(\n options: {\n execute?: ExecuteFunction<\n {\n /**\n * The bash command to run. Required unless the tool is being restarted.\n */\n command: string;\n\n /**\n * Specifying true will restart this tool. Otherwise, leave this unspecified.\n */\n restart?: boolean;\n },\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n } = {},\n): {\n type: 'provider-defined';\n id: 'anthropic.bash_20250124';\n args: {};\n parameters: typeof Bash20250124Parameters;\n execute: ExecuteFunction<z.infer<typeof Bash20250124Parameters>, RESULT>;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n} {\n return {\n type: 'provider-defined',\n id: 'anthropic.bash_20250124',\n args: {},\n parameters: Bash20250124Parameters,\n execute: options.execute,\n experimental_toToolResultContent: options.experimental_toToolResultContent,\n };\n}\n\nconst TextEditor20241022Parameters = z.object({\n command: z.enum(['view', 'create', 'str_replace', 'insert', 'undo_edit']),\n path: z.string(),\n file_text: z.string().optional(),\n insert_line: z.number().int().optional(),\n new_str: z.string().optional(),\n old_str: z.string().optional(),\n view_range: z.array(z.number().int()).optional(),\n});\n\n/**\n * Creates a tool for editing text. Must have name \"str_replace_editor\".\n *\n * Image results are supported.\n *\n * @param execute - The function to execute the tool. Optional.\n */\nfunction textEditorTool_20241022<RESULT>(\n options: {\n execute?: ExecuteFunction<\n {\n /**\n * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`.\n */\n command: 'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit';\n\n /**\n * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`.\n */\n path: string;\n\n /**\n * Required parameter of `create` command, with the content of the file to be created.\n */\n file_text?: string;\n\n /**\n * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.\n */\n insert_line?: number;\n\n /**\n * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). Required parameter of `insert` command containing the string to insert.\n */\n new_str?: string;\n\n /**\n * Required parameter of `str_replace` command containing the string in `path` to replace.\n */\n old_str?: string;\n\n /**\n * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.\n */\n view_range?: number[];\n },\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n } = {},\n): {\n type: 'provider-defined';\n id: 'anthropic.text_editor_20241022';\n args: {};\n parameters: typeof TextEditor20241022Parameters;\n execute: ExecuteFunction<\n z.infer<typeof TextEditor20241022Parameters>,\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n} {\n return {\n type: 'provider-defined',\n id: 'anthropic.text_editor_20241022',\n args: {},\n parameters: TextEditor20241022Parameters,\n execute: options.execute,\n experimental_toToolResultContent: options.experimental_toToolResultContent,\n };\n}\n\nconst TextEditor20250124Parameters = z.object({\n command: z.enum(['view', 'create', 'str_replace', 'insert', 'undo_edit']),\n path: z.string(),\n file_text: z.string().optional(),\n insert_line: z.number().int().optional(),\n new_str: z.string().optional(),\n old_str: z.string().optional(),\n view_range: z.array(z.number().int()).optional(),\n});\n\n/**\n * Creates a tool for editing text. Must have name \"str_replace_editor\".\n *\n * Image results are supported.\n *\n * @param execute - The function to execute the tool. Optional.\n */\nfunction textEditorTool_20250124<RESULT>(\n options: {\n execute?: ExecuteFunction<\n {\n /**\n * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`.\n */\n command: 'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit';\n\n /**\n * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`.\n */\n path: string;\n\n /**\n * Required parameter of `create` command, with the content of the file to be created.\n */\n file_text?: string;\n\n /**\n * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.\n */\n insert_line?: number;\n\n /**\n * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). Required parameter of `insert` command containing the string to insert.\n */\n new_str?: string;\n\n /**\n * Required parameter of `str_replace` command containing the string in `path` to replace.\n */\n old_str?: string;\n\n /**\n * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.\n */\n view_range?: number[];\n },\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n } = {},\n): {\n type: 'provider-defined';\n id: 'anthropic.text_editor_20250124';\n args: {};\n parameters: typeof TextEditor20250124Parameters;\n execute: ExecuteFunction<\n z.infer<typeof TextEditor20250124Parameters>,\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n} {\n return {\n type: 'provider-defined',\n id: 'anthropic.text_editor_20250124',\n args: {},\n parameters: TextEditor20250124Parameters,\n execute: options.execute,\n experimental_toToolResultContent: options.experimental_toToolResultContent,\n };\n}\n\nconst Computer20241022Parameters = z.object({\n action: z.enum([\n 'key',\n 'type',\n 'mouse_move',\n 'left_click',\n 'left_click_drag',\n 'right_click',\n 'middle_click',\n 'double_click',\n 'screenshot',\n 'cursor_position',\n ]),\n coordinate: z.array(z.number().int()).optional(),\n text: z.string().optional(),\n});\n\n/**\n * Creates a tool for executing actions on a computer. Must have name \"computer\".\n *\n * Image results are supported.\n *\n * @param displayWidthPx - The width of the display being controlled by the model in pixels.\n * @param displayHeightPx - The height of the display being controlled by the model in pixels.\n * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition.\n * @param execute - The function to execute the tool. Optional.\n */\nfunction computerTool_20241022<RESULT>(options: {\n displayWidthPx: number;\n displayHeightPx: number;\n displayNumber?: number;\n execute?: ExecuteFunction<\n {\n /**\n * The action to perform. The available actions are:\n * - `key`: Press a key or key-combination on the keyboard.\n * - This supports xdotool's `key` syntax.\n * - Examples: \"a\", \"Return\", \"alt+Tab\", \"ctrl+s\", \"Up\", \"KP_0\" (for the numpad 0 key).\n * - `type`: Type a string of text on the keyboard.\n * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen.\n * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen.\n * - `left_click`: Click the left mouse button.\n * - `left_click_drag`: Click and drag the cursor to a specified (x, y) pixel coordinate on the screen.\n * - `right_click`: Click the right mouse button.\n * - `middle_click`: Click the middle mouse button.\n * - `double_click`: Double-click the left mouse button.\n * - `screenshot`: Take a screenshot of the screen.\n */\n action:\n | 'key'\n | 'type'\n | 'mouse_move'\n | 'left_click'\n | 'left_click_drag'\n | 'right_click'\n | 'middle_click'\n | 'double_click'\n | 'screenshot'\n | 'cursor_position';\n\n /**\n * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`.\n */\n coordinate?: number[];\n\n /**\n * Required only by `action=type` and `action=key`.\n */\n text?: string;\n },\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n}): {\n type: 'provider-defined';\n id: 'anthropic.computer_20241022';\n args: {};\n parameters: typeof Computer20241022Parameters;\n execute: ExecuteFunction<z.infer<typeof Computer20241022Parameters>, RESULT>;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n} {\n return {\n type: 'provider-defined',\n id: 'anthropic.computer_20241022',\n args: {\n displayWidthPx: options.displayWidthPx,\n displayHeightPx: options.displayHeightPx,\n displayNumber: options.displayNumber,\n },\n parameters: Computer20241022Parameters,\n execute: options.execute,\n experimental_toToolResultContent: options.experimental_toToolResultContent,\n };\n}\n\nconst Computer20250124Parameters = z.object({\n action: z.enum([\n 'key',\n 'hold_key',\n 'type',\n 'cursor_position',\n 'mouse_move',\n 'left_mouse_down',\n 'left_mouse_up',\n 'left_click',\n 'left_click_drag',\n 'right_click',\n 'middle_click',\n 'double_click',\n 'triple_click',\n 'scroll',\n 'wait',\n 'screenshot',\n ]),\n coordinate: z.tuple([z.number().int(), z.number().int()]).optional(),\n duration: z.number().optional(),\n scroll_amount: z.number().optional(),\n scroll_direction: z.enum(['up', 'down', 'left', 'right']).optional(),\n start_coordinate: z.tuple([z.number().int(), z.number().int()]).optional(),\n text: z.string().optional(),\n});\n\n/**\n * Creates a tool for executing actions on a computer. Must have name \"computer\".\n *\n * Image results are supported.\n *\n * @param displayWidthPx - The width of the display being controlled by the model in pixels.\n * @param displayHeightPx - The height of the display being controlled by the model in pixels.\n * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition.\n * @param execute - The function to execute the tool. Optional.\n */\nfunction computerTool_20250124<RESULT>(options: {\n displayWidthPx: number;\n displayHeightPx: number;\n displayNumber?: number;\n execute?: ExecuteFunction<\n {\n /**\n * - `key`: Press a key or key-combination on the keyboard.\n * - This supports xdotool's `key` syntax.\n * - Examples: \"a\", \"Return\", \"alt+Tab\", \"ctrl+s\", \"Up\", \"KP_0\" (for the numpad 0 key).\n * - `hold_key`: Hold down a key or multiple keys for a specified duration (in seconds). Supports the same syntax as `key`.\n * - `type`: Type a string of text on the keyboard.\n * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen.\n * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen.\n * - `left_mouse_down`: Press the left mouse button.\n * - `left_mouse_up`: Release the left mouse button.\n * - `left_click`: Click the left mouse button at the specified (x, y) pixel coordinate on the screen. You can also include a key combination to hold down while clicking using the `text` parameter.\n * - `left_click_drag`: Click and drag the cursor from `start_coordinate` to a specified (x, y) pixel coordinate on the screen.\n * - `right_click`: Click the right mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `middle_click`: Click the middle mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `double_click`: Double-click the left mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `triple_click`: Triple-click the left mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `scroll`: Scroll the screen in a specified direction by a specified amount of clicks of the scroll wheel, at the specified (x, y) pixel coordinate. DO NOT use PageUp/PageDown to scroll.\n * - `wait`: Wait for a specified duration (in seconds).\n * - `screenshot`: Take a screenshot of the screen.\n */\n action:\n | 'key'\n | 'hold_key'\n | 'type'\n | 'cursor_position'\n | 'mouse_move'\n | 'left_mouse_down'\n | 'left_mouse_up'\n | 'left_click'\n | 'left_click_drag'\n | 'right_click'\n | 'middle_click'\n | 'double_click'\n | 'triple_click'\n | 'scroll'\n | 'wait'\n | 'screenshot';\n\n /**\n * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`.\n */\n coordinate?: [number, number];\n\n /**\n * The duration to hold the key down for. Required only by `action=hold_key` and `action=wait`.\n */\n duration?: number;\n\n /**\n * The number of 'clicks' to scroll. Required only by `action=scroll`.\n */\n scroll_amount?: number;\n\n /**\n * The direction to scroll the screen. Required only by `action=scroll`.\n */\n scroll_direction?: 'up' | 'down' | 'left' | 'right';\n\n /**\n * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to start the drag from. Required only by `action=left_click_drag`.\n */\n start_coordinate?: [number, number];\n\n /**\n * Required only by `action=type`, `action=key`, and `action=hold_key`. Can also be used by click or scroll actions to hold down keys while clicking or scrolling.\n */\n text?: string;\n },\n RESULT\n >;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n}): {\n type: 'provider-defined';\n id: 'anthropic.computer_20250124';\n args: {};\n parameters: typeof Computer20250124Parameters;\n execute: ExecuteFunction<z.infer<typeof Computer20250124Parameters>, RESULT>;\n experimental_toToolResultContent?: (result: RESULT) => ToolResultContent;\n} {\n return {\n type: 'provider-defined',\n id: 'anthropic.computer_20250124',\n args: {\n displayWidthPx: options.displayWidthPx,\n displayHeightPx: options.displayHeightPx,\n displayNumber: options.displayNumber,\n },\n parameters: Computer20250124Parameters,\n execute: options.execute,\n experimental_toToolResultContent: options.experimental_toToolResultContent,\n };\n}\n\nexport const anthropicTools = {\n bash_20241022: bashTool_20241022,\n bash_20250124: bashTool_20250124,\n textEditor_20241022: textEditorTool_20241022,\n textEditor_20250124: textEditorTool_20250124,\n computer_20241022: computerTool_20241022,\n computer_20250124: computerTool_20250124,\n};\n","import {\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport {\n AnthropicMessagesModelId,\n AnthropicMessagesSettings,\n} from './anthropic-messages-settings';\nimport { anthropicTools } from './anthropic-tools';\n\nexport interface AnthropicProvider extends ProviderV1 {\n /**\nCreates a model for text generation.\n*/\n (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): LanguageModelV1;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): LanguageModelV1;\n\n /**\n@deprecated Use `.languageModel()` instead.\n*/\n chat(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): LanguageModelV1;\n\n /**\n@deprecated Use `.languageModel()` instead.\n */\n messages(\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ): LanguageModelV1;\n\n /**\nAnthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n}\n\nexport interface AnthropicProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `x-api-key` header.\nIt defaults to the `ANTHROPIC_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\n/**\nCreate an Anthropic provider instance.\n */\nexport function createAnthropic(\n options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.anthropic.com/v1';\n\n const getHeaders = () => ({\n 'anthropic-version': '2023-06-01',\n 'x-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: AnthropicMessagesModelId,\n settings: AnthropicMessagesSettings = {},\n ) =>\n new AnthropicMessagesLanguageModel(modelId, settings, {\n provider: 'anthropic.messages',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n supportsImageUrls: true,\n });\n\n const provider = function (\n modelId: AnthropicMessagesModelId,\n settings?: AnthropicMessagesSettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\nDefault Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidResponseDataError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Server returned a response with invalid data content.\n * This should be thrown by providers when they cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super({ name, message });\n\n this.data = data;\n }\n\n static isInstance(error: unknown): error is InvalidResponseDataError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadAPIKeyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadAPIKeyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadAPIKeyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_NoSuchModelError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class NoSuchModelError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly modelId: string;\n readonly modelType:\n | 'languageModel'\n | 'textEmbeddingModel'\n | 'imageModel'\n | 'transcriptionModel'\n | 'speechModel';\n\n constructor({\n errorName = name,\n modelId,\n modelType,\n message = `No such ${modelType}: ${modelId}`,\n }: {\n errorName?: string;\n modelId: string;\n modelType:\n | 'languageModel'\n | 'textEmbeddingModel'\n | 'imageModel'\n | 'transcriptionModel'\n | 'speechModel';\n message?: string;\n }) {\n super({ name: errorName, message });\n\n this.modelId = modelId;\n this.modelType = modelType;\n }\n\n static isInstance(error: unknown): error is NoSuchModelError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_TooManyEmbeddingValuesForCallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TooManyEmbeddingValuesForCallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly provider: string;\n readonly modelId: string;\n readonly maxEmbeddingsPerCall: number;\n readonly values: Array<unknown>;\n\n constructor(options: {\n provider: string;\n modelId: string;\n maxEmbeddingsPerCall: number;\n values: Array<unknown>;\n }) {\n super({\n name,\n message:\n `Too many values for a single embedding call. ` +\n `The ${options.provider} model \"${options.modelId}\" can only embed up to ` +\n `${options.maxEmbeddingsPerCall} values per call, but ${options.values.length} values were provided.`,\n });\n\n this.provider = options.provider;\n this.modelId = options.modelId;\n this.maxEmbeddingsPerCall = options.maxEmbeddingsPerCall;\n this.values = options.values;\n }\n\n static isInstance(\n error: unknown,\n ): error is TooManyEmbeddingValuesForCallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_UnsupportedFunctionalityError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class UnsupportedFunctionalityError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly functionality: string;\n\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`,\n }: {\n functionality: string;\n message?: string;\n }) {\n super({ name, message });\n this.functionality = functionality;\n }\n\n static isInstance(error: unknown): error is UnsupportedFunctionalityError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string\n\n /**\n * The line that caused the error, if available.\n */\n line?: string\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array<string>, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array<string> = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n lineEnd = crIndex\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n","import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: 'terminate' | ((error: Error) => void)\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: (retry: number) => void\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: (comment: string) => void\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream<string, EventSourceMessage> {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n","export function combineHeaders(\n ...headers: Array<Record<string, string | undefined> | undefined>\n): Record<string, string | undefined> {\n return headers.reduce(\n (combinedHeaders, currentHeaders) => ({\n ...combinedHeaders,\n ...(currentHeaders ?? {}),\n }),\n {},\n ) as Record<string, string | undefined>;\n}\n","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(response: Response) {\n return Object.fromEntries<string>([...response.headers]);\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNot cryptographically secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Optional.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\nexport const createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): IdGenerator => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[(Math.random() * alphabetLength) | 0];\n }\n return chars.join('');\n };\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return () => `${prefix}${separator}${generator()}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs.\nNot cryptographically secure.\n */\nexport const generateId = createIdGenerator();\n","export function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { isAbortError } from './is-abort-error';\n\nconst FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch'];\n\nexport function handleFetchError({\n error,\n url,\n requestBodyValues,\n}: {\n error: unknown;\n url: string;\n requestBodyValues: unknown;\n}) {\n if (isAbortError(error)) {\n return error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (\n error instanceof TypeError &&\n FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())\n ) {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n return error;\n}\n","/**\n * Removes entries from a record where the value is null or undefined.\n * @param record - The input object whose entries may be null or undefined.\n * @returns A new object containing only entries with non-null and non-undefined values.\n */\nexport function removeUndefinedEntries<T>(\n record: Record<string, T | undefined>,\n): Record<string, T> {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null),\n ) as Record<string, T>;\n}\n","import { LoadAPIKeyError } from '@ai-sdk/provider';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","// Licensed under BSD-3-Clause (this file only)\n// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js\n//\n// Copyright (c) Vercel, Inc. (https://vercel.com)\n// Copyright (c) 2019 The Fastify Team\n// Copyright (c) 2019, Sideway Inc, and project contributors\n// All rights reserved.\n//\n// The complete list of contributors can be found at:\n// - https://github.com/hapijs/bourne/graphs/contributors\n// - https://github.com/fastify/secure-json-parse/graphs/contributors\n// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts\n//\n// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nconst suspectProtoRx = /\"__proto__\"\\s*:/;\nconst suspectConstructorRx = /\"constructor\"\\s*:/;\n\nfunction _parse(text: string) {\n // Parse normally\n const obj = JSON.parse(text);\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (\n suspectProtoRx.test(text) === false &&\n suspectConstructorRx.test(text) === false\n ) {\n return obj;\n }\n\n // Scan result for proto keys\n return filter(obj);\n}\n\nfunction filter(obj: any) {\n let next = [obj];\n\n while (next.length) {\n const nodes = next;\n next = [];\n\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n if (\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')\n ) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === 'object') {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\n\nexport function secureJsonParse(text: string) {\n // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n const { stackTraceLimit } = Error;\n Error.stackTraceLimit = 0;\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?:\n | undefined\n | ((\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\nexport function asValidator<OBJECT>(\n value: Validator<OBJECT> | StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return isValidator(value) ? value : standardSchemaValidator(value);\n}\n\nexport function standardSchemaValidator<OBJECT>(\n standardSchema: StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return validator(async value => {\n const result = await standardSchema['~standard'].validate(value);\n\n return result.issues == null\n ? { success: true, value: result.value }\n : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues,\n }),\n };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Validator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: StandardSchemaV1<unknown, OBJECT> | Validator<OBJECT>;\n}): Promise<OBJECT> {\n const result = await safeValidateTypes({ value, schema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeValidateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: StandardSchemaV1<unknown, OBJECT> | Validator<OBJECT>;\n}): Promise<\n | {\n success: true;\n value: OBJECT;\n rawValue: unknown;\n }\n | {\n success: false;\n error: TypeValidationError;\n rawValue: unknown;\n }\n> {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as OBJECT, rawValue: value };\n }\n\n const result = await validator.validate(value);\n\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n rawValue: value,\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n rawValue: value,\n };\n }\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport async function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<JSONValue>;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {Promise<T>} - The parsed object.\n */\nexport async function parseJSON<T>(options: {\n text: string;\n schema: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<T> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes<T>({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | {\n success: false;\n error: JSONParseError | TypeValidationError;\n rawValue: unknown;\n };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {Promise<object>} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport async function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<ParseResult<JSONValue>>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeParseJSON<T>(options: {\n text: string;\n schema: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<ParseResult<T>> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n return await safeValidateTypes<T>({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n rawValue: undefined,\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n secureJsonParse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n EventSourceMessage,\n EventSourceParserStream,\n} from 'eventsource-parser/stream';\nimport { ZodType } from 'zod/v4';\nimport { ParseResult, safeParseJSON } from './parse-json';\n\n/**\n * Parses a JSON event stream into a stream of parsed JSON objects.\n */\nexport function parseJsonEventStream<T>({\n stream,\n schema,\n}: {\n stream: ReadableStream<Uint8Array>;\n schema: ZodType<T>;\n}): ReadableStream<ParseResult<T>> {\n return stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceMessage, ParseResult<T>>({\n async transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n },\n }),\n );\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\nimport { safeValidateTypes } from './validate-types';\nimport { z } from 'zod/v4';\n\nexport async function parseProviderOptions<T>({\n provider,\n providerOptions,\n schema,\n}: {\n provider: string;\n providerOptions: Record<string, unknown> | undefined;\n schema: z.core.$ZodType<T, any>;\n}): Promise<T | undefined> {\n if (providerOptions?.[provider] == null) {\n return undefined;\n }\n\n const parsedProviderOptions = await safeValidateTypes<T | undefined>({\n value: providerOptions[provider],\n schema,\n });\n\n if (!parsedProviderOptions.success) {\n throw new InvalidArgumentError({\n argument: 'providerOptions',\n message: `invalid ${provider} provider options`,\n cause: parsedProviderOptions.error,\n });\n }\n\n return parsedProviderOptions.value;\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { removeUndefinedEntries } from './remove-undefined-entries';\nimport { ResponseHandler } from './response-handler';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: removeUndefinedEntries(headers),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n","import { JSONValue, LanguageModelV2ToolResultPart } from '@ai-sdk/provider';\nimport { FlexibleSchema } from '../schema';\nimport { ModelMessage } from './model-message';\nimport { ProviderOptions } from './provider-options';\n\nexport interface ToolCallOptions {\n /**\n * The ID of the tool call. You can use it e.g. when sending tool-call related information with stream data.\n */\n toolCallId: string;\n\n /**\n * Messages that were sent to the language model to initiate the response that contained the tool call.\n * The messages **do not** include the system prompt nor the assistant response that contained the tool call.\n */\n messages: ModelMessage[];\n\n /**\n * An optional abort signal that indicates that the overall operation should be aborted.\n */\n abortSignal?: AbortSignal;\n}\n\nexport type ToolExecuteFunction<INPUT, OUTPUT> = (\n input: INPUT,\n options: ToolCallOptions,\n) => PromiseLike<OUTPUT> | OUTPUT;\n\n// 0 extends 1 & N checks for any\n// [N] extends [never] checks for never\ntype NeverOptional<N, T> = 0 extends 1 & N\n ? Partial<T>\n : [N] extends [never]\n ? Partial<Record<keyof T, undefined>>\n : T;\n\n/**\nA tool contains the description and the schema of the input that the tool expects.\nThis enables the language model to generate the input.\n\nThe tool can also contain an optional execute function for the actual execution function of the tool.\n */\nexport type Tool<\n INPUT extends JSONValue | unknown | never = any,\n OUTPUT extends JSONValue | unknown | never = any,\n> = {\n /**\nAn optional description of what the tool does.\nWill be used by the language model to decide whether to use the tool.\nNot used for provider-defined tools.\n */\n description?: string;\n\n /**\nAdditional provider-specific metadata. They are passed through\nto the provider from the AI SDK and enable provider-specific\nfunctionality that can be fully encapsulated in the provider.\n */\n providerOptions?: ProviderOptions;\n} & NeverOptional<\n INPUT,\n {\n /**\nThe schema of the input that the tool expects. The language model will use this to generate the input.\nIt is also used to validate the output of the language model.\nUse descriptions to make the input understandable for the language model.\n */\n inputSchema: FlexibleSchema<INPUT>;\n\n /**\n * Optional function that is called when the argument streaming starts.\n * Only called when the tool is used in a streaming context.\n */\n onInputStart?: (options: ToolCallOptions) => void | PromiseLike<void>;\n\n /**\n * Optional function that is called when an argument streaming delta is available.\n * Only called when the tool is used in a streaming context.\n */\n onInputDelta?: (\n options: { inputTextDelta: string } & ToolCallOptions,\n ) => void | PromiseLike<void>;\n\n /**\n * Optional function that is called when a tool call can be started,\n * even if the execute function is not provided.\n */\n onInputAvailable?: (\n options: {\n input: [INPUT] extends [never] ? undefined : INPUT;\n } & ToolCallOptions,\n ) => void | PromiseLike<void>;\n }\n> &\n NeverOptional<\n OUTPUT,\n {\n /**\nOptional conversion function that maps the tool result to an output that can be used by the language model.\n\nIf not provided, the tool result will be sent as a JSON object.\n */\n toModelOutput?: (\n output: OUTPUT,\n ) => LanguageModelV2ToolResultPart['output'];\n } & (\n | {\n /**\nAn async function that is called with the arguments from the tool call and produces a result.\nIf not provided, the tool will not be executed automatically.\n\n@args is the input of the tool call.\n@options.abortSignal is a signal that can be used to abort the tool call.\n */\n execute: ToolExecuteFunction<INPUT, OUTPUT>;\n\n outputSchema?: FlexibleSchema<OUTPUT>;\n }\n | {\n outputSchema: FlexibleSchema<OUTPUT>;\n\n execute?: never;\n }\n )\n > &\n (\n | {\n /**\nTool with user-defined input and output schemas.\n */\n type?: undefined | 'function';\n }\n | {\n /**\nTool that is defined at runtime (e.g. an MCP tool).\nThe types of input and output are not known at development time.\n */\n type: 'dynamic';\n }\n | {\n /**\nTool with provider-defined input and output schemas.\n */\n type: 'provider-defined';\n\n /**\nThe ID of the tool. Should follow the format `<provider-name>.<unique-tool-name>`.\n */\n id: `${string}.${string}`;\n\n /**\nThe name of the tool that the user must use in the tool set.\n */\n name: string;\n\n /**\nThe arguments for configuring the tool. Must match the expected arguments defined by the provider for this tool.\n */\n args: Record<string, unknown>;\n }\n );\n\n/**\n * Infer the input type of a tool.\n */\nexport type InferToolInput<TOOL extends Tool> =\n TOOL extends Tool<infer INPUT, any> ? INPUT : never;\n\n/**\n * Infer the output type of a tool.\n */\nexport type InferToolOutput<TOOL extends Tool> =\n TOOL extends Tool<any, infer OUTPUT> ? OUTPUT : never;\n\n/**\nHelper function for inferring the execute args of a tool.\n */\n// Note: overload order is important for auto-completion\nexport function tool<INPUT, OUTPUT>(\n tool: Tool<INPUT, OUTPUT>,\n): Tool<INPUT, OUTPUT>;\nexport function tool<INPUT>(tool: Tool<INPUT, never>): Tool<INPUT, never>;\nexport function tool<OUTPUT>(tool: Tool<never, OUTPUT>): Tool<never, OUTPUT>;\nexport function tool(tool: Tool<never, never>): Tool<never, never>;\nexport function tool(tool: any): any {\n return tool;\n}\n\n/**\nHelper function for defining a dynamic tool.\n */\nexport function dynamicTool(tool: {\n description?: string;\n providerOptions?: ProviderOptions;\n inputSchema: FlexibleSchema<unknown>;\n execute: ToolExecuteFunction<unknown, unknown>;\n toModelOutput?: (output: unknown) => LanguageModelV2ToolResultPart['output'];\n}): Tool<unknown, unknown> & {\n type: 'dynamic';\n} {\n return { ...tool, type: 'dynamic' };\n}\n","import { tool, Tool, ToolExecuteFunction } from './types/tool';\nimport { FlexibleSchema } from './schema';\n\nexport type ProviderDefinedToolFactory<INPUT, ARGS extends object> = <OUTPUT>(\n options: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n },\n) => Tool<INPUT, OUTPUT>;\n\nexport function createProviderDefinedToolFactory<INPUT, ARGS extends object>({\n id,\n name,\n inputSchema,\n}: {\n id: `${string}.${string}`;\n name: string;\n inputSchema: FlexibleSchema<INPUT>;\n}): ProviderDefinedToolFactory<INPUT, ARGS> {\n return <OUTPUT>({\n execute,\n outputSchema,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n outputSchema?: FlexibleSchema<OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n }): Tool<INPUT, OUTPUT> =>\n tool({\n type: 'provider-defined',\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n });\n}\n\nexport type ProviderDefinedToolFactoryWithOutputSchema<\n INPUT,\n OUTPUT,\n ARGS extends object,\n> = (\n options: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n },\n) => Tool<INPUT, OUTPUT>;\n\nexport function createProviderDefinedToolFactoryWithOutputSchema<\n INPUT,\n OUTPUT,\n ARGS extends object,\n>({\n id,\n name,\n inputSchema,\n outputSchema,\n}: {\n id: `${string}.${string}`;\n name: string;\n inputSchema: FlexibleSchema<INPUT>;\n outputSchema: FlexibleSchema<OUTPUT>;\n}): ProviderDefinedToolFactoryWithOutputSchema<INPUT, OUTPUT, ARGS> {\n return ({\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n ...args\n }: ARGS & {\n execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n toModelOutput?: Tool<INPUT, OUTPUT>['toModelOutput'];\n onInputStart?: Tool<INPUT, OUTPUT>['onInputStart'];\n onInputDelta?: Tool<INPUT, OUTPUT>['onInputDelta'];\n onInputAvailable?: Tool<INPUT, OUTPUT>['onInputAvailable'];\n }): Tool<INPUT, OUTPUT> =>\n tool({\n type: 'provider-defined',\n id,\n name,\n args,\n inputSchema,\n outputSchema,\n execute,\n toModelOutput,\n onInputStart,\n onInputDelta,\n onInputAvailable,\n });\n}\n","export type Resolvable<T> =\n | T // Raw value\n | Promise<T> // Promise of value\n | (() => T) // Function returning value\n | (() => Promise<T>); // Function returning promise of value\n\n/**\n * Resolves a value that could be a raw value, a Promise, a function returning a value,\n * or a function returning a Promise.\n */\nexport async function resolve<T>(value: Resolvable<T>): Promise<T> {\n // If it's a function, call it to get the value/promise\n if (typeof value === 'function') {\n value = (value as Function)();\n }\n\n // Otherwise just resolve whatever we got (value or promise)\n return Promise.resolve(value as T);\n}\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodType } from 'zod/v4';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodType<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema,\n }),\n };\n };\n\nexport const createJsonStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n let buffer = '';\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream<string, ParseResult<T>>({\n async transform(chunkText, controller) {\n if (chunkText.endsWith('\\n')) {\n controller.enqueue(\n await safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema,\n }),\n );\n buffer = '';\n } else {\n buffer += chunkText;\n }\n },\n }),\n ),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodType<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n\nexport function convertToBase64(value: string | Uint8Array): string {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n","export function withoutTrailingSlash(url: string | undefined) {\n return url?.replace(/\\/$/, '');\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const anthropicErrorDataSchema = z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n});\n\nexport type AnthropicErrorData = z.infer<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: anthropicErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { z } from 'zod/v4';\n\n// https://docs.anthropic.com/claude/docs/models-overview\nexport type AnthropicMessagesModelId =\n | 'claude-opus-4-20250514'\n | 'claude-sonnet-4-20250514'\n | 'claude-3-7-sonnet-20250219'\n | 'claude-3-5-sonnet-latest'\n | 'claude-3-5-sonnet-20241022'\n | 'claude-3-5-sonnet-20240620'\n | 'claude-3-5-haiku-latest'\n | 'claude-3-5-haiku-20241022'\n | 'claude-3-opus-latest'\n | 'claude-3-opus-20240229'\n | 'claude-3-sonnet-20240229'\n | 'claude-3-haiku-20240307'\n | (string & {});\n\n/**\n * Anthropic file part provider options for document-specific features.\n * These options apply to individual file parts (documents).\n */\nexport const anthropicFilePartProviderOptions = z.object({\n /**\n * Citation configuration for this document.\n * When enabled, this document will generate citations in the response.\n */\n citations: z\n .object({\n /**\n * Enable citations for this document\n */\n enabled: z.boolean(),\n })\n .optional(),\n\n /**\n * Custom title for the document.\n * If not provided, the filename will be used.\n */\n title: z.string().optional(),\n\n /**\n * Context about the document that will be passed to the model\n * but not used towards cited content.\n * Useful for storing document metadata as text or stringified JSON.\n */\n context: z.string().optional(),\n});\n\nexport type AnthropicFilePartProviderOptions = z.infer<\n typeof anthropicFilePartProviderOptions\n>;\n\nexport const anthropicProviderOptions = z.object({\n sendReasoning: z.boolean().optional(),\n\n thinking: z\n .object({\n type: z.union([z.literal('enabled'), z.literal('disabled')]),\n budgetTokens: z.number().optional(),\n })\n .optional(),\n\n /**\n * Whether to disable parallel function calling during tool use. Default is false.\n * When set to true, Claude will use at most one tool per response.\n */\n disableParallelToolUse: z.boolean().optional(),\n});\n\nexport type AnthropicProviderOptions = z.infer<typeof anthropicProviderOptions>;\n","import { SharedV2ProviderMetadata } from '@ai-sdk/provider';\nimport { AnthropicCacheControl } from './anthropic-api-types';\n\nexport function getCacheControl(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): AnthropicCacheControl | undefined {\n const anthropic = providerMetadata?.anthropic;\n\n // allow both cacheControl and cache_control:\n const cacheControlValue = anthropic?.cacheControl ?? anthropic?.cache_control;\n\n // Pass through value assuming it is of the correct type.\n // The Anthropic API will validate the value.\n return cacheControlValue as AnthropicCacheControl | undefined;\n}\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Args validation schema\nexport const webSearch_20250305ArgsSchema = z.object({\n /**\n * Maximum number of web searches Claude can perform during the conversation.\n */\n maxUses: z.number().optional(),\n\n /**\n * Optional list of domains that Claude is allowed to search.\n */\n allowedDomains: z.array(z.string()).optional(),\n\n /**\n * Optional list of domains that Claude should avoid when searching.\n */\n blockedDomains: z.array(z.string()).optional(),\n\n /**\n * Optional user location information to provide geographically relevant search results.\n */\n userLocation: z\n .object({\n type: z.literal('approximate'),\n city: z.string().optional(),\n region: z.string().optional(),\n country: z.string().optional(),\n timezone: z.string().optional(),\n })\n .optional(),\n});\n\nexport const webSearch_20250305OutputSchema = z.array(\n z.object({\n url: z.string(),\n title: z.string(),\n pageAge: z.string().nullable(),\n encryptedContent: z.string(),\n type: z.string(),\n }),\n);\n\nconst factory = createProviderDefinedToolFactoryWithOutputSchema<\n {\n /**\n * The search query to execute.\n */\n query: string;\n },\n Array<{\n url: string;\n title: string;\n pageAge: string | null;\n encryptedContent: string;\n type: string;\n }>,\n {\n /**\n * Maximum number of web searches Claude can perform during the conversation.\n */\n maxUses?: number;\n\n /**\n * Optional list of domains that Claude is allowed to search.\n */\n allowedDomains?: string[];\n\n /**\n * Optional list of domains that Claude should avoid when searching.\n */\n blockedDomains?: string[];\n\n /**\n * Optional user location information to provide geographically relevant search results.\n */\n userLocation?: {\n type: 'approximate';\n city?: string;\n region?: string;\n country?: string;\n timezone?: string;\n };\n }\n>({\n id: 'anthropic.web_search_20250305',\n name: 'web_search',\n inputSchema: z.object({\n query: z.string(),\n }),\n outputSchema: webSearch_20250305OutputSchema,\n});\n\nexport const webSearch_20250305 = (\n args: Parameters<typeof factory>[0] = {}, // default\n) => {\n return factory(args);\n};\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { AnthropicTool, AnthropicToolChoice } from './anthropic-api-types';\nimport { getCacheControl } from './get-cache-control';\nimport { webSearch_20250305ArgsSchema } from './tool/web-search_20250305';\n\nfunction isWebSearchTool(\n tool: unknown,\n): tool is Extract<AnthropicTool, { type: 'web_search_20250305' }> {\n return (\n typeof tool === 'object' &&\n tool !== null &&\n 'type' in tool &&\n tool.type === 'web_search_20250305'\n );\n}\n\nexport function prepareTools({\n tools,\n toolChoice,\n disableParallelToolUse,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n disableParallelToolUse?: boolean;\n}): {\n tools: Array<AnthropicTool> | undefined;\n toolChoice: AnthropicToolChoice | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n betas: Set<string>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n const betas = new Set<string>();\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings, betas };\n }\n\n const anthropicTools: AnthropicTool[] = [];\n\n for (const tool of tools) {\n // handle direct web search tool objects passed from provider options\n if (isWebSearchTool(tool)) {\n anthropicTools.push(tool);\n continue;\n }\n\n switch (tool.type) {\n case 'function':\n const cacheControl = getCacheControl(tool.providerOptions);\n\n anthropicTools.push({\n name: tool.name,\n description: tool.description,\n input_schema: tool.inputSchema,\n cache_control: cacheControl,\n });\n break;\n case 'provider-defined':\n switch (tool.id) {\n case 'anthropic.computer_20250124':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: 'computer',\n type: 'computer_20250124',\n display_width_px: tool.args.displayWidthPx as number,\n display_height_px: tool.args.displayHeightPx as number,\n display_number: tool.args.displayNumber as number,\n });\n break;\n case 'anthropic.computer_20241022':\n betas.add('computer-use-2024-10-22');\n anthropicTools.push({\n name: 'computer',\n type: 'computer_20241022',\n display_width_px: tool.args.displayWidthPx as number,\n display_height_px: tool.args.displayHeightPx as number,\n display_number: tool.args.displayNumber as number,\n });\n break;\n case 'anthropic.text_editor_20250124':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: 'str_replace_editor',\n type: 'text_editor_20250124',\n });\n break;\n case 'anthropic.text_editor_20241022':\n betas.add('computer-use-2024-10-22');\n anthropicTools.push({\n name: 'str_replace_editor',\n type: 'text_editor_20241022',\n });\n break;\n case 'anthropic.text_editor_20250429':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: 'str_replace_based_edit_tool',\n type: 'text_editor_20250429',\n });\n break;\n case 'anthropic.bash_20250124':\n betas.add('computer-use-2025-01-24');\n anthropicTools.push({\n name: 'bash',\n type: 'bash_20250124',\n });\n break;\n case 'anthropic.bash_20241022':\n betas.add('computer-use-2024-10-22');\n anthropicTools.push({\n name: 'bash',\n type: 'bash_20241022',\n });\n break;\n case 'anthropic.web_search_20250305': {\n const args = webSearch_20250305ArgsSchema.parse(tool.args);\n anthropicTools.push({\n type: 'web_search_20250305',\n name: 'web_search',\n max_uses: args.maxUses,\n allowed_domains: args.allowedDomains,\n blocked_domains: args.blockedDomains,\n user_location: args.userLocation,\n });\n break;\n }\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return {\n tools: anthropicTools,\n toolChoice: disableParallelToolUse\n ? { type: 'auto', disable_parallel_tool_use: disableParallelToolUse }\n : undefined,\n toolWarnings,\n betas,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n tools: anthropicTools,\n toolChoice: {\n type: 'auto',\n disable_parallel_tool_use: disableParallelToolUse,\n },\n toolWarnings,\n betas,\n };\n case 'required':\n return {\n tools: anthropicTools,\n toolChoice: {\n type: 'any',\n disable_parallel_tool_use: disableParallelToolUse,\n },\n toolWarnings,\n betas,\n };\n case 'none':\n // Anthropic does not support 'none' tool choice, so we remove the tools:\n return { tools: undefined, toolChoice: undefined, toolWarnings, betas };\n case 'tool':\n return {\n tools: anthropicTools,\n toolChoice: {\n type: 'tool',\n name: toolChoice.toolName,\n disable_parallel_tool_use: disableParallelToolUse,\n },\n toolWarnings,\n betas,\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 LanguageModelV2CallWarning,\n LanguageModelV2DataContent,\n LanguageModelV2Message,\n LanguageModelV2Prompt,\n SharedV2ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64, parseProviderOptions } from '@ai-sdk/provider-utils';\nimport {\n AnthropicAssistantMessage,\n AnthropicMessagesPrompt,\n AnthropicToolResultContent,\n AnthropicUserMessage,\n} from './anthropic-api-types';\nimport { anthropicReasoningMetadataSchema } from './anthropic-messages-language-model';\nimport { anthropicFilePartProviderOptions } from './anthropic-messages-options';\nimport { getCacheControl } from './get-cache-control';\nimport { webSearch_20250305OutputSchema } from './tool/web-search_20250305';\n\nfunction convertToString(data: LanguageModelV2DataContent): string {\n if (typeof data === 'string') {\n return Buffer.from(data, 'base64').toString('utf-8');\n }\n\n if (data instanceof Uint8Array) {\n return new TextDecoder().decode(data);\n }\n\n if (data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'URL-based text documents are not supported for citations',\n });\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `unsupported data type for text documents: ${typeof data}`,\n });\n}\n\nexport async function convertToAnthropicMessagesPrompt({\n prompt,\n sendReasoning,\n warnings,\n}: {\n prompt: LanguageModelV2Prompt;\n sendReasoning: boolean;\n warnings: LanguageModelV2CallWarning[];\n}): Promise<{\n prompt: AnthropicMessagesPrompt;\n betas: Set<string>;\n}> {\n const betas = new Set<string>();\n const blocks = groupIntoBlocks(prompt);\n\n let system: AnthropicMessagesPrompt['system'] = undefined;\n const messages: AnthropicMessagesPrompt['messages'] = [];\n\n async function shouldEnableCitations(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n ): Promise<boolean> {\n const anthropicOptions = await parseProviderOptions({\n provider: 'anthropic',\n providerOptions: providerMetadata,\n schema: anthropicFilePartProviderOptions,\n });\n\n return anthropicOptions?.citations?.enabled ?? false;\n }\n\n async function getDocumentMetadata(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n ): Promise<{ title?: string; context?: string }> {\n const anthropicOptions = await parseProviderOptions({\n provider: 'anthropic',\n providerOptions: providerMetadata,\n schema: anthropicFilePartProviderOptions,\n });\n\n return {\n title: anthropicOptions?.title,\n context: anthropicOptions?.context,\n };\n }\n\n for (let i = 0; i < blocks.length; i++) {\n const block = blocks[i];\n const isLastBlock = i === blocks.length - 1;\n const type = block.type;\n\n switch (type) {\n case 'system': {\n if (system != null) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Multiple system messages that are separated by user/assistant messages',\n });\n }\n\n system = block.messages.map(({ content, providerOptions }) => ({\n type: 'text',\n text: content,\n cache_control: getCacheControl(providerOptions),\n }));\n\n break;\n }\n\n case 'user': {\n // combines all user and tool messages in this block into a single message:\n const anthropicContent: AnthropicUserMessage['content'] = [];\n\n for (const message of block.messages) {\n const { role, content } = message;\n switch (role) {\n case 'user': {\n for (let j = 0; j < content.length; j++) {\n const part = content[j];\n\n // cache control: first add cache control from part.\n // for the last part of a message,\n // check also if the message has cache control.\n const isLastPart = j === content.length - 1;\n\n const cacheControl =\n getCacheControl(part.providerOptions) ??\n (isLastPart\n ? getCacheControl(message.providerOptions)\n : undefined);\n\n switch (part.type) {\n case 'text': {\n anthropicContent.push({\n type: 'text',\n text: part.text,\n cache_control: cacheControl,\n });\n break;\n }\n\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n anthropicContent.push({\n type: 'image',\n source:\n part.data instanceof URL\n ? {\n type: 'url',\n url: part.data.toString(),\n }\n : {\n type: 'base64',\n media_type:\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType,\n data: convertToBase64(part.data),\n },\n cache_control: cacheControl,\n });\n } else if (part.mediaType === 'application/pdf') {\n betas.add('pdfs-2024-09-25');\n\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n const metadata = await getDocumentMetadata(\n part.providerOptions,\n );\n\n anthropicContent.push({\n type: 'document',\n source:\n part.data instanceof URL\n ? {\n type: 'url',\n url: part.data.toString(),\n }\n : {\n type: 'base64',\n media_type: 'application/pdf',\n data: convertToBase64(part.data),\n },\n title: metadata.title ?? part.filename,\n ...(metadata.context && { context: metadata.context }),\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n cache_control: cacheControl,\n });\n } else if (part.mediaType === 'text/plain') {\n const enableCitations = await shouldEnableCitations(\n part.providerOptions,\n );\n\n const metadata = await getDocumentMetadata(\n part.providerOptions,\n );\n\n anthropicContent.push({\n type: 'document',\n source:\n part.data instanceof URL\n ? {\n type: 'url',\n url: part.data.toString(),\n }\n : {\n type: 'text',\n media_type: 'text/plain',\n data: convertToString(part.data),\n },\n title: metadata.title ?? part.filename,\n ...(metadata.context && { context: metadata.context }),\n ...(enableCitations && {\n citations: { enabled: true },\n }),\n cache_control: cacheControl,\n });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `media type: ${part.mediaType}`,\n });\n }\n\n break;\n }\n }\n }\n\n break;\n }\n case 'tool': {\n for (let i = 0; i < content.length; i++) {\n const part = content[i];\n\n // cache control: first add cache control from part.\n // for the last part of a message,\n // check also if the message has cache control.\n const isLastPart = i === content.length - 1;\n\n const cacheControl =\n getCacheControl(part.providerOptions) ??\n (isLastPart\n ? getCacheControl(message.providerOptions)\n : undefined);\n\n const output = part.output;\n let contentValue: AnthropicToolResultContent['content'];\n switch (output.type) {\n case 'content':\n contentValue = output.value.map(contentPart => {\n switch (contentPart.type) {\n case 'text':\n return {\n type: 'text',\n text: contentPart.text,\n cache_control: undefined,\n };\n case 'media': {\n if (contentPart.mediaType.startsWith('image/')) {\n return {\n type: 'image',\n source: {\n type: 'base64',\n media_type: contentPart.mediaType,\n data: contentPart.data,\n },\n cache_control: undefined,\n };\n }\n\n throw new UnsupportedFunctionalityError({\n functionality: `media type: ${contentPart.mediaType}`,\n });\n }\n }\n });\n break;\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'json':\n case 'error-json':\n default:\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n anthropicContent.push({\n type: 'tool_result',\n tool_use_id: part.toolCallId,\n content: contentValue,\n is_error:\n output.type === 'error-text' || output.type === 'error-json'\n ? true\n : undefined,\n cache_control: cacheControl,\n });\n }\n\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n messages.push({ role: 'user', content: anthropicContent });\n\n break;\n }\n\n case 'assistant': {\n // combines multiple assistant messages in this block into a single message:\n const anthropicContent: AnthropicAssistantMessage['content'] = [];\n\n for (let j = 0; j < block.messages.length; j++) {\n const message = block.messages[j];\n const isLastMessage = j === block.messages.length - 1;\n const { content } = message;\n\n for (let k = 0; k < content.length; k++) {\n const part = content[k];\n const isLastContentPart = k === content.length - 1;\n\n // cache control: first add cache control from part.\n // for the last part of a message,\n // check also if the message has cache control.\n const cacheControl =\n getCacheControl(part.providerOptions) ??\n (isLastContentPart\n ? getCacheControl(message.providerOptions)\n : undefined);\n\n switch (part.type) {\n case 'text': {\n anthropicContent.push({\n type: 'text',\n text:\n // trim the last text part if it's the last message in the block\n // because Anthropic does not allow trailing whitespace\n // in pre-filled assistant responses\n isLastBlock && isLastMessage && isLastContentPart\n ? part.text.trim()\n : part.text,\n\n cache_control: cacheControl,\n });\n break;\n }\n\n case 'reasoning': {\n if (sendReasoning) {\n const reasoningMetadata = await parseProviderOptions({\n provider: 'anthropic',\n providerOptions: part.providerOptions,\n schema: anthropicReasoningMetadataSchema,\n });\n\n if (reasoningMetadata != null) {\n if (reasoningMetadata.signature != null) {\n anthropicContent.push({\n type: 'thinking',\n thinking: part.text,\n signature: reasoningMetadata.signature,\n cache_control: cacheControl,\n });\n } else if (reasoningMetadata.redactedData != null) {\n anthropicContent.push({\n type: 'redacted_thinking',\n data: reasoningMetadata.redactedData,\n cache_control: cacheControl,\n });\n } else {\n warnings.push({\n type: 'other',\n message: 'unsupported reasoning metadata',\n });\n }\n } else {\n warnings.push({\n type: 'other',\n message: 'unsupported reasoning metadata',\n });\n }\n } else {\n warnings.push({\n type: 'other',\n message:\n 'sending reasoning content is disabled for this model',\n });\n }\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n if (part.toolName === 'web_search') {\n anthropicContent.push({\n type: 'server_tool_use',\n id: part.toolCallId,\n name: 'web_search',\n input: part.input,\n cache_control: cacheControl,\n });\n\n break;\n }\n\n warnings.push({\n type: 'other',\n message: `provider executed tool call for tool ${part.toolName} is not supported`,\n });\n\n break;\n }\n\n anthropicContent.push({\n type: 'tool_use',\n id: part.toolCallId,\n name: part.toolName,\n input: part.input,\n cache_control: cacheControl,\n });\n break;\n }\n\n case 'tool-result': {\n if (part.toolName === 'web_search') {\n const output = part.output;\n\n if (output.type !== 'json') {\n warnings.push({\n type: 'other',\n message: `provider executed tool result output type ${output.type} for tool ${part.toolName} is not supported`,\n });\n\n break;\n }\n\n const webSearchOutput = webSearch_20250305OutputSchema.parse(\n output.value,\n );\n\n anthropicContent.push({\n type: 'web_search_tool_result',\n tool_use_id: part.toolCallId,\n content: webSearchOutput.map(result => ({\n url: result.url,\n title: result.title,\n page_age: result.pageAge,\n encrypted_content: result.encryptedContent,\n type: result.type,\n })),\n cache_control: cacheControl,\n });\n\n break;\n }\n\n warnings.push({\n type: 'other',\n message: `provider executed tool result for tool ${part.toolName} is not supported`,\n });\n\n break;\n }\n }\n }\n }\n\n messages.push({ role: 'assistant', content: anthropicContent });\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`content type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return {\n prompt: { system, messages },\n betas,\n };\n}\n\ntype SystemBlock = {\n type: 'system';\n messages: Array<LanguageModelV2Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n type: 'assistant';\n messages: Array<LanguageModelV2Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n type: 'user';\n messages: Array<LanguageModelV2Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n prompt: LanguageModelV2Prompt,\n): Array<SystemBlock | AssistantBlock | UserBlock> {\n const blocks: Array<SystemBlock | AssistantBlock | UserBlock> = [];\n let currentBlock: SystemBlock | AssistantBlock | UserBlock | undefined =\n undefined;\n\n for (const message of prompt) {\n const { role } = message;\n switch (role) {\n case 'system': {\n if (currentBlock?.type !== 'system') {\n currentBlock = { type: 'system', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'assistant': {\n if (currentBlock?.type !== 'assistant') {\n currentBlock = { type: 'assistant', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'user': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n case 'tool': {\n if (currentBlock?.type !== 'user') {\n currentBlock = { type: 'user', messages: [] };\n blocks.push(currentBlock);\n }\n\n currentBlock.messages.push(message);\n break;\n }\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return blocks;\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapAnthropicStopReason({\n finishReason,\n isJsonResponseFromTool,\n}: {\n finishReason: string | null | undefined;\n isJsonResponseFromTool?: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'end_turn':\n case 'stop_sequence':\n return 'stop';\n case 'tool_use':\n return isJsonResponseFromTool ? 'stop' : 'tool-calls';\n case 'max_tokens':\n return 'length';\n default:\n return 'unknown';\n }\n}\n","import {\n JSONObject,\n JSONValue,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2FunctionTool,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n Resolvable,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport {\n AnthropicMessagesModelId,\n anthropicProviderOptions,\n} from './anthropic-messages-options';\nimport { prepareTools } from './anthropic-prepare-tools';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\nconst citationSchemas = {\n webSearchResult: z.object({\n type: z.literal('web_search_result_location'),\n cited_text: z.string(),\n url: z.string(),\n title: z.string(),\n encrypted_index: z.string(),\n }),\n pageLocation: z.object({\n type: z.literal('page_location'),\n cited_text: z.string(),\n document_index: z.number(),\n document_title: z.string().nullable(),\n start_page_number: z.number(),\n end_page_number: z.number(),\n }),\n charLocation: z.object({\n type: z.literal('char_location'),\n cited_text: z.string(),\n document_index: z.number(),\n document_title: z.string().nullable(),\n start_char_index: z.number(),\n end_char_index: z.number(),\n }),\n};\n\nconst citationSchema = z.discriminatedUnion('type', [\n citationSchemas.webSearchResult,\n citationSchemas.pageLocation,\n citationSchemas.charLocation,\n]);\n\nconst documentCitationSchema = z.discriminatedUnion('type', [\n citationSchemas.pageLocation,\n citationSchemas.charLocation,\n]);\n\ntype Citation = z.infer<typeof citationSchema>;\nexport type DocumentCitation = z.infer<typeof documentCitationSchema>;\nexport type AnthropicProviderMetadata = SharedV2ProviderMetadata & {\n usage?: Record<string, JSONValue>;\n};\n\nfunction processCitation(\n citation: Citation,\n citationDocuments: Array<{\n title: string;\n filename?: string;\n mediaType: string;\n }>,\n generateId: () => string,\n onSource: (source: any) => void,\n) {\n if (citation.type === 'page_location' || citation.type === 'char_location') {\n const source = createCitationSource(\n citation,\n citationDocuments,\n generateId,\n );\n if (source) {\n onSource(source);\n }\n }\n}\n\nfunction createCitationSource(\n citation: DocumentCitation,\n citationDocuments: Array<{\n title: string;\n filename?: string;\n mediaType: string;\n }>,\n generateId: () => string,\n) {\n const documentInfo = citationDocuments[citation.document_index];\n if (!documentInfo) {\n return null;\n }\n\n const providerMetadata =\n citation.type === 'page_location'\n ? {\n citedText: citation.cited_text,\n startPageNumber: citation.start_page_number,\n endPageNumber: citation.end_page_number,\n }\n : {\n citedText: citation.cited_text,\n startCharIndex: citation.start_char_index,\n endCharIndex: citation.end_char_index,\n };\n\n return {\n type: 'source' as const,\n sourceType: 'document' as const,\n id: generateId(),\n mediaType: documentInfo.mediaType,\n title: citation.document_title ?? documentInfo.title,\n filename: documentInfo.filename,\n providerMetadata: {\n anthropic: providerMetadata,\n },\n };\n}\n\ntype AnthropicMessagesConfig = {\n provider: string;\n baseURL: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n buildRequestUrl?: (baseURL: string, isStreaming: boolean) => string;\n transformRequestBody?: (args: Record<string, any>) => Record<string, any>;\n supportedUrls?: () => LanguageModelV2['supportedUrls'];\n generateId?: () => string;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: AnthropicMessagesModelId;\n\n private readonly config: AnthropicMessagesConfig;\n private readonly generateId: () => string;\n\n constructor(\n modelId: AnthropicMessagesModelId,\n config: AnthropicMessagesConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n this.generateId = config.generateId ?? generateId;\n }\n\n supportsUrl(url: URL): boolean {\n return url.protocol === 'https:';\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportedUrls() {\n return this.config.supportedUrls?.() ?? {};\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens = 4096, // 4096: max model output tokens TODO update default in v5\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n if (responseFormat?.type === 'json') {\n if (responseFormat.schema == null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format requires a schema. ' +\n 'The response format is ignored.',\n });\n } else if (tools != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'tools',\n details:\n 'JSON response format does not support tools. ' +\n 'The provided tools are ignored.',\n });\n }\n }\n\n const jsonResponseTool: LanguageModelV2FunctionTool | undefined =\n responseFormat?.type === 'json' && responseFormat.schema != null\n ? {\n type: 'function',\n name: 'json',\n description: 'Respond with a JSON object.',\n inputSchema: responseFormat.schema,\n }\n : undefined;\n\n const anthropicOptions = await parseProviderOptions({\n provider: 'anthropic',\n providerOptions,\n schema: anthropicProviderOptions,\n });\n\n const { prompt: messagesPrompt, betas: messagesBetas } =\n await convertToAnthropicMessagesPrompt({\n prompt,\n sendReasoning: anthropicOptions?.sendReasoning ?? true,\n warnings,\n });\n\n const isThinking = anthropicOptions?.thinking?.type === 'enabled';\n const thinkingBudget = anthropicOptions?.thinking?.budgetTokens;\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_k: topK,\n top_p: topP,\n stop_sequences: stopSequences,\n\n // provider specific settings:\n ...(isThinking && {\n thinking: { type: 'enabled', budget_tokens: thinkingBudget },\n }),\n\n // prompt:\n system: messagesPrompt.system,\n messages: messagesPrompt.messages,\n };\n\n if (isThinking) {\n if (thinkingBudget == null) {\n throw new UnsupportedFunctionalityError({\n functionality: 'thinking requires a budget',\n });\n }\n\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 when thinking is enabled',\n });\n }\n\n if (topK != null) {\n baseArgs.top_k = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n details: 'topK is not supported when thinking is enabled',\n });\n }\n\n if (topP != null) {\n baseArgs.top_p = undefined;\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topP',\n details: 'topP is not supported when thinking is enabled',\n });\n }\n\n // adjust max tokens to account for thinking:\n baseArgs.max_tokens = maxOutputTokens + thinkingBudget;\n }\n\n const {\n tools: anthropicTools,\n toolChoice: anthropicToolChoice,\n toolWarnings,\n betas: toolsBetas,\n } = prepareTools(\n jsonResponseTool != null\n ? {\n tools: [jsonResponseTool],\n toolChoice: { type: 'tool', toolName: jsonResponseTool.name },\n disableParallelToolUse: anthropicOptions?.disableParallelToolUse,\n }\n : {\n tools: tools ?? [],\n toolChoice,\n disableParallelToolUse: anthropicOptions?.disableParallelToolUse,\n },\n );\n\n return {\n args: {\n ...baseArgs,\n tools: anthropicTools,\n tool_choice: anthropicToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n betas: new Set([...messagesBetas, ...toolsBetas]),\n usesJsonResponseTool: jsonResponseTool != null,\n };\n }\n\n private async getHeaders({\n betas,\n headers,\n }: {\n betas: Set<string>;\n headers: Record<string, string | undefined> | undefined;\n }) {\n return combineHeaders(\n await resolve(this.config.headers),\n betas.size > 0 ? { 'anthropic-beta': Array.from(betas).join(',') } : {},\n headers,\n );\n }\n\n private buildRequestUrl(isStreaming: boolean): string {\n return (\n this.config.buildRequestUrl?.(this.config.baseURL, isStreaming) ??\n `${this.config.baseURL}/messages`\n );\n }\n\n private transformRequestBody(args: Record<string, any>): Record<string, any> {\n return this.config.transformRequestBody?.(args) ?? args;\n }\n\n private extractCitationDocuments(prompt: LanguageModelV2Prompt): Array<{\n title: string;\n filename?: string;\n mediaType: string;\n }> {\n const isCitationPart = (part: {\n type: string;\n mediaType?: string;\n providerOptions?: { anthropic?: { citations?: { enabled?: boolean } } };\n }) => {\n if (part.type !== 'file') {\n return false;\n }\n\n if (\n part.mediaType !== 'application/pdf' &&\n part.mediaType !== 'text/plain'\n ) {\n return false;\n }\n\n const anthropic = part.providerOptions?.anthropic;\n const citationsConfig = anthropic?.citations as\n | { enabled?: boolean }\n | undefined;\n return citationsConfig?.enabled ?? false;\n };\n\n return prompt\n .filter(message => message.role === 'user')\n .flatMap(message => message.content)\n .filter(isCitationPart)\n .map(part => {\n // TypeScript knows this is a file part due to our filter\n const filePart = part as Extract<typeof part, { type: 'file' }>;\n return {\n title: filePart.filename ?? 'Untitled Document',\n filename: filePart.filename,\n mediaType: filePart.mediaType,\n };\n });\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings, betas, usesJsonResponseTool } =\n await this.getArgs(options);\n\n // Extract citation documents for response processing\n const citationDocuments = this.extractCitationDocuments(options.prompt);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.buildRequestUrl(false),\n headers: await this.getHeaders({ betas, headers: options.headers }),\n body: this.transformRequestBody(args),\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n anthropicMessagesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n // map response content to content array\n for (const part of response.content) {\n switch (part.type) {\n case 'text': {\n // when a json response tool is used, the tool call is returned as text,\n // so we ignore the text content:\n if (!usesJsonResponseTool) {\n content.push({ type: 'text', text: part.text });\n\n // Process citations if present\n if (part.citations) {\n for (const citation of part.citations) {\n processCitation(\n citation,\n citationDocuments,\n this.generateId,\n source => content.push(source),\n );\n }\n }\n }\n break;\n }\n case 'thinking': {\n content.push({\n type: 'reasoning',\n text: part.thinking,\n providerMetadata: {\n anthropic: {\n signature: part.signature,\n } satisfies AnthropicReasoningMetadata,\n },\n });\n break;\n }\n case 'redacted_thinking': {\n content.push({\n type: 'reasoning',\n text: '',\n providerMetadata: {\n anthropic: {\n redactedData: part.data,\n } satisfies AnthropicReasoningMetadata,\n },\n });\n break;\n }\n case 'tool_use': {\n content.push(\n // when a json response tool is used, the tool call becomes the text:\n usesJsonResponseTool\n ? {\n type: 'text',\n text: JSON.stringify(part.input),\n }\n : {\n type: 'tool-call',\n toolCallId: part.id,\n toolName: part.name,\n input: JSON.stringify(part.input),\n },\n );\n\n break;\n }\n case 'server_tool_use': {\n if (part.name === 'web_search') {\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName: part.name,\n input: JSON.stringify(part.input),\n providerExecuted: true,\n });\n }\n\n break;\n }\n case 'web_search_tool_result': {\n if (Array.isArray(part.content)) {\n content.push({\n type: 'tool-result',\n toolCallId: part.tool_use_id,\n toolName: 'web_search',\n result: part.content.map(result => ({\n url: result.url,\n title: result.title,\n pageAge: result.page_age ?? null,\n encryptedContent: result.encrypted_content,\n type: result.type,\n })),\n providerExecuted: true,\n });\n\n for (const result of part.content) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.generateId(),\n url: result.url,\n title: result.title,\n providerMetadata: {\n anthropic: {\n pageAge: result.page_age ?? null,\n },\n },\n });\n }\n } else {\n content.push({\n type: 'tool-result',\n toolCallId: part.tool_use_id,\n toolName: 'web_search',\n isError: true,\n result: {\n type: 'web_search_tool_result_error',\n errorCode: part.content.error_code,\n },\n providerExecuted: true,\n });\n }\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: mapAnthropicStopReason({\n finishReason: response.stop_reason,\n isJsonResponseFromTool: usesJsonResponseTool,\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 cachedInputTokens: response.usage.cache_read_input_tokens ?? undefined,\n },\n request: { body: args },\n response: {\n id: response.id ?? undefined,\n modelId: response.model ?? undefined,\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata: {\n anthropic: {\n usage: response.usage as JSONObject,\n cacheCreationInputTokens:\n response.usage.cache_creation_input_tokens ?? null,\n },\n },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings, betas, usesJsonResponseTool } =\n await this.getArgs(options);\n\n // Extract citation documents for response processing\n const citationDocuments = this.extractCitationDocuments(options.prompt);\n\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.buildRequestUrl(true),\n headers: await this.getHeaders({ betas, headers: options.headers }),\n body: this.transformRequestBody(body),\n failedResponseHandler: anthropicFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n anthropicMessagesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n const contentBlocks: Record<\n number,\n | {\n type: 'tool-call';\n toolCallId: string;\n toolName: string;\n input: string;\n providerExecuted?: boolean;\n }\n | { type: 'text' | 'reasoning' }\n > = {};\n\n let providerMetadata: AnthropicProviderMetadata | undefined = undefined;\n\n let blockType:\n | 'text'\n | 'thinking'\n | 'tool_use'\n | 'redacted_thinking'\n | 'server_tool_use'\n | 'web_search_tool_result'\n | undefined = undefined;\n\n const generateId = this.generateId;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof anthropicMessagesChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n switch (value.type) {\n case 'ping': {\n return; // ignored\n }\n\n case 'content_block_start': {\n const contentBlockType = value.content_block.type;\n\n blockType = contentBlockType;\n\n switch (contentBlockType) {\n case 'text': {\n contentBlocks[value.index] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: String(value.index),\n });\n return;\n }\n\n case 'thinking': {\n contentBlocks[value.index] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(value.index),\n });\n return;\n }\n\n case 'redacted_thinking': {\n contentBlocks[value.index] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: String(value.index),\n providerMetadata: {\n anthropic: {\n redactedData: value.content_block.data,\n } satisfies AnthropicReasoningMetadata,\n },\n });\n return;\n }\n\n case 'tool_use': {\n contentBlocks[value.index] = usesJsonResponseTool\n ? { type: 'text' }\n : {\n type: 'tool-call',\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n input: '',\n };\n\n controller.enqueue(\n usesJsonResponseTool\n ? { type: 'text-start', id: String(value.index) }\n : {\n type: 'tool-input-start',\n id: value.content_block.id,\n toolName: value.content_block.name,\n },\n );\n return;\n }\n\n case 'server_tool_use': {\n if (value.content_block.name === 'web_search') {\n contentBlocks[value.index] = {\n type: 'tool-call',\n toolCallId: value.content_block.id,\n toolName: value.content_block.name,\n input: '',\n providerExecuted: true,\n };\n controller.enqueue({\n type: 'tool-input-start',\n id: value.content_block.id,\n toolName: value.content_block.name,\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n case 'web_search_tool_result': {\n const part = value.content_block;\n\n if (Array.isArray(part.content)) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.tool_use_id,\n toolName: 'web_search',\n result: part.content.map(result => ({\n url: result.url,\n title: result.title,\n pageAge: result.page_age ?? null,\n encryptedContent: result.encrypted_content,\n type: result.type,\n })),\n providerExecuted: true,\n });\n\n for (const result of part.content) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: result.url,\n title: result.title,\n providerMetadata: {\n anthropic: {\n pageAge: result.page_age ?? null,\n },\n },\n });\n }\n } else {\n controller.enqueue({\n type: 'tool-result',\n toolCallId: part.tool_use_id,\n toolName: 'web_search',\n isError: true,\n result: {\n type: 'web_search_tool_result_error',\n errorCode: part.content.error_code,\n },\n providerExecuted: true,\n });\n }\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = contentBlockType;\n throw new Error(\n `Unsupported content block type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'content_block_stop': {\n // when finishing a tool call block, send the full tool call:\n if (contentBlocks[value.index] != null) {\n const contentBlock = contentBlocks[value.index];\n\n switch (contentBlock.type) {\n case 'text': {\n controller.enqueue({\n type: 'text-end',\n id: String(value.index),\n });\n break;\n }\n\n case 'reasoning': {\n controller.enqueue({\n type: 'reasoning-end',\n id: String(value.index),\n });\n break;\n }\n\n case 'tool-call':\n // when a json response tool is used, the tool call is returned as text,\n // so we ignore the tool call content:\n if (!usesJsonResponseTool) {\n controller.enqueue({\n type: 'tool-input-end',\n id: contentBlock.toolCallId,\n });\n controller.enqueue(contentBlock);\n }\n break;\n }\n\n delete contentBlocks[value.index];\n }\n\n blockType = undefined; // reset block type\n\n return;\n }\n\n case 'content_block_delta': {\n const deltaType = value.delta.type;\n switch (deltaType) {\n case 'text_delta': {\n // when a json response tool is used, the tool call is returned as text,\n // so we ignore the text content:\n if (usesJsonResponseTool) {\n return;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: String(value.index),\n delta: value.delta.text,\n });\n\n return;\n }\n\n case 'thinking_delta': {\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(value.index),\n delta: value.delta.thinking,\n });\n\n return;\n }\n\n case 'signature_delta': {\n // signature are only supported on thinking blocks:\n if (blockType === 'thinking') {\n controller.enqueue({\n type: 'reasoning-delta',\n id: String(value.index),\n delta: '',\n providerMetadata: {\n anthropic: {\n signature: value.delta.signature,\n } satisfies AnthropicReasoningMetadata,\n },\n });\n }\n\n return;\n }\n\n case 'input_json_delta': {\n const contentBlock = contentBlocks[value.index];\n const delta = value.delta.partial_json;\n\n if (usesJsonResponseTool) {\n if (contentBlock?.type !== 'text') {\n return;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: String(value.index),\n delta,\n });\n } else {\n if (contentBlock?.type !== 'tool-call') {\n return;\n }\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: contentBlock.toolCallId,\n delta,\n });\n\n contentBlock.input += delta;\n }\n\n return;\n }\n\n case 'citations_delta': {\n const citation = value.delta.citation;\n\n processCitation(\n citation,\n citationDocuments,\n generateId,\n source => controller.enqueue(source),\n );\n // Web search citations are handled in web_search_tool_result content block\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = deltaType;\n throw new Error(\n `Unsupported delta type: ${_exhaustiveCheck}`,\n );\n }\n }\n }\n\n case 'message_start': {\n usage.inputTokens = value.message.usage.input_tokens;\n usage.cachedInputTokens =\n value.message.usage.cache_read_input_tokens ?? undefined;\n\n providerMetadata = {\n anthropic: {\n usage: value.message.usage as JSONObject,\n cacheCreationInputTokens:\n value.message.usage.cache_creation_input_tokens ?? null,\n },\n };\n\n controller.enqueue({\n type: 'response-metadata',\n id: value.message.id ?? undefined,\n modelId: value.message.model ?? undefined,\n });\n\n return;\n }\n\n case 'message_delta': {\n usage.outputTokens = value.usage.output_tokens;\n usage.totalTokens =\n (usage.inputTokens ?? 0) + (value.usage.output_tokens ?? 0);\n\n finishReason = mapAnthropicStopReason({\n finishReason: value.delta.stop_reason,\n isJsonResponseFromTool: usesJsonResponseTool,\n });\n return;\n }\n\n case 'message_stop': {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n return;\n }\n\n case 'error': {\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n default: {\n const _exhaustiveCheck: never = value;\n throw new Error(`Unsupported chunk type: ${_exhaustiveCheck}`);\n }\n }\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesResponseSchema = z.object({\n type: z.literal('message'),\n id: z.string().nullish(),\n model: z.string().nullish(),\n content: z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n citations: z.array(citationSchema).optional(),\n }),\n z.object({\n type: z.literal('thinking'),\n thinking: z.string(),\n signature: z.string(),\n }),\n z.object({\n type: z.literal('redacted_thinking'),\n data: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.unknown(),\n }),\n z.object({\n type: z.literal('server_tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.record(z.string(), z.unknown()).nullish(),\n }),\n z.object({\n type: z.literal('web_search_tool_result'),\n tool_use_id: z.string(),\n content: z.union([\n z.array(\n z.object({\n type: z.literal('web_search_result'),\n url: z.string(),\n title: z.string(),\n encrypted_content: z.string(),\n page_age: z.string().nullish(),\n }),\n ),\n z.object({\n type: z.literal('web_search_tool_result_error'),\n error_code: z.string(),\n }),\n ]),\n }),\n ]),\n ),\n stop_reason: z.string().nullish(),\n usage: z.looseObject({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_creation_input_tokens: z.number().nullish(),\n cache_read_input_tokens: z.number().nullish(),\n }),\n});\n\n// limited version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst anthropicMessagesChunkSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('message_start'),\n message: z.object({\n id: z.string().nullish(),\n model: z.string().nullish(),\n usage: z.looseObject({\n input_tokens: z.number(),\n output_tokens: z.number(),\n cache_creation_input_tokens: z.number().nullish(),\n cache_read_input_tokens: z.number().nullish(),\n }),\n }),\n }),\n z.object({\n type: z.literal('content_block_start'),\n index: z.number(),\n content_block: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('thinking'),\n thinking: z.string(),\n }),\n z.object({\n type: z.literal('tool_use'),\n id: z.string(),\n name: z.string(),\n }),\n z.object({\n type: z.literal('redacted_thinking'),\n data: z.string(),\n }),\n z.object({\n type: z.literal('server_tool_use'),\n id: z.string(),\n name: z.string(),\n input: z.record(z.string(), z.unknown()).nullish(),\n }),\n z.object({\n type: z.literal('web_search_tool_result'),\n tool_use_id: z.string(),\n content: z.union([\n z.array(\n z.object({\n type: z.literal('web_search_result'),\n url: z.string(),\n title: z.string(),\n encrypted_content: z.string(),\n page_age: z.string().nullish(),\n }),\n ),\n z.object({\n type: z.literal('web_search_tool_result_error'),\n error_code: z.string(),\n }),\n ]),\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_delta'),\n index: z.number(),\n delta: z.discriminatedUnion('type', [\n z.object({\n type: z.literal('input_json_delta'),\n partial_json: z.string(),\n }),\n z.object({\n type: z.literal('text_delta'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('thinking_delta'),\n thinking: z.string(),\n }),\n z.object({\n type: z.literal('signature_delta'),\n signature: z.string(),\n }),\n z.object({\n type: z.literal('citations_delta'),\n citation: citationSchema,\n }),\n ]),\n }),\n z.object({\n type: z.literal('content_block_stop'),\n index: z.number(),\n }),\n z.object({\n type: z.literal('error'),\n error: z.object({\n type: z.string(),\n message: z.string(),\n }),\n }),\n z.object({\n type: z.literal('message_delta'),\n delta: z.object({ stop_reason: z.string().nullish() }),\n usage: z.object({ output_tokens: z.number() }),\n }),\n z.object({\n type: z.literal('message_stop'),\n }),\n z.object({\n type: z.literal('ping'),\n }),\n]);\n\nexport const anthropicReasoningMetadataSchema = z.object({\n signature: z.string().optional(),\n redactedData: z.string().optional(),\n});\n\nexport type AnthropicReasoningMetadata = z.infer<\n typeof anthropicReasoningMetadataSchema\n>;\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport z from 'zod/v4';\n\nexport const bash_20241022 = createProviderDefinedToolFactory<\n {\n /**\n * The bash command to run. Required unless the tool is being restarted.\n */\n command: string;\n\n /**\n * Specifying true will restart this tool. Otherwise, leave this unspecified.\n */\n restart?: boolean;\n },\n {}\n>({\n id: 'anthropic.bash_20241022',\n name: 'bash',\n inputSchema: z.object({\n command: z.string(),\n restart: z.boolean().optional(),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport z from 'zod/v4';\n\nexport const bash_20250124 = createProviderDefinedToolFactory<\n {\n /**\n * The bash command to run. Required unless the tool is being restarted.\n */\n command: string;\n\n /**\n * Specifying true will restart this tool. Otherwise, leave this unspecified.\n */\n restart?: boolean;\n },\n {}\n>({\n id: 'anthropic.bash_20250124',\n name: 'bash',\n inputSchema: z.object({\n command: z.string(),\n restart: z.boolean().optional(),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const computer_20241022 = createProviderDefinedToolFactory<\n {\n /**\n * The action to perform. The available actions are:\n * - `key`: Press a key or key-combination on the keyboard.\n * - This supports xdotool's `key` syntax.\n * - Examples: \"a\", \"Return\", \"alt+Tab\", \"ctrl+s\", \"Up\", \"KP_0\" (for the numpad 0 key).\n * - `type`: Type a string of text on the keyboard.\n * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen.\n * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen.\n * - `left_click`: Click the left mouse button.\n * - `left_click_drag`: Click and drag the cursor to a specified (x, y) pixel coordinate on the screen.\n * - `right_click`: Click the right mouse button.\n * - `middle_click`: Click the middle mouse button.\n * - `double_click`: Double-click the left mouse button.\n * - `screenshot`: Take a screenshot of the screen.\n */\n action:\n | 'key'\n | 'type'\n | 'mouse_move'\n | 'left_click'\n | 'left_click_drag'\n | 'right_click'\n | 'middle_click'\n | 'double_click'\n | 'screenshot'\n | 'cursor_position';\n\n /**\n * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`.\n */\n coordinate?: number[];\n\n /**\n * Required only by `action=type` and `action=key`.\n */\n text?: string;\n },\n {\n /**\n * The width of the display being controlled by the model in pixels.\n */\n displayWidthPx: number;\n\n /**\n * The height of the display being controlled by the model in pixels.\n */\n displayHeightPx: number;\n\n /**\n * The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition.\n */\n displayNumber?: number;\n }\n>({\n id: 'anthropic.computer_20241022',\n name: 'computer',\n inputSchema: z.object({\n action: z.enum([\n 'key',\n 'type',\n 'mouse_move',\n 'left_click',\n 'left_click_drag',\n 'right_click',\n 'middle_click',\n 'double_click',\n 'screenshot',\n 'cursor_position',\n ]),\n coordinate: z.array(z.number().int()).optional(),\n text: z.string().optional(),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const computer_20250124 = createProviderDefinedToolFactory<\n {\n /**\n * - `key`: Press a key or key-combination on the keyboard.\n * - This supports xdotool's `key` syntax.\n * - Examples: \"a\", \"Return\", \"alt+Tab\", \"ctrl+s\", \"Up\", \"KP_0\" (for the numpad 0 key).\n * - `hold_key`: Hold down a key or multiple keys for a specified duration (in seconds). Supports the same syntax as `key`.\n * - `type`: Type a string of text on the keyboard.\n * - `cursor_position`: Get the current (x, y) pixel coordinate of the cursor on the screen.\n * - `mouse_move`: Move the cursor to a specified (x, y) pixel coordinate on the screen.\n * - `left_mouse_down`: Press the left mouse button.\n * - `left_mouse_up`: Release the left mouse button.\n * - `left_click`: Click the left mouse button at the specified (x, y) pixel coordinate on the screen. You can also include a key combination to hold down while clicking using the `text` parameter.\n * - `left_click_drag`: Click and drag the cursor from `start_coordinate` to a specified (x, y) pixel coordinate on the screen.\n * - `right_click`: Click the right mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `middle_click`: Click the middle mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `double_click`: Double-click the left mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `triple_click`: Triple-click the left mouse button at the specified (x, y) pixel coordinate on the screen.\n * - `scroll`: Scroll the screen in a specified direction by a specified amount of clicks of the scroll wheel, at the specified (x, y) pixel coordinate. DO NOT use PageUp/PageDown to scroll.\n * - `wait`: Wait for a specified duration (in seconds).\n * - `screenshot`: Take a screenshot of the screen.\n */\n action:\n | 'key'\n | 'hold_key'\n | 'type'\n | 'cursor_position'\n | 'mouse_move'\n | 'left_mouse_down'\n | 'left_mouse_up'\n | 'left_click'\n | 'left_click_drag'\n | 'right_click'\n | 'middle_click'\n | 'double_click'\n | 'triple_click'\n | 'scroll'\n | 'wait'\n | 'screenshot';\n\n /**\n * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to move the mouse to. Required only by `action=mouse_move` and `action=left_click_drag`.\n */\n coordinate?: [number, number];\n\n /**\n * The duration to hold the key down for. Required only by `action=hold_key` and `action=wait`.\n */\n duration?: number;\n\n /**\n * The number of 'clicks' to scroll. Required only by `action=scroll`.\n */\n scroll_amount?: number;\n\n /**\n * The direction to scroll the screen. Required only by `action=scroll`.\n */\n scroll_direction?: 'up' | 'down' | 'left' | 'right';\n\n /**\n * (x, y): The x (pixels from the left edge) and y (pixels from the top edge) coordinates to start the drag from. Required only by `action=left_click_drag`.\n */\n start_coordinate?: [number, number];\n\n /**\n * Required only by `action=type`, `action=key`, and `action=hold_key`. Can also be used by click or scroll actions to hold down keys while clicking or scrolling.\n */\n text?: string;\n },\n {\n /**\n * The width of the display being controlled by the model in pixels.\n */\n displayWidthPx: number;\n\n /**\n * The height of the display being controlled by the model in pixels.\n */\n displayHeightPx: number;\n\n /**\n * The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition.\n */\n displayNumber?: number;\n }\n>({\n id: 'anthropic.computer_20250124',\n name: 'computer',\n inputSchema: z.object({\n action: z.enum([\n 'key',\n 'hold_key',\n 'type',\n 'cursor_position',\n 'mouse_move',\n 'left_mouse_down',\n 'left_mouse_up',\n 'left_click',\n 'left_click_drag',\n 'right_click',\n 'middle_click',\n 'double_click',\n 'triple_click',\n 'scroll',\n 'wait',\n 'screenshot',\n ]),\n coordinate: z.tuple([z.number().int(), z.number().int()]).optional(),\n duration: z.number().optional(),\n scroll_amount: z.number().optional(),\n scroll_direction: z.enum(['up', 'down', 'left', 'right']).optional(),\n start_coordinate: z.tuple([z.number().int(), z.number().int()]).optional(),\n text: z.string().optional(),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const textEditor_20241022 = createProviderDefinedToolFactory<\n {\n /**\n * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`.\n */\n command: 'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit';\n\n /**\n * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`.\n */\n path: string;\n\n /**\n * Required parameter of `create` command, with the content of the file to be created.\n */\n file_text?: string;\n\n /**\n * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.\n */\n insert_line?: number;\n\n /**\n * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). Required parameter of `insert` command containing the string to insert.\n */\n new_str?: string;\n\n /**\n * Required parameter of `str_replace` command containing the string in `path` to replace.\n */\n old_str?: string;\n\n /**\n * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.\n */\n view_range?: number[];\n },\n {}\n>({\n id: 'anthropic.text_editor_20241022',\n name: 'str_replace_editor',\n inputSchema: z.object({\n command: z.enum(['view', 'create', 'str_replace', 'insert', 'undo_edit']),\n path: z.string(),\n file_text: z.string().optional(),\n insert_line: z.number().int().optional(),\n new_str: z.string().optional(),\n old_str: z.string().optional(),\n view_range: z.array(z.number().int()).optional(),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const textEditor_20250124 = createProviderDefinedToolFactory<\n {\n /**\n * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`, `undo_edit`.\n */\n command: 'view' | 'create' | 'str_replace' | 'insert' | 'undo_edit';\n\n /**\n * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`.\n */\n path: string;\n\n /**\n * Required parameter of `create` command, with the content of the file to be created.\n */\n file_text?: string;\n\n /**\n * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.\n */\n insert_line?: number;\n\n /**\n * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). Required parameter of `insert` command containing the string to insert.\n */\n new_str?: string;\n\n /**\n * Required parameter of `str_replace` command containing the string in `path` to replace.\n */\n old_str?: string;\n\n /**\n * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.\n */\n view_range?: number[];\n },\n {}\n>({\n id: 'anthropic.text_editor_20250124',\n name: 'str_replace_editor',\n inputSchema: z.object({\n command: z.enum(['view', 'create', 'str_replace', 'insert', 'undo_edit']),\n path: z.string(),\n file_text: z.string().optional(),\n insert_line: z.number().int().optional(),\n new_str: z.string().optional(),\n old_str: z.string().optional(),\n view_range: z.array(z.number().int()).optional(),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const textEditor_20250429 = createProviderDefinedToolFactory<\n {\n /**\n * The commands to run. Allowed options are: `view`, `create`, `str_replace`, `insert`.\n * Note: `undo_edit` is not supported in Claude 4 models.\n */\n command: 'view' | 'create' | 'str_replace' | 'insert';\n\n /**\n * Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`.\n */\n path: string;\n\n /**\n * Required parameter of `create` command, with the content of the file to be created.\n */\n file_text?: string;\n\n /**\n * Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`.\n */\n insert_line?: number;\n\n /**\n * Optional parameter of `str_replace` command containing the new string (if not given, no string will be added). Required parameter of `insert` command containing the string to insert.\n */\n new_str?: string;\n\n /**\n * Required parameter of `str_replace` command containing the string in `path` to replace.\n */\n old_str?: string;\n\n /**\n * Optional parameter of `view` command when `path` points to a file. If none is given, the full file is shown. If provided, the file will be shown in the indicated line number range, e.g. [11, 12] will show lines 11 and 12. Indexing at 1 to start. Setting `[start_line, -1]` shows all lines from `start_line` to the end of the file.\n */\n view_range?: number[];\n },\n {}\n>({\n id: 'anthropic.text_editor_20250429',\n name: 'str_replace_based_edit_tool',\n inputSchema: z.object({\n command: z.enum(['view', 'create', 'str_replace', 'insert']),\n path: z.string(),\n file_text: z.string().optional(),\n insert_line: z.number().int().optional(),\n new_str: z.string().optional(),\n old_str: z.string().optional(),\n view_range: z.array(z.number().int()).optional(),\n }),\n});\n","import { bash_20241022 } from './tool/bash_20241022';\nimport { bash_20250124 } from './tool/bash_20250124';\nimport { computer_20241022 } from './tool/computer_20241022';\nimport { computer_20250124 } from './tool/computer_20250124';\nimport { textEditor_20241022 } from './tool/text-editor_20241022';\nimport { textEditor_20250124 } from './tool/text-editor_20250124';\nimport { textEditor_20250429 } from './tool/text-editor_20250429';\nimport { webSearch_20250305 } from './tool/web-search_20250305';\n\nexport const anthropicTools = {\n /**\n * Creates a tool for running a bash command. Must have name \"bash\".\n *\n * Image results are supported.\n *\n * @param execute - The function to execute the tool. Optional.\n */\n bash_20241022,\n\n /**\n * Creates a tool for running a bash command. Must have name \"bash\".\n *\n * Image results are supported.\n *\n * @param execute - The function to execute the tool. Optional.\n */\n bash_20250124,\n\n /**\n * Creates a tool for editing text. Must have name \"str_replace_editor\".\n */\n textEditor_20241022,\n\n /**\n * Creates a tool for editing text. Must have name \"str_replace_editor\".\n */\n textEditor_20250124,\n\n /**\n * Creates a tool for editing text. Must have name \"str_replace_based_edit_tool\".\n * Note: This version does not support the \"undo_edit\" command.\n */\n textEditor_20250429,\n\n /**\n * Creates a tool for executing actions on a computer. Must have name \"computer\".\n *\n * Image results are supported.\n *\n * @param displayWidthPx - The width of the display being controlled by the model in pixels.\n * @param displayHeightPx - The height of the display being controlled by the model in pixels.\n * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition.\n */\n computer_20241022,\n\n /**\n * Creates a tool for executing actions on a computer. Must have name \"computer\".\n *\n * Image results are supported.\n *\n * @param displayWidthPx - The width of the display being controlled by the model in pixels.\n * @param displayHeightPx - The height of the display being controlled by the model in pixels.\n * @param displayNumber - The display number to control (only relevant for X11 environments). If specified, the tool will be provided a display number in the tool definition.\n * @param execute - The function to execute the tool. Optional.\n */\n computer_20250124,\n\n /**\n * Creates a web search tool that gives Claude direct access to real-time web content.\n * Must have name \"web_search\".\n *\n * @param maxUses - Maximum number of web searches Claude can perform during the conversation.\n * @param allowedDomains - Optional list of domains that Claude is allowed to search.\n * @param blockedDomains - Optional list of domains that Claude should avoid when searching.\n * @param userLocation - Optional user location information to provide geographically relevant search results.\n */\n webSearch_20250305,\n};\n","import {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport { AnthropicMessagesModelId } from './anthropic-messages-options';\nimport { anthropicTools } from './anthropic-tools';\n\nexport interface AnthropicProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: AnthropicMessagesModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: AnthropicMessagesModelId): LanguageModelV2;\n\n chat(modelId: AnthropicMessagesModelId): LanguageModelV2;\n\n messages(modelId: AnthropicMessagesModelId): LanguageModelV2;\n\n /**\nAnthropic-specific computer use tool.\n */\n tools: typeof anthropicTools;\n}\n\nexport interface AnthropicProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.anthropic.com/v1`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `x-api-key` header.\nIt defaults to the `ANTHROPIC_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\n/**\nCreate an Anthropic provider instance.\n */\nexport function createAnthropic(\n options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.anthropic.com/v1';\n\n const getHeaders = () => ({\n 'anthropic-version': '2023-06-01',\n 'x-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'ANTHROPIC_API_KEY',\n description: 'Anthropic',\n }),\n ...options.headers,\n });\n\n const createChatModel = (modelId: AnthropicMessagesModelId) =>\n new AnthropicMessagesLanguageModel(modelId, {\n provider: 'anthropic.messages',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId ?? generateId,\n supportedUrls: () => ({\n 'image/*': [/^https?:\\/\\/.*$/],\n }),\n });\n\n const provider = function (modelId: AnthropicMessagesModelId) {\n if (new.target) {\n throw new Error(\n 'The Anthropic model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.messages = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n provider.tools = anthropicTools;\n\n return provider;\n}\n\n/**\nDefault Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n","import { JSONSchema7Definition } from '@ai-sdk/provider';\n\n/**\n * Converts JSON Schema 7 to OpenAPI Schema 3.0\n */\nexport function convertJSONSchemaToOpenAPISchema(\n jsonSchema: JSONSchema7Definition,\n): unknown {\n // parameters need to be undefined if they are empty objects:\n if (isEmptyObjectSchema(jsonSchema)) {\n return undefined;\n }\n\n if (typeof jsonSchema === 'boolean') {\n return { type: 'boolean', properties: {} };\n }\n\n const {\n type,\n description,\n required,\n properties,\n items,\n allOf,\n anyOf,\n oneOf,\n format,\n const: constValue,\n minLength,\n enum: enumValues,\n } = jsonSchema;\n\n const result: Record<string, unknown> = {};\n\n if (description) result.description = description;\n if (required) result.required = required;\n if (format) result.format = format;\n\n if (constValue !== undefined) {\n result.enum = [constValue];\n }\n\n // Handle type\n if (type) {\n if (Array.isArray(type)) {\n if (type.includes('null')) {\n result.type = type.filter(t => t !== 'null')[0];\n result.nullable = true;\n } else {\n result.type = type;\n }\n } else if (type === 'null') {\n result.type = 'null';\n } else {\n result.type = type;\n }\n }\n\n // Handle enum\n if (enumValues !== undefined) {\n result.enum = enumValues;\n }\n\n if (properties != null) {\n result.properties = Object.entries(properties).reduce(\n (acc, [key, value]) => {\n acc[key] = convertJSONSchemaToOpenAPISchema(value);\n return acc;\n },\n {} as Record<string, unknown>,\n );\n }\n\n if (items) {\n result.items = Array.isArray(items)\n ? items.map(convertJSONSchemaToOpenAPISchema)\n : convertJSONSchemaToOpenAPISchema(items);\n }\n\n if (allOf) {\n result.allOf = allOf.map(convertJSONSchemaToOpenAPISchema);\n }\n if (anyOf) {\n // Handle cases where anyOf includes a null type\n if (\n anyOf.some(\n schema => typeof schema === 'object' && schema?.type === 'null',\n )\n ) {\n const nonNullSchemas = anyOf.filter(\n schema => !(typeof schema === 'object' && schema?.type === 'null'),\n );\n\n if (nonNullSchemas.length === 1) {\n // If there's only one non-null schema, convert it and make it nullable\n const converted = convertJSONSchemaToOpenAPISchema(nonNullSchemas[0]);\n if (typeof converted === 'object') {\n result.nullable = true;\n Object.assign(result, converted);\n }\n } else {\n // If there are multiple non-null schemas, keep them in anyOf\n result.anyOf = nonNullSchemas.map(convertJSONSchemaToOpenAPISchema);\n result.nullable = true;\n }\n } else {\n result.anyOf = anyOf.map(convertJSONSchemaToOpenAPISchema);\n }\n }\n if (oneOf) {\n result.oneOf = oneOf.map(convertJSONSchemaToOpenAPISchema);\n }\n\n if (minLength !== undefined) {\n result.minLength = minLength;\n }\n\n return result;\n}\n\nfunction isEmptyObjectSchema(jsonSchema: JSONSchema7Definition): boolean {\n return (\n jsonSchema != null &&\n typeof jsonSchema === 'object' &&\n jsonSchema.type === 'object' &&\n (jsonSchema.properties == null ||\n Object.keys(jsonSchema.properties).length === 0) &&\n !jsonSchema.additionalProperties\n );\n}\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport {\n GoogleGenerativeAIContent,\n GoogleGenerativeAIContentPart,\n GoogleGenerativeAIPrompt,\n} from './google-generative-ai-prompt';\n\nexport function convertToGoogleGenerativeAIMessages(\n prompt: LanguageModelV1Prompt,\n): GoogleGenerativeAIPrompt {\n const systemInstructionParts: Array<{ text: string }> = [];\n const contents: Array<GoogleGenerativeAIContent> = [];\n let systemMessagesAllowed = true;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (!systemMessagesAllowed) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'system messages are only supported at the beginning of the conversation',\n });\n }\n\n systemInstructionParts.push({ text: content });\n break;\n }\n\n case 'user': {\n systemMessagesAllowed = false;\n\n const parts: GoogleGenerativeAIContentPart[] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n parts.push({ text: part.text });\n break;\n }\n\n case 'image': {\n parts.push(\n part.image instanceof URL\n ? {\n fileData: {\n mimeType: part.mimeType ?? 'image/jpeg',\n fileUri: part.image.toString(),\n },\n }\n : {\n inlineData: {\n mimeType: part.mimeType ?? 'image/jpeg',\n data: convertUint8ArrayToBase64(part.image),\n },\n },\n );\n\n break;\n }\n\n case 'file': {\n parts.push(\n part.data instanceof URL\n ? {\n fileData: {\n mimeType: part.mimeType,\n fileUri: part.data.toString(),\n },\n }\n : {\n inlineData: {\n mimeType: part.mimeType,\n data: part.data,\n },\n },\n );\n\n break;\n }\n }\n }\n\n contents.push({ role: 'user', parts });\n break;\n }\n\n case 'assistant': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'model',\n parts: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text.length === 0\n ? undefined\n : { text: part.text };\n }\n\n case 'file': {\n if (part.mimeType !== 'image/png') {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Only PNG images are supported in assistant messages',\n });\n }\n\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'File data URLs in assistant messages are not supported',\n });\n }\n\n return {\n inlineData: {\n mimeType: part.mimeType,\n data: part.data,\n },\n };\n }\n\n case 'tool-call': {\n return {\n functionCall: {\n name: part.toolName,\n args: part.args,\n },\n };\n }\n }\n })\n .filter(part => part !== undefined),\n });\n break;\n }\n\n case 'tool': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'user',\n parts: content.map(part => ({\n functionResponse: {\n name: part.toolName,\n response: {\n name: part.toolName,\n content: part.result,\n },\n },\n })),\n });\n break;\n }\n }\n }\n\n return {\n systemInstruction:\n systemInstructionParts.length > 0\n ? { parts: systemInstructionParts }\n : undefined,\n contents,\n };\n}\n","export function getModelPath(modelId: string): string {\n return modelId.includes('/') ? modelId : `models/${modelId}`;\n}\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\n\nconst googleErrorDataSchema = z.object({\n error: z.object({\n code: z.number().nullable(),\n message: z.string(),\n status: z.string(),\n }),\n});\n\nexport type GoogleErrorData = z.infer<typeof googleErrorDataSchema>;\n\nexport const googleFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: googleErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertJSONSchemaToOpenAPISchema } from './convert-json-schema-to-openapi-schema';\nimport {\n DynamicRetrievalConfig,\n GoogleGenerativeAIModelId,\n} from './google-generative-ai-settings';\n\nexport function prepareTools(\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n },\n useSearchGrounding: boolean,\n dynamicRetrievalConfig: DynamicRetrievalConfig | undefined,\n modelId: GoogleGenerativeAIModelId,\n): {\n tools:\n | undefined\n | {\n functionDeclarations: Array<{\n name: string;\n description: string | undefined;\n parameters: unknown;\n }>;\n }\n | {\n googleSearchRetrieval:\n | Record<string, never>\n | { dynamicRetrievalConfig: DynamicRetrievalConfig };\n }\n | { googleSearch: Record<string, never> };\n toolConfig:\n | undefined\n | {\n functionCallingConfig: {\n mode: 'AUTO' | 'NONE' | 'ANY';\n allowedFunctionNames?: string[];\n };\n };\n toolWarnings: LanguageModelV1CallWarning[];\n} {\n const tools = mode.tools?.length ? mode.tools : undefined;\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n const isGemini2 = modelId.includes('gemini-2');\n const supportsDynamicRetrieval =\n modelId.includes('gemini-1.5-flash') && !modelId.includes('-8b');\n\n if (useSearchGrounding) {\n return {\n tools: isGemini2\n ? { googleSearch: {} }\n : {\n googleSearchRetrieval:\n !supportsDynamicRetrieval || !dynamicRetrievalConfig\n ? {}\n : { dynamicRetrievalConfig },\n },\n toolConfig: undefined,\n toolWarnings,\n };\n }\n\n if (tools == null) {\n return { tools: undefined, toolConfig: undefined, toolWarnings };\n }\n\n const functionDeclarations = [];\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n functionDeclarations.push({\n name: tool.name,\n description: tool.description ?? '',\n parameters: convertJSONSchemaToOpenAPISchema(tool.parameters),\n });\n }\n }\n\n const toolChoice = mode.toolChoice;\n\n if (toolChoice == null) {\n return {\n tools: { functionDeclarations },\n toolConfig: undefined,\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n tools: { functionDeclarations },\n toolConfig: { functionCallingConfig: { mode: 'AUTO' } },\n toolWarnings,\n };\n case 'none':\n return {\n tools: { functionDeclarations },\n toolConfig: { functionCallingConfig: { mode: 'NONE' } },\n toolWarnings,\n };\n case 'required':\n return {\n tools: { functionDeclarations },\n toolConfig: { functionCallingConfig: { mode: 'ANY' } },\n toolWarnings,\n };\n case 'tool':\n return {\n tools: { functionDeclarations },\n toolConfig: {\n functionCallingConfig: {\n mode: 'ANY',\n allowedFunctionNames: [toolChoice.toolName],\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapGoogleGenerativeAIFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: string | null | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV1FinishReason {\n switch (finishReason) {\n case 'STOP':\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'MAX_TOKENS':\n return 'length';\n case 'IMAGE_SAFETY':\n case 'RECITATION':\n case 'SAFETY':\n case 'BLOCKLIST':\n case 'PROHIBITED_CONTENT':\n case 'SPII':\n return 'content-filter';\n case 'FINISH_REASON_UNSPECIFIED':\n case 'OTHER':\n return 'other';\n case 'MALFORMED_FUNCTION_CALL':\n return 'error';\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1Source,\n LanguageModelV1StreamPart,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n Resolvable,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { convertJSONSchemaToOpenAPISchema } from './convert-json-schema-to-openapi-schema';\nimport { convertToGoogleGenerativeAIMessages } from './convert-to-google-generative-ai-messages';\nimport { getModelPath } from './get-model-path';\nimport { googleFailedResponseHandler } from './google-error';\nimport { GoogleGenerativeAIContentPart } from './google-generative-ai-prompt';\nimport {\n GoogleGenerativeAIModelId,\n InternalGoogleGenerativeAISettings,\n} from './google-generative-ai-settings';\nimport { prepareTools } from './google-prepare-tools';\nimport { mapGoogleGenerativeAIFinishReason } from './map-google-generative-ai-finish-reason';\n\ntype GoogleGenerativeAIConfig = {\n provider: string;\n baseURL: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId: () => string;\n isSupportedUrl: (url: URL) => boolean;\n};\n\nexport class GoogleGenerativeAILanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'json';\n readonly supportsImageUrls = false;\n\n get supportsStructuredOutputs() {\n return this.settings.structuredOutputs ?? true;\n }\n\n readonly modelId: GoogleGenerativeAIModelId;\n readonly settings: InternalGoogleGenerativeAISettings;\n\n private readonly config: GoogleGenerativeAIConfig;\n\n constructor(\n modelId: GoogleGenerativeAIModelId,\n settings: InternalGoogleGenerativeAISettings,\n config: GoogleGenerativeAIConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n const googleOptions = parseProviderOptions({\n provider: 'google',\n providerOptions: providerMetadata,\n schema: googleGenerativeAIProviderOptionsSchema,\n });\n\n // Add warning if includeThoughts is used with a non-Vertex Google provider\n if (\n googleOptions?.thinkingConfig?.includeThoughts === true &&\n !this.config.provider.startsWith('google.vertex.')\n ) {\n warnings.push({\n type: 'other',\n message:\n \"The 'includeThoughts' option is only supported with the Google Vertex provider \" +\n 'and might not be supported or could behave unexpectedly with the current Google provider ' +\n `(${this.config.provider}).`,\n });\n }\n\n const generationConfig = {\n // standardized settings:\n maxOutputTokens: maxTokens,\n temperature,\n topK,\n topP,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n\n // response format:\n responseMimeType:\n responseFormat?.type === 'json' ? 'application/json' : undefined,\n responseSchema:\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n // Google GenAI does not support all OpenAPI Schema features,\n // so this is needed as an escape hatch:\n this.supportsStructuredOutputs\n ? convertJSONSchemaToOpenAPISchema(responseFormat.schema)\n : undefined,\n ...(this.settings.audioTimestamp && {\n audioTimestamp: this.settings.audioTimestamp,\n }),\n\n // provider options:\n responseModalities: googleOptions?.responseModalities,\n thinkingConfig: googleOptions?.thinkingConfig,\n };\n\n const { contents, systemInstruction } =\n convertToGoogleGenerativeAIMessages(prompt);\n\n switch (type) {\n case 'regular': {\n const { tools, toolConfig, toolWarnings } = prepareTools(\n mode,\n this.settings.useSearchGrounding ?? false,\n this.settings.dynamicRetrievalConfig,\n this.modelId,\n );\n\n return {\n args: {\n generationConfig,\n contents,\n systemInstruction,\n safetySettings: this.settings.safetySettings,\n tools,\n toolConfig,\n cachedContent: this.settings.cachedContent,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n return {\n args: {\n generationConfig: {\n ...generationConfig,\n responseMimeType: 'application/json',\n responseSchema:\n mode.schema != null &&\n // Google GenAI does not support all OpenAPI Schema features,\n // so this is needed as an escape hatch:\n this.supportsStructuredOutputs\n ? convertJSONSchemaToOpenAPISchema(mode.schema)\n : undefined,\n },\n contents,\n systemInstruction,\n safetySettings: this.settings.safetySettings,\n cachedContent: this.settings.cachedContent,\n },\n warnings,\n };\n }\n\n case 'object-tool': {\n return {\n args: {\n generationConfig,\n contents,\n tools: {\n functionDeclarations: [\n {\n name: mode.tool.name,\n description: mode.tool.description ?? '',\n parameters: convertJSONSchemaToOpenAPISchema(\n mode.tool.parameters,\n ),\n },\n ],\n },\n toolConfig: { functionCallingConfig: { mode: 'ANY' } },\n safetySettings: this.settings.safetySettings,\n cachedContent: this.settings.cachedContent,\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n supportsUrl(url: URL): boolean {\n return this.config.isSupportedUrl(url);\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = JSON.stringify(args);\n\n const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n );\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/${getModelPath(\n this.modelId,\n )}:generateContent`,\n headers: mergedHeaders,\n body: args,\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(responseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { contents: rawPrompt, ...rawSettings } = args;\n const candidate = response.candidates[0];\n\n const parts =\n candidate.content == null ||\n typeof candidate.content !== 'object' ||\n !('parts' in candidate.content)\n ? []\n : candidate.content.parts;\n\n const toolCalls = getToolCallsFromParts({\n parts: parts, // Use candidateParts\n generateId: this.config.generateId,\n });\n\n const usageMetadata = response.usageMetadata;\n\n return {\n text: getTextFromParts(parts),\n reasoning: getReasoningDetailsFromParts(parts),\n files: getInlineDataParts(parts)?.map(part => ({\n data: part.inlineData.data,\n mimeType: part.inlineData.mimeType,\n })),\n toolCalls,\n finishReason: mapGoogleGenerativeAIFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls: toolCalls != null && toolCalls.length > 0,\n }),\n usage: {\n promptTokens: usageMetadata?.promptTokenCount ?? NaN,\n completionTokens: usageMetadata?.candidatesTokenCount ?? NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n warnings,\n providerMetadata: {\n google: {\n groundingMetadata: candidate.groundingMetadata ?? null,\n safetyRatings: candidate.safetyRatings ?? null,\n },\n },\n sources: extractSources({\n groundingMetadata: candidate.groundingMetadata,\n generateId: this.config.generateId,\n }),\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = JSON.stringify(args);\n const headers = combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n );\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/${getModelPath(\n this.modelId,\n )}:streamGenerateContent?alt=sse`,\n headers,\n body: args,\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(chunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { contents: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined =\n undefined;\n\n const generateId = this.config.generateId;\n let hasToolCalls = false;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof chunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n const usageMetadata = value.usageMetadata;\n\n if (usageMetadata != null) {\n usage = {\n promptTokens: usageMetadata.promptTokenCount ?? NaN,\n completionTokens: usageMetadata.candidatesTokenCount ?? NaN,\n };\n }\n\n const candidate = value.candidates?.[0];\n\n // sometimes the API returns an empty candidates array\n if (candidate == null) {\n return;\n }\n\n const content = candidate.content;\n\n // Process tool call's parts before determining finishReason to ensure hasToolCalls is properly set\n if (content != null) {\n const deltaText = getTextFromParts(content.parts);\n if (deltaText != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: deltaText,\n });\n }\n\n const reasoningDeltaText = getReasoningDetailsFromParts(\n content.parts,\n );\n if (reasoningDeltaText != null) {\n for (const part of reasoningDeltaText) {\n controller.enqueue({\n type: 'reasoning',\n textDelta: part.text,\n });\n }\n }\n\n const inlineDataParts = getInlineDataParts(content.parts);\n if (inlineDataParts != null) {\n for (const part of inlineDataParts) {\n controller.enqueue({\n type: 'file',\n mimeType: part.inlineData.mimeType,\n data: part.inlineData.data,\n });\n }\n }\n\n const toolCallDeltas = getToolCallsFromParts({\n parts: content.parts,\n generateId,\n });\n\n if (toolCallDeltas != null) {\n for (const toolCall of toolCallDeltas) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n args: toolCall.args,\n });\n\n hasToolCalls = true;\n }\n }\n }\n\n if (candidate.finishReason != null) {\n finishReason = mapGoogleGenerativeAIFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls,\n });\n\n const sources =\n extractSources({\n groundingMetadata: candidate.groundingMetadata,\n generateId,\n }) ?? [];\n\n for (const source of sources) {\n controller.enqueue({ type: 'source', source });\n }\n\n providerMetadata = {\n google: {\n groundingMetadata: candidate.groundingMetadata ?? null,\n safetyRatings: candidate.safetyRatings ?? null,\n },\n };\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body },\n };\n }\n}\n\nfunction getToolCallsFromParts({\n parts,\n generateId,\n}: {\n parts: z.infer<typeof contentSchema>['parts'];\n generateId: () => string;\n}) {\n const functionCallParts = parts?.filter(\n part => 'functionCall' in part,\n ) as Array<\n GoogleGenerativeAIContentPart & {\n functionCall: { name: string; args: unknown };\n }\n >;\n\n return functionCallParts == null || functionCallParts.length === 0\n ? undefined\n : functionCallParts.map(part => ({\n toolCallType: 'function' as const,\n toolCallId: generateId(),\n toolName: part.functionCall.name,\n args: JSON.stringify(part.functionCall.args),\n }));\n}\n\nfunction getTextFromParts(parts: z.infer<typeof contentSchema>['parts']) {\n const textParts = parts?.filter(\n part => 'text' in part && (part as any).thought !== true, // Exclude thought parts\n ) as Array<GoogleGenerativeAIContentPart & { text: string }>;\n\n return textParts == null || textParts.length === 0\n ? undefined\n : textParts.map(part => part.text).join('');\n}\n\nfunction getReasoningDetailsFromParts(\n parts: z.infer<typeof contentSchema>['parts'],\n): Array<{ type: 'text'; text: string }> | undefined {\n const reasoningParts = parts?.filter(\n part =>\n 'text' in part && (part as any).thought === true && part.text != null,\n ) as Array<\n GoogleGenerativeAIContentPart & { text: string; thought?: boolean }\n >;\n\n return reasoningParts == null || reasoningParts.length === 0\n ? undefined\n : reasoningParts.map(part => ({ type: 'text', text: part.text }));\n}\n\nfunction getInlineDataParts(parts: z.infer<typeof contentSchema>['parts']) {\n return parts?.filter(\n (\n part,\n ): part is {\n inlineData: { mimeType: string; data: string };\n } => 'inlineData' in part,\n );\n}\n\nfunction extractSources({\n groundingMetadata,\n generateId,\n}: {\n groundingMetadata: z.infer<typeof groundingMetadataSchema> | undefined | null;\n generateId: () => string;\n}): undefined | LanguageModelV1Source[] {\n return groundingMetadata?.groundingChunks\n ?.filter(\n (\n chunk,\n ): chunk is z.infer<typeof groundingChunkSchema> & {\n web: { uri: string; title?: string };\n } => chunk.web != null,\n )\n .map(chunk => ({\n sourceType: 'url',\n id: generateId(),\n url: chunk.web.uri,\n title: chunk.web.title,\n }));\n}\n\nconst contentSchema = z.object({\n parts: z\n .array(\n z.union([\n // note: order matters since text can be fully empty\n z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.unknown(),\n }),\n }),\n z.object({\n inlineData: z.object({\n mimeType: z.string(),\n data: z.string(),\n }),\n }),\n z.object({\n text: z.string().nullish(),\n thought: z.boolean().nullish(),\n }),\n ]),\n )\n .nullish(),\n});\n\n// https://ai.google.dev/gemini-api/docs/grounding\n// https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/ground-gemini#ground-to-search\nconst groundingChunkSchema = z.object({\n web: z.object({ uri: z.string(), title: z.string() }).nullish(),\n retrievedContext: z.object({ uri: z.string(), title: z.string() }).nullish(),\n});\n\nexport const groundingMetadataSchema = z.object({\n webSearchQueries: z.array(z.string()).nullish(),\n retrievalQueries: z.array(z.string()).nullish(),\n searchEntryPoint: z.object({ renderedContent: z.string() }).nullish(),\n groundingChunks: z.array(groundingChunkSchema).nullish(),\n groundingSupports: z\n .array(\n z.object({\n segment: z.object({\n startIndex: z.number().nullish(),\n endIndex: z.number().nullish(),\n text: z.string().nullish(),\n }),\n segment_text: z.string().nullish(),\n groundingChunkIndices: z.array(z.number()).nullish(),\n supportChunkIndices: z.array(z.number()).nullish(),\n confidenceScores: z.array(z.number()).nullish(),\n confidenceScore: z.array(z.number()).nullish(),\n }),\n )\n .nullish(),\n retrievalMetadata: z\n .union([\n z.object({\n webDynamicRetrievalScore: z.number(),\n }),\n z.object({}),\n ])\n .nullish(),\n});\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\nexport const safetyRatingSchema = z.object({\n category: z.string().nullish(),\n probability: z.string().nullish(),\n probabilityScore: z.number().nullish(),\n severity: z.string().nullish(),\n severityScore: z.number().nullish(),\n blocked: z.boolean().nullish(),\n});\n\nconst responseSchema = z.object({\n candidates: z.array(\n z.object({\n content: contentSchema.nullish().or(z.object({}).strict()),\n finishReason: z.string().nullish(),\n safetyRatings: z.array(safetyRatingSchema).nullish(),\n groundingMetadata: groundingMetadataSchema.nullish(),\n }),\n ),\n usageMetadata: z\n .object({\n promptTokenCount: z.number().nullish(),\n candidatesTokenCount: z.number().nullish(),\n totalTokenCount: z.number().nullish(),\n })\n .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 chunkSchema = z.object({\n candidates: z\n .array(\n z.object({\n content: contentSchema.nullish(),\n finishReason: z.string().nullish(),\n safetyRatings: z.array(safetyRatingSchema).nullish(),\n groundingMetadata: groundingMetadataSchema.nullish(),\n }),\n )\n .nullish(),\n usageMetadata: z\n .object({\n promptTokenCount: z.number().nullish(),\n candidatesTokenCount: z.number().nullish(),\n totalTokenCount: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst googleGenerativeAIProviderOptionsSchema = z.object({\n responseModalities: z.array(z.enum(['TEXT', 'IMAGE'])).nullish(),\n thinkingConfig: z\n .object({\n thinkingBudget: z.number().nullish(),\n includeThoughts: z.boolean().nullish(),\n })\n .nullish(),\n});\nexport type GoogleGenerativeAIProviderOptions = z.infer<\n typeof googleGenerativeAIProviderOptionsSchema\n>;\n","import {\n EmbeddingModelV1,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { googleFailedResponseHandler } from './google-error';\nimport {\n GoogleGenerativeAIEmbeddingModelId,\n GoogleGenerativeAIEmbeddingSettings,\n} from './google-generative-ai-embedding-settings';\n\ntype GoogleGenerativeAIEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class GoogleGenerativeAIEmbeddingModel\n implements EmbeddingModelV1<string>\n{\n readonly specificationVersion = 'v1';\n readonly modelId: GoogleGenerativeAIEmbeddingModelId;\n\n private readonly config: GoogleGenerativeAIEmbeddingConfig;\n private readonly settings: GoogleGenerativeAIEmbeddingSettings;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return 2048;\n }\n\n get supportsParallelCalls(): boolean {\n return true;\n }\n\n constructor(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n settings: GoogleGenerativeAIEmbeddingSettings,\n config: GoogleGenerativeAIEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<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 const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,\n headers: mergedHeaders,\n body: {\n requests: values.map(value => ({\n model: `models/${this.modelId}`,\n content: { role: 'user', parts: [{ text: value }] },\n outputDimensionality: this.settings.outputDimensionality,\n taskType: this.settings.taskType,\n })),\n },\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleGenerativeAITextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.embeddings.map(item => item.values),\n usage: undefined,\n rawResponse: { headers: responseHeaders },\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 googleGenerativeAITextEmbeddingResponseSchema = z.object({\n embeddings: z.array(z.object({ values: z.array(z.number()) })),\n});\n","export function isSupportedFileUrl(url: URL): boolean {\n return url\n .toString()\n .startsWith('https://generativelanguage.googleapis.com/v1beta/files/');\n}\n","import {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { GoogleGenerativeAILanguageModel } from './google-generative-ai-language-model';\nimport {\n GoogleGenerativeAIModelId,\n GoogleGenerativeAISettings,\n} from './google-generative-ai-settings';\nimport { GoogleGenerativeAIEmbeddingModel } from './google-generative-ai-embedding-model';\nimport {\n GoogleGenerativeAIEmbeddingModelId,\n GoogleGenerativeAIEmbeddingSettings,\n} from './google-generative-ai-embedding-settings';\nimport {\n EmbeddingModelV1,\n LanguageModelV1,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport { isSupportedFileUrl } from './google-supported-file-url';\n\nexport interface GoogleGenerativeAIProvider extends ProviderV1 {\n (\n modelId: GoogleGenerativeAIModelId,\n settings?: GoogleGenerativeAISettings,\n ): LanguageModelV1;\n\n languageModel(\n modelId: GoogleGenerativeAIModelId,\n settings?: GoogleGenerativeAISettings,\n ): LanguageModelV1;\n\n chat(\n modelId: GoogleGenerativeAIModelId,\n settings?: GoogleGenerativeAISettings,\n ): LanguageModelV1;\n\n /**\n * @deprecated Use `chat()` instead.\n */\n generativeAI(\n modelId: GoogleGenerativeAIModelId,\n settings?: GoogleGenerativeAISettings,\n ): LanguageModelV1;\n\n /**\n@deprecated Use `textEmbeddingModel()` instead.\n */\n embedding(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n settings?: GoogleGenerativeAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n /**\n@deprecated Use `textEmbeddingModel()` instead.\n */\n textEmbedding(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n settings?: GoogleGenerativeAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n textEmbeddingModel(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n settings?: GoogleGenerativeAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n}\n\nexport interface GoogleGenerativeAIProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://generativelanguage.googleapis.com/v1beta`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `x-goog-api-key` header.\nIt defaults to the `GOOGLE_GENERATIVE_AI_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string | undefined>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nOptional function to generate a unique ID for each request.\n */\n generateId?: () => string;\n}\n\n/**\nCreate a Google Generative AI provider instance.\n */\nexport function createGoogleGenerativeAI(\n options: GoogleGenerativeAIProviderSettings = {},\n): GoogleGenerativeAIProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n 'https://generativelanguage.googleapis.com/v1beta';\n\n const getHeaders = () => ({\n 'x-goog-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'GOOGLE_GENERATIVE_AI_API_KEY',\n description: 'Google Generative AI',\n }),\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: GoogleGenerativeAIModelId,\n settings: GoogleGenerativeAISettings = {},\n ) =>\n new GoogleGenerativeAILanguageModel(modelId, settings, {\n provider: 'google.generative-ai',\n baseURL,\n headers: getHeaders,\n generateId: options.generateId ?? generateId,\n isSupportedUrl: isSupportedFileUrl,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (\n modelId: GoogleGenerativeAIEmbeddingModelId,\n settings: GoogleGenerativeAIEmbeddingSettings = {},\n ) =>\n new GoogleGenerativeAIEmbeddingModel(modelId, settings, {\n provider: 'google.generative-ai',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (\n modelId: GoogleGenerativeAIModelId,\n settings?: GoogleGenerativeAISettings,\n ) {\n if (new.target) {\n throw new Error(\n 'The Google Generative AI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.generativeAI = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n return provider;\n}\n\n/**\nDefault Google Generative AI provider instance.\n */\nexport const google = createGoogleGenerativeAI();\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst googleErrorDataSchema = z.object({\n error: z.object({\n code: z.number().nullable(),\n message: z.string(),\n status: z.string(),\n }),\n});\n\nexport type GoogleErrorData = z.infer<typeof googleErrorDataSchema>;\n\nexport const googleFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: googleErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { z } from 'zod/v4';\n\nexport type GoogleGenerativeAIEmbeddingModelId =\n | 'gemini-embedding-001'\n | 'text-embedding-004'\n | (string & {});\n\nexport const googleGenerativeAIEmbeddingProviderOptions = z.object({\n /**\n * Optional. Optional reduced dimension for the output embedding.\n * If set, excessive values in the output embedding are truncated from the end.\n */\n outputDimensionality: z.number().optional(),\n\n /**\n * Optional. Specifies the task type for generating embeddings.\n * Supported task types:\n * - SEMANTIC_SIMILARITY: Optimized for text similarity.\n * - CLASSIFICATION: Optimized for text classification.\n * - CLUSTERING: Optimized for clustering texts based on similarity.\n * - RETRIEVAL_DOCUMENT: Optimized for document retrieval.\n * - RETRIEVAL_QUERY: Optimized for query-based retrieval.\n * - QUESTION_ANSWERING: Optimized for answering questions.\n * - FACT_VERIFICATION: Optimized for verifying factual information.\n * - CODE_RETRIEVAL_QUERY: Optimized for retrieving code blocks based on natural language queries.\n */\n taskType: z\n .enum([\n 'SEMANTIC_SIMILARITY',\n 'CLASSIFICATION',\n 'CLUSTERING',\n 'RETRIEVAL_DOCUMENT',\n 'RETRIEVAL_QUERY',\n 'QUESTION_ANSWERING',\n 'FACT_VERIFICATION',\n 'CODE_RETRIEVAL_QUERY',\n ])\n .optional(),\n});\n\nexport type GoogleGenerativeAIEmbeddingProviderOptions = z.infer<\n typeof googleGenerativeAIEmbeddingProviderOptions\n>;\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleFailedResponseHandler } from './google-error';\nimport {\n GoogleGenerativeAIEmbeddingModelId,\n googleGenerativeAIEmbeddingProviderOptions,\n} from './google-generative-ai-embedding-options';\n\ntype GoogleGenerativeAIEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class GoogleGenerativeAIEmbeddingModel\n implements EmbeddingModelV2<string>\n{\n readonly specificationVersion = 'v2';\n readonly modelId: GoogleGenerativeAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: GoogleGenerativeAIEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n constructor(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n config: GoogleGenerativeAIEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n // Parse provider options\n const googleOptions = await parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleGenerativeAIEmbeddingProviderOptions,\n });\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 const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n headers,\n );\n\n // For single embeddings, use the single endpoint (ratelimits, etc.)\n if (values.length === 1) {\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:embedContent`,\n headers: mergedHeaders,\n body: {\n model: `models/${this.modelId}`,\n content: {\n parts: [{ text: values[0] }],\n },\n outputDimensionality: googleOptions?.outputDimensionality,\n taskType: googleOptions?.taskType,\n },\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleGenerativeAISingleEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: [response.embedding.values],\n usage: undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,\n headers: mergedHeaders,\n body: {\n requests: values.map(value => ({\n model: `models/${this.modelId}`,\n content: { role: 'user', parts: [{ text: value }] },\n outputDimensionality: googleOptions?.outputDimensionality,\n taskType: googleOptions?.taskType,\n })),\n },\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleGenerativeAITextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.embeddings.map(item => item.values),\n usage: 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 googleGenerativeAITextEmbeddingResponseSchema = z.object({\n embeddings: z.array(z.object({ values: z.array(z.number()) })),\n});\n\n// Schema for single embedding response\nconst googleGenerativeAISingleEmbeddingResponseSchema = z.object({\n embedding: z.object({ values: z.array(z.number()) }),\n});\n","import { JSONSchema7Definition } from '@ai-sdk/provider';\n\n/**\n * Converts JSON Schema 7 to OpenAPI Schema 3.0\n */\nexport function convertJSONSchemaToOpenAPISchema(\n jsonSchema: JSONSchema7Definition | undefined,\n): unknown {\n // parameters need to be undefined if they are empty objects:\n if (jsonSchema == null || isEmptyObjectSchema(jsonSchema)) {\n return undefined;\n }\n\n if (typeof jsonSchema === 'boolean') {\n return { type: 'boolean', properties: {} };\n }\n\n const {\n type,\n description,\n required,\n properties,\n items,\n allOf,\n anyOf,\n oneOf,\n format,\n const: constValue,\n minLength,\n enum: enumValues,\n } = jsonSchema;\n\n const result: Record<string, unknown> = {};\n\n if (description) result.description = description;\n if (required) result.required = required;\n if (format) result.format = format;\n\n if (constValue !== undefined) {\n result.enum = [constValue];\n }\n\n // Handle type\n if (type) {\n if (Array.isArray(type)) {\n if (type.includes('null')) {\n result.type = type.filter(t => t !== 'null')[0];\n result.nullable = true;\n } else {\n result.type = type;\n }\n } else if (type === 'null') {\n result.type = 'null';\n } else {\n result.type = type;\n }\n }\n\n // Handle enum\n if (enumValues !== undefined) {\n result.enum = enumValues;\n }\n\n if (properties != null) {\n result.properties = Object.entries(properties).reduce(\n (acc, [key, value]) => {\n acc[key] = convertJSONSchemaToOpenAPISchema(value);\n return acc;\n },\n {} as Record<string, unknown>,\n );\n }\n\n if (items) {\n result.items = Array.isArray(items)\n ? items.map(convertJSONSchemaToOpenAPISchema)\n : convertJSONSchemaToOpenAPISchema(items);\n }\n\n if (allOf) {\n result.allOf = allOf.map(convertJSONSchemaToOpenAPISchema);\n }\n if (anyOf) {\n // Handle cases where anyOf includes a null type\n if (\n anyOf.some(\n schema => typeof schema === 'object' && schema?.type === 'null',\n )\n ) {\n const nonNullSchemas = anyOf.filter(\n schema => !(typeof schema === 'object' && schema?.type === 'null'),\n );\n\n if (nonNullSchemas.length === 1) {\n // If there's only one non-null schema, convert it and make it nullable\n const converted = convertJSONSchemaToOpenAPISchema(nonNullSchemas[0]);\n if (typeof converted === 'object') {\n result.nullable = true;\n Object.assign(result, converted);\n }\n } else {\n // If there are multiple non-null schemas, keep them in anyOf\n result.anyOf = nonNullSchemas.map(convertJSONSchemaToOpenAPISchema);\n result.nullable = true;\n }\n } else {\n result.anyOf = anyOf.map(convertJSONSchemaToOpenAPISchema);\n }\n }\n if (oneOf) {\n result.oneOf = oneOf.map(convertJSONSchemaToOpenAPISchema);\n }\n\n if (minLength !== undefined) {\n result.minLength = minLength;\n }\n\n return result;\n}\n\nfunction isEmptyObjectSchema(jsonSchema: JSONSchema7Definition): boolean {\n return (\n jsonSchema != null &&\n typeof jsonSchema === 'object' &&\n jsonSchema.type === 'object' &&\n (jsonSchema.properties == null ||\n Object.keys(jsonSchema.properties).length === 0) &&\n !jsonSchema.additionalProperties\n );\n}\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n GoogleGenerativeAIContent,\n GoogleGenerativeAIContentPart,\n GoogleGenerativeAIPrompt,\n} from './google-generative-ai-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToGoogleGenerativeAIMessages(\n prompt: LanguageModelV2Prompt,\n options?: { isGemmaModel?: boolean },\n): GoogleGenerativeAIPrompt {\n const systemInstructionParts: Array<{ text: string }> = [];\n const contents: Array<GoogleGenerativeAIContent> = [];\n let systemMessagesAllowed = true;\n const isGemmaModel = options?.isGemmaModel ?? false;\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n if (!systemMessagesAllowed) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'system messages are only supported at the beginning of the conversation',\n });\n }\n\n systemInstructionParts.push({ text: content });\n break;\n }\n\n case 'user': {\n systemMessagesAllowed = false;\n\n const parts: GoogleGenerativeAIContentPart[] = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n parts.push({ text: part.text });\n break;\n }\n\n case 'file': {\n // default to image/jpeg for unknown image/* types\n const mediaType =\n part.mediaType === 'image/*' ? 'image/jpeg' : part.mediaType;\n\n parts.push(\n part.data instanceof URL\n ? {\n fileData: {\n mimeType: mediaType,\n fileUri: part.data.toString(),\n },\n }\n : {\n inlineData: {\n mimeType: mediaType,\n data: convertToBase64(part.data),\n },\n },\n );\n\n break;\n }\n }\n }\n\n contents.push({ role: 'user', parts });\n break;\n }\n\n case 'assistant': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'model',\n parts: content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text.length === 0\n ? undefined\n : { text: part.text };\n }\n\n case 'file': {\n if (part.mediaType !== 'image/png') {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Only PNG images are supported in assistant messages',\n });\n }\n\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'File data URLs in assistant messages are not supported',\n });\n }\n\n return {\n inlineData: {\n mimeType: part.mediaType,\n data: convertToBase64(part.data),\n },\n };\n }\n\n case 'tool-call': {\n return {\n functionCall: {\n name: part.toolName,\n args: part.input,\n },\n };\n }\n }\n })\n .filter(part => part !== undefined),\n });\n break;\n }\n\n case 'tool': {\n systemMessagesAllowed = false;\n\n contents.push({\n role: 'user',\n parts: content.map(part => ({\n functionResponse: {\n name: part.toolName,\n response: {\n name: part.toolName,\n content: part.output.value,\n },\n },\n })),\n });\n break;\n }\n }\n }\n\n if (\n isGemmaModel &&\n systemInstructionParts.length > 0 &&\n contents.length > 0 &&\n contents[0].role === 'user'\n ) {\n const systemText = systemInstructionParts\n .map(part => part.text)\n .join('\\n\\n');\n\n contents[0].parts.unshift({ text: systemText + '\\n\\n' });\n }\n\n return {\n systemInstruction:\n systemInstructionParts.length > 0 && !isGemmaModel\n ? { parts: systemInstructionParts }\n : undefined,\n contents,\n };\n}\n","export function getModelPath(modelId: string): string {\n return modelId.includes('/') ? modelId : `models/${modelId}`;\n}\n","import { z } from 'zod/v4';\n\nexport type GoogleGenerativeAIModelId =\n // Stable models\n // https://ai.google.dev/gemini-api/docs/models/gemini\n | 'gemini-1.5-flash'\n | 'gemini-1.5-flash-latest'\n | 'gemini-1.5-flash-001'\n | 'gemini-1.5-flash-002'\n | 'gemini-1.5-flash-8b'\n | 'gemini-1.5-flash-8b-latest'\n | 'gemini-1.5-flash-8b-001'\n | 'gemini-1.5-pro'\n | 'gemini-1.5-pro-latest'\n | 'gemini-1.5-pro-001'\n | 'gemini-1.5-pro-002'\n | 'gemini-2.0-flash'\n | 'gemini-2.0-flash-001'\n | 'gemini-2.0-flash-live-001'\n | 'gemini-2.0-flash-lite'\n | 'gemini-2.0-pro-exp-02-05'\n | 'gemini-2.0-flash-thinking-exp-01-21'\n | 'gemini-2.0-flash-exp'\n | 'gemini-2.5-pro'\n | 'gemini-2.5-flash'\n | 'gemini-2.5-flash-lite'\n // Experimental models\n // https://ai.google.dev/gemini-api/docs/models/experimental-models\n | 'gemini-2.5-pro-exp-03-25'\n | 'gemini-2.5-flash-preview-04-17'\n | 'gemini-exp-1206'\n | 'gemma-3-12b-it'\n | 'gemma-3-27b-it'\n | (string & {});\n\nexport const googleGenerativeAIProviderOptions = z.object({\n responseModalities: z.array(z.enum(['TEXT', 'IMAGE'])).optional(),\n\n thinkingConfig: z\n .object({\n thinkingBudget: z.number().optional(),\n includeThoughts: z.boolean().optional(),\n })\n .optional(),\n\n /**\nOptional.\nThe name of the cached content used as context to serve the prediction.\nFormat: cachedContents/{cachedContent}\n */\n cachedContent: z.string().optional(),\n\n /**\n * Optional. Enable structured output. Default is true.\n *\n * This is useful when the JSON Schema contains elements that are\n * not supported by the OpenAPI schema version that\n * Google Generative AI uses. You can use this to disable\n * structured outputs if you need to.\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\nOptional. A list of unique safety settings for blocking unsafe content.\n */\n safetySettings: z\n .array(\n z.object({\n category: z.enum([\n 'HARM_CATEGORY_UNSPECIFIED',\n 'HARM_CATEGORY_HATE_SPEECH',\n 'HARM_CATEGORY_DANGEROUS_CONTENT',\n 'HARM_CATEGORY_HARASSMENT',\n 'HARM_CATEGORY_SEXUALLY_EXPLICIT',\n 'HARM_CATEGORY_CIVIC_INTEGRITY',\n ]),\n threshold: z.enum([\n 'HARM_BLOCK_THRESHOLD_UNSPECIFIED',\n 'BLOCK_LOW_AND_ABOVE',\n 'BLOCK_MEDIUM_AND_ABOVE',\n 'BLOCK_ONLY_HIGH',\n 'BLOCK_NONE',\n 'OFF',\n ]),\n }),\n )\n .optional(),\n\n threshold: z\n .enum([\n 'HARM_BLOCK_THRESHOLD_UNSPECIFIED',\n 'BLOCK_LOW_AND_ABOVE',\n 'BLOCK_MEDIUM_AND_ABOVE',\n 'BLOCK_ONLY_HIGH',\n 'BLOCK_NONE',\n 'OFF',\n ])\n .optional(),\n\n /**\n * Optional. Enables timestamp understanding for audio-only files.\n *\n * https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/audio-understanding\n */\n audioTimestamp: z.boolean().optional(),\n});\n\nexport type GoogleGenerativeAIProviderOptions = z.infer<\n typeof googleGenerativeAIProviderOptions\n>;\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertJSONSchemaToOpenAPISchema } from './convert-json-schema-to-openapi-schema';\nimport { GoogleGenerativeAIModelId } from './google-generative-ai-options';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n modelId: GoogleGenerativeAIModelId;\n}): {\n tools:\n | {\n functionDeclarations: Array<{\n name: string;\n description: string;\n parameters: unknown;\n }>;\n }\n | Record<string, any>\n | undefined;\n toolConfig:\n | undefined\n | {\n functionCallingConfig: {\n mode: 'AUTO' | 'NONE' | 'ANY';\n allowedFunctionNames?: string[];\n };\n };\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n const isGemini2 = modelId.includes('gemini-2');\n const supportsDynamicRetrieval =\n modelId.includes('gemini-1.5-flash') && !modelId.includes('-8b');\n\n if (tools == null) {\n return { tools: undefined, toolConfig: undefined, toolWarnings };\n }\n\n // Check for mixed tool types and add warnings\n const hasFunctionTools = tools.some(tool => tool.type === 'function');\n const hasProviderDefinedTools = tools.some(\n tool => tool.type === 'provider-defined',\n );\n\n if (hasFunctionTools && hasProviderDefinedTools) {\n toolWarnings.push({\n type: 'unsupported-tool',\n tool: tools.find(tool => tool.type === 'function')!,\n details:\n 'Cannot mix function tools with provider-defined tools in the same request. Please use either function tools or provider-defined tools, but not both.',\n });\n }\n\n if (hasProviderDefinedTools) {\n const googleTools: Record<string, any> = {};\n\n const providerDefinedTools = tools.filter(\n tool => tool.type === 'provider-defined',\n );\n providerDefinedTools.forEach(tool => {\n switch (tool.id) {\n case 'google.google_search':\n if (isGemini2) {\n googleTools.googleSearch = {};\n } else if (supportsDynamicRetrieval) {\n // For non-Gemini-2 models that don't support dynamic retrieval, use basic googleSearchRetrieval\n googleTools.googleSearchRetrieval = {\n dynamicRetrievalConfig: {\n mode: tool.args.mode as\n | 'MODE_DYNAMIC'\n | 'MODE_UNSPECIFIED'\n | undefined,\n dynamicThreshold: tool.args.dynamicThreshold as\n | number\n | undefined,\n },\n };\n } else {\n googleTools.googleSearchRetrieval = {};\n }\n break;\n case 'google.url_context':\n if (isGemini2) {\n googleTools.urlContext = {};\n } else {\n toolWarnings.push({\n type: 'unsupported-tool',\n tool,\n details:\n 'The URL context tool is not supported with other Gemini models than Gemini 2.',\n });\n }\n break;\n case 'google.code_execution':\n if (isGemini2) {\n googleTools.codeExecution = {};\n } else {\n toolWarnings.push({\n type: 'unsupported-tool',\n tool,\n details:\n 'The code execution tools is not supported with other Gemini models than Gemini 2.',\n });\n }\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n });\n\n return {\n tools: Object.keys(googleTools).length > 0 ? googleTools : undefined,\n toolConfig: undefined,\n toolWarnings,\n };\n }\n\n const functionDeclarations = [];\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n functionDeclarations.push({\n name: tool.name,\n description: tool.description ?? '',\n parameters: convertJSONSchemaToOpenAPISchema(tool.inputSchema),\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return {\n tools: { functionDeclarations },\n toolConfig: undefined,\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n return {\n tools: { functionDeclarations },\n toolConfig: { functionCallingConfig: { mode: 'AUTO' } },\n toolWarnings,\n };\n case 'none':\n return {\n tools: { functionDeclarations },\n toolConfig: { functionCallingConfig: { mode: 'NONE' } },\n toolWarnings,\n };\n case 'required':\n return {\n tools: { functionDeclarations },\n toolConfig: { functionCallingConfig: { mode: 'ANY' } },\n toolWarnings,\n };\n case 'tool':\n return {\n tools: { functionDeclarations },\n toolConfig: {\n functionCallingConfig: {\n mode: 'ANY',\n allowedFunctionNames: [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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapGoogleGenerativeAIFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: string | null | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'STOP':\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'MAX_TOKENS':\n return 'length';\n case 'IMAGE_SAFETY':\n case 'RECITATION':\n case 'SAFETY':\n case 'BLOCKLIST':\n case 'PROHIBITED_CONTENT':\n case 'SPII':\n return 'content-filter';\n case 'FINISH_REASON_UNSPECIFIED':\n case 'OTHER':\n return 'other';\n case 'MALFORMED_FUNCTION_CALL':\n return 'error';\n default:\n return 'unknown';\n }\n}\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://ai.google.dev/gemini-api/docs/google-search\n// https://ai.google.dev/api/generate-content#GroundingSupport\n// https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-search\n\nexport const groundingChunkSchema = z.object({\n web: z.object({ uri: z.string(), title: z.string() }).nullish(),\n retrievedContext: z.object({ uri: z.string(), title: z.string() }).nullish(),\n});\n\nexport const groundingMetadataSchema = z.object({\n webSearchQueries: z.array(z.string()).nullish(),\n retrievalQueries: z.array(z.string()).nullish(),\n searchEntryPoint: z.object({ renderedContent: z.string() }).nullish(),\n groundingChunks: z.array(groundingChunkSchema).nullish(),\n groundingSupports: z\n .array(\n z.object({\n segment: z.object({\n startIndex: z.number().nullish(),\n endIndex: z.number().nullish(),\n text: z.string().nullish(),\n }),\n segment_text: z.string().nullish(),\n groundingChunkIndices: z.array(z.number()).nullish(),\n supportChunkIndices: z.array(z.number()).nullish(),\n confidenceScores: z.array(z.number()).nullish(),\n confidenceScore: z.array(z.number()).nullish(),\n }),\n )\n .nullish(),\n retrievalMetadata: z\n .union([\n z.object({\n webDynamicRetrievalScore: z.number(),\n }),\n z.object({}),\n ])\n .nullish(),\n});\n\nexport const googleSearch = createProviderDefinedToolFactory<\n {},\n {\n /**\n * The mode of the predictor to be used in dynamic retrieval. The following modes are supported:\n * - MODE_DYNAMIC: Run retrieval only when system decides it is necessary\n * - MODE_UNSPECIFIED: Always trigger retrieval\n * @default MODE_UNSPECIFIED\n */\n mode?: 'MODE_DYNAMIC' | 'MODE_UNSPECIFIED';\n\n /**\n * The threshold to be used in dynamic retrieval (if not set, a system default value is used).\n */\n dynamicThreshold?: number;\n }\n>({\n id: 'google.google_search',\n name: 'google_search',\n inputSchema: z.object({\n mode: z\n .enum(['MODE_DYNAMIC', 'MODE_UNSPECIFIED'])\n .default('MODE_UNSPECIFIED'),\n dynamicThreshold: z.number().default(1),\n }),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://ai.google.dev/api/generate-content#UrlRetrievalMetadata\nconst urlMetadataSchema = z.object({\n retrievedUrl: z.string(),\n urlRetrievalStatus: z.string(),\n});\n\nexport const urlContextMetadataSchema = z.object({\n urlMetadata: z.array(urlMetadataSchema),\n});\n\nexport const urlContext = createProviderDefinedToolFactory<\n {\n // Url context does not have any input schema, it will directly use the url from the prompt\n },\n {}\n>({\n id: 'google.url_context',\n name: 'url_context',\n inputSchema: z.object({}),\n});\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Source,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n Resolvable,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertJSONSchemaToOpenAPISchema } from './convert-json-schema-to-openapi-schema';\nimport { convertToGoogleGenerativeAIMessages } from './convert-to-google-generative-ai-messages';\nimport { getModelPath } from './get-model-path';\nimport { googleFailedResponseHandler } from './google-error';\nimport { GoogleGenerativeAIContentPart } from './google-generative-ai-prompt';\nimport {\n GoogleGenerativeAIModelId,\n googleGenerativeAIProviderOptions,\n} from './google-generative-ai-options';\nimport { prepareTools } from './google-prepare-tools';\nimport { mapGoogleGenerativeAIFinishReason } from './map-google-generative-ai-finish-reason';\nimport {\n groundingChunkSchema,\n groundingMetadataSchema,\n} from './tool/google-search';\nimport { urlContextMetadataSchema } from './tool/url-context';\n\ntype GoogleGenerativeAIConfig = {\n provider: string;\n baseURL: string;\n headers: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId: () => string;\n\n /**\n * The supported URLs for the model.\n */\n supportedUrls?: () => LanguageModelV2['supportedUrls'];\n};\n\nexport class GoogleGenerativeAILanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: GoogleGenerativeAIModelId;\n\n private readonly config: GoogleGenerativeAIConfig;\n private readonly generateId: () => string;\n\n constructor(\n modelId: GoogleGenerativeAIModelId,\n config: GoogleGenerativeAIConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n this.generateId = config.generateId ?? generateId;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportedUrls() {\n return this.config.supportedUrls?.() ?? {};\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 }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const googleOptions = await parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleGenerativeAIProviderOptions,\n });\n\n // Add warning if includeThoughts is used with a non-Vertex Google provider\n if (\n googleOptions?.thinkingConfig?.includeThoughts === true &&\n !this.config.provider.startsWith('google.vertex.')\n ) {\n warnings.push({\n type: 'other',\n message:\n \"The 'includeThoughts' option is only supported with the Google Vertex provider \" +\n 'and might not be supported or could behave unexpectedly with the current Google provider ' +\n `(${this.config.provider}).`,\n });\n }\n\n const isGemmaModel = this.modelId.toLowerCase().startsWith('gemma-');\n\n const { contents, systemInstruction } = convertToGoogleGenerativeAIMessages(\n prompt,\n { isGemmaModel },\n );\n\n const {\n tools: googleTools,\n toolConfig: googleToolConfig,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n modelId: this.modelId,\n });\n\n return {\n args: {\n generationConfig: {\n // standardized settings:\n maxOutputTokens,\n temperature,\n topK,\n topP,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n\n // response format:\n responseMimeType:\n responseFormat?.type === 'json' ? 'application/json' : undefined,\n responseSchema:\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n // Google GenAI does not support all OpenAPI Schema features,\n // so this is needed as an escape hatch:\n // TODO convert into provider option\n (googleOptions?.structuredOutputs ?? true)\n ? convertJSONSchemaToOpenAPISchema(responseFormat.schema)\n : undefined,\n ...(googleOptions?.audioTimestamp && {\n audioTimestamp: googleOptions.audioTimestamp,\n }),\n\n // provider options:\n responseModalities: googleOptions?.responseModalities,\n thinkingConfig: googleOptions?.thinkingConfig,\n },\n contents,\n systemInstruction: isGemmaModel ? undefined : systemInstruction,\n safetySettings: googleOptions?.safetySettings,\n tools: googleTools,\n toolConfig: googleToolConfig,\n cachedContent: googleOptions?.cachedContent,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = JSON.stringify(args);\n\n const mergedHeaders = combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n );\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/${getModelPath(\n this.modelId,\n )}:generateContent`,\n headers: mergedHeaders,\n body: args,\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(responseSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const candidate = response.candidates[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // map ordered parts to content:\n const parts = candidate.content?.parts ?? [];\n\n const usageMetadata = response.usageMetadata;\n\n // Associates a code execution result with its preceding call.\n let lastCodeExecutionToolCallId: string | undefined;\n\n // Build content array from all parts\n for (const part of parts) {\n if ('executableCode' in part && part.executableCode?.code) {\n const toolCallId = this.config.generateId();\n lastCodeExecutionToolCallId = toolCallId;\n\n content.push({\n type: 'tool-call',\n toolCallId,\n toolName: 'code_execution',\n input: JSON.stringify(part.executableCode),\n providerExecuted: true,\n });\n } else if ('codeExecutionResult' in part && part.codeExecutionResult) {\n content.push({\n type: 'tool-result',\n // Assumes a result directly follows its corresponding call part.\n toolCallId: lastCodeExecutionToolCallId!,\n toolName: 'code_execution',\n result: {\n outcome: part.codeExecutionResult.outcome,\n output: part.codeExecutionResult.output,\n },\n providerExecuted: true,\n });\n // Clear the ID after use to avoid accidental reuse.\n lastCodeExecutionToolCallId = undefined;\n } else if ('text' in part && part.text != null && part.text.length > 0) {\n if (part.thought === true) {\n content.push({ type: 'reasoning', text: part.text });\n } else {\n content.push({ type: 'text', text: part.text });\n }\n } else if ('functionCall' in part) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: this.config.generateId(),\n toolName: part.functionCall.name,\n input: JSON.stringify(part.functionCall.args),\n });\n } else if ('inlineData' in part) {\n content.push({\n type: 'file' as const,\n data: part.inlineData.data,\n mediaType: part.inlineData.mimeType,\n });\n }\n }\n\n const sources =\n extractSources({\n groundingMetadata: candidate.groundingMetadata,\n generateId: this.config.generateId,\n }) ?? [];\n for (const source of sources) {\n content.push(source);\n }\n\n return {\n content,\n finishReason: mapGoogleGenerativeAIFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls: content.some(part => part.type === 'tool-call'),\n }),\n usage: {\n inputTokens: usageMetadata?.promptTokenCount ?? undefined,\n outputTokens: usageMetadata?.candidatesTokenCount ?? undefined,\n totalTokens: usageMetadata?.totalTokenCount ?? undefined,\n reasoningTokens: usageMetadata?.thoughtsTokenCount ?? undefined,\n cachedInputTokens: usageMetadata?.cachedContentTokenCount ?? undefined,\n },\n warnings,\n providerMetadata: {\n google: {\n groundingMetadata: candidate.groundingMetadata ?? null,\n urlContextMetadata: candidate.urlContextMetadata ?? null,\n safetyRatings: candidate.safetyRatings ?? null,\n usageMetadata: usageMetadata ?? null,\n },\n },\n request: { body },\n response: {\n // TODO timestamp, model id, id\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = JSON.stringify(args);\n const headers = combineHeaders(\n await resolve(this.config.headers),\n options.headers,\n );\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/${getModelPath(\n this.modelId,\n )}:streamGenerateContent?alt=sse`,\n headers,\n body: args,\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(chunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let providerMetadata: SharedV2ProviderMetadata | undefined = undefined;\n\n const generateId = this.config.generateId;\n let hasToolCalls = false;\n\n // Track active blocks to group consecutive parts of same type\n let currentTextBlockId: string | null = null;\n let currentReasoningBlockId: string | null = null;\n let blockCounter = 0;\n\n // Track emitted sources to prevent duplicates\n const emittedSourceUrls = new Set<string>();\n // Associates a code execution result with its preceding call.\n let lastCodeExecutionToolCallId: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof chunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n const usageMetadata = value.usageMetadata;\n\n if (usageMetadata != null) {\n usage.inputTokens = usageMetadata.promptTokenCount ?? undefined;\n usage.outputTokens =\n usageMetadata.candidatesTokenCount ?? undefined;\n usage.totalTokens = usageMetadata.totalTokenCount ?? undefined;\n usage.reasoningTokens =\n usageMetadata.thoughtsTokenCount ?? undefined;\n usage.cachedInputTokens =\n usageMetadata.cachedContentTokenCount ?? undefined;\n }\n\n const candidate = value.candidates?.[0];\n\n // sometimes the API returns an empty candidates array\n if (candidate == null) {\n return;\n }\n\n const content = candidate.content;\n\n const sources = extractSources({\n groundingMetadata: candidate.groundingMetadata,\n generateId,\n });\n if (sources != null) {\n for (const source of sources) {\n if (\n source.sourceType === 'url' &&\n !emittedSourceUrls.has(source.url)\n ) {\n emittedSourceUrls.add(source.url);\n controller.enqueue(source);\n }\n }\n }\n\n // Process tool call's parts before determining finishReason to ensure hasToolCalls is properly set\n if (content != null) {\n // Process text parts individually to handle reasoning parts\n const parts = content.parts ?? [];\n for (const part of parts) {\n if ('executableCode' in part && part.executableCode?.code) {\n const toolCallId = generateId();\n lastCodeExecutionToolCallId = toolCallId;\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: 'code_execution',\n input: JSON.stringify(part.executableCode),\n providerExecuted: true,\n });\n\n hasToolCalls = true;\n } else if (\n 'codeExecutionResult' in part &&\n part.codeExecutionResult\n ) {\n // Assumes a result directly follows its corresponding call part.\n const toolCallId = lastCodeExecutionToolCallId;\n\n if (toolCallId) {\n controller.enqueue({\n type: 'tool-result',\n toolCallId,\n toolName: 'code_execution',\n result: {\n outcome: part.codeExecutionResult.outcome,\n output: part.codeExecutionResult.output,\n },\n providerExecuted: true,\n });\n // Clear the ID after use.\n lastCodeExecutionToolCallId = undefined;\n }\n } else if (\n 'text' in part &&\n part.text != null &&\n part.text.length > 0\n ) {\n if (part.thought === true) {\n // End any active text block before starting reasoning\n if (currentTextBlockId !== null) {\n controller.enqueue({\n type: 'text-end',\n id: currentTextBlockId,\n });\n currentTextBlockId = null;\n }\n\n // Start new reasoning block if not already active\n if (currentReasoningBlockId === null) {\n currentReasoningBlockId = String(blockCounter++);\n controller.enqueue({\n type: 'reasoning-start',\n id: currentReasoningBlockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: currentReasoningBlockId,\n delta: part.text,\n });\n } else {\n // End any active reasoning block before starting text\n if (currentReasoningBlockId !== null) {\n controller.enqueue({\n type: 'reasoning-end',\n id: currentReasoningBlockId,\n });\n currentReasoningBlockId = null;\n }\n\n // Start new text block if not already active\n if (currentTextBlockId === null) {\n currentTextBlockId = String(blockCounter++);\n controller.enqueue({\n type: 'text-start',\n id: currentTextBlockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: currentTextBlockId,\n delta: part.text,\n });\n }\n }\n }\n\n const inlineDataParts = getInlineDataParts(content.parts);\n if (inlineDataParts != null) {\n for (const part of inlineDataParts) {\n controller.enqueue({\n type: 'file',\n mediaType: part.inlineData.mimeType,\n data: part.inlineData.data,\n });\n }\n }\n\n const toolCallDeltas = getToolCallsFromParts({\n parts: content.parts,\n generateId,\n });\n\n if (toolCallDeltas != null) {\n for (const toolCall of toolCallDeltas) {\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.toolCallId,\n toolName: toolCall.toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.toolCallId,\n delta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n input: toolCall.args,\n });\n\n hasToolCalls = true;\n }\n }\n }\n\n if (candidate.finishReason != null) {\n finishReason = mapGoogleGenerativeAIFinishReason({\n finishReason: candidate.finishReason,\n hasToolCalls,\n });\n\n providerMetadata = {\n google: {\n groundingMetadata: candidate.groundingMetadata ?? null,\n urlContextMetadata: candidate.urlContextMetadata ?? null,\n safetyRatings: candidate.safetyRatings ?? null,\n },\n };\n if (usageMetadata != null) {\n providerMetadata.google.usageMetadata = usageMetadata;\n }\n }\n },\n\n flush(controller) {\n // Close any open blocks before finishing\n if (currentTextBlockId !== null) {\n controller.enqueue({\n type: 'text-end',\n id: currentTextBlockId,\n });\n }\n if (currentReasoningBlockId !== null) {\n controller.enqueue({\n type: 'reasoning-end',\n id: currentReasoningBlockId,\n });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n response: { headers: responseHeaders },\n request: { body },\n };\n }\n}\n\nfunction getToolCallsFromParts({\n parts,\n generateId,\n}: {\n parts: z.infer<typeof contentSchema>['parts'];\n generateId: () => string;\n}) {\n const functionCallParts = parts?.filter(\n part => 'functionCall' in part,\n ) as Array<\n GoogleGenerativeAIContentPart & {\n functionCall: { name: string; args: unknown };\n }\n >;\n\n return functionCallParts == null || functionCallParts.length === 0\n ? undefined\n : functionCallParts.map(part => ({\n type: 'tool-call' as const,\n toolCallId: generateId(),\n toolName: part.functionCall.name,\n args: JSON.stringify(part.functionCall.args),\n }));\n}\n\nfunction getTextFromParts(parts: z.infer<typeof contentSchema>['parts']) {\n const textParts = parts?.filter(part => 'text' in part) as Array<\n GoogleGenerativeAIContentPart & { text: string }\n >;\n\n return textParts == null || textParts.length === 0\n ? undefined\n : textParts.map(part => part.text).join('');\n}\n\nfunction getInlineDataParts(parts: z.infer<typeof contentSchema>['parts']) {\n return parts?.filter(\n (\n part,\n ): part is {\n inlineData: { mimeType: string; data: string };\n } => 'inlineData' in part,\n );\n}\n\nfunction extractSources({\n groundingMetadata,\n generateId,\n}: {\n groundingMetadata: z.infer<typeof groundingMetadataSchema> | undefined | null;\n generateId: () => string;\n}): undefined | LanguageModelV2Source[] {\n return groundingMetadata?.groundingChunks\n ?.filter(\n (\n chunk,\n ): chunk is z.infer<typeof groundingChunkSchema> & {\n web: { uri: string; title?: string };\n } => chunk.web != null,\n )\n .map(chunk => ({\n type: 'source',\n sourceType: 'url',\n id: generateId(),\n url: chunk.web.uri,\n title: chunk.web.title,\n }));\n}\n\nconst contentSchema = z.object({\n parts: z\n .array(\n z.union([\n // note: order matters since text can be fully empty\n z.object({\n functionCall: z.object({\n name: z.string(),\n args: z.unknown(),\n }),\n }),\n z.object({\n inlineData: z.object({\n mimeType: z.string(),\n data: z.string(),\n }),\n }),\n z.object({\n executableCode: z\n .object({\n language: z.string(),\n code: z.string(),\n })\n .nullish(),\n codeExecutionResult: z\n .object({\n outcome: z.string(),\n output: z.string(),\n })\n .nullish(),\n text: z.string().nullish(),\n thought: z.boolean().nullish(),\n }),\n ]),\n )\n .nullish(),\n});\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\nexport const safetyRatingSchema = z.object({\n category: z.string().nullish(),\n probability: z.string().nullish(),\n probabilityScore: z.number().nullish(),\n severity: z.string().nullish(),\n severityScore: z.number().nullish(),\n blocked: z.boolean().nullish(),\n});\n\nconst usageSchema = z.object({\n cachedContentTokenCount: z.number().nullish(),\n thoughtsTokenCount: z.number().nullish(),\n promptTokenCount: z.number().nullish(),\n candidatesTokenCount: z.number().nullish(),\n totalTokenCount: z.number().nullish(),\n});\n\nconst responseSchema = z.object({\n candidates: z.array(\n z.object({\n content: contentSchema.nullish().or(z.object({}).strict()),\n finishReason: z.string().nullish(),\n safetyRatings: z.array(safetyRatingSchema).nullish(),\n groundingMetadata: groundingMetadataSchema.nullish(),\n urlContextMetadata: urlContextMetadataSchema.nullish(),\n }),\n ),\n usageMetadata: 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 chunkSchema = z.object({\n candidates: z\n .array(\n z.object({\n content: contentSchema.nullish(),\n finishReason: z.string().nullish(),\n safetyRatings: z.array(safetyRatingSchema).nullish(),\n groundingMetadata: groundingMetadataSchema.nullish(),\n urlContextMetadata: urlContextMetadataSchema.nullish(),\n }),\n )\n .nullish(),\n usageMetadata: usageSchema.nullish(),\n});\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * A tool that enables the model to generate and run Python code.\n *\n * @note Ensure the selected model supports Code Execution.\n * Multi-tool usage with the code execution tool is typically compatible with Gemini >=2 models.\n *\n * @see https://ai.google.dev/gemini-api/docs/code-execution (Google AI)\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/code-execution-api (Vertex AI)\n */\nexport const codeExecution = createProviderDefinedToolFactoryWithOutputSchema<\n {\n language: string;\n code: string;\n },\n {\n outcome: string;\n output: string;\n },\n {}\n>({\n id: 'google.code_execution',\n name: 'code_execution',\n inputSchema: z.object({\n language: z.string().describe('The programming language of the code.'),\n code: z.string().describe('The code to be executed.'),\n }),\n outputSchema: z.object({\n outcome: z\n .string()\n .describe('The outcome of the execution (e.g., \"OUTCOME_OK\").'),\n output: z.string().describe('The output from the code execution.'),\n }),\n});\n","import { codeExecution } from './tool/code-execution';\nimport { googleSearch } from './tool/google-search';\nimport { urlContext } from './tool/url-context';\n\nexport const googleTools = {\n /**\n * Creates a Google search tool that gives Google direct access to real-time web content.\n * Must have name \"google_search\".\n */\n googleSearch,\n\n /**\n * Creates a URL context tool that gives Google direct access to real-time web content.\n * Must have name \"url_context\".\n */\n urlContext,\n /**\n * A tool that enables the model to generate and run Python code.\n * Must have name \"code_execution\".\n *\n * @note Ensure the selected model supports Code Execution.\n * Multi-tool usage with the code execution tool is typically compatible with Gemini >=2 models.\n *\n * @see https://ai.google.dev/gemini-api/docs/code-execution (Google AI)\n * @see https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/code-execution-api (Vertex AI)\n */\n codeExecution,\n};\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n resolve,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleFailedResponseHandler } from './google-error';\nimport {\n GoogleGenerativeAIImageModelId,\n GoogleGenerativeAIImageSettings,\n} from './google-generative-ai-image-settings';\nimport { FetchFunction, Resolvable } from '@ai-sdk/provider-utils';\n\ninterface GoogleGenerativeAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers?: Resolvable<Record<string, string | undefined>>;\n fetch?: FetchFunction;\n generateId?: () => string;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GoogleGenerativeAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n // https://ai.google.dev/gemini-api/docs/imagen#imagen-model\n return this.settings.maxImagesPerCall ?? 4;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GoogleGenerativeAIImageModelId,\n private readonly settings: GoogleGenerativeAIImageSettings,\n private readonly config: GoogleGenerativeAIImageModelConfig,\n ) {}\n\n async doGenerate(\n options: Parameters<ImageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<ImageModelV2['doGenerate']>>> {\n const {\n prompt,\n n = 1,\n size = '1024x1024',\n aspectRatio = '1:1',\n seed,\n providerOptions,\n headers,\n abortSignal,\n } = options;\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'size',\n details:\n 'This model does not support the `size` option. Use `aspectRatio` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n details:\n 'This model does not support the `seed` option through this provider.',\n });\n }\n\n const googleOptions = await parseProviderOptions({\n provider: 'google',\n providerOptions,\n schema: googleImageProviderOptionsSchema,\n });\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n const parameters: Record<string, unknown> = {\n sampleCount: n,\n };\n\n if (aspectRatio != null) {\n parameters.aspectRatio = aspectRatio;\n }\n\n if (googleOptions) {\n Object.assign(parameters, googleOptions);\n }\n\n const body = {\n instances: [{ prompt }],\n parameters,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi<{\n predictions: Array<{ bytesBase64Encoded: string }>;\n }>({\n url: `${this.config.baseURL}/models/${this.modelId}:predict`,\n headers: combineHeaders(await resolve(this.config.headers), headers),\n body,\n failedResponseHandler: googleFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n googleImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n return {\n images: response.predictions.map(\n (p: { bytesBase64Encoded: string }) => p.bytesBase64Encoded,\n ),\n warnings: warnings ?? [],\n providerMetadata: {\n google: {\n images: response.predictions.map(prediction => ({\n // Add any prediction-specific metadata here\n })),\n },\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\n// minimal version of the schema\nconst googleImageResponseSchema = z.object({\n predictions: z\n .array(z.object({ bytesBase64Encoded: z.string() }))\n .default([]),\n});\n\n// Note: For the initial GA launch of Imagen 3, safety filters are not configurable.\n// https://ai.google.dev/gemini-api/docs/imagen#imagen-model\nconst googleImageProviderOptionsSchema = z.object({\n personGeneration: z\n .enum(['dont_allow', 'allow_adult', 'allow_all'])\n .nullish(),\n aspectRatio: z.enum(['1:1', '3:4', '4:3', '9:16', '16:9']).nullish(),\n});\n\nexport type GoogleGenerativeAIImageProviderOptions = z.infer<\n typeof googleImageProviderOptionsSchema\n>;\n","import {\n EmbeddingModelV2,\n LanguageModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { GoogleGenerativeAIEmbeddingModel } from './google-generative-ai-embedding-model';\nimport { GoogleGenerativeAIEmbeddingModelId } from './google-generative-ai-embedding-options';\nimport { GoogleGenerativeAILanguageModel } from './google-generative-ai-language-model';\nimport { GoogleGenerativeAIModelId } from './google-generative-ai-options';\nimport { googleTools } from './google-tools';\n\nimport {\n GoogleGenerativeAIImageSettings,\n GoogleGenerativeAIImageModelId,\n} from './google-generative-ai-image-settings';\nimport { GoogleGenerativeAIImageModel } from './google-generative-ai-image-model';\n\nexport interface GoogleGenerativeAIProvider extends ProviderV2 {\n (modelId: GoogleGenerativeAIModelId): LanguageModelV2;\n\n languageModel(modelId: GoogleGenerativeAIModelId): LanguageModelV2;\n\n chat(modelId: GoogleGenerativeAIModelId): LanguageModelV2;\n\n /**\nCreates a model for image generation.\n */\n image(\n modelId: GoogleGenerativeAIImageModelId,\n settings?: GoogleGenerativeAIImageSettings,\n ): ImageModelV2;\n\n /**\n * @deprecated Use `chat()` instead.\n */\n generativeAI(modelId: GoogleGenerativeAIModelId): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding()` instead.\n */\n embedding(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n textEmbedding(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n textEmbeddingModel(\n modelId: GoogleGenerativeAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n tools: typeof googleTools;\n}\n\nexport interface GoogleGenerativeAIProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://generativelanguage.googleapis.com/v1beta`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `x-goog-api-key` header.\nIt defaults to the `GOOGLE_GENERATIVE_AI_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string | undefined>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n /**\nOptional function to generate a unique ID for each request.\n */\n generateId?: () => string;\n}\n\n/**\nCreate a Google Generative AI provider instance.\n */\nexport function createGoogleGenerativeAI(\n options: GoogleGenerativeAIProviderSettings = {},\n): GoogleGenerativeAIProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ??\n 'https://generativelanguage.googleapis.com/v1beta';\n\n const getHeaders = () => ({\n 'x-goog-api-key': loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'GOOGLE_GENERATIVE_AI_API_KEY',\n description: 'Google Generative AI',\n }),\n ...options.headers,\n });\n\n const createChatModel = (modelId: GoogleGenerativeAIModelId) =>\n new GoogleGenerativeAILanguageModel(modelId, {\n provider: 'google.generative-ai',\n baseURL,\n headers: getHeaders,\n generateId: options.generateId ?? generateId,\n supportedUrls: () => ({\n '*': [\n // Only allow requests to the Google Generative Language \"files\" endpoint\n // e.g. https://generativelanguage.googleapis.com/v1beta/files/...\n new RegExp(`^${baseURL}/files/.*$`),\n ],\n }),\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: GoogleGenerativeAIEmbeddingModelId) =>\n new GoogleGenerativeAIEmbeddingModel(modelId, {\n provider: 'google.generative-ai',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createImageModel = (\n modelId: GoogleGenerativeAIImageModelId,\n settings: GoogleGenerativeAIImageSettings = {},\n ) =>\n new GoogleGenerativeAIImageModel(modelId, settings, {\n provider: 'google.generative-ai',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: GoogleGenerativeAIModelId) {\n if (new.target) {\n throw new Error(\n 'The Google Generative AI model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.generativeAI = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.tools = googleTools;\n return provider as GoogleGenerativeAIProvider;\n}\n\n/**\nDefault Google Generative AI provider instance.\n */\nexport const google = createGoogleGenerativeAI();\n","import {\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport { GroqChatPrompt } from './groq-api-types';\n\nexport function convertToGroqChatMessages(\n prompt: LanguageModelV1Prompt,\n): GroqChatPrompt {\n const messages: GroqChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\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 => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'image': {\n return {\n type: 'image_url',\n image_url: {\n url:\n part.image instanceof URL\n ? part.image.toString()\n : `data:${\n part.mimeType ?? 'image/jpeg'\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n },\n };\n }\n case 'file': {\n throw new UnsupportedFunctionalityError({\n functionality: 'File content parts in user messages',\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.args),\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 messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result),\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;\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 { z } from 'zod';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const groqErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string(),\n }),\n});\n\nexport type GroqErrorData = z.infer<typeof groqErrorDataSchema>;\n\nexport const groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function prepareTools({\n mode,\n}: {\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n };\n}): {\n tools:\n | undefined\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>;\n tool_choice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: LanguageModelV1CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings };\n }\n\n const toolChoice = mode.toolChoice;\n\n const groqTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n groqTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: groqTools, tool_choice: 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: groqTools, tool_choice: type, toolWarnings };\n case 'tool':\n return {\n tools: groqTools,\n tool_choice: {\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: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapGroqFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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 {\n InvalidResponseDataError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\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';\nimport { convertToGroqChatMessages } from './convert-to-groq-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { GroqChatModelId, GroqChatSettings } from './groq-chat-settings';\nimport { groqErrorDataSchema, groqFailedResponseHandler } from './groq-error';\nimport { prepareTools } from './groq-prepare-tools';\nimport { mapGroqFinishReason } from './map-groq-finish-reason';\n\ntype GroqChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class GroqChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n\n readonly supportsStructuredOutputs = false;\n readonly defaultObjectGenerationMode = 'json';\n\n readonly modelId: GroqChatModelId;\n readonly settings: GroqChatSettings;\n\n private readonly config: GroqChatConfig;\n\n constructor(\n modelId: GroqChatModelId,\n settings: GroqChatSettings,\n config: GroqChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportsImageUrls(): boolean {\n // image urls can be sent if downloadImages is disabled (default):\n return !this.settings.downloadImages;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n providerMetadata,\n }: Parameters<LanguageModelV1['doGenerate']>[0] & {\n stream: boolean;\n }) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === 'json' &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format schema is not supported',\n });\n }\n\n const groqOptions = parseProviderOptions({\n provider: 'groq',\n providerOptions: providerMetadata,\n schema: z.object({\n reasoningFormat: z.enum(['parsed', 'raw', 'hidden']).nullish(),\n }),\n });\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n\n // response format:\n response_format:\n // json object response format is not supported for streaming:\n stream === false && responseFormat?.type === 'json'\n ? { type: 'json_object' }\n : undefined,\n\n // provider options:\n reasoning_format: groqOptions?.reasoningFormat,\n\n // messages:\n messages: convertToGroqChatMessages(prompt),\n };\n\n switch (type) {\n case 'regular': {\n const { tools, tool_choice, toolWarnings } = prepareTools({ mode });\n return {\n args: {\n ...baseArgs,\n tools,\n tool_choice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n return {\n args: {\n ...baseArgs,\n response_format:\n // json object response format is not supported for streaming:\n stream === false ? { type: 'json_object' } : undefined,\n },\n warnings,\n };\n }\n\n case 'object-tool': {\n return {\n args: {\n ...baseArgs,\n tool_choice: {\n type: 'function',\n function: { name: mode.tool.name },\n },\n tools: [\n {\n type: 'function',\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n },\n },\n ],\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = this.getArgs({ ...options, stream: false });\n\n const body = JSON.stringify(args);\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: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n\n return {\n text: choice.message.content ?? undefined,\n reasoning: choice.message.reasoning ?? undefined,\n toolCalls: choice.message.tool_calls?.map(toolCall => ({\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments!,\n })),\n finishReason: mapGroqFinishReason(choice.finish_reason),\n usage: {\n promptTokens: response.usage?.prompt_tokens ?? NaN,\n completionTokens: response.usage?.completion_tokens ?? NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = this.getArgs({ ...options, stream: true });\n\n const body = JSON.stringify({ ...args, stream: true });\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 ...args,\n stream: true,\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\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: LanguageModelV1FinishReason = 'unknown';\n let usage: {\n promptTokens: number | undefined;\n completionTokens: number | undefined;\n } = {\n promptTokens: undefined,\n completionTokens: undefined,\n };\n let isFirstChunk = true;\n\n let providerMetadata: LanguageModelV1ProviderMetadata | undefined;\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof groqChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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.x_groq?.usage != null) {\n usage = {\n promptTokens: value.x_groq.usage.prompt_tokens ?? undefined,\n completionTokens:\n value.x_groq.usage.completion_tokens ?? undefined,\n };\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapGroqFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n controller.enqueue({\n type: 'reasoning',\n textDelta: delta.reasoning,\n });\n }\n\n if (delta.content != null && delta.content.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: 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 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 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-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: 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-call',\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: 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-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: 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-call',\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: {\n promptTokens: usage.promptTokens ?? NaN,\n completionTokens: usage.completionTokens ?? NaN,\n },\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst groqChatResponseSchema = 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 content: z.string().nullish(),\n reasoning: 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 }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n })\n .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 groqChatChunkSchema = 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 content: z.string().nullish(),\n reasoning: 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').optional(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number(),\n }),\n ),\n x_groq: z\n .object({\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n groqErrorDataSchema,\n]);\n","import {\n TranscriptionModelV1,\n TranscriptionModelV1CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { GroqConfig } from './groq-config';\nimport { groqFailedResponseHandler } from './groq-error';\nimport { GroqTranscriptionModelId } from './groq-transcription-settings';\nimport { GroqTranscriptionAPITypes } from './groq-api-types';\n\n// https://console.groq.com/docs/speech-to-text\nconst groqProviderOptionsSchema = z.object({\n language: z.string().nullish(),\n prompt: z.string().nullish(),\n responseFormat: z.string().nullish(),\n temperature: z.number().min(0).max(1).nullish(),\n timestampGranularities: z.array(z.string()).nullish(),\n});\n\nexport type GroqTranscriptionCallOptions = z.infer<\n typeof groqProviderOptionsSchema\n>;\n\ninterface GroqTranscriptionModelConfig extends GroqConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GroqTranscriptionModel implements TranscriptionModelV1 {\n readonly specificationVersion = 'v1';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GroqTranscriptionModelId,\n private readonly config: GroqTranscriptionModelConfig,\n ) {}\n\n private getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV1['doGenerate']>[0]) {\n const warnings: TranscriptionModelV1CallWarning[] = [];\n\n // Parse provider options\n const groqOptions = parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptionsSchema,\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 formData.append('file', new File([blob], 'audio', { type: mediaType }));\n\n // Add provider-specific options\n if (groqOptions) {\n const transcriptionModelOptions: Omit<\n GroqTranscriptionAPITypes,\n 'model'\n > = {\n language: groqOptions.language ?? undefined,\n prompt: groqOptions.prompt ?? undefined,\n response_format: groqOptions.responseFormat ?? undefined,\n temperature: groqOptions.temperature ?? undefined,\n timestamp_granularities:\n groqOptions.timestampGranularities ?? undefined,\n };\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof Omit<GroqTranscriptionAPITypes, 'model'>\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV1['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = 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: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\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 language: response.language,\n durationInSeconds: response.duration,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst groqTranscriptionResponseSchema = z.object({\n task: z.string(),\n language: z.string(),\n duration: z.number(),\n text: z.string(),\n segments: z.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 x_groq: z.object({\n id: z.string(),\n }),\n});\n","import {\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n TranscriptionModelV1,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { GroqChatLanguageModel } from './groq-chat-language-model';\nimport { GroqChatModelId, GroqChatSettings } from './groq-chat-settings';\nimport { GroqTranscriptionModelId } from './groq-transcription-settings';\nimport { GroqTranscriptionModel } from './groq-transcription-model';\n\nexport interface GroqProvider extends ProviderV1 {\n /**\nCreates a model for text generation.\n*/\n (modelId: GroqChatModelId, settings?: GroqChatSettings): LanguageModelV1;\n\n /**\nCreates an Groq chat model for text generation.\n */\n languageModel(\n modelId: GroqChatModelId,\n settings?: GroqChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: GroqTranscriptionModelId): TranscriptionModelV1;\n}\n\nexport interface GroqProviderSettings {\n /**\nBase URL for the Groq API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Groq provider instance.\n */\nexport function createGroq(options: GroqProviderSettings = {}): GroqProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.groq.com/openai/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'GROQ_API_KEY',\n description: 'Groq',\n })}`,\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: GroqChatModelId,\n settings: GroqChatSettings = {},\n ) =>\n new GroqChatLanguageModel(modelId, settings, {\n provider: 'groq.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (\n modelId: GroqChatModelId,\n settings?: GroqChatSettings,\n ) => {\n if (new.target) {\n throw new Error(\n 'The Groq model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId, settings);\n };\n\n const createTranscriptionModel = (modelId: GroqTranscriptionModelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: 'groq.transcription',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = function (\n modelId: GroqChatModelId,\n settings?: GroqChatSettings,\n ) {\n return createLanguageModel(modelId, settings);\n };\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.transcription = createTranscriptionModel;\n\n return provider;\n}\n\n/**\nDefault Groq provider instance.\n */\nexport const groq = createGroq();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { GroqChatPrompt } from './groq-api-types';\n\nexport function convertToGroqChatMessages(\n prompt: LanguageModelV2Prompt,\n): GroqChatPrompt {\n const messages: GroqChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\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 => {\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 throw new UnsupportedFunctionalityError({\n functionality: 'Non-image file content parts',\n });\n }\n\n const mediaType =\n part.mediaType === 'image/*' ? 'image/jpeg' : 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,${part.data}`,\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;\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 { z } from 'zod/v4';\n\n// https://console.groq.com/docs/models\nexport type GroqChatModelId =\n // production models\n | 'gemma2-9b-it'\n | 'llama-3.1-8b-instant'\n | 'llama-3.3-70b-versatile'\n | 'meta-llama/llama-guard-4-12b'\n // preview models (selection)\n | 'deepseek-r1-distill-llama-70b'\n | 'meta-llama/llama-4-maverick-17b-128e-instruct'\n | 'meta-llama/llama-4-scout-17b-16e-instruct'\n | 'meta-llama/llama-prompt-guard-2-22m'\n | 'meta-llama/llama-prompt-guard-2-86m'\n | 'mistral-saba-24b'\n | 'moonshotai/kimi-k2-instruct'\n | 'qwen/qwen3-32b'\n | 'llama-guard-3-8b'\n | 'llama3-70b-8192'\n | 'llama3-8b-8192'\n | 'mixtral-8x7b-32768'\n | 'qwen-qwq-32b'\n | 'qwen-2.5-32b'\n | 'deepseek-r1-distill-qwen-32b'\n | (string & {});\n\nexport const groqProviderOptions = z.object({\n reasoningFormat: z.enum(['parsed', 'raw', 'hidden']).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. Learn more.\n */\n user: z.string().optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n});\n\nexport type GroqProviderOptions = z.infer<typeof groqProviderOptions>;\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const groqErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string(),\n }),\n});\n\nexport type GroqErrorData = z.infer<typeof groqErrorDataSchema>;\n\nexport const groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | undefined\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const groqTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n groqTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: groqTools, 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: groqTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: groqTools,\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapGroqFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToGroqChatMessages } from './convert-to-groq-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { GroqChatModelId, groqProviderOptions } from './groq-chat-options';\nimport { groqErrorDataSchema, groqFailedResponseHandler } from './groq-error';\nimport { prepareTools } from './groq-prepare-tools';\nimport { mapGroqFinishReason } from './map-groq-finish-reason';\n\ntype GroqChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class GroqChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: GroqChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: GroqChatConfig;\n\n constructor(modelId: GroqChatModelId, config: GroqChatConfig) {\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 stream,\n tools,\n toolChoice,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0] & {\n stream: boolean;\n }) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const groqOptions = await parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptions,\n });\n\n const structuredOutputs = groqOptions?.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 {\n tools: groqTools,\n toolChoice: groqToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: groqOptions?.user,\n parallel_tool_calls: groqOptions?.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n\n // response format:\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 name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // provider options:\n reasoning_format: groqOptions?.reasoningFormat,\n\n // messages:\n messages: convertToGroqChatMessages(prompt),\n\n // tools:\n tools: groqTools,\n tool_choice: groqToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false,\n });\n\n const body = JSON.stringify(args);\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: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text: text });\n }\n\n // reasoning:\n const reasoning = choice.message.reasoning;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: 'reasoning',\n text: reasoning,\n });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n return {\n content,\n finishReason: mapGroqFinishReason(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 },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n\n const body = JSON.stringify({ ...args, stream: true });\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 ...args,\n stream: true,\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n let isActiveText = false;\n let isActiveReasoning = false;\n\n let providerMetadata: SharedV2ProviderMetadata | undefined;\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof groqChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\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.x_groq?.usage != null) {\n usage.inputTokens = value.x_groq.usage.prompt_tokens ?? undefined;\n usage.outputTokens =\n value.x_groq.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.x_groq.usage.total_tokens ?? undefined;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapGroqFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-start',\n id: 'reasoning-0',\n });\n isActiveReasoning = true;\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: 'reasoning-0',\n delta: delta.reasoning,\n });\n }\n\n if (delta.content != null && delta.content.length > 0) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'txt-0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'txt-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 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\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\n }\n\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'txt-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\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 groqChatResponseSchema = 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 content: z.string().nullish(),\n reasoning: 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 }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n })\n .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 groqChatChunkSchema = 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 content: z.string().nullish(),\n reasoning: 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').optional(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number(),\n }),\n ),\n x_groq: z\n .object({\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n groqErrorDataSchema,\n]);\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { GroqConfig } from './groq-config';\nimport { groqFailedResponseHandler } from './groq-error';\nimport { GroqTranscriptionModelId } from './groq-transcription-options';\nimport { GroqTranscriptionAPITypes } from './groq-api-types';\n\n// https://console.groq.com/docs/speech-to-text\nconst groqProviderOptionsSchema = z.object({\n language: z.string().nullish(),\n prompt: z.string().nullish(),\n responseFormat: z.string().nullish(),\n temperature: z.number().min(0).max(1).nullish(),\n timestampGranularities: z.array(z.string()).nullish(),\n});\n\nexport type GroqTranscriptionCallOptions = z.infer<\n typeof groqProviderOptionsSchema\n>;\n\ninterface GroqTranscriptionModelConfig extends GroqConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GroqTranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GroqTranscriptionModelId,\n private readonly config: GroqTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV2['doGenerate']>[0]) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const groqOptions = await parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptionsSchema,\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 formData.append('file', new File([blob], 'audio', { type: mediaType }));\n\n // Add provider-specific options\n if (groqOptions) {\n const transcriptionModelOptions: Omit<\n GroqTranscriptionAPITypes,\n 'model'\n > = {\n language: groqOptions.language ?? undefined,\n prompt: groqOptions.prompt ?? undefined,\n response_format: groqOptions.responseFormat ?? undefined,\n temperature: groqOptions.temperature ?? undefined,\n timestamp_granularities:\n groqOptions.timestampGranularities ?? undefined,\n };\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof Omit<GroqTranscriptionAPITypes, 'model'>\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV2['doGenerate']>[0],\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: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\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 language: response.language,\n durationInSeconds: response.duration,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst groqTranscriptionResponseSchema = z.object({\n task: z.string(),\n language: z.string(),\n duration: z.number(),\n text: z.string(),\n segments: z.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 x_groq: z.object({\n id: z.string(),\n }),\n});\n","import {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { GroqChatLanguageModel } from './groq-chat-language-model';\nimport { GroqChatModelId } from './groq-chat-options';\nimport { GroqTranscriptionModelId } from './groq-transcription-options';\nimport { GroqTranscriptionModel } from './groq-transcription-model';\n\nexport interface GroqProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: GroqChatModelId): LanguageModelV2;\n\n /**\nCreates an Groq chat model for text generation.\n */\n languageModel(modelId: GroqChatModelId): LanguageModelV2;\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: GroqTranscriptionModelId): TranscriptionModelV2;\n}\n\nexport interface GroqProviderSettings {\n /**\nBase URL for the Groq API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Groq provider instance.\n */\nexport function createGroq(options: GroqProviderSettings = {}): GroqProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.groq.com/openai/v1';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'GROQ_API_KEY',\n description: 'Groq',\n })}`,\n ...options.headers,\n });\n\n const createChatModel = (modelId: GroqChatModelId) =>\n new GroqChatLanguageModel(modelId, {\n provider: 'groq.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (modelId: GroqChatModelId) => {\n if (new.target) {\n throw new Error(\n 'The Groq model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n const createTranscriptionModel = (modelId: GroqTranscriptionModelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: 'groq.transcription',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = function (modelId: GroqChatModelId) {\n return createLanguageModel(modelId);\n };\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.transcription = createTranscriptionModel;\n\n return provider;\n}\n\n/**\nDefault Groq provider instance.\n */\nexport const groq = createGroq();\n","import {\n LanguageModelV1CallWarning,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n useLegacyFunctionCalling = false,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV1Prompt;\n useLegacyFunctionCalling?: boolean;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array<LanguageModelV1CallWarning>;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array<LanguageModelV1CallWarning> = [];\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 'image': {\n return {\n type: 'image_url',\n image_url: {\n url:\n part.image instanceof URL\n ? part.image.toString()\n : `data:${\n part.mimeType ?? 'image/jpeg'\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerMetadata?.openai?.imageDetail,\n },\n };\n }\n case 'file': {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality:\n \"'File content parts with URL data' functionality not supported.\",\n });\n }\n\n switch (part.mimeType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: { data: part.data, format: 'wav' },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: { data: part.data, format: 'mp3' },\n };\n }\n case 'application/pdf': {\n return {\n type: 'file',\n file: {\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${part.data}`,\n },\n };\n }\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `File content part type ${part.mimeType} in user messages`,\n });\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.args),\n },\n });\n break;\n }\n }\n }\n\n if (useLegacyFunctionCalling) {\n if (toolCalls.length > 1) {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'useLegacyFunctionCalling with multiple tool calls in one message',\n });\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n function_call:\n toolCalls.length > 0 ? toolCalls[0].function : undefined,\n });\n } else {\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n }\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n if (useLegacyFunctionCalling) {\n messages.push({\n role: 'function',\n name: toolResponse.toolName,\n content: JSON.stringify(toolResponse.result),\n });\n } else {\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result),\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 { messages, warnings };\n}\n","import { LanguageModelV1LogProbs } from '@ai-sdk/provider';\n\ntype OpenAIChatLogProbs = {\n content:\n | {\n token: string;\n logprob: number;\n top_logprobs:\n | {\n token: string;\n logprob: number;\n }[]\n | null;\n }[]\n | null;\n};\n\nexport function mapOpenAIChatLogProbsOutput(\n logprobs: OpenAIChatLogProbs | null | undefined,\n): LanguageModelV1LogProbs | undefined {\n return (\n logprobs?.content?.map(({ token, logprob, top_logprobs }) => ({\n token,\n logprob,\n topLogprobs: top_logprobs\n ? top_logprobs.map(({ token, logprob }) => ({\n token,\n logprob,\n }))\n : [],\n })) ?? undefined\n );\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n\n // The additional information below is handled loosely to support\n // OpenAI-compatible providers that have slightly different error\n // responses:\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: openaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","export function 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 {\n JSONSchema7,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function prepareTools({\n mode,\n useLegacyFunctionCalling = false,\n structuredOutputs,\n}: {\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n };\n useLegacyFunctionCalling: boolean | undefined;\n structuredOutputs: boolean;\n}): {\n tools?: {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict?: boolean;\n };\n }[];\n tool_choice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'function'; function: { name: string } };\n\n // legacy support\n functions?: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n }[];\n function_call?: { name: string };\n toolWarnings: Array<LanguageModelV1CallWarning>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings };\n }\n\n const toolChoice = mode.toolChoice;\n\n if (useLegacyFunctionCalling) {\n const openaiFunctions: Array<{\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n openaiFunctions.push({\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n });\n }\n }\n\n if (toolChoice == null) {\n return {\n functions: openaiFunctions,\n function_call: undefined,\n toolWarnings,\n };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case undefined:\n return {\n functions: openaiFunctions,\n function_call: undefined,\n toolWarnings,\n };\n case 'required':\n throw new UnsupportedFunctionalityError({\n functionality: 'useLegacyFunctionCalling and toolChoice: required',\n });\n default:\n return {\n functions: openaiFunctions,\n function_call: { name: toolChoice.toolName },\n toolWarnings,\n };\n }\n }\n\n const openaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: JSONSchema7;\n strict: boolean | undefined;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n openaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n strict: structuredOutputs ? true : undefined,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, tool_choice: 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, tool_choice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n tool_choice: {\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: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1LogProbs,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { mapOpenAIChatLogProbsOutput } from './map-openai-chat-logprobs';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport { OpenAIChatModelId, OpenAIChatSettings } from './openai-chat-settings';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} from './openai-error';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { prepareTools } from './openai-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n compatibility: 'strict' | 'compatible';\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n\n readonly modelId: OpenAIChatModelId;\n readonly settings: OpenAIChatSettings;\n\n private readonly config: OpenAIChatConfig;\n\n constructor(\n modelId: OpenAIChatModelId,\n settings: OpenAIChatSettings,\n config: OpenAIChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get supportsStructuredOutputs(): boolean {\n // enable structured outputs for reasoning models by default:\n // TODO in the next major version, remove this and always use json mode for models\n // that support structured outputs (blacklist other models)\n return this.settings.structuredOutputs ?? isReasoningModel(this.modelId);\n }\n\n get defaultObjectGenerationMode() {\n // audio models don't support structured outputs:\n if (isAudioModel(this.modelId)) {\n return 'tool';\n }\n\n return this.supportsStructuredOutputs ? 'json' : 'tool';\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n get supportsImageUrls(): boolean {\n // image urls can be sent if downloadImages is disabled (default):\n return !this.settings.downloadImages;\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerMetadata,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\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 !this.supportsStructuredOutputs\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 useLegacyFunctionCalling = this.settings.useLegacyFunctionCalling;\n\n if (useLegacyFunctionCalling && this.settings.parallelToolCalls === true) {\n throw new UnsupportedFunctionalityError({\n functionality: 'useLegacyFunctionCalling with parallelToolCalls',\n });\n }\n\n if (useLegacyFunctionCalling && this.supportsStructuredOutputs) {\n throw new UnsupportedFunctionalityError({\n functionality: 'structuredOutputs with useLegacyFunctionCalling',\n });\n }\n\n const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n {\n prompt,\n useLegacyFunctionCalling,\n systemMessageMode: getSystemMessageMode(this.modelId),\n },\n );\n\n warnings.push(...messageWarnings);\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n logit_bias: this.settings.logitBias,\n logprobs:\n this.settings.logprobs === true ||\n typeof this.settings.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof this.settings.logprobs === 'number'\n ? this.settings.logprobs\n : typeof this.settings.logprobs === 'boolean'\n ? this.settings.logprobs\n ? 0\n : undefined\n : undefined,\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? this.supportsStructuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n stop: stopSequences,\n seed,\n\n // openai specific settings:\n // TODO remove in next major version; we auto-map maxTokens now\n max_completion_tokens: providerMetadata?.openai?.maxCompletionTokens,\n store: providerMetadata?.openai?.store,\n metadata: providerMetadata?.openai?.metadata,\n prediction: providerMetadata?.openai?.prediction,\n reasoning_effort:\n providerMetadata?.openai?.reasoningEffort ??\n this.settings.reasoningEffort,\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 switch (type) {\n case 'regular': {\n const { tools, tool_choice, functions, function_call, toolWarnings } =\n prepareTools({\n mode,\n useLegacyFunctionCalling,\n structuredOutputs: this.supportsStructuredOutputs,\n });\n\n return {\n args: {\n ...baseArgs,\n tools,\n tool_choice,\n functions,\n function_call,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n return {\n args: {\n ...baseArgs,\n response_format:\n this.supportsStructuredOutputs && mode.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: mode.schema,\n strict: true,\n name: mode.name ?? 'response',\n description: mode.description,\n },\n }\n : { type: 'json_object' },\n },\n warnings,\n };\n }\n\n case 'object-tool': {\n return {\n args: useLegacyFunctionCalling\n ? {\n ...baseArgs,\n function_call: {\n name: mode.tool.name,\n },\n functions: [\n {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n },\n ],\n }\n : {\n ...baseArgs,\n tool_choice: {\n type: 'function',\n function: { name: mode.tool.name },\n },\n tools: [\n {\n type: 'function',\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n strict: this.supportsStructuredOutputs ? true : undefined,\n },\n },\n ],\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args: body, warnings } = 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 { messages: rawPrompt, ...rawSettings } = body;\n const choice = response.choices[0];\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: LanguageModelV1ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.reasoning_tokens != null) {\n providerMetadata.openai.reasoningTokens =\n completionTokenDetails?.reasoning_tokens;\n }\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 (promptTokenDetails?.cached_tokens != null) {\n providerMetadata.openai.cachedPromptTokens =\n promptTokenDetails?.cached_tokens;\n }\n\n return {\n text: choice.message.content ?? undefined,\n toolCalls:\n this.settings.useLegacyFunctionCalling && choice.message.function_call\n ? [\n {\n toolCallType: 'function',\n toolCallId: generateId(),\n toolName: choice.message.function_call.name,\n args: choice.message.function_call.arguments,\n },\n ]\n : choice.message.tool_calls?.map(toolCall => ({\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments!,\n })),\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n promptTokens: response.usage?.prompt_tokens ?? NaN,\n completionTokens: response.usage?.completion_tokens ?? NaN,\n },\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n request: { body: JSON.stringify(body) },\n response: getResponseMetadata(response),\n warnings,\n logprobs: mapOpenAIChatLogProbsOutput(choice.logprobs),\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n if (this.settings.simulateStreaming) {\n const result = await this.doGenerate(options);\n\n const simulatedStream = new ReadableStream<LanguageModelV1StreamPart>({\n start(controller) {\n controller.enqueue({ type: 'response-metadata', ...result.response });\n if (result.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: result.text,\n });\n }\n if (result.toolCalls) {\n for (const toolCall of result.toolCalls) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: toolCall.args,\n });\n\n controller.enqueue({\n type: 'tool-call',\n ...toolCall,\n });\n }\n }\n controller.enqueue({\n type: 'finish',\n finishReason: result.finishReason,\n usage: result.usage,\n logprobs: result.logprobs,\n providerMetadata: result.providerMetadata,\n });\n controller.close();\n },\n });\n return {\n stream: simulatedStream,\n rawCall: result.rawCall,\n rawResponse: result.rawResponse,\n warnings: result.warnings,\n };\n }\n\n const { args, warnings } = this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options:\n this.config.compatibility === 'strict'\n ? { include_usage: true }\n : undefined,\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 { messages: rawPrompt, ...rawSettings } = args;\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: LanguageModelV1FinishReason = 'unknown';\n let usage: {\n promptTokens: number | undefined;\n completionTokens: number | undefined;\n } = {\n promptTokens: undefined,\n completionTokens: undefined,\n };\n let logprobs: LanguageModelV1LogProbs;\n let isFirstChunk = true;\n\n const { useLegacyFunctionCalling } = this.settings;\n\n const providerMetadata: LanguageModelV1ProviderMetadata = { openai: {} };\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiChatChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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 const {\n prompt_tokens,\n completion_tokens,\n prompt_tokens_details,\n completion_tokens_details,\n } = value.usage;\n\n usage = {\n promptTokens: prompt_tokens ?? undefined,\n completionTokens: completion_tokens ?? undefined,\n };\n\n if (completion_tokens_details?.reasoning_tokens != null) {\n providerMetadata.openai.reasoningTokens =\n completion_tokens_details?.reasoning_tokens;\n }\n if (\n completion_tokens_details?.accepted_prediction_tokens != null\n ) {\n providerMetadata.openai.acceptedPredictionTokens =\n completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n completion_tokens_details?.rejected_prediction_tokens != null\n ) {\n providerMetadata.openai.rejectedPredictionTokens =\n completion_tokens_details?.rejected_prediction_tokens;\n }\n if (prompt_tokens_details?.cached_tokens != null) {\n providerMetadata.openai.cachedPromptTokens =\n prompt_tokens_details?.cached_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?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.content != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: delta.content,\n });\n }\n\n const mappedLogprobs = mapOpenAIChatLogProbsOutput(\n choice?.logprobs,\n );\n if (mappedLogprobs?.length) {\n if (logprobs === undefined) logprobs = [];\n logprobs.push(...mappedLogprobs);\n }\n\n const mappedToolCalls: typeof delta.tool_calls =\n useLegacyFunctionCalling && delta.function_call != null\n ? [\n {\n type: 'function',\n id: generateId(),\n function: delta.function_call,\n index: 0,\n },\n ]\n : delta.tool_calls;\n\n if (mappedToolCalls != null) {\n for (const toolCallDelta of mappedToolCalls) {\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 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-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: 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-call',\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: 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-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: 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-call',\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n logprobs,\n usage: {\n promptTokens: usage.promptTokens ?? NaN,\n completionTokens: usage.completionTokens ?? NaN,\n },\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n request: { body: JSON.stringify(body) },\n warnings,\n };\n }\n}\n\nconst openaiTokenUsageSchema = z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_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 function_call: z\n .object({\n arguments: z.string(),\n name: z.string(),\n })\n .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 }),\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 .nullable(),\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 function_call: z\n .object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n })\n .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 })\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 .nullable(),\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 modelId.startsWith('o') || modelId.startsWith('gpt-5');\n}\n\nfunction isAudioModel(modelId: string) {\n return modelId.startsWith('gpt-4o-audio-preview');\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 {\n InvalidPromptError,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n inputFormat,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV1Prompt;\n inputFormat: 'prompt' | 'messages';\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // When the user supplied a prompt input, we don't transform it:\n if (\n inputFormat === 'prompt' &&\n prompt.length === 1 &&\n prompt[0].role === 'user' &&\n prompt[0].content.length === 1 &&\n prompt[0].content[0].type === 'text'\n ) {\n return { prompt: prompt[0].content[0].text };\n }\n\n // otherwise 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 case 'image': {\n throw new UnsupportedFunctionalityError({\n functionality: 'images',\n });\n }\n }\n })\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","import { LanguageModelV1LogProbs } from '@ai-sdk/provider';\n\ntype OpenAICompletionLogProps = {\n tokens: string[];\n token_logprobs: number[];\n top_logprobs: Record<string, number>[] | null;\n};\n\nexport function mapOpenAICompletionLogProbs(\n logprobs: OpenAICompletionLogProps | null | undefined,\n): LanguageModelV1LogProbs | undefined {\n return logprobs?.tokens.map((token, index) => ({\n token,\n logprob: logprobs.token_logprobs[index],\n topLogprobs: logprobs.top_logprobs\n ? Object.entries(logprobs.top_logprobs[index]).map(\n ([token, logprob]) => ({\n token,\n logprob,\n }),\n )\n : [],\n }));\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1LogProbs,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { mapOpenAICompletionLogProbs } from './map-openai-completion-logprobs';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n OpenAICompletionModelId,\n OpenAICompletionSettings,\n} from './openai-completion-settings';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} from './openai-error';\nimport { getResponseMetadata } from './get-response-metadata';\n\ntype OpenAICompletionConfig = {\n provider: string;\n compatibility: 'strict' | 'compatible';\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: OpenAICompletionModelId;\n readonly settings: OpenAICompletionSettings;\n\n private readonly config: OpenAICompletionConfig;\n\n constructor(\n modelId: OpenAICompletionModelId,\n settings: OpenAICompletionSettings,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n mode,\n inputFormat,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\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, inputFormat });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: this.settings.echo,\n logit_bias: this.settings.logitBias,\n logprobs:\n typeof this.settings.logprobs === 'number'\n ? this.settings.logprobs\n : typeof this.settings.logprobs === 'boolean'\n ? this.settings.logprobs\n ? 0\n : undefined\n : undefined,\n suffix: this.settings.suffix,\n user: this.settings.user,\n\n // standardized settings:\n max_tokens: maxTokens,\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\n switch (type) {\n case 'regular': {\n if (mode.tools?.length) {\n throw new UnsupportedFunctionalityError({\n functionality: 'tools',\n });\n }\n\n if (mode.toolChoice) {\n throw new UnsupportedFunctionalityError({\n functionality: 'toolChoice',\n });\n }\n\n return { args: baseArgs, warnings };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-json mode',\n });\n }\n\n case 'object-tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-tool mode',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = 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 { prompt: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n\n return {\n text: choice.text,\n usage: {\n promptTokens: response.usage.prompt_tokens,\n completionTokens: response.usage.completion_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n logprobs: mapOpenAICompletionLogProbs(choice.logprobs),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body: JSON.stringify(args) },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options:\n this.config.compatibility === 'strict'\n ? { include_usage: true }\n : undefined,\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 const { prompt: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let logprobs: LanguageModelV1LogProbs;\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiCompletionChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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 = {\n promptTokens: value.usage.prompt_tokens,\n completionTokens: value.usage.completion_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?.text != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: choice.text,\n });\n }\n\n const mappedLogprobs = mapOpenAICompletionLogProbs(\n choice?.logprobs,\n );\n if (mappedLogprobs?.length) {\n if (logprobs === undefined) logprobs = [];\n logprobs.push(...mappedLogprobs);\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n logprobs,\n usage,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body: JSON.stringify(body) },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\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())).nullable(),\n })\n .nullish(),\n }),\n ),\n usage: z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n }),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\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())).nullable(),\n })\n .nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n })\n .nullish(),\n }),\n openaiErrorDataSchema,\n]);\n","import {\n EmbeddingModelV1,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { OpenAIConfig } from './openai-config';\nimport {\n OpenAIEmbeddingModelId,\n OpenAIEmbeddingSettings,\n} from './openai-embedding-settings';\nimport { openaiFailedResponseHandler } from './openai-error';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV1<string> {\n readonly specificationVersion = 'v1';\n readonly modelId: OpenAIEmbeddingModelId;\n\n private readonly config: OpenAIConfig;\n private readonly settings: OpenAIEmbeddingSettings;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return this.settings.maxEmbeddingsPerCall ?? 2048;\n }\n\n get supportsParallelCalls(): boolean {\n return this.settings.supportsParallelCalls ?? true;\n }\n\n constructor(\n modelId: OpenAIEmbeddingModelId,\n settings: OpenAIEmbeddingSettings,\n config: OpenAIConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<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 const { responseHeaders, value: response } = 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: this.settings.dimensions,\n user: this.settings.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 rawResponse: { headers: responseHeaders },\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","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\nexport interface OpenAIImageSettings {\n /**\nOverride the maximum number of images per call (default is dependent on the\nmodel, or 1 for an unknown model).\n */\n maxImagesPerCall?: number;\n}\n","import { ImageModelV1, ImageModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { OpenAIConfig } from './openai-config';\nimport { openaiFailedResponseHandler } from './openai-error';\nimport {\n OpenAIImageModelId,\n OpenAIImageSettings,\n modelMaxImagesPerCall,\n hasDefaultResponseFormat,\n} from './openai-image-settings';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get maxImagesPerCall(): number {\n return (\n this.settings.maxImagesPerCall ?? modelMaxImagesPerCall[this.modelId] ?? 1\n );\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly settings: OpenAIImageSettings,\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<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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 };\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(z.object({ b64_json: z.string() })),\n});\n","import {\n TranscriptionModelV1,\n TranscriptionModelV1CallOptions,\n TranscriptionModelV1CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { OpenAIConfig } from './openai-config';\nimport { openaiFailedResponseHandler } from './openai-error';\nimport {\n OpenAITranscriptionModelId,\n OpenAITranscriptionModelOptions,\n} from './openai-transcription-settings';\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nconst openAIProviderOptionsSchema = z.object({\n include: z.array(z.string()).nullish(),\n language: z.string().nullish(),\n prompt: z.string().nullish(),\n temperature: z.number().min(0).max(1).nullish().default(0),\n timestampGranularities: z\n .array(z.enum(['word', 'segment']))\n .nullish()\n .default(['segment']),\n});\n\nexport type OpenAITranscriptionCallOptions = Omit<\n TranscriptionModelV1CallOptions,\n 'providerOptions'\n> & {\n providerOptions?: {\n openai?: z.infer<typeof openAIProviderOptionsSchema>;\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 TranscriptionModelV1 {\n readonly specificationVersion = 'v1';\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 getArgs({\n audio,\n mediaType,\n providerOptions,\n }: OpenAITranscriptionCallOptions) {\n const warnings: TranscriptionModelV1CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openAIProviderOptionsSchema,\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 formData.append('file', new File([blob], 'audio', { type: mediaType }));\n\n // Add provider-specific options\n if (openAIOptions) {\n const transcriptionModelOptions: OpenAITranscriptionModelOptions = {\n include: openAIOptions.include ?? undefined,\n language: openAIOptions.language ?? undefined,\n prompt: openAIOptions.prompt ?? undefined,\n temperature: openAIOptions.temperature ?? undefined,\n timestamp_granularities:\n openAIOptions.timestampGranularities ?? undefined,\n };\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof OpenAITranscriptionModelOptions\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: OpenAITranscriptionCallOptions,\n ): Promise<Awaited<ReturnType<TranscriptionModelV1['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = 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.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\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});\n","import {\n LanguageModelV1CallWarning,\n LanguageModelV1Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport { OpenAIResponsesPrompt } from './openai-responses-api-types';\n\nexport function convertToOpenAIResponsesMessages({\n prompt,\n systemMessageMode,\n}: {\n prompt: LanguageModelV1Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIResponsesPrompt;\n warnings: Array<LanguageModelV1CallWarning>;\n} {\n const messages: OpenAIResponsesPrompt = [];\n const warnings: Array<LanguageModelV1CallWarning> = [];\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 messages.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 'image': {\n return {\n type: 'input_image',\n image_url:\n part.image instanceof URL\n ? part.image.toString()\n : `data:${\n part.mimeType ?? 'image/jpeg'\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerMetadata?.openai?.imageDetail,\n };\n }\n case 'file': {\n if (part.data instanceof URL) {\n // The AI SDK automatically downloads files for user file parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'File URLs in user messages',\n });\n }\n\n switch (part.mimeType) {\n case 'application/pdf': {\n return {\n type: 'input_file',\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${part.data}`,\n };\n }\n default: {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Only PDF files are supported in user messages',\n });\n }\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n messages.push({\n role: 'assistant',\n content: [{ type: 'output_text', text: part.text }],\n });\n break;\n }\n case 'tool-call': {\n messages.push({\n type: 'function_call',\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.args),\n });\n break;\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of content) {\n messages.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: JSON.stringify(part.result),\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 { messages, warnings };\n}\n","import { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: string | null | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV1FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasToolCalls ? 'tool-calls' : 'unknown';\n }\n}\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIResponsesTool } from './openai-responses-api-types';\n\nexport function prepareResponsesTools({\n mode,\n strict,\n}: {\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n };\n strict: boolean;\n}): {\n tools?: Array<OpenAIResponsesTool>;\n tool_choice?:\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'web_search_preview' }\n | { type: 'function'; name: string };\n toolWarnings: LanguageModelV1CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings };\n }\n\n const toolChoice = mode.toolChoice;\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.parameters,\n strict: strict ? true : undefined,\n });\n break;\n case 'provider-defined':\n switch (tool.id) {\n case 'openai.web_search_preview':\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: tool.args.searchContextSize as\n | 'low'\n | 'medium'\n | 'high',\n user_location: tool.args.userLocation as {\n type: 'approximate';\n city: string;\n region: string;\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\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, tool_choice: 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, tool_choice: type, toolWarnings };\n case 'tool': {\n if (toolChoice.toolName === 'web_search_preview') {\n return {\n tools: openaiTools,\n tool_choice: {\n type: 'web_search_preview',\n },\n toolWarnings,\n };\n }\n return {\n tools: openaiTools,\n tool_choice: {\n type: 'function',\n name: toolChoice.toolName,\n },\n toolWarnings,\n };\n }\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\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';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { convertToOpenAIResponsesMessages } from './convert-to-openai-responses-messages';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport { OpenAIResponsesModelId } from './openai-responses-settings';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = 'json';\n readonly supportsStructuredOutputs = true;\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 get provider(): string {\n return this.config.provider;\n }\n\n private getArgs({\n mode,\n maxTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerMetadata,\n responseFormat,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const warnings: LanguageModelV1CallWarning[] = [];\n const modelConfig = getResponsesModelConfig(this.modelId);\n const type = mode.type;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\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({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n const { messages, warnings: messageWarnings } =\n convertToOpenAIResponsesMessages({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n });\n\n warnings.push(...messageWarnings);\n\n const openaiOptions = parseProviderOptions({\n provider: 'openai',\n providerOptions: providerMetadata,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n const isStrict = openaiOptions?.strictSchemas ?? true;\n\n const baseArgs = {\n model: this.modelId,\n input: messages,\n temperature,\n top_p: topP,\n max_output_tokens: maxTokens,\n\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: isStrict,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n\n // provider options:\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\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 }\n\n switch (type) {\n case 'regular': {\n const { tools, tool_choice, toolWarnings } = prepareResponsesTools({\n mode,\n strict: isStrict, // TODO support provider options on tools\n });\n\n return {\n args: {\n ...baseArgs,\n tools,\n tool_choice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n return {\n args: {\n ...baseArgs,\n text: {\n format:\n mode.schema != null\n ? {\n type: 'json_schema',\n strict: isStrict,\n name: mode.name ?? 'response',\n description: mode.description,\n schema: mode.schema,\n }\n : { type: 'json_object' },\n },\n },\n warnings,\n };\n }\n\n case 'object-tool': {\n return {\n args: {\n ...baseArgs,\n tool_choice: { type: 'function', name: mode.tool.name },\n tools: [\n {\n type: 'function',\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n strict: isStrict,\n },\n ],\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args: body, warnings } = 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 message: z.string(),\n code: 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 content: z.array(\n z.object({\n type: z.literal('output_text'),\n text: z.string(),\n annotations: z.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 }),\n ),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n }),\n z.object({\n type: z.literal('computer_call'),\n }),\n z.object({\n type: z.literal('reasoning'),\n summary: z.array(\n z.object({\n type: z.literal('summary_text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n ),\n incomplete_details: z.object({ reason: z.string() }).nullable(),\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 outputTextElements = response.output\n .filter(output => output.type === 'message')\n .flatMap(output => output.content)\n .filter(content => content.type === 'output_text');\n\n const toolCalls = response.output\n .filter(output => output.type === 'function_call')\n .map(output => ({\n toolCallType: 'function' as const,\n toolCallId: output.call_id,\n toolName: output.name,\n args: output.arguments,\n }));\n\n const reasoningSummary =\n response.output.find(item => item.type === 'reasoning')?.summary ?? null;\n\n return {\n text: outputTextElements.map(content => content.text).join('\\n'),\n sources: outputTextElements.flatMap(content =>\n content.annotations.map(annotation => ({\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n })),\n ),\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasToolCalls: toolCalls.length > 0,\n }),\n toolCalls: toolCalls.length > 0 ? toolCalls : undefined,\n reasoning: reasoningSummary\n ? reasoningSummary.map(summary => ({\n type: 'text' as const,\n text: summary.text,\n }))\n : undefined,\n usage: {\n promptTokens: response.usage.input_tokens,\n completionTokens: response.usage.output_tokens,\n },\n rawCall: {\n rawPrompt: undefined,\n rawSettings: {},\n },\n rawResponse: {\n headers: responseHeaders,\n body: rawResponse,\n },\n request: {\n body: JSON.stringify(body),\n },\n response: {\n id: response.id,\n timestamp: new Date(response.created_at * 1000),\n modelId: response.model,\n },\n providerMetadata: {\n openai: {\n responseId: response.id,\n cachedPromptTokens:\n response.usage.input_tokens_details?.cached_tokens ?? null,\n reasoningTokens:\n response.usage.output_tokens_details?.reasoning_tokens ?? null,\n },\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args: body, warnings } = 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: LanguageModelV1FinishReason = 'unknown';\n let promptTokens = NaN;\n let completionTokens = NaN;\n let cachedPromptTokens: number | null = null;\n let reasoningTokens: number | null = null;\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n { toolName: string; toolCallId: string } | undefined\n > = {};\n let hasToolCalls = false;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiResponsesChunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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-call-delta',\n toolCallType: 'function',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n argsTextDelta: value.item.arguments,\n });\n }\n } else if (isResponseFunctionCallArgumentsDeltaChunk(value)) {\n const toolCall = ongoingToolCalls[value.output_index];\n\n if (toolCall != null) {\n controller.enqueue({\n type: 'tool-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n argsTextDelta: value.delta,\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 textDelta: value.delta,\n });\n } else if (isResponseReasoningSummaryTextDeltaChunk(value)) {\n controller.enqueue({\n type: 'reasoning',\n textDelta: value.delta,\n });\n } else if (\n isResponseOutputItemDoneChunk(value) &&\n value.item.type === 'function_call'\n ) {\n ongoingToolCalls[value.output_index] = undefined;\n hasToolCalls = true;\n controller.enqueue({\n type: 'tool-call',\n toolCallType: 'function',\n toolCallId: value.item.call_id,\n toolName: value.item.name,\n args: value.item.arguments,\n });\n } else if (isResponseFinishedChunk(value)) {\n finishReason = mapOpenAIResponseFinishReason({\n finishReason: value.response.incomplete_details?.reason,\n hasToolCalls,\n });\n promptTokens = value.response.usage.input_tokens;\n completionTokens = value.response.usage.output_tokens;\n cachedPromptTokens =\n value.response.usage.input_tokens_details?.cached_tokens ??\n cachedPromptTokens;\n reasoningTokens =\n value.response.usage.output_tokens_details?.reasoning_tokens ??\n reasoningTokens;\n } else if (isResponseAnnotationAddedChunk(value)) {\n controller.enqueue({\n type: 'source',\n source: {\n sourceType: 'url',\n id: self.config.generateId?.() ?? generateId(),\n url: value.annotation.url,\n title: value.annotation.title,\n },\n });\n } else if (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: { promptTokens, completionTokens },\n ...((cachedPromptTokens != null || reasoningTokens != null) && {\n providerMetadata: {\n openai: {\n responseId,\n cachedPromptTokens,\n reasoningTokens,\n },\n },\n }),\n });\n },\n }),\n ),\n rawCall: {\n rawPrompt: undefined,\n rawSettings: {},\n },\n rawResponse: { headers: responseHeaders },\n request: { body: JSON.stringify(body) },\n warnings,\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 delta: z.string(),\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 }),\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 }),\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 }),\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 ]),\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 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 }),\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 ]),\n});\n\nconst responseAnnotationAddedSchema = z.object({\n type: z.literal('response.output_text.annotation.added'),\n annotation: z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string(),\n }),\n});\n\nconst responseReasoningSummaryTextDeltaSchema = z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\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 openaiResponsesChunkSchema = z.union([\n textDeltaChunkSchema,\n responseFinishedChunkSchema,\n responseCreatedChunkSchema,\n responseOutputItemDoneSchema,\n responseFunctionCallArgumentsDeltaSchema,\n responseOutputItemAddedSchema,\n responseAnnotationAddedSchema,\n responseReasoningSummaryTextDeltaSchema,\n errorChunkSchema,\n z.object({ type: z.string() }).passthrough(), // fallback for unknown chunks\n]);\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 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 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 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 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};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n // o series reasoning models:\n if (modelId.startsWith('o') || modelId.startsWith('gpt-5')) {\n if (modelId.startsWith('o1-mini') || modelId.startsWith('o1-preview')) {\n return {\n isReasoningModel: true,\n systemMessageMode: 'remove',\n requiredAutoTruncation: false,\n };\n }\n\n return {\n isReasoningModel: true,\n systemMessageMode: 'developer',\n requiredAutoTruncation: false,\n };\n }\n\n // gpt models:\n return {\n isReasoningModel: false,\n systemMessageMode: 'system',\n requiredAutoTruncation: false,\n };\n}\n\nconst openaiResponsesProviderOptionsSchema = z.object({\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n store: z.boolean().nullish(),\n user: z.string().nullish(),\n reasoningEffort: z.string().nullish(),\n strictSchemas: z.boolean().nullish(),\n instructions: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n});\n\nexport type OpenAIResponsesProviderOptions = z.infer<\n typeof openaiResponsesProviderOptionsSchema\n>;\n","import { z } from 'zod';\n\nconst WebSearchPreviewParameters = z.object({});\n\nfunction webSearchPreviewTool({\n searchContextSize,\n userLocation,\n}: {\n searchContextSize?: 'low' | 'medium' | 'high';\n userLocation?: {\n type?: 'approximate';\n city?: string;\n region?: string;\n country?: string;\n timezone?: string;\n };\n} = {}): {\n type: 'provider-defined';\n id: 'openai.web_search_preview';\n args: {};\n parameters: typeof WebSearchPreviewParameters;\n} {\n return {\n type: 'provider-defined',\n id: 'openai.web_search_preview',\n args: {\n searchContextSize,\n userLocation,\n },\n parameters: WebSearchPreviewParameters,\n };\n}\n\nexport const openaiTools = {\n webSearchPreview: webSearchPreviewTool,\n};\n","import { SpeechModelV1, SpeechModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { OpenAIConfig } from './openai-config';\nimport { openaiFailedResponseHandler } from './openai-error';\nimport { OpenAISpeechModelId } from './openai-speech-settings';\nimport { OpenAISpeechAPITypes } from './openai-api-types';\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 SpeechModelV1 {\n readonly specificationVersion = 'v1';\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 getArgs({\n text,\n voice = 'alloy',\n outputFormat = 'mp3',\n speed,\n instructions,\n providerOptions,\n }: Parameters<SpeechModelV1['doGenerate']>[0]) {\n const warnings: SpeechModelV1CallWarning[] = [];\n\n // Parse provider options\n const openAIOptions = 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 return {\n requestBody,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV1['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, warnings } = 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 EmbeddingModelV1,\n ImageModelV1,\n TranscriptionModelV1,\n LanguageModelV1,\n ProviderV1,\n SpeechModelV1,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIChatLanguageModel } from './openai-chat-language-model';\nimport { OpenAIChatModelId, OpenAIChatSettings } from './openai-chat-settings';\nimport { OpenAICompletionLanguageModel } from './openai-completion-language-model';\nimport {\n OpenAICompletionModelId,\n OpenAICompletionSettings,\n} from './openai-completion-settings';\nimport { OpenAIEmbeddingModel } from './openai-embedding-model';\nimport {\n OpenAIEmbeddingModelId,\n OpenAIEmbeddingSettings,\n} from './openai-embedding-settings';\nimport { OpenAIImageModel } from './openai-image-model';\nimport {\n OpenAIImageModelId,\n OpenAIImageSettings,\n} from './openai-image-settings';\nimport { OpenAITranscriptionModel } from './openai-transcription-model';\nimport { OpenAITranscriptionModelId } from './openai-transcription-settings';\nimport { OpenAIResponsesLanguageModel } from './responses/openai-responses-language-model';\nimport { OpenAIResponsesModelId } from './responses/openai-responses-settings';\nimport { openaiTools } from './openai-tools';\nimport { OpenAISpeechModel } from './openai-speech-model';\nimport { OpenAISpeechModelId } from './openai-speech-settings';\n\nexport interface OpenAIProvider extends ProviderV1 {\n (\n modelId: 'gpt-3.5-turbo-instruct',\n settings?: OpenAICompletionSettings,\n ): OpenAICompletionLanguageModel;\n (modelId: OpenAIChatModelId, settings?: OpenAIChatSettings): LanguageModelV1;\n\n /**\nCreates an OpenAI model for text generation.\n */\n languageModel(\n modelId: 'gpt-3.5-turbo-instruct',\n settings?: OpenAICompletionSettings,\n ): OpenAICompletionLanguageModel;\n languageModel(\n modelId: OpenAIChatModelId,\n settings?: OpenAIChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates an OpenAI chat model for text generation.\n */\n chat(\n modelId: OpenAIChatModelId,\n settings?: OpenAIChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates an OpenAI responses API model for text generation.\n */\n responses(modelId: OpenAIResponsesModelId): LanguageModelV1;\n\n /**\nCreates an OpenAI completion model for text generation.\n */\n completion(\n modelId: OpenAICompletionModelId,\n settings?: OpenAICompletionSettings,\n ): LanguageModelV1;\n\n /**\nCreates a model for text embeddings.\n */\n embedding(\n modelId: OpenAIEmbeddingModelId,\n settings?: OpenAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n /**\nCreates a model for text embeddings.\n\n@deprecated Use `textEmbeddingModel` instead.\n */\n textEmbedding(\n modelId: OpenAIEmbeddingModelId,\n settings?: OpenAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n /**\nCreates a model for text embeddings.\n */\n textEmbeddingModel(\n modelId: OpenAIEmbeddingModelId,\n settings?: OpenAIEmbeddingSettings,\n ): EmbeddingModelV1<string>;\n\n /**\nCreates a model for image generation.\n */\n image(\n modelId: OpenAIImageModelId,\n settings?: OpenAIImageSettings,\n ): ImageModelV1;\n\n /**\nCreates a model for image generation.\n */\n imageModel(\n modelId: OpenAIImageModelId,\n settings?: OpenAIImageSettings,\n ): ImageModelV1;\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: OpenAITranscriptionModelId): TranscriptionModelV1;\n\n /**\nCreates a model for speech generation.\n */\n speech(modelId: OpenAISpeechModelId): SpeechModelV1;\n\n /**\nOpenAI-specific tools.\n */\n tools: typeof openaiTools;\n}\n\nexport interface OpenAIProviderSettings {\n /**\nBase URL for the OpenAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nOpenAI Organization.\n */\n organization?: string;\n\n /**\nOpenAI project.\n */\n project?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nOpenAI compatibility mode. Should be set to `strict` when using the OpenAI API,\nand `compatible` when using 3rd party providers. In `compatible` mode, newer\ninformation such as streamOptions are not being sent. Defaults to 'compatible'.\n */\n compatibility?: 'strict' | 'compatible';\n\n /**\nProvider name. Overrides the `openai` default name for 3rd party providers.\n */\n name?: string;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an OpenAI provider instance.\n */\nexport function createOpenAI(\n options: OpenAIProviderSettings = {},\n): OpenAIProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.openai.com/v1';\n\n // we default to compatible, because strict breaks providers like Groq:\n const compatibility = options.compatibility ?? 'compatible';\n\n const providerName = options.name ?? 'openai';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'OPENAI_API_KEY',\n description: 'OpenAI',\n })}`,\n 'OpenAI-Organization': options.organization,\n 'OpenAI-Project': options.project,\n ...options.headers,\n });\n\n const createChatModel = (\n modelId: OpenAIChatModelId,\n settings: OpenAIChatSettings = {},\n ) =>\n new OpenAIChatLanguageModel(modelId, settings, {\n provider: `${providerName}.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n compatibility,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (\n modelId: OpenAICompletionModelId,\n settings: OpenAICompletionSettings = {},\n ) =>\n new OpenAICompletionLanguageModel(modelId, settings, {\n provider: `${providerName}.completion`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n compatibility,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (\n modelId: OpenAIEmbeddingModelId,\n settings: OpenAIEmbeddingSettings = {},\n ) =>\n new OpenAIEmbeddingModel(modelId, settings, {\n provider: `${providerName}.embedding`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createImageModel = (\n modelId: OpenAIImageModelId,\n settings: OpenAIImageSettings = {},\n ) =>\n new OpenAIImageModel(modelId, settings, {\n provider: `${providerName}.image`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: OpenAITranscriptionModelId) =>\n new OpenAITranscriptionModel(modelId, {\n provider: `${providerName}.transcription`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: OpenAISpeechModelId) =>\n new OpenAISpeechModel(modelId, {\n provider: `${providerName}.speech`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (\n modelId: OpenAIChatModelId | OpenAICompletionModelId,\n settings?: OpenAIChatSettings | OpenAICompletionSettings,\n ) => {\n if (new.target) {\n throw new Error(\n 'The OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n if (modelId === 'gpt-3.5-turbo-instruct') {\n return createCompletionModel(\n modelId,\n settings as OpenAICompletionSettings,\n );\n }\n\n return createChatModel(modelId, settings as OpenAIChatSettings);\n };\n\n const createResponsesModel = (modelId: OpenAIResponsesModelId) => {\n return new OpenAIResponsesLanguageModel(modelId, {\n provider: `${providerName}.responses`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = function (\n modelId: OpenAIChatModelId | OpenAICompletionModelId,\n settings?: OpenAIChatSettings | OpenAICompletionSettings,\n ) {\n return createLanguageModel(modelId, settings);\n };\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.responses = createResponsesModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n provider.tools = openaiTools;\n\n return provider as OpenAIProvider;\n}\n\n/**\nDefault OpenAI provider instance. It uses 'strict' compatibility mode.\n */\nexport const openai = createOpenAI({\n compatibility: 'strict', // strict for OpenAI API\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToOpenAIChatMessages({\n prompt,\n systemMessageMode = 'system',\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n messages: OpenAIChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: OpenAIChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map((part, index) => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n },\n };\n } else if (part.mediaType.startsWith('audio/')) {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'audio file parts with URLs',\n });\n }\n\n switch (part.mediaType) {\n case 'audio/wav': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'wav',\n },\n };\n }\n case 'audio/mp3':\n case 'audio/mpeg': {\n return {\n type: 'input_audio',\n input_audio: {\n data: convertToBase64(part.data),\n format: 'mp3',\n },\n };\n }\n\n default: {\n throw new UnsupportedFunctionalityError({\n functionality: `audio content parts with media type ${part.mediaType}`,\n });\n }\n }\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'file',\n file: {\n 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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n | 'o1'\n | 'o1-2024-12-17'\n | 'o1-mini'\n | 'o1-mini-2024-09-12'\n | 'o1-preview'\n | 'o1-preview-2024-09-12'\n | 'o3-mini'\n | 'o3-mini-2025-01-31'\n | 'o3'\n | 'o3-2025-04-16'\n | 'o4-mini'\n | 'o4-mini-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-audio-preview'\n | 'gpt-4o-audio-preview-2024-10-01'\n | 'gpt-4o-audio-preview-2024-12-17'\n | 'gpt-4o-search-preview'\n | 'gpt-4o-search-preview-2025-03-11'\n | 'gpt-4o-mini-search-preview'\n | 'gpt-4o-mini-search-preview-2025-03-11'\n | 'gpt-4o-mini'\n | 'gpt-4o-mini-2024-07-18'\n | 'gpt-4-turbo'\n | 'gpt-4-turbo-2024-04-09'\n | 'gpt-4-turbo-preview'\n | 'gpt-4-0125-preview'\n | 'gpt-4-1106-preview'\n | 'gpt-4'\n | 'gpt-4-0613'\n | 'gpt-4.5-preview'\n | 'gpt-4.5-preview-2025-02-27'\n | 'gpt-3.5-turbo-0125'\n | 'gpt-3.5-turbo'\n | 'gpt-3.5-turbo-1106'\n | 'chatgpt-4o-latest'\n | (string & {});\n\nexport const openaiProviderOptions = 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(['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\nexport type OpenAIProviderOptions = z.infer<typeof openaiProviderOptions>;\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 { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Filter schemas\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\nconst filtersSchema = z.union([comparisonFilterSchema, compoundFilterSchema]);\n\n// Args validation schema\nexport const fileSearchArgsSchema = z.object({\n /**\n * List of vector store IDs to search through. If not provided, searches all available vector stores.\n */\n vectorStoreIds: z.array(z.string()).optional(),\n\n /**\n * Maximum number of search results to return. Defaults to 10.\n */\n maxNumResults: z.number().optional(),\n\n /**\n * Ranking options for the search.\n */\n ranking: z\n .object({\n ranker: z.enum(['auto', 'default-2024-08-21']).optional(),\n })\n .optional(),\n\n /**\n * A filter to apply based on file attributes.\n */\n filters: filtersSchema.optional(),\n});\n\nexport const fileSearch = createProviderDefinedToolFactory<\n {\n /**\n * The search query to execute.\n */\n query: string;\n },\n {\n /**\n * List of vector store IDs to search through. If not provided, searches all available vector stores.\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 ranker?: 'auto' | 'default-2024-08-21';\n };\n\n /**\n * A filter to apply based on file attributes.\n */\n filters?:\n | {\n key: string;\n type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte';\n value: string | number | boolean;\n }\n | {\n type: 'and' | 'or';\n filters: any[];\n };\n }\n>({\n id: 'openai.file_search',\n name: 'file_search',\n inputSchema: z.object({\n query: z.string(),\n }),\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});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAITools, OpenAIToolChoice } from './openai-types';\nimport { fileSearchArgsSchema } from './tool/file-search';\nimport { webSearchPreviewArgsSchema } from './tool/web-search-preview';\n\nexport function prepareTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n structuredOutputs: boolean;\n strictJsonSchema: boolean;\n}): {\n tools?: OpenAITools;\n toolChoice?: OpenAIToolChoice;\n toolWarnings: Array<LanguageModelV2CallWarning>;\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: OpenAITools = [];\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 case 'provider-defined':\n switch (tool.id) {\n case 'openai.file_search': {\n const args = fileSearchArgsSchema.parse(tool.args);\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 ? { ranker: args.ranking.ranker }\n : undefined,\n filters: args.filters,\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 default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: openaiTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\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 openaiProviderOptions,\n} from './openai-chat-options';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} from './openai-error';\nimport { prepareTools } from './openai-prepare-tools';\n\ntype OpenAIChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: OpenAIChatConfig;\n\n constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n tools,\n toolChoice,\n providerOptions,\n }: LanguageModelV2CallOptions) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiProviderOptions,\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\n // openai specific settings:\n // TODO remove in next major version; 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\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: 'flex processing is only available for o3 and o4-mini 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, o3, o4-mini) and requires Enterprise access',\n });\n baseArgs.service_tier = undefined;\n }\n\n const {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n structuredOutputs,\n strictJsonSchema,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // tool calls:\n for (const toolCall of choice.message.tool_calls ?? []) {\n content.push({\n type: 'tool-call' as const,\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n\n // provider metadata:\n const completionTokenDetails = response.usage?.completion_tokens_details;\n const promptTokenDetails = response.usage?.prompt_tokens_details;\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata.openai.acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata.openai.rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (choice.logprobs?.content != null) {\n providerMetadata.openai.logprobs = choice.logprobs.content;\n }\n\n return {\n content,\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: completionTokenDetails?.reasoning_tokens ?? undefined,\n cachedInputTokens: promptTokenDetails?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let 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 LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\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\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 }),\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 })\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 modelId.startsWith('o');\n}\n\nfunction supportsFlexProcessing(modelId: string) {\n return modelId.startsWith('o3') || modelId.startsWith('o4-mini');\n}\n\nfunction supportsPriorityProcessing(modelId: string) {\n return (\n modelId.startsWith('gpt-4') ||\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 {\n InvalidPromptError,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n prompt,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n stopSequences?: string[];\n} {\n // transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0].role === 'system') {\n text += `${prompt[0].content}\\n\\n`;\n prompt = prompt.slice(1);\n }\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n throw new InvalidPromptError({\n message: 'Unexpected system message in prompt: ${content}',\n prompt,\n });\n }\n\n case 'user': {\n const userMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n }\n })\n .filter(Boolean)\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(part => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n case 'tool-call': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-call messages',\n });\n }\n }\n })\n .join('');\n\n text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n break;\n }\n\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool messages',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n stopSequences: [`\\n${user}:`],\n };\n}\n","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 LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\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';\nimport {\n openaiErrorDataSchema,\n openaiFailedResponseHandler,\n} from './openai-error';\n\ntype OpenAICompletionConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompletionModelId;\n\n private readonly config: OpenAICompletionConfig;\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n constructor(\n modelId: OpenAICompletionModelId,\n config: OpenAICompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported for completion models.\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const openaiOptions = {\n ...(await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n ...(await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompletionProviderOptions,\n })),\n };\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (tools?.length) {\n warnings.push({ type: 'unsupported-setting', setting: 'tools' });\n }\n\n if (toolChoice != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'toolChoice' });\n }\n\n if (responseFormat != null && responseFormat.type !== 'text') {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format is not supported.',\n });\n }\n\n const { prompt: completionPrompt, stopSequences } =\n convertToOpenAICompletionPrompt({ prompt });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: openaiOptions.echo,\n logit_bias: openaiOptions.logitBias,\n logprobs:\n openaiOptions?.logprobs === true\n ? 0\n : openaiOptions?.logprobs === false\n ? undefined\n : openaiOptions?.logprobs,\n suffix: openaiOptions.suffix,\n user: openaiOptions.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n\n if (choice.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n return {\n content: [{ type: 'text', text: choice.text }],\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n },\n finishReason: mapOpenAIFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n providerMetadata,\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n stream_options: {\n include_usage: true,\n },\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const providerMetadata: SharedV2ProviderMetadata = { openai: {} };\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiCompletionChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({ type: 'text-start', id: '0' });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAIFinishReason(choice.finish_reason);\n }\n\n if (choice?.logprobs != null) {\n providerMetadata.openai.logprobs = choice.logprobs;\n }\n\n if (choice?.text != null && choice.text.length > 0) {\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: choice.text,\n });\n }\n },\n\n flush(controller) {\n if (!isFirstChunk) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n providerMetadata,\n usage,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\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 { 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 {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { OpenAIConfig } from './openai-config';\nimport {\n OpenAIEmbeddingModelId,\n openaiEmbeddingProviderOptions,\n} from './openai-embedding-options';\nimport { openaiFailedResponseHandler } from './openai-error';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAIEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 2048;\n readonly supportsParallelCalls = true;\n\n private readonly config: OpenAIConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n // Parse provider options\n const openaiOptions =\n (await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiEmbeddingProviderOptions,\n })) ?? {};\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/embeddings',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n dimensions: openaiOptions.dimensions,\n user: openaiOptions.user,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\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","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 { ImageModelV2, ImageModelV2CallWarning } 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 modelMaxImagesPerCall,\n hasDefaultResponseFormat,\n} from './openai-image-settings';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class OpenAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n\n get maxImagesPerCall(): number {\n return modelMaxImagesPerCall[this.modelId] ?? 1;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAIImageModelId,\n private readonly config: OpenAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n ...(providerOptions.openai ?? {}),\n ...(!hasDefaultResponseFormat.has(this.modelId)\n ? { response_format: 'b64_json' }\n : {}),\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.data.map(item => item.b64_json),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n providerMetadata: {\n openai: {\n images: response.data.map(item =>\n item.revised_prompt\n ? {\n revisedPrompt: item.revised_prompt,\n }\n : null,\n ),\n },\n },\n };\n }\n}\n\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","import { fileSearch } from './tool/file-search';\nimport { webSearchPreview } from './tool/web-search-preview';\n\nexport { fileSearch } from './tool/file-search';\nexport { webSearchPreview } from './tool/web-search-preview';\n\nexport type {\n OpenAITool,\n OpenAITools,\n OpenAIToolChoice,\n OpenAIFunctionTool,\n OpenAIFileSearchTool,\n OpenAIWebSearchPreviewTool,\n OpenAIWebSearchUserLocation,\n} from './openai-types';\n\nexport const openaiTools = {\n fileSearch,\n webSearchPreview,\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 {\n TranscriptionModelV2,\n TranscriptionModelV2CallOptions,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\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 formData.append('file', new File([blob], 'audio', { type: mediaType }));\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 temperature: openAIOptions.temperature,\n timestamp_granularities: openAIOptions.timestampGranularities,\n };\n\n for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n if (value != null) {\n formData.append(key, String(value));\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.words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\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});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { parseProviderOptions } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAIResponsesPrompt,\n OpenAIResponsesReasoning,\n} from './openai-responses-api-types';\n\nexport async function convertToOpenAIResponsesMessages({\n prompt,\n systemMessageMode,\n}: {\n prompt: LanguageModelV2Prompt;\n systemMessageMode: 'system' | 'developer' | 'remove';\n}): Promise<{\n messages: OpenAIResponsesPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n}> {\n const messages: OpenAIResponsesPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n switch (systemMessageMode) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n case 'developer': {\n messages.push({ role: 'developer', content });\n break;\n }\n case 'remove': {\n warnings.push({\n type: 'other',\n message: 'system messages are removed for this model',\n });\n break;\n }\n default: {\n const _exhaustiveCheck: never = systemMessageMode;\n throw new Error(\n `Unsupported system message mode: ${_exhaustiveCheck}`,\n );\n }\n }\n break;\n }\n\n case 'user': {\n messages.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 image_url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${part.data}`,\n\n // OpenAI specific extension: image detail\n detail: part.providerOptions?.openai?.imageDetail,\n };\n } else if (part.mediaType === 'application/pdf') {\n if (part.data instanceof URL) {\n // The AI SDK automatically downloads files for user file parts with URLs\n throw new UnsupportedFunctionalityError({\n functionality: 'PDF file parts with URLs',\n });\n }\n\n return {\n type: 'input_file',\n filename: part.filename ?? `part-${index}.pdf`,\n file_data: `data:application/pdf;base64,${part.data}`,\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\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n messages.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 if (part.providerExecuted) {\n break;\n }\n\n messages.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 case 'tool-result': {\n warnings.push({\n type: 'other',\n message: `tool result parts in assistant messages are not supported for OpenAI responses`,\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 existingReasoningMessage = reasoningMessages[reasoningId];\n\n const summaryParts: Array<{\n type: 'summary_text';\n text: string;\n }> = [];\n\n if (part.text.length > 0) {\n summaryParts.push({ type: 'summary_text', text: part.text });\n } else if (existingReasoningMessage !== 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 (existingReasoningMessage === undefined) {\n reasoningMessages[reasoningId] = {\n type: 'reasoning',\n id: reasoningId,\n encrypted_content:\n providerOptions?.reasoningEncryptedContent,\n summary: summaryParts,\n };\n messages.push(reasoningMessages[reasoningId]);\n } else {\n existingReasoningMessage.summary.push(...summaryParts);\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 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 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 { messages, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n itemId: z.string().nullish(),\n reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n finishReason,\n hasToolCalls,\n}: {\n finishReason: string | null | undefined;\n hasToolCalls: boolean;\n}): LanguageModelV2FinishReason {\n switch (finishReason) {\n case undefined:\n case null:\n return hasToolCalls ? 'tool-calls' : 'stop';\n case 'max_output_tokens':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n default:\n return hasToolCalls ? 'tool-calls' : 'unknown';\n }\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIResponsesTool } from './openai-responses-api-types';\nimport { fileSearchArgsSchema } from '../tool/file-search';\n\nexport function prepareResponsesTools({\n tools,\n toolChoice,\n strictJsonSchema,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['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: 'function'; name: string };\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const openaiTools: Array<OpenAIResponsesTool> = [];\n\n for (const tool of tools) {\n switch (tool.type) {\n case 'function':\n openaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n strict: strictJsonSchema,\n });\n break;\n case 'provider-defined':\n switch (tool.id) {\n case 'openai.file_search': {\n const args = fileSearchArgsSchema.parse(tool.args);\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 ? { ranker: args.ranking.ranker }\n : undefined,\n filters: args.filters,\n });\n break;\n }\n case 'openai.web_search_preview':\n openaiTools.push({\n type: 'web_search_preview',\n search_context_size: tool.args.searchContextSize as\n | 'low'\n | 'medium'\n | 'high',\n user_location: tool.args.userLocation as {\n type: 'approximate';\n city: string;\n region: string;\n },\n });\n break;\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\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 toolChoice.toolName === 'file_search'\n ? { type: 'file_search' }\n : toolChoice.toolName === 'web_search_preview'\n ? { type: 'web_search_preview' }\n : { type: 'function', name: toolChoice.toolName },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\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 { convertToOpenAIResponsesMessages } from './convert-to-openai-responses-messages';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport { OpenAIResponsesModelId } from './openai-responses-settings';\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAIResponsesModelId;\n\n private readonly config: OpenAIConfig;\n\n constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n maxOutputTokens,\n temperature,\n stopSequences,\n topP,\n topK,\n presencePenalty,\n frequencyPenalty,\n seed,\n prompt,\n providerOptions,\n tools,\n toolChoice,\n responseFormat,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n const modelConfig = getResponsesModelConfig(this.modelId);\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'stopSequences' });\n }\n\n const { messages, warnings: messageWarnings } =\n await convertToOpenAIResponsesMessages({\n prompt,\n systemMessageMode: modelConfig.systemMessageMode,\n });\n\n warnings.push(...messageWarnings);\n\n const openaiOptions = await parseProviderOptions({\n provider: 'openai',\n providerOptions,\n schema: openaiResponsesProviderOptionsSchema,\n });\n\n const strictJsonSchema = openaiOptions?.strictJsonSchema ?? false;\n\n const baseArgs = {\n model: this.modelId,\n input: messages,\n temperature,\n top_p: topP,\n max_output_tokens: maxOutputTokens,\n\n ...(responseFormat?.type === 'json' && {\n text: {\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 }),\n\n // provider options:\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: openaiOptions?.include,\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 !supportsFlexProcessing(this.modelId)\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'serviceTier',\n details: 'flex processing is only available for o3 and o4-mini 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 !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, o3, o4-mini) and requires Enterprise access',\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 args: {\n ...baseArgs,\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n 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 annotations: z.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 }),\n ),\n }),\n z.object({\n type: z.literal('function_call'),\n call_id: z.string(),\n name: z.string(),\n arguments: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.string().optional(),\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 incomplete_details: z.object({ reason: z.string() }).nullable(),\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<LanguageModelV2Content> = [];\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 'message': {\n for (const contentPart of part.content) {\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 content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId?.() ?? generateId(),\n url: annotation.url,\n title: annotation.title,\n });\n }\n }\n break;\n }\n\n case 'function_call': {\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: 'web_search_preview',\n input: '',\n providerExecuted: true,\n });\n\n content.push({\n type: 'tool-result',\n toolCallId: part.id,\n toolName: 'web_search_preview',\n result: { status: part.status || 'completed' },\n providerExecuted: true,\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 }\n\n return {\n content,\n finishReason: mapOpenAIResponseFinishReason({\n finishReason: response.incomplete_details?.reason,\n hasToolCalls: content.some(part => part.type === 'tool-call'),\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 openai: {\n responseId: response.id,\n },\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/responses',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...body,\n stream: true,\n },\n failedResponseHandler: openaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n openaiResponsesChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const self = this;\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let responseId: string | null = null;\n const ongoingToolCalls: Record<\n number,\n { toolName: string; toolCallId: string } | undefined\n > = {};\n let hasToolCalls = false;\n\n const activeReasoning: Record<\n string,\n {\n encryptedContent?: string | null;\n summaryParts: number[];\n }\n > = {};\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof openaiResponsesChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isResponseOutputItemAddedChunk(value)) {\n if (value.item.type === 'function_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: value.item.name,\n toolCallId: value.item.call_id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.call_id,\n toolName: value.item.name,\n });\n } else if (value.item.type === 'web_search_call') {\n ongoingToolCalls[value.output_index] = {\n toolName: 'web_search_preview',\n toolCallId: value.item.id,\n };\n\n controller.enqueue({\n type: 'tool-input-start',\n id: value.item.id,\n toolName: 'web_search_preview',\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 === '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 hasToolCalls = 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 hasToolCalls = true;\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_preview',\n input: '',\n providerExecuted: true,\n });\n\n controller.enqueue({\n type: 'tool-result',\n toolCallId: value.item.id,\n toolName: 'web_search_preview',\n result: {\n type: 'web_search_tool_result',\n status: value.item.status || 'completed',\n },\n providerExecuted: true,\n });\n } else if (value.item.type === 'computer_call') {\n ongoingToolCalls[value.output_index] = undefined;\n hasToolCalls = true;\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 === '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 (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 } 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 hasToolCalls,\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 } else if (isResponseAnnotationAddedChunk(value)) {\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 (isErrorChunk(value)) {\n controller.enqueue({ type: 'error', error: value });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata: {\n openai: {\n responseId,\n },\n },\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});\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 }),\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 }),\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 }),\n z.object({\n type: z.literal('computer_call'),\n id: z.string(),\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 z.object({\n type: z.literal('web_search_call'),\n id: z.string(),\n status: z.literal('completed'),\n }),\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 responseAnnotationAddedSchema = z.object({\n type: z.literal('response.output_text.annotation.added'),\n annotation: z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string(),\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 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 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};\n\nfunction getResponsesModelConfig(modelId: string): ResponsesModelConfig {\n // o series reasoning models:\n if (\n modelId.startsWith('o') ||\n modelId.startsWith('codex-') ||\n modelId.startsWith('computer-use')\n ) {\n if (modelId.startsWith('o1-mini') || modelId.startsWith('o1-preview')) {\n return {\n isReasoningModel: true,\n systemMessageMode: 'remove',\n requiredAutoTruncation: false,\n };\n }\n\n return {\n isReasoningModel: true,\n systemMessageMode: 'developer',\n requiredAutoTruncation: false,\n };\n }\n\n // gpt models:\n return {\n isReasoningModel: false,\n systemMessageMode: 'system',\n requiredAutoTruncation: false,\n };\n}\n\nfunction supportsFlexProcessing(modelId: string): boolean {\n return modelId.startsWith('o3') || modelId.startsWith('o4-mini');\n}\n\nfunction supportsPriorityProcessing(modelId: string): boolean {\n return (\n modelId.startsWith('gpt-4') ||\n modelId.startsWith('o3') ||\n modelId.startsWith('o4-mini')\n );\n}\n\nconst openaiResponsesProviderOptionsSchema = z.object({\n metadata: z.any().nullish(),\n parallelToolCalls: z.boolean().nullish(),\n previousResponseId: z.string().nullish(),\n store: z.boolean().nullish(),\n user: z.string().nullish(),\n reasoningEffort: z.string().nullish(),\n strictJsonSchema: z.boolean().nullish(),\n instructions: z.string().nullish(),\n reasoningSummary: z.string().nullish(),\n serviceTier: z.enum(['auto', 'flex', 'priority']).nullish(),\n include: z\n .array(z.enum(['reasoning.encrypted_content', 'file_search_call.results']))\n .nullish(),\n});\n\nexport type OpenAIResponsesProviderOptions = z.infer<\n typeof openaiResponsesProviderOptionsSchema\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 { OpenAISpeechModelId } from './openai-speech-options';\nimport { OpenAISpeechAPITypes } from './openai-api-types';\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 EmbeddingModelV2,\n ImageModelV2,\n LanguageModelV2,\n ProviderV2,\n TranscriptionModelV2,\n SpeechModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIChatLanguageModel } from './openai-chat-language-model';\nimport { OpenAIChatModelId } from './openai-chat-options';\nimport { OpenAICompletionLanguageModel } from './openai-completion-language-model';\nimport { OpenAICompletionModelId } from './openai-completion-options';\nimport { OpenAIEmbeddingModel } from './openai-embedding-model';\nimport { OpenAIEmbeddingModelId } from './openai-embedding-options';\nimport { OpenAIImageModel } from './openai-image-model';\nimport { OpenAIImageModelId } from './openai-image-settings';\nimport { openaiTools } from './openai-tools';\nimport { OpenAITranscriptionModel } from './openai-transcription-model';\nimport { OpenAITranscriptionModelId } from './openai-transcription-options';\nimport { OpenAIResponsesLanguageModel } from './responses/openai-responses-language-model';\nimport { OpenAIResponsesModelId } from './responses/openai-responses-settings';\nimport { OpenAISpeechModel } from './openai-speech-model';\nimport { OpenAISpeechModelId } from './openai-speech-options';\n\nexport interface OpenAIProvider extends ProviderV2 {\n (modelId: OpenAIResponsesModelId): LanguageModelV2;\n\n /**\nCreates an OpenAI model for text generation.\n */\n languageModel(modelId: OpenAIResponsesModelId): OpenAIResponsesLanguageModel;\n\n /**\nCreates an OpenAI chat model for text generation.\n */\n chat(modelId: OpenAIChatModelId): LanguageModelV2;\n\n /**\nCreates an OpenAI responses API model for text generation.\n */\n responses(modelId: OpenAIResponsesModelId): LanguageModelV2;\n\n /**\nCreates an OpenAI completion model for text generation.\n */\n completion(modelId: OpenAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a model for text embeddings.\n */\n embedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV2<string>;\n\n /**\nCreates a model for text embeddings.\n */\n textEmbedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV2<string>;\n\n /**\nCreates a model for text embeddings.\n */\n textEmbeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n */\n image(modelId: OpenAIImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: OpenAIImageModelId): ImageModelV2;\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: OpenAITranscriptionModelId): TranscriptionModelV2;\n\n /**\nCreates a model for speech generation.\n */\n speech(modelId: OpenAISpeechModelId): SpeechModelV2;\n\n /**\nOpenAI-specific tools.\n */\n tools: typeof openaiTools;\n}\n\nexport interface OpenAIProviderSettings {\n /**\nBase URL for the OpenAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nOpenAI Organization.\n */\n organization?: string;\n\n /**\nOpenAI project.\n */\n project?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nProvider name. Overrides the `openai` default name for 3rd party providers.\n */\n name?: string;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an OpenAI provider instance.\n */\nexport function createOpenAI(\n options: OpenAIProviderSettings = {},\n): OpenAIProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.openai.com/v1';\n\n const providerName = options.name ?? 'openai';\n\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'OPENAI_API_KEY',\n description: 'OpenAI',\n })}`,\n 'OpenAI-Organization': options.organization,\n 'OpenAI-Project': options.project,\n ...options.headers,\n });\n\n const createChatModel = (modelId: OpenAIChatModelId) =>\n new OpenAIChatLanguageModel(modelId, {\n provider: `${providerName}.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createCompletionModel = (modelId: OpenAICompletionModelId) =>\n new OpenAICompletionLanguageModel(modelId, {\n provider: `${providerName}.completion`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createEmbeddingModel = (modelId: OpenAIEmbeddingModelId) =>\n new OpenAIEmbeddingModel(modelId, {\n provider: `${providerName}.embedding`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createImageModel = (modelId: OpenAIImageModelId) =>\n new OpenAIImageModel(modelId, {\n provider: `${providerName}.image`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createTranscriptionModel = (modelId: OpenAITranscriptionModelId) =>\n new OpenAITranscriptionModel(modelId, {\n provider: `${providerName}.transcription`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: OpenAISpeechModelId) =>\n new OpenAISpeechModel(modelId, {\n provider: `${providerName}.speech`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (modelId: OpenAIResponsesModelId) => {\n if (new.target) {\n throw new Error(\n 'The OpenAI model function cannot be called with the new keyword.',\n );\n }\n\n return createResponsesModel(modelId);\n };\n\n const createResponsesModel = (modelId: OpenAIResponsesModelId) => {\n return new OpenAIResponsesLanguageModel(modelId, {\n provider: `${providerName}.responses`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = function (modelId: OpenAIResponsesModelId) {\n return createLanguageModel(modelId);\n };\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n provider.responses = createResponsesModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n provider.tools = openaiTools;\n\n return provider as OpenAIProvider;\n}\n\n/**\nDefault OpenAI provider instance.\n */\nexport const openai = createOpenAI();\n","import {\n LanguageModelV1Prompt,\n LanguageModelV1ProviderMetadata,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport { OpenAICompatibleChatPrompt } from './openai-compatible-api-types';\n\nfunction getOpenAIMetadata(message: {\n providerMetadata?: LanguageModelV1ProviderMetadata;\n}) {\n return message?.providerMetadata?.openaiCompatible ?? {};\n}\n\nexport function convertToOpenAICompatibleChatMessages(\n prompt: LanguageModelV1Prompt,\n): OpenAICompatibleChatPrompt {\n const messages: OpenAICompatibleChatPrompt = [];\n for (const { role, content, ...message } of prompt) {\n const metadata = getOpenAIMetadata({ ...message });\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content, ...metadata });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({\n role: 'user',\n content: content[0].text,\n ...getOpenAIMetadata(content[0]),\n });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n const partMetadata = getOpenAIMetadata(part);\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text, ...partMetadata };\n }\n case 'image': {\n return {\n type: 'image_url',\n image_url: {\n url:\n part.image instanceof URL\n ? part.image.toString()\n : `data:${\n part.mimeType ?? 'image/jpeg'\n };base64,${convertUint8ArrayToBase64(part.image)}`,\n },\n ...partMetadata,\n };\n }\n case 'file': {\n throw new UnsupportedFunctionalityError({\n functionality: 'File content parts in user messages',\n });\n }\n }\n }),\n ...metadata,\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 const partMetadata = getOpenAIMetadata(part);\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.args),\n },\n ...partMetadata,\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 ...metadata,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const toolResponseMetadata = getOpenAIMetadata(toolResponse);\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: JSON.stringify(toolResponse.result),\n ...toolResponseMetadata,\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;\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 { LanguageModelV1FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAICompatibleFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV1FinishReason {\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, ZodSchema } from 'zod';\n\nexport const openaiCompatibleErrorDataSchema = 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 OpenAICompatibleErrorData = z.infer<\n typeof openaiCompatibleErrorDataSchema\n>;\n\nexport type ProviderErrorStructure<T> = {\n errorSchema: ZodSchema<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n};\n\nexport const defaultOpenAICompatibleErrorStructure: ProviderErrorStructure<OpenAICompatibleErrorData> =\n {\n errorSchema: openaiCompatibleErrorDataSchema,\n errorToMessage: data => data.error.message,\n };\n","import {\n LanguageModelV1,\n LanguageModelV1CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function prepareTools({\n mode,\n structuredOutputs,\n}: {\n mode: Parameters<LanguageModelV1['doGenerate']>[0]['mode'] & {\n type: 'regular';\n };\n structuredOutputs: boolean;\n}): {\n tools:\n | undefined\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>;\n tool_choice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: LanguageModelV1CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n const tools = mode.tools?.length ? mode.tools : undefined;\n const toolWarnings: LanguageModelV1CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, tool_choice: undefined, toolWarnings };\n }\n\n const toolChoice = mode.toolChoice;\n\n const openaiCompatTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n openaiCompatTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.parameters,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: openaiCompatTools, tool_choice: 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: openaiCompatTools, tool_choice: type, toolWarnings };\n case 'tool':\n return {\n tools: openaiCompatTools,\n tool_choice: {\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: `Unsupported tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n InvalidResponseDataError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1ObjectGenerationMode,\n LanguageModelV1ProviderMetadata,\n LanguageModelV1StreamPart,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n generateId,\n isParsableJson,\n ParseResult,\n postJsonToApi,\n ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { convertToOpenAICompatibleChatMessages } from './convert-to-openai-compatible-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAICompatibleFinishReason } from './map-openai-compatible-finish-reason';\nimport {\n OpenAICompatibleChatModelId,\n OpenAICompatibleChatSettings,\n} from './openai-compatible-chat-settings';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\nimport { prepareTools } from './openai-compatible-prepare-tools';\nimport { MetadataExtractor } from './openai-compatible-metadata-extractor';\n\nexport type OpenAICompatibleChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n includeUsage?: boolean;\n errorStructure?: ProviderErrorStructure<any>;\n metadataExtractor?: MetadataExtractor;\n\n /**\nDefault object generation mode that should be used with this model when\nno mode is specified. Should be the mode with the best results for this\nmodel. `undefined` can be specified if object generation is not supported.\n */\n defaultObjectGenerationMode?: LanguageModelV1ObjectGenerationMode;\n\n /**\n * Whether the model supports structured outputs.\n */\n supportsStructuredOutputs?: boolean;\n};\n\nexport class OpenAICompatibleChatLanguageModel implements LanguageModelV1 {\n readonly specificationVersion = 'v1';\n\n readonly supportsStructuredOutputs: boolean;\n\n readonly modelId: OpenAICompatibleChatModelId;\n readonly settings: OpenAICompatibleChatSettings;\n\n private readonly config: OpenAICompatibleChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n private readonly chunkSchema; // type inferred via constructor\n\n constructor(\n modelId: OpenAICompatibleChatModelId,\n settings: OpenAICompatibleChatSettings,\n config: OpenAICompatibleChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n\n // initialize error handling:\n const errorStructure =\n config.errorStructure ?? defaultOpenAICompatibleErrorStructure;\n this.chunkSchema = createOpenAICompatibleChatChunkSchema(\n errorStructure.errorSchema,\n );\n this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure);\n\n this.supportsStructuredOutputs = config.supportsStructuredOutputs ?? false;\n }\n\n get defaultObjectGenerationMode(): 'json' | 'tool' | undefined {\n return this.config.defaultObjectGenerationMode;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n private getArgs({\n mode,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n providerMetadata,\n stopSequences,\n responseFormat,\n seed,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\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 !this.supportsStructuredOutputs\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 baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: this.settings.user,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n response_format:\n responseFormat?.type === 'json'\n ? this.supportsStructuredOutputs === true &&\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n stop: stopSequences,\n seed,\n ...providerMetadata?.[this.providerOptionsName],\n\n reasoning_effort:\n providerMetadata?.[this.providerOptionsName]?.reasoningEffort ??\n providerMetadata?.['openai-compatible']?.reasoningEffort,\n\n // messages:\n messages: convertToOpenAICompatibleChatMessages(prompt),\n };\n\n switch (type) {\n case 'regular': {\n const { tools, tool_choice, toolWarnings } = prepareTools({\n mode,\n structuredOutputs: this.supportsStructuredOutputs,\n });\n\n return {\n args: { ...baseArgs, tools, tool_choice },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n case 'object-json': {\n return {\n args: {\n ...baseArgs,\n response_format:\n this.supportsStructuredOutputs === true && mode.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: mode.schema,\n name: mode.name ?? 'response',\n description: mode.description,\n },\n }\n : { type: 'json_object' },\n },\n warnings,\n };\n }\n\n case 'object-tool': {\n return {\n args: {\n ...baseArgs,\n tool_choice: {\n type: 'function',\n function: { name: mode.tool.name },\n },\n tools: [\n {\n type: 'function',\n function: {\n name: mode.tool.name,\n description: mode.tool.description,\n parameters: mode.tool.parameters,\n },\n },\n ],\n },\n warnings,\n };\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = this.getArgs({ ...options });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: responseBody,\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: args,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n OpenAICompatibleChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\n const choice = responseBody.choices[0];\n\n // provider metadata:\n const providerMetadata: LanguageModelV1ProviderMetadata = {\n [this.providerOptionsName]: {},\n ...this.config.metadataExtractor?.extractMetadata?.({\n parsedBody: rawResponse,\n }),\n };\n const completionTokenDetails =\n responseBody.usage?.completion_tokens_details;\n const promptTokenDetails = responseBody.usage?.prompt_tokens_details;\n if (completionTokenDetails?.reasoning_tokens != null) {\n providerMetadata[this.providerOptionsName].reasoningTokens =\n completionTokenDetails?.reasoning_tokens;\n }\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata[this.providerOptionsName].acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata[this.providerOptionsName].rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n if (promptTokenDetails?.cached_tokens != null) {\n providerMetadata[this.providerOptionsName].cachedPromptTokens =\n promptTokenDetails?.cached_tokens;\n }\n\n return {\n text: choice.message.content ?? undefined,\n reasoning: choice.message.reasoning_content ?? undefined,\n toolCalls: choice.message.tool_calls?.map(toolCall => ({\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments!,\n })),\n finishReason: mapOpenAICompatibleFinishReason(choice.finish_reason),\n usage: {\n promptTokens: responseBody.usage?.prompt_tokens ?? NaN,\n completionTokens: responseBody.usage?.completion_tokens ?? NaN,\n },\n providerMetadata,\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(responseBody),\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n if (this.settings.simulateStreaming) {\n const result = await this.doGenerate(options);\n const simulatedStream = new ReadableStream<LanguageModelV1StreamPart>({\n start(controller) {\n controller.enqueue({ type: 'response-metadata', ...result.response });\n if (result.reasoning) {\n if (Array.isArray(result.reasoning)) {\n for (const part of result.reasoning) {\n if (part.type === 'text') {\n controller.enqueue({\n type: 'reasoning',\n textDelta: part.text,\n });\n }\n }\n } else {\n controller.enqueue({\n type: 'reasoning',\n textDelta: result.reasoning,\n });\n }\n }\n if (result.text) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: result.text,\n });\n }\n if (result.toolCalls) {\n for (const toolCall of result.toolCalls) {\n controller.enqueue({\n type: 'tool-call',\n ...toolCall,\n });\n }\n }\n controller.enqueue({\n type: 'finish',\n finishReason: result.finishReason,\n usage: result.usage,\n logprobs: result.logprobs,\n providerMetadata: result.providerMetadata,\n });\n controller.close();\n },\n });\n return {\n stream: simulatedStream,\n rawCall: result.rawCall,\n rawResponse: result.rawResponse,\n warnings: result.warnings,\n };\n }\n\n const { args, warnings } = this.getArgs({ ...options });\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options: this.config.includeUsage\n ? { include_usage: true }\n : undefined,\n };\n\n const metadataExtractor =\n this.config.metadataExtractor?.createStreamExtractor();\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: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n this.chunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { messages: rawPrompt, ...rawSettings } = args;\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: LanguageModelV1FinishReason = 'unknown';\n let usage: {\n completionTokens: number | undefined;\n completionTokensDetails: {\n reasoningTokens: number | undefined;\n acceptedPredictionTokens: number | undefined;\n rejectedPredictionTokens: number | undefined;\n };\n promptTokens: number | undefined;\n promptTokensDetails: {\n cachedTokens: number | undefined;\n };\n } = {\n completionTokens: undefined,\n completionTokensDetails: {\n reasoningTokens: undefined,\n acceptedPredictionTokens: undefined,\n rejectedPredictionTokens: undefined,\n },\n promptTokens: undefined,\n promptTokensDetails: {\n cachedTokens: undefined,\n },\n };\n let isFirstChunk = true;\n let providerOptionsName = this.providerOptionsName;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof this.chunkSchema>>,\n LanguageModelV1StreamPart\n >({\n // TODO we lost type safety on Chunk, most likely due to the error schema. MUST FIX\n transform(chunk, controller) {\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 const value = chunk.value;\n\n metadataExtractor?.processChunk(chunk.rawValue);\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error.message });\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 const {\n prompt_tokens,\n completion_tokens,\n prompt_tokens_details,\n completion_tokens_details,\n } = value.usage;\n\n usage.promptTokens = prompt_tokens ?? undefined;\n usage.completionTokens = completion_tokens ?? undefined;\n\n if (completion_tokens_details?.reasoning_tokens != null) {\n usage.completionTokensDetails.reasoningTokens =\n completion_tokens_details?.reasoning_tokens;\n }\n if (\n completion_tokens_details?.accepted_prediction_tokens != null\n ) {\n usage.completionTokensDetails.acceptedPredictionTokens =\n completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n completion_tokens_details?.rejected_prediction_tokens != null\n ) {\n usage.completionTokensDetails.rejectedPredictionTokens =\n completion_tokens_details?.rejected_prediction_tokens;\n }\n if (prompt_tokens_details?.cached_tokens != null) {\n usage.promptTokensDetails.cachedTokens =\n prompt_tokens_details?.cached_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAICompatibleFinishReason(\n choice.finish_reason,\n );\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n // enqueue reasoning before text deltas:\n if (delta.reasoning_content != null) {\n controller.enqueue({\n type: 'reasoning',\n textDelta: delta.reasoning_content,\n });\n }\n\n if (delta.content != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: 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 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 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-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: 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-call',\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: 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-call-delta',\n toolCallType: 'function',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n argsTextDelta: 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-call',\n toolCallType: 'function',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n args: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n const providerMetadata: LanguageModelV1ProviderMetadata = {\n [providerOptionsName]: {},\n ...metadataExtractor?.buildMetadata(),\n };\n if (usage.completionTokensDetails.reasoningTokens != null) {\n providerMetadata[providerOptionsName].reasoningTokens =\n usage.completionTokensDetails.reasoningTokens;\n }\n if (\n usage.completionTokensDetails.acceptedPredictionTokens != null\n ) {\n providerMetadata[providerOptionsName].acceptedPredictionTokens =\n usage.completionTokensDetails.acceptedPredictionTokens;\n }\n if (\n usage.completionTokensDetails.rejectedPredictionTokens != null\n ) {\n providerMetadata[providerOptionsName].rejectedPredictionTokens =\n usage.completionTokensDetails.rejectedPredictionTokens;\n }\n if (usage.promptTokensDetails.cachedTokens != null) {\n providerMetadata[providerOptionsName].cachedPromptTokens =\n usage.promptTokensDetails.cachedTokens;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: {\n promptTokens: usage.promptTokens ?? NaN,\n completionTokens: usage.completionTokens ?? NaN,\n },\n providerMetadata,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body: JSON.stringify(body) },\n };\n }\n}\n\nconst openaiCompatibleTokenUsageSchema = z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_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 OpenAICompatibleChatResponseSchema = 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 reasoning_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 }),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: openaiCompatibleTokenUsageSchema,\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 createOpenAICompatibleChatChunkSchema = <ERROR_SCHEMA extends z.ZodType>(\n errorSchema: ERROR_SCHEMA,\n) =>\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number().optional(),\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 })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: openaiCompatibleTokenUsageSchema,\n }),\n errorSchema,\n ]);\n","import {\n APICallError,\n LanguageModelV1,\n LanguageModelV1CallWarning,\n LanguageModelV1FinishReason,\n LanguageModelV1StreamPart,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n ParseResult,\n postJsonToApi,\n ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { convertToOpenAICompatibleCompletionPrompt } from './convert-to-openai-compatible-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAICompatibleFinishReason } from './map-openai-compatible-finish-reason';\nimport {\n OpenAICompatibleCompletionModelId,\n OpenAICompatibleCompletionSettings,\n} from './openai-compatible-completion-settings';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\n\ntype OpenAICompatibleCompletionConfig = {\n provider: string;\n includeUsage?: boolean;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n errorStructure?: ProviderErrorStructure<any>;\n};\n\nexport class OpenAICompatibleCompletionLanguageModel\n implements LanguageModelV1\n{\n readonly specificationVersion = 'v1';\n readonly defaultObjectGenerationMode = undefined;\n\n readonly modelId: OpenAICompatibleCompletionModelId;\n readonly settings: OpenAICompatibleCompletionSettings;\n\n private readonly config: OpenAICompatibleCompletionConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n private readonly chunkSchema; // type inferred via constructor\n\n constructor(\n modelId: OpenAICompatibleCompletionModelId,\n settings: OpenAICompatibleCompletionSettings,\n config: OpenAICompatibleCompletionConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n\n // initialize error handling:\n const errorStructure =\n config.errorStructure ?? defaultOpenAICompatibleErrorStructure;\n this.chunkSchema = createOpenAICompatibleCompletionChunkSchema(\n errorStructure.errorSchema,\n );\n this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n private getArgs({\n mode,\n inputFormat,\n prompt,\n maxTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences: userStopSequences,\n responseFormat,\n seed,\n providerMetadata,\n }: Parameters<LanguageModelV1['doGenerate']>[0]) {\n const type = mode.type;\n\n const warnings: LanguageModelV1CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\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 convertToOpenAICompatibleCompletionPrompt({ prompt, inputFormat });\n\n const stop = [...(stopSequences ?? []), ...(userStopSequences ?? [])];\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n echo: this.settings.echo,\n logit_bias: this.settings.logitBias,\n suffix: this.settings.suffix,\n user: this.settings.user,\n\n // standardized settings:\n max_tokens: maxTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n ...providerMetadata?.[this.providerOptionsName],\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n };\n\n switch (type) {\n case 'regular': {\n if (mode.tools?.length) {\n throw new UnsupportedFunctionalityError({\n functionality: 'tools',\n });\n }\n\n if (mode.toolChoice) {\n throw new UnsupportedFunctionalityError({\n functionality: 'toolChoice',\n });\n }\n\n return { args: baseArgs, warnings };\n }\n\n case 'object-json': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-json mode',\n });\n }\n\n case 'object-tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'object-tool mode',\n });\n }\n\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV1['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doGenerate']>>> {\n const { args, warnings } = 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: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompatibleCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { prompt: rawPrompt, ...rawSettings } = args;\n const choice = response.choices[0];\n\n return {\n text: choice.text,\n usage: {\n promptTokens: response.usage?.prompt_tokens ?? NaN,\n completionTokens: response.usage?.completion_tokens ?? NaN,\n },\n finishReason: mapOpenAICompatibleFinishReason(choice.finish_reason),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders, body: rawResponse },\n response: getResponseMetadata(response),\n warnings,\n request: { body: JSON.stringify(args) },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV1['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV1['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options: this.config.includeUsage\n ? { include_usage: true }\n : undefined,\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: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n this.chunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const { prompt: rawPrompt, ...rawSettings } = args;\n\n let finishReason: LanguageModelV1FinishReason = 'unknown';\n let usage: { promptTokens: number; completionTokens: number } = {\n promptTokens: Number.NaN,\n completionTokens: Number.NaN,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof this.chunkSchema>>,\n LanguageModelV1StreamPart\n >({\n transform(chunk, controller) {\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 = {\n promptTokens: value.usage.prompt_tokens,\n completionTokens: value.usage.completion_tokens,\n };\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAICompatibleFinishReason(\n choice.finish_reason,\n );\n }\n\n if (choice?.text != null) {\n controller.enqueue({\n type: 'text-delta',\n textDelta: choice.text,\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n });\n },\n }),\n ),\n rawCall: { rawPrompt, rawSettings },\n rawResponse: { headers: responseHeaders },\n warnings,\n request: { body: JSON.stringify(body) },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst openaiCompatibleCompletionResponseSchema = 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 }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n })\n .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 createOpenAICompatibleCompletionChunkSchema = <\n ERROR_SCHEMA extends z.ZodType,\n>(\n errorSchema: ERROR_SCHEMA,\n) =>\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n })\n .nullish(),\n }),\n errorSchema,\n ]);\n","import {\n EmbeddingModelV1,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport {\n OpenAICompatibleEmbeddingModelId,\n OpenAICompatibleEmbeddingSettings,\n} from './openai-compatible-embedding-settings';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\n\ntype OpenAICompatibleEmbeddingConfig = {\n /**\nOverride the maximum number of embeddings per call.\n */\n maxEmbeddingsPerCall?: number;\n\n /**\nOverride the parallelism of embedding calls.\n */\n supportsParallelCalls?: boolean;\n\n provider: string;\n url: (options: { modelId: string; path: string }) => string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n errorStructure?: ProviderErrorStructure<any>;\n};\n\nexport class OpenAICompatibleEmbeddingModel\n implements EmbeddingModelV1<string>\n{\n readonly specificationVersion = 'v1';\n readonly modelId: OpenAICompatibleEmbeddingModelId;\n\n private readonly config: OpenAICompatibleEmbeddingConfig;\n private readonly settings: OpenAICompatibleEmbeddingSettings;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return this.config.maxEmbeddingsPerCall ?? 2048;\n }\n\n get supportsParallelCalls(): boolean {\n return this.config.supportsParallelCalls ?? true;\n }\n\n constructor(\n modelId: OpenAICompatibleEmbeddingModelId,\n settings: OpenAICompatibleEmbeddingSettings,\n config: OpenAICompatibleEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n }: Parameters<EmbeddingModelV1<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV1<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 const { responseHeaders, value: response } = 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: this.settings.dimensions,\n user: this.settings.user,\n },\n failedResponseHandler: createJsonErrorResponseHandler(\n this.config.errorStructure ?? defaultOpenAICompatibleErrorStructure,\n ),\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 rawResponse: { headers: responseHeaders },\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 { ImageModelV1, ImageModelV1CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod';\nimport { OpenAICompatibleImageModelId } from './openai-compatible-image-settings';\nimport { OpenAICompatibleImageSettings } from './openai-compatible-image-settings';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\n\nexport type OpenAICompatibleImageModelConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n errorStructure?: ProviderErrorStructure<any>;\n _internal?: {\n currentDate?: () => Date;\n };\n};\n\nexport class OpenAICompatibleImageModel implements ImageModelV1 {\n readonly specificationVersion = 'v1';\n\n get maxImagesPerCall(): number {\n return this.settings.maxImagesPerCall ?? 10;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAICompatibleImageModelId,\n private readonly settings: OpenAICompatibleImageSettings,\n private readonly config: OpenAICompatibleImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV1['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV1['doGenerate']>>\n > {\n const warnings: Array<ImageModelV1CallWarning> = [];\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 response_format: 'b64_json',\n ...(this.settings.user ? { user: this.settings.user } : {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler(\n this.config.errorStructure ?? defaultOpenAICompatibleErrorStructure,\n ),\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompatibleImageResponseSchema,\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 };\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 openaiCompatibleImageResponseSchema = z.object({\n data: z.array(z.object({ b64_json: z.string() })),\n});\n","import { OpenAICompatibleChatSettings } from '@ai-sdk/openai-compatible';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\nexport interface XaiChatSettings extends OpenAICompatibleChatSettings {}\n\n/**\n * https://docs.x.ai/docs/guides/structured-outputs\n */\nexport function supportsStructuredOutputs(modelId: XaiChatModelId) {\n return [\n 'grok-3',\n 'grok-3-beta',\n 'grok-3-latest',\n 'grok-3-fast',\n 'grok-3-fast-beta',\n 'grok-3-fast-latest',\n 'grok-3-mini',\n 'grok-3-mini-beta',\n 'grok-3-mini-latest',\n 'grok-3-mini-fast',\n 'grok-3-mini-fast-beta',\n 'grok-3-mini-fast-latest',\n 'grok-2-1212',\n 'grok-2-vision-1212',\n ].includes(modelId);\n}\n","import { z } from 'zod';\n\n// Add error schema and structure\nexport const xaiErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorSchema>;\n","import {\n ImageModelV1,\n LanguageModelV1,\n NoSuchModelError,\n ProviderV1,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport {\n XaiChatModelId,\n XaiChatSettings,\n supportsStructuredOutputs,\n} from './xai-chat-settings';\nimport { XaiImageSettings } from './xai-image-settings';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiErrorData, xaiErrorSchema } from './xai-error';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorSchema,\n errorToMessage: data => data.error,\n};\n\nexport interface XaiProvider extends ProviderV1 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId, settings?: XaiChatSettings): LanguageModelV1;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(\n modelId: XaiChatModelId,\n settings?: XaiChatSettings,\n ): LanguageModelV1;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (\n modelId: XaiChatModelId,\n settings?: XaiChatSettings,\n ) => LanguageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId, settings?: XaiImageSettings): ImageModelV1;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(\n modelId: XaiImageModelId,\n settings?: XaiImageSettings,\n ): ImageModelV1;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (\n modelId: XaiChatModelId,\n settings: XaiChatSettings = {},\n ) => {\n const structuredOutputs = supportsStructuredOutputs(modelId);\n return new OpenAICompatibleChatLanguageModel(modelId, settings, {\n provider: 'xai.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n defaultObjectGenerationMode: structuredOutputs ? 'json' : 'tool',\n errorStructure: xaiErrorStructure,\n supportsStructuredOutputs: structuredOutputs,\n includeUsage: true,\n });\n };\n\n const createImageModel = (\n modelId: XaiImageModelId,\n settings: XaiImageSettings = {},\n ) => {\n return new OpenAICompatibleImageModel(modelId, settings, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId, settings?: XaiChatSettings) =>\n createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n","import { z } from 'zod/v4';\n\nexport type OpenAICompatibleChatModelId = string;\n\nexport const openaiCompatibleProviderOptions = z.object({\n /**\n * A unique identifier representing your end-user, which can help the provider 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.string().optional(),\n});\n\nexport type OpenAICompatibleProviderOptions = z.infer<\n typeof openaiCompatibleProviderOptions\n>;\n","import { z, ZodType } from 'zod/v4';\n\nexport const openaiCompatibleErrorDataSchema = 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 OpenAICompatibleErrorData = z.infer<\n typeof openaiCompatibleErrorDataSchema\n>;\n\nexport type ProviderErrorStructure<T> = {\n errorSchema: ZodType<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n};\n\nexport const defaultOpenAICompatibleErrorStructure: ProviderErrorStructure<OpenAICompatibleErrorData> =\n {\n errorSchema: openaiCompatibleErrorDataSchema,\n errorToMessage: data => data.error.message,\n };\n","import {\n APICallError,\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n generateId,\n isParsableJson,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToOpenAICompatibleChatMessages } from './convert-to-openai-compatible-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAICompatibleFinishReason } from './map-openai-compatible-finish-reason';\nimport {\n OpenAICompatibleChatModelId,\n openaiCompatibleProviderOptions,\n} from './openai-compatible-chat-options';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\nimport { MetadataExtractor } from './openai-compatible-metadata-extractor';\nimport { prepareTools } from './openai-compatible-prepare-tools';\n\nexport type OpenAICompatibleChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n includeUsage?: boolean;\n errorStructure?: ProviderErrorStructure<any>;\n metadataExtractor?: MetadataExtractor;\n\n /**\n * Whether the model supports structured outputs.\n */\n supportsStructuredOutputs?: boolean;\n\n /**\n * The supported URLs for the model.\n */\n supportedUrls?: () => LanguageModelV2['supportedUrls'];\n};\n\nexport class OpenAICompatibleChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly supportsStructuredOutputs: boolean;\n\n readonly modelId: OpenAICompatibleChatModelId;\n private readonly config: OpenAICompatibleChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n private readonly chunkSchema; // type inferred via constructor\n\n constructor(\n modelId: OpenAICompatibleChatModelId,\n config: OpenAICompatibleChatConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n\n // initialize error handling:\n const errorStructure =\n config.errorStructure ?? defaultOpenAICompatibleErrorStructure;\n this.chunkSchema = createOpenAICompatibleChatChunkSchema(\n errorStructure.errorSchema,\n );\n this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure);\n\n this.supportsStructuredOutputs = config.supportsStructuredOutputs ?? false;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n get supportedUrls() {\n return this.config.supportedUrls?.() ?? {};\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n providerOptions,\n stopSequences,\n responseFormat,\n seed,\n toolChoice,\n tools,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const compatibleOptions = Object.assign(\n (await parseProviderOptions({\n provider: 'openai-compatible',\n providerOptions,\n schema: openaiCompatibleProviderOptions,\n })) ?? {},\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompatibleProviderOptions,\n })) ?? {},\n );\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !this.supportsStructuredOutputs\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 {\n tools: openaiTools,\n toolChoice: openaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: compatibleOptions.user,\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 ? this.supportsStructuredOutputs === true &&\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n stop: stopSequences,\n seed,\n ...providerOptions?.[this.providerOptionsName],\n\n reasoning_effort: compatibleOptions.reasoningEffort,\n\n // messages:\n messages: convertToOpenAICompatibleChatMessages(prompt),\n\n // tools:\n tools: openaiTools,\n tool_choice: openaiToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: responseBody,\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: args,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n OpenAICompatibleChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = responseBody.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // reasoning content:\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: 'reasoning',\n text: reasoning,\n });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n // provider metadata:\n const providerMetadata: SharedV2ProviderMetadata = {\n [this.providerOptionsName]: {},\n ...(await this.config.metadataExtractor?.extractMetadata?.({\n parsedBody: rawResponse,\n })),\n };\n const completionTokenDetails =\n responseBody.usage?.completion_tokens_details;\n if (completionTokenDetails?.accepted_prediction_tokens != null) {\n providerMetadata[this.providerOptionsName].acceptedPredictionTokens =\n completionTokenDetails?.accepted_prediction_tokens;\n }\n if (completionTokenDetails?.rejected_prediction_tokens != null) {\n providerMetadata[this.providerOptionsName].rejectedPredictionTokens =\n completionTokenDetails?.rejected_prediction_tokens;\n }\n\n return {\n content,\n finishReason: mapOpenAICompatibleFinishReason(choice.finish_reason),\n usage: {\n inputTokens: responseBody.usage?.prompt_tokens ?? undefined,\n outputTokens: responseBody.usage?.completion_tokens ?? undefined,\n totalTokens: responseBody.usage?.total_tokens ?? undefined,\n reasoningTokens:\n responseBody.usage?.completion_tokens_details?.reasoning_tokens ??\n undefined,\n cachedInputTokens:\n responseBody.usage?.prompt_tokens_details?.cached_tokens ?? undefined,\n },\n providerMetadata,\n request: { body },\n response: {\n ...getResponseMetadata(responseBody),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs({ ...options });\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options: this.config.includeUsage\n ? { include_usage: true }\n : undefined,\n };\n\n const metadataExtractor =\n this.config.metadataExtractor?.createStreamExtractor();\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: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n this.chunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: {\n completionTokens: number | undefined;\n completionTokensDetails: {\n reasoningTokens: number | undefined;\n acceptedPredictionTokens: number | undefined;\n rejectedPredictionTokens: number | undefined;\n };\n promptTokens: number | undefined;\n promptTokensDetails: {\n cachedTokens: number | undefined;\n };\n totalTokens: number | undefined;\n } = {\n completionTokens: undefined,\n completionTokensDetails: {\n reasoningTokens: undefined,\n acceptedPredictionTokens: undefined,\n rejectedPredictionTokens: undefined,\n },\n promptTokens: undefined,\n promptTokensDetails: {\n cachedTokens: undefined,\n },\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n const providerOptionsName = this.providerOptionsName;\n let isActiveReasoning = false;\n let isActiveText = false;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof this.chunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n // TODO we lost type safety on Chunk, most likely due to the error schema. MUST FIX\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\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 const value = chunk.value;\n\n metadataExtractor?.processChunk(chunk.rawValue);\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error.message });\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 const {\n prompt_tokens,\n completion_tokens,\n total_tokens,\n prompt_tokens_details,\n completion_tokens_details,\n } = value.usage;\n\n usage.promptTokens = prompt_tokens ?? undefined;\n usage.completionTokens = completion_tokens ?? undefined;\n usage.totalTokens = total_tokens ?? undefined;\n if (completion_tokens_details?.reasoning_tokens != null) {\n usage.completionTokensDetails.reasoningTokens =\n completion_tokens_details?.reasoning_tokens;\n }\n if (\n completion_tokens_details?.accepted_prediction_tokens != null\n ) {\n usage.completionTokensDetails.acceptedPredictionTokens =\n completion_tokens_details?.accepted_prediction_tokens;\n }\n if (\n completion_tokens_details?.rejected_prediction_tokens != null\n ) {\n usage.completionTokensDetails.rejectedPredictionTokens =\n completion_tokens_details?.rejected_prediction_tokens;\n }\n if (prompt_tokens_details?.cached_tokens != null) {\n usage.promptTokensDetails.cachedTokens =\n prompt_tokens_details?.cached_tokens;\n }\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAICompatibleFinishReason(\n choice.finish_reason,\n );\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n // enqueue reasoning before text deltas:\n if (delta.reasoning_content != null) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-start',\n id: 'reasoning-0',\n });\n isActiveReasoning = true;\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: 'reasoning-0',\n delta: delta.reasoning_content,\n });\n }\n\n if (delta.content != null) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'txt-0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'txt-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 if (toolCalls[index] == null) {\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-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\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\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\n }\n\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'txt-0' });\n }\n\n // go through all tool calls and send the ones that are not finished\n for (const toolCall of toolCalls.filter(\n toolCall => !toolCall.hasFinished,\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 }\n\n const providerMetadata: SharedV2ProviderMetadata = {\n [providerOptionsName]: {},\n ...metadataExtractor?.buildMetadata(),\n };\n if (\n usage.completionTokensDetails.acceptedPredictionTokens != null\n ) {\n providerMetadata[providerOptionsName].acceptedPredictionTokens =\n usage.completionTokensDetails.acceptedPredictionTokens;\n }\n if (\n usage.completionTokensDetails.rejectedPredictionTokens != null\n ) {\n providerMetadata[providerOptionsName].rejectedPredictionTokens =\n usage.completionTokensDetails.rejectedPredictionTokens;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage: {\n inputTokens: usage.promptTokens ?? undefined,\n outputTokens: usage.completionTokens ?? undefined,\n totalTokens: usage.totalTokens ?? undefined,\n reasoningTokens:\n usage.completionTokensDetails.reasoningTokens ?? undefined,\n cachedInputTokens:\n usage.promptTokensDetails.cachedTokens ?? undefined,\n },\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nconst openaiCompatibleTokenUsageSchema = 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 OpenAICompatibleChatResponseSchema = 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 reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: openaiCompatibleTokenUsageSchema,\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 createOpenAICompatibleChatChunkSchema = <\n ERROR_SCHEMA extends z.core.$ZodType,\n>(\n errorSchema: ERROR_SCHEMA,\n) =>\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n role: z.enum(['assistant']).nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: openaiCompatibleTokenUsageSchema,\n }),\n errorSchema,\n ]);\n","import { z } from 'zod/v4';\n\nexport type OpenAICompatibleCompletionModelId = string;\n\nexport const openaiCompatibleCompletionProviderOptions = z.object({\n /**\n * Echo back the prompt in addition to the completion.\n */\n echo: z.boolean().optional(),\n\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.string(), z.number()).optional(),\n\n /**\n * The suffix that comes after a completion of inserted text.\n */\n suffix: z.string().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help providers to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n});\n\nexport type OpenAICompatibleCompletionProviderOptions = z.infer<\n typeof openaiCompatibleCompletionProviderOptions\n>;\n","import {\n APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToOpenAICompatibleCompletionPrompt } from './convert-to-openai-compatible-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAICompatibleFinishReason } from './map-openai-compatible-finish-reason';\nimport {\n OpenAICompatibleCompletionModelId,\n openaiCompatibleCompletionProviderOptions,\n} from './openai-compatible-completion-options';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\n\ntype OpenAICompatibleCompletionConfig = {\n provider: string;\n includeUsage?: boolean;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n errorStructure?: ProviderErrorStructure<any>;\n\n /**\n * The supported URLs for the model.\n */\n supportedUrls?: () => LanguageModelV2['supportedUrls'];\n};\n\nexport class OpenAICompatibleCompletionLanguageModel\n implements LanguageModelV2\n{\n readonly specificationVersion = 'v2';\n\n readonly modelId: OpenAICompatibleCompletionModelId;\n private readonly config: OpenAICompatibleCompletionConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n private readonly chunkSchema; // type inferred via constructor\n\n constructor(\n modelId: OpenAICompatibleCompletionModelId,\n config: OpenAICompatibleCompletionConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n\n // initialize error handling:\n const errorStructure =\n config.errorStructure ?? defaultOpenAICompatibleErrorStructure;\n this.chunkSchema = createOpenAICompatibleCompletionChunkSchema(\n errorStructure.errorSchema,\n );\n this.failedResponseHandler = createJsonErrorResponseHandler(errorStructure);\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n get supportedUrls() {\n return this.config.supportedUrls?.() ?? {};\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 seed,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // Parse provider options\n const completionOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompatibleCompletionProviderOptions,\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 convertToOpenAICompatibleCompletionPrompt({ 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: completionOptions.echo,\n logit_bias: completionOptions.logitBias,\n suffix: completionOptions.suffix,\n user: completionOptions.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 ...providerOptions?.[this.providerOptionsName],\n\n // prompt:\n prompt: completionPrompt,\n\n // stop sequences:\n stop: stop.length > 0 ? stop : undefined,\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: this.failedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompatibleCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n if (choice.text != null && choice.text.length > 0) {\n content.push({ type: 'text', text: choice.text });\n }\n\n return {\n content,\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n },\n finishReason: mapOpenAICompatibleFinishReason(choice.finish_reason),\n request: { body: args },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n\n const body = {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options: this.config.includeUsage\n ? { include_usage: true }\n : undefined,\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: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n this.chunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof this.chunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n controller.enqueue({\n type: 'text-start',\n id: '0',\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 }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenAICompatibleFinishReason(\n choice.finish_reason,\n );\n }\n\n if (choice?.text != null) {\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 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 openaiCompatibleCompletionResponseSchema = 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 }),\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 createOpenAICompatibleCompletionChunkSchema = <\n ERROR_SCHEMA extends z.core.$ZodType,\n>(\n errorSchema: ERROR_SCHEMA,\n) =>\n z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n text: z.string(),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: usageSchema.nullish(),\n }),\n errorSchema,\n ]);\n","import { z } from 'zod/v4';\n\nexport type OpenAICompatibleEmbeddingModelId = string;\n\nexport const openaiCompatibleEmbeddingProviderOptions = z.object({\n /**\n * The number of dimensions the resulting output embeddings should have.\n * Only supported in text-embedding-3 and later models.\n */\n dimensions: z.number().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help providers to\n * monitor and detect abuse.\n */\n user: z.string().optional(),\n});\n\nexport type OpenAICompatibleEmbeddingProviderOptions = z.infer<\n typeof openaiCompatibleEmbeddingProviderOptions\n>;\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n OpenAICompatibleEmbeddingModelId,\n openaiCompatibleEmbeddingProviderOptions,\n} from './openai-compatible-embedding-options';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\n\ntype OpenAICompatibleEmbeddingConfig = {\n /**\nOverride the maximum number of embeddings per call.\n */\n maxEmbeddingsPerCall?: number;\n\n /**\nOverride the parallelism of embedding calls.\n */\n supportsParallelCalls?: boolean;\n\n provider: string;\n url: (options: { modelId: string; path: string }) => string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n errorStructure?: ProviderErrorStructure<any>;\n};\n\nexport class OpenAICompatibleEmbeddingModel\n implements EmbeddingModelV2<string>\n{\n readonly specificationVersion = 'v2';\n readonly modelId: OpenAICompatibleEmbeddingModelId;\n\n private readonly config: OpenAICompatibleEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n get maxEmbeddingsPerCall(): number {\n return this.config.maxEmbeddingsPerCall ?? 2048;\n }\n\n get supportsParallelCalls(): boolean {\n return this.config.supportsParallelCalls ?? true;\n }\n\n constructor(\n modelId: OpenAICompatibleEmbeddingModelId,\n config: OpenAICompatibleEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n async doEmbed({\n values,\n headers,\n abortSignal,\n providerOptions,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n const compatibleOptions = Object.assign(\n (await parseProviderOptions({\n provider: 'openai-compatible',\n providerOptions,\n schema: openaiCompatibleEmbeddingProviderOptions,\n })) ?? {},\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: openaiCompatibleEmbeddingProviderOptions,\n })) ?? {},\n );\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 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: compatibleOptions.dimensions,\n user: compatibleOptions.user,\n },\n failedResponseHandler: createJsonErrorResponseHandler(\n this.config.errorStructure ?? defaultOpenAICompatibleErrorStructure,\n ),\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 { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n defaultOpenAICompatibleErrorStructure,\n ProviderErrorStructure,\n} from './openai-compatible-error';\nimport { OpenAICompatibleImageModelId } from './openai-compatible-image-settings';\n\nexport type OpenAICompatibleImageModelConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n errorStructure?: ProviderErrorStructure<any>;\n _internal?: {\n currentDate?: () => Date;\n };\n};\n\nexport class OpenAICompatibleImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 10;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: OpenAICompatibleImageModelId,\n private readonly config: OpenAICompatibleImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\n aspectRatio,\n seed,\n providerOptions,\n headers,\n abortSignal,\n }: Parameters<ImageModelV2['doGenerate']>[0]): Promise<\n Awaited<ReturnType<ImageModelV2['doGenerate']>>\n > {\n const warnings: Array<ImageModelV2CallWarning> = [];\n\n if (aspectRatio != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support aspect ratio. Use `size` instead.',\n });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/images/generations',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n n,\n size,\n ...(providerOptions.openai ?? {}),\n response_format: 'b64_json',\n },\n failedResponseHandler: createJsonErrorResponseHandler(\n this.config.errorStructure ?? defaultOpenAICompatibleErrorStructure,\n ),\n successfulResponseHandler: createJsonResponseHandler(\n openaiCompatibleImageResponseSchema,\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 };\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 openaiCompatibleImageResponseSchema = z.object({\n data: z.array(z.object({ b64_json: z.string() })),\n});\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV2Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\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 => {\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 };\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n /**\n * reasoning effort for reasoning models\n * only supported by grok-3-mini and grok-3-mini-fast models\n */\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from\n * defaults to [\"web\", \"x\"] if not specified\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\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 LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\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 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (\n responseFormat != null &&\n responseFormat.type === 'json' &&\n responseFormat.schema != null\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details: 'JSON response format schema is not supported',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n x_handles: source.xHandles,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ??\n undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n 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.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(xaiChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<string, { type: 'text' | 'reasoning' }> = {};\n const lastReasoningDeltas: Record<string, string> = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\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 usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning' };\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = 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'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: xaiUsageSchema,\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiChatChunkSchema = 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.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n","import {\n OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV2;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () => ({\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n });\n\n const createLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new OpenAICompatibleImageModel(modelId, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) => createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n\n return provider;\n}\n\nexport const xai = createXai();\n"]}