{"version":3,"sources":["../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/load-setting-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@2.0.1/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/errors.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/parse.ts","../../../node_modules/.pnpm/eventsource-parser@3.0.6/node_modules/eventsource-parser/src/stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/index.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/convert-async-iterator-to-readable-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/delay.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/delayed-promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/download-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/read-response-with-size-limit.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/inject-json-instruction.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/is-url-supported.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/load-setting.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/types/tool.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/provider-defined-tool-factory.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/resolve.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/get-relative-path.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/any.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/array.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/bigint.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/boolean.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/branded.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/catch.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/date.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/default.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/effects.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/intersection.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/literal.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/string.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/record.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/map.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/native-enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/never.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/null.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/union.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/nullable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/number.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/object.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/optional.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/pipeline.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/set.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/tuple.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/undefined.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/unknown.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parsers/readonly.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/select-parser.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/parse-def.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/refs.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/zod-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-to-json-schema/index.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/zod-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/validate-download-url.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/is-async-iterable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@3.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/types/execute-tool.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/chat/convert-to-openai-compatible-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/chat/map-openai-compatible-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/chat/openai-compatible-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/chat/openai-compatible-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/chat/openai-compatible-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/completion/convert-to-openai-compatible-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/completion/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/completion/map-openai-compatible-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/completion/openai-compatible-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/completion/openai-compatible-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/embedding/openai-compatible-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/embedding/openai-compatible-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/image/openai-compatible-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+openai-compatible@1.0.35_zod@4.3.6/node_modules/@ai-sdk/openai-compatible/src/openai-compatible-provider.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/no-such-model-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/too-many-embedding-values-for-call-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider@3.0.8/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/create-tool-name-mapping.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/delay.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/convert-image-model-file-to-data-uri.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/convert-to-form-data.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/download-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/read-response-with-size-limit.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/validate-download-url.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/download-blob.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/get-runtime-environment-user-agent.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/normalize-headers.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/get-from-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/inject-json-instruction.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/is-non-nullable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/load-optional-setting.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/media-type-to-extension.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/add-additional-properties-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/any.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/array.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/bigint.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/boolean.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/branded.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/catch.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/date.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/default.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/effects.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/intersection.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/literal.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/string.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/record.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/map.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/native-enum.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/never.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/null.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/union.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/nullable.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/number.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/object.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/optional.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/pipeline.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/promise.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/set.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/tuple.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/undefined.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/unknown.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parsers/readonly.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/select-parser.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/get-relative-path.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/parse-def.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/refs.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/to-json-schema/zod3-to-json-schema/zod3-to-json-schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/schema.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/parse-provider-options.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/types/tool.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/provider-tool-factory.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/resolve.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@ai-sdk+provider-utils@4.0.23_zod@4.3.6/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/openai-error.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/openai-language-model-capabilities.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/convert-openai-chat-usage.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/convert-to-openai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/openai-chat-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/openai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/openai-chat-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/chat/openai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/convert-openai-completion-usage.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/convert-to-openai-completion-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/map-openai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/openai-completion-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/openai-completion-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/completion/openai-completion-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/embedding/openai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/image/openai-image-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/image/openai-image-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/image/openai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/apply-patch.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/code-interpreter.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/custom.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/image-generation.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/local-shell.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/shell.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/tool-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/web-search-preview.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/tool/mcp.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/openai-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/convert-openai-responses-usage.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/convert-to-openai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/map-openai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/openai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/openai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/openai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/responses/openai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/speech/openai-speech-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/speech/openai-speech-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-api.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-options.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/transcription/openai-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+openai@3.0.53_zod@4.3.6/node_modules/@ai-sdk/openai/src/openai-provider.ts","../src/llm/model/gateways/base.ts","../src/llm/model/gateways/constants.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-error.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-messages-api.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-messages-options.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/get-cache-control.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250728.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/web-search_20260209.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/web-search_20250305.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20260209.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/web-fetch-20250910.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/convert-anthropic-messages-usage.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250522.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20250825.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/code-execution_20260120.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/tool-search-regex_20251119.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/convert-to-anthropic-messages-prompt.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/map-anthropic-stop-reason.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-messages-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/bash_20241022.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/bash_20250124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/computer_20241022.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/computer_20250124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/computer_20251124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/memory_20250818.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20241022.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250124.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/text-editor_20250429.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/tool/tool-search-bm25_20251119.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-tools.ts","../../../node_modules/.pnpm/@ai-sdk+anthropic@3.0.69_zod@4.3.6/node_modules/@ai-sdk/anthropic/src/anthropic-provider.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-error.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-generative-ai-embedding-options.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-generative-ai-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/convert-google-generative-ai-usage.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/convert-json-schema-to-openapi-schema.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/convert-to-google-generative-ai-messages.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/get-model-path.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-generative-ai-options.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-json-accumulator.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/map-google-generative-ai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-generative-ai-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/code-execution.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/enterprise-web-search.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/file-search.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/google-maps.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/google-search.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/url-context.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/tool/vertex-rag-store.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-tools.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-generative-ai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-generative-ai-video-model.ts","../../../node_modules/.pnpm/@ai-sdk+google@3.0.63_zod@4.3.6/node_modules/@ai-sdk/google/src/google-provider.ts"],"names":["name","marker","symbol","_a","_b","__reExport","spec_star","resolve","getErrorMessage","fetch","APICallError","mediaType","validator","standardSchema","TypeValidationError","InvalidArgumentError","getOriginalFetch","tool","chunkSchema","responseSchema","jsonSchema","ZodFirstPartyTypeKind","types","x","schema","zodSchema","z4","z","UnsupportedFunctionalityError","openaiTools","toolCall","getResponseMetadata","mapOpenAICompatibleFinishReason","createJsonErrorResponseHandler","parseProviderOptions","postJsonToApi","combineHeaders","createJsonResponseHandler","createEventSourceResponseHandler","VERSION","AISDKError","_AISDKError","EmptyResponseBodyError","InvalidPromptError","InvalidResponseDataError","JSONParseError","LoadAPIKeyError","NoSuchModelError","TooManyEmbeddingValuesForCallError","_TypeValidationError","delay","createAbortError","extractResponseHeaders","btoa","atob","convertBase64ToUint8Array","convertUint8ArrayToBase64","convertToBase64","DownloadError","DEFAULT_MAX_DOWNLOAD_SIZE","readResponseWithSizeLimit","validateDownloadUrl","isPrivateIPv6","isIPv4","isPrivateIPv4","createIdGenerator","generateId","isAbortError","FETCH_FAILED_ERROR_MESSAGES","handleFetchError","getRuntimeEnvironmentUserAgent","normalizeHeaders","withUserAgentSuffix","getFromApi","DEFAULT_SCHEMA_PREFIX","DEFAULT_SCHEMA_SUFFIX","DEFAULT_GENERIC_SUFFIX","injectJsonInstruction","injectJsonInstructionIntoMessages","loadApiKey","loadOptionalSetting","mediaTypeToExtension","suspectProtoRx","suspectConstructorRx","_parse","filter","secureJsonParse","addAdditionalPropertiesToJsonSchema","ignoreOverride","defaultOptions","getDefaultOptions","parseAnyDef","parseArrayDef","parseDef","parseBigintDef","parseBooleanDef","parseBrandedDef","parseCatchDef","parseDateDef","integerDateParser","parseDefaultDef","parseEffectsDef","parseEnumDef","isJsonSchema7AllOfType","parseIntersectionDef","parseLiteralDef","emojiRegex","zodPatterns","parseStringDef","addFormat","addPattern","escapeLiteralCheckValue","escapeNonAlphaNumeric","ALPHA_NUMERIC","stringifyRegExpWithFlags","parseRecordDef","parseMapDef","parseNativeEnumDef","parseNeverDef","parseNullDef","primitiveMappings","parseUnionDef","asAnyOf","parseNullableDef","parseNumberDef","parseObjectDef","safeIsOptional","decideAdditionalProperties","parseOptionalDef","parsePipelineDef","parsePromiseDef","parseSetDef","parseTupleDef","parseUndefinedDef","parseUnknownDef","parseReadonlyDef","selectParser","getRelativePath","get$ref","addMeta","getRefs","schemaSymbol","lazySchema","isSchema","asSchema","zod3Schema","zod4Schema","z43","isZod4Schema","validateTypes","safeValidateTypes","parseJSON","safeParseJSON","isParsableJson","parseJsonEventStream","postToApi","postFormDataToApi","createBinaryResponseHandler","createStatusCodeErrorResponseHandler","withoutTrailingSlash","mapOpenAIFinishReason","openaiTextEmbeddingResponseSchema","response","responseHeaders","_c","_d","_e","_f","createProviderToolFactoryWithOutputSchema","serializeToolCallArguments","jsonValueSchema","env","providerMetadata","anthropic","factory","prepareTools","anthropicTools","i","createProviderToolFactory","rawValue","googleTools","functionDeclarations","args","usageSchema","fileSearchArgsSchema","fileSearch"],"mappings":"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","file":"chunk-FY6OKYG4.cjs","sourcesContent":["/**\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_LoadSettingError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadSettingError 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 LoadSettingError {\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 | undefined\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 | undefined\n\n  /**\n   * The line that caused the error, if available.\n   */\n  line?: string | undefined\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      // CR at the end of a chunk might be part of a CRLF sequence that spans chunks,\n      // so we shouldn't treat it as a line terminator (yet)\n      if (crIndex === chunk.length - 1) {\n        lineEnd = -1\n      } else {\n        lineEnd = crIndex\n      }\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)) | undefined\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) | undefined\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) | undefined\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 * from './combine-headers';\nexport { convertAsyncIteratorToReadableStream } from './convert-async-iterator-to-readable-stream';\nexport * from './delay';\nexport { DelayedPromise } from './delayed-promise';\nexport * from './extract-response-headers';\nexport { DownloadError } from './download-error';\nexport {\n  readResponseWithSizeLimit,\n  DEFAULT_MAX_DOWNLOAD_SIZE,\n} from './read-response-with-size-limit';\nexport * from './fetch-function';\nexport { createIdGenerator, generateId, type IdGenerator } from './generate-id';\nexport * from './get-error-message';\nexport * from './get-from-api';\nexport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nexport { injectJsonInstructionIntoMessages } from './inject-json-instruction';\nexport * from './is-abort-error';\nexport { isUrlSupported } from './is-url-supported';\nexport * from './load-api-key';\nexport { loadOptionalSetting } from './load-optional-setting';\nexport { loadSetting } from './load-setting';\nexport { mediaTypeToExtension } from './media-type-to-extension';\nexport { normalizeHeaders } from './normalize-headers';\nexport * from './parse-json';\nexport { parseJsonEventStream } from './parse-json-event-stream';\nexport { parseProviderOptions } from './parse-provider-options';\nexport * from './post-to-api';\nexport {\n  createProviderDefinedToolFactory,\n  createProviderDefinedToolFactoryWithOutputSchema,\n  type ProviderDefinedToolFactory,\n  type ProviderDefinedToolFactoryWithOutputSchema,\n} from './provider-defined-tool-factory';\nexport * from './remove-undefined-entries';\nexport * from './resolve';\nexport * from './response-handler';\nexport {\n  asSchema,\n  jsonSchema,\n  lazySchema,\n  type FlexibleSchema,\n  type InferSchema,\n  type LazySchema,\n  type Schema,\n} from './schema';\nexport * from './uint8-utils';\nexport { validateDownloadUrl } from './validate-download-url';\nexport * from './validate-types';\nexport {\n  asValidator,\n  isValidator,\n  lazyValidator,\n  standardSchemaValidator,\n  validator,\n  type FlexibleValidator,\n  type InferValidator,\n  type LazyValidator,\n  type ValidationResult,\n  type Validator,\n} from './validator';\nexport { VERSION } from './version';\nexport { withUserAgentSuffix } from './with-user-agent-suffix';\nexport * from './without-trailing-slash';\nexport { zodSchema } from './zod-schema';\n\n// folder re-exports\nexport * from './types';\n\n// external re-exports\nexport * from '@standard-schema/spec';\nexport {\n  EventSourceParserStream,\n  type EventSourceMessage,\n} from 'eventsource-parser/stream';\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","/**\n * Converts an AsyncIterator to a ReadableStream.\n *\n * @template T - The type of elements produced by the AsyncIterator.\n * @param { <T>} iterator - The AsyncIterator to convert.\n * @returns {ReadableStream<T>} - A ReadableStream that provides the same data as the AsyncIterator.\n */\nexport function convertAsyncIteratorToReadableStream<T>(\n  iterator: AsyncIterator<T>,\n): ReadableStream<T> {\n  let cancelled = false;\n\n  return new ReadableStream<T>({\n    /**\n     * Called when the consumer wants to pull more data from the stream.\n     *\n     * @param {ReadableStreamDefaultController<T>} controller - The controller to enqueue data into the stream.\n     * @returns {Promise<void>}\n     */\n    async pull(controller) {\n      if (cancelled) return;\n      try {\n        const { value, done } = await iterator.next();\n        if (done) {\n          controller.close();\n        } else {\n          controller.enqueue(value);\n        }\n      } catch (error) {\n        controller.error(error);\n      }\n    },\n    /**\n     * Called when the consumer cancels the stream.\n     */\n    async cancel(reason?: unknown) {\n      cancelled = true;\n      if (iterator.return) {\n        try {\n          await iterator.return(reason);\n        } catch {\n          // intentionally ignore errors during cancellation\n        }\n      }\n    },\n  });\n}\n","/**\n * Creates a Promise that resolves after a specified delay\n * @param delayInMs - The delay duration in milliseconds. If null or undefined, resolves immediately.\n * @param signal - Optional AbortSignal to cancel the delay\n * @returns A Promise that resolves after the specified delay\n * @throws {DOMException} When the signal is aborted\n */\nexport async function delay(\n  delayInMs?: number | null,\n  options?: {\n    abortSignal?: AbortSignal;\n  },\n): Promise<void> {\n  if (delayInMs == null) {\n    return Promise.resolve();\n  }\n\n  const signal = options?.abortSignal;\n\n  return new Promise<void>((resolve, reject) => {\n    if (signal?.aborted) {\n      reject(createAbortError());\n      return;\n    }\n\n    const timeoutId = setTimeout(() => {\n      cleanup();\n      resolve();\n    }, delayInMs);\n\n    const cleanup = () => {\n      clearTimeout(timeoutId);\n      signal?.removeEventListener('abort', onAbort);\n    };\n\n    const onAbort = () => {\n      cleanup();\n      reject(createAbortError());\n    };\n\n    signal?.addEventListener('abort', onAbort);\n  });\n}\n\nfunction createAbortError(): DOMException {\n  return new DOMException('Delay was aborted', 'AbortError');\n}\n","/**\n * Delayed promise. It is only constructed once the value is accessed.\n * This is useful to avoid unhandled promise rejections when the promise is created\n * but not accessed.\n */\nexport class DelayedPromise<T> {\n  private status:\n    | { type: 'pending' }\n    | { type: 'resolved'; value: T }\n    | { type: 'rejected'; error: unknown } = { type: 'pending' };\n  private _promise: Promise<T> | undefined;\n  private _resolve: undefined | ((value: T) => void) = undefined;\n  private _reject: undefined | ((error: unknown) => void) = undefined;\n\n  get promise(): Promise<T> {\n    if (this._promise) {\n      return this._promise;\n    }\n\n    this._promise = new Promise<T>((resolve, reject) => {\n      if (this.status.type === 'resolved') {\n        resolve(this.status.value);\n      } else if (this.status.type === 'rejected') {\n        reject(this.status.error);\n      }\n\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n\n    return this._promise;\n  }\n\n  resolve(value: T): void {\n    this.status = { type: 'resolved', value };\n\n    if (this._promise) {\n      this._resolve?.(value);\n    }\n  }\n\n  reject(error: unknown): void {\n    this.status = { type: 'rejected', error };\n\n    if (this._promise) {\n      this._reject?.(error);\n    }\n  }\n\n  isResolved(): boolean {\n    return this.status.type === 'resolved';\n  }\n\n  isRejected(): boolean {\n    return this.status.type === 'rejected';\n  }\n\n  isPending(): boolean {\n    return this.status.type === 'pending';\n  }\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 { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_DownloadError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class DownloadError extends AISDKError {\n  private readonly [symbol] = true; // used in isInstance\n\n  readonly url: string;\n  readonly statusCode?: number;\n  readonly statusText?: string;\n\n  constructor({\n    url,\n    statusCode,\n    statusText,\n    cause,\n    message = cause == null\n      ? `Failed to download ${url}: ${statusCode} ${statusText}`\n      : `Failed to download ${url}: ${cause}`,\n  }: {\n    url: string;\n    statusCode?: number;\n    statusText?: string;\n    message?: string;\n    cause?: unknown;\n  }) {\n    super({ name, message, cause });\n\n    this.url = url;\n    this.statusCode = statusCode;\n    this.statusText = statusText;\n  }\n\n  static isInstance(error: unknown): error is DownloadError {\n    return AISDKError.hasMarker(error, marker);\n  }\n}\n","import { DownloadError } from './download-error';\n\n/**\n * Default maximum download size: 2 GiB.\n *\n * `fetch().arrayBuffer()` has ~2x peak memory overhead (undici buffers the\n * body internally, then creates the JS ArrayBuffer), so very large downloads\n * risk exceeding the default V8 heap limit on 64-bit systems and terminating\n * the process with an out-of-memory error.\n *\n * Setting this limit converts an unrecoverable OOM crash into a catchable\n * `DownloadError`.\n */\nexport const DEFAULT_MAX_DOWNLOAD_SIZE = 2 * 1024 * 1024 * 1024;\n\n/**\n * Reads a fetch Response body with a size limit to prevent memory exhaustion.\n *\n * Checks the Content-Length header for early rejection, then reads the body\n * incrementally via ReadableStream and aborts with a DownloadError when the\n * limit is exceeded.\n *\n * @param response - The fetch Response to read.\n * @param url - The URL being downloaded (used in error messages).\n * @param maxBytes - Maximum allowed bytes. Defaults to DEFAULT_MAX_DOWNLOAD_SIZE.\n * @returns A Uint8Array containing the response body.\n * @throws DownloadError if the response exceeds maxBytes.\n */\nexport async function readResponseWithSizeLimit({\n  response,\n  url,\n  maxBytes = DEFAULT_MAX_DOWNLOAD_SIZE,\n}: {\n  response: Response;\n  url: string;\n  maxBytes?: number;\n}): Promise<Uint8Array> {\n  // Early rejection based on Content-Length header\n  const contentLength = response.headers.get('content-length');\n  if (contentLength != null) {\n    const length = parseInt(contentLength, 10);\n    if (!isNaN(length) && length > maxBytes) {\n      throw new DownloadError({\n        url,\n        message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes (Content-Length: ${length}).`,\n      });\n    }\n  }\n\n  const body = response.body;\n\n  // Handle missing body (empty responses)\n  if (body == null) {\n    return new Uint8Array(0);\n  }\n\n  const reader = body.getReader();\n  const chunks: Uint8Array[] = [];\n  let totalBytes = 0;\n\n  try {\n    while (true) {\n      const { done, value } = await reader.read();\n\n      if (done) {\n        break;\n      }\n\n      totalBytes += value.length;\n\n      if (totalBytes > maxBytes) {\n        throw new DownloadError({\n          url,\n          message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes.`,\n        });\n      }\n\n      chunks.push(value);\n    }\n  } finally {\n    try {\n      await reader.cancel();\n    } finally {\n      reader.releaseLock();\n    }\n  }\n\n  // Concatenate chunks into a single Uint8Array\n  const result = new Uint8Array(totalBytes);\n  let offset = 0;\n  for (const chunk of chunks) {\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n\n  return result;\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 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","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","export function getRuntimeEnvironmentUserAgent(\n  globalThisAny: any = globalThis as any,\n): string {\n  // Browsers\n  if (globalThisAny.window) {\n    return `runtime/browser`;\n  }\n\n  // Cloudflare Workers / Deno / Bun / Node.js >= 21.1\n  if (globalThisAny.navigator?.userAgent) {\n    return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n  }\n\n  // Nodes.js < 21.1\n  if (globalThisAny.process?.versions?.node) {\n    return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n  }\n\n  if (globalThisAny.EdgeRuntime) {\n    return `runtime/vercel-edge`;\n  }\n\n  return 'runtime/unknown';\n}\n","/**\n * Normalizes different header inputs into a plain record with lower-case keys.\n * Entries with `undefined` or `null` values are removed.\n *\n * @param headers - Input headers (`Headers`, tuples array, plain record) to normalize.\n * @returns A record containing the normalized header entries.\n */\nexport function normalizeHeaders(\n  headers:\n    | HeadersInit\n    | Record<string, string | undefined>\n    | Array<[string, string | undefined]>\n    | undefined,\n): Record<string, string> {\n  if (headers == null) {\n    return {};\n  }\n\n  const normalized: Record<string, string> = {};\n\n  if (headers instanceof Headers) {\n    headers.forEach((value, key) => {\n      normalized[key.toLowerCase()] = value;\n    });\n  } else {\n    if (!Array.isArray(headers)) {\n      headers = Object.entries(headers);\n    }\n\n    for (const [key, value] of headers) {\n      if (value != null) {\n        normalized[key.toLowerCase()] = value;\n      }\n    }\n  }\n\n  return normalized;\n}\n","import { normalizeHeaders } from './normalize-headers';\n\n/**\n * Appends suffix parts to the `user-agent` header.\n * If a `user-agent` header already exists, the suffix parts are appended to it.\n * If no `user-agent` header exists, a new one is created with the suffix parts.\n * Automatically removes undefined entries from the headers.\n *\n * @param headers - The original headers.\n * @param userAgentSuffixParts - The parts to append to the `user-agent` header.\n * @returns The new headers with the `user-agent` header set or updated.\n */\nexport function withUserAgentSuffix(\n  headers: HeadersInit | Record<string, string | undefined> | undefined,\n  ...userAgentSuffixParts: string[]\n): Record<string, string> {\n  const normalizedHeaders = new Headers(normalizeHeaders(headers));\n\n  const currentUserAgentHeader = normalizedHeaders.get('user-agent') || '';\n\n  normalizedHeaders.set(\n    'user-agent',\n    [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(' '),\n  );\n\n  return Object.fromEntries(normalizedHeaders.entries());\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import { 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 { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const getFromApi = async <T>({\n  url,\n  headers = {},\n  successfulResponseHandler,\n  failedResponseHandler,\n  abortSignal,\n  fetch = getOriginalFetch(),\n}: {\n  url: string;\n  headers?: Record<string, string | undefined>;\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: 'GET',\n      headers: withUserAgentSuffix(\n        headers,\n        `ai-sdk/provider-utils/${VERSION}`,\n        getRuntimeEnvironmentUserAgent(),\n      ),\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: {},\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: {},\n        });\n      }\n\n      throw errorInformation.value;\n    }\n\n    try {\n      return await successfulResponseHandler({\n        response,\n        url,\n        requestBodyValues: {},\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: {},\n      });\n    }\n  } catch (error) {\n    throw handleFetchError({ error, url, requestBodyValues: {} });\n  }\n};\n","import {\n  JSONSchema7,\n  LanguageModelV2Message,\n  LanguageModelV2Prompt,\n} from '@ai-sdk/provider';\n\nconst DEFAULT_SCHEMA_PREFIX = 'JSON schema:';\nconst DEFAULT_SCHEMA_SUFFIX =\n  'You MUST answer with a JSON object that matches the JSON schema above.';\nconst DEFAULT_GENERIC_SUFFIX = 'You MUST answer with JSON.';\n\nexport function injectJsonInstruction({\n  prompt,\n  schema,\n  schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : undefined,\n  schemaSuffix = schema != null\n    ? DEFAULT_SCHEMA_SUFFIX\n    : DEFAULT_GENERIC_SUFFIX,\n}: {\n  prompt?: string;\n  schema?: JSONSchema7;\n  schemaPrefix?: string;\n  schemaSuffix?: string;\n}): string {\n  return [\n    prompt != null && prompt.length > 0 ? prompt : undefined,\n    prompt != null && prompt.length > 0 ? '' : undefined, // add a newline if prompt is not null\n    schemaPrefix,\n    schema != null ? JSON.stringify(schema) : undefined,\n    schemaSuffix,\n  ]\n    .filter(line => line != null)\n    .join('\\n');\n}\n\nexport function injectJsonInstructionIntoMessages({\n  messages,\n  schema,\n  schemaPrefix,\n  schemaSuffix,\n}: {\n  messages: LanguageModelV2Prompt;\n  schema?: JSONSchema7;\n  schemaPrefix?: string;\n  schemaSuffix?: string;\n}): LanguageModelV2Prompt {\n  const systemMessage: LanguageModelV2Message =\n    messages[0]?.role === 'system'\n      ? { ...messages[0] }\n      : { role: 'system', content: '' };\n\n  systemMessage.content = injectJsonInstruction({\n    prompt: systemMessage.content,\n    schema,\n    schemaPrefix,\n    schemaSuffix,\n  });\n\n  return [\n    systemMessage,\n    ...(messages[0]?.role === 'system' ? messages.slice(1) : messages),\n  ];\n}\n","/**\n * Checks if the given URL is supported natively by the model.\n *\n * @param mediaType - The media type of the URL. Case-sensitive.\n * @param url - The URL to check.\n * @param supportedUrls - A record where keys are case-sensitive media types (or '*')\n *                        and values are arrays of RegExp patterns for URLs.\n *\n * @returns `true` if the URL matches a pattern under the specific media type\n *          or the wildcard '*', `false` otherwise.\n */\nexport function isUrlSupported({\n  mediaType,\n  url,\n  supportedUrls,\n}: {\n  mediaType: string;\n  url: string;\n  supportedUrls: Record<string, RegExp[]>;\n}): boolean {\n  // standardize media type and url to lower case\n  url = url.toLowerCase();\n  mediaType = mediaType.toLowerCase();\n\n  return (\n    Object.entries(supportedUrls)\n      // standardize supported url map into lowercase prefixes:\n      .map(([key, value]) => {\n        const mediaType = key.toLowerCase();\n        return mediaType === '*' || mediaType === '*/*'\n          ? { mediaTypePrefix: '', regexes: value }\n          : { mediaTypePrefix: mediaType.replace(/\\*/, ''), regexes: value };\n      })\n      // gather all regexp pattern from matched media type prefixes:\n      .filter(({ mediaTypePrefix }) => mediaType.startsWith(mediaTypePrefix))\n      .flatMap(({ regexes }) => regexes)\n      // check if any pattern matches the url:\n      .some(pattern => pattern.test(url))\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","/**\n * Loads an optional `string` setting from the environment or a parameter.\n *\n * @param settingValue - The setting value.\n * @param environmentVariableName - The environment variable name.\n * @returns The setting value.\n */\nexport function loadOptionalSetting({\n  settingValue,\n  environmentVariableName,\n}: {\n  settingValue: string | undefined;\n  environmentVariableName: string;\n}): string | undefined {\n  if (typeof settingValue === 'string') {\n    return settingValue;\n  }\n\n  if (settingValue != null || typeof process === 'undefined') {\n    return undefined;\n  }\n\n  settingValue = process.env[environmentVariableName];\n\n  if (settingValue == null || typeof settingValue !== 'string') {\n    return undefined;\n  }\n\n  return settingValue;\n}\n","import { LoadSettingError } from '@ai-sdk/provider';\n\n/**\n * Loads a `string` setting from the environment or a parameter.\n *\n * @param settingValue - The setting value.\n * @param environmentVariableName - The environment variable name.\n * @param settingName - The setting name.\n * @param description - The description of the setting.\n * @returns The setting value.\n */\nexport function loadSetting({\n  settingValue,\n  environmentVariableName,\n  settingName,\n  description,\n}: {\n  settingValue: string | undefined;\n  environmentVariableName: string;\n  settingName: string;\n  description: string;\n}): string {\n  if (typeof settingValue === 'string') {\n    return settingValue;\n  }\n\n  if (settingValue != null) {\n    throw new LoadSettingError({\n      message: `${description} setting must be a string.`,\n    });\n  }\n\n  if (typeof process === 'undefined') {\n    throw new LoadSettingError({\n      message:\n        `${description} setting is missing. ` +\n        `Pass it using the '${settingName}' parameter. ` +\n        `Environment variables is not supported in this environment.`,\n    });\n  }\n\n  settingValue = process.env[environmentVariableName];\n\n  if (settingValue == null) {\n    throw new LoadSettingError({\n      message:\n        `${description} setting is missing. ` +\n        `Pass it using the '${settingName}' parameter ` +\n        `or the ${environmentVariableName} environment variable.`,\n    });\n  }\n\n  if (typeof settingValue !== 'string') {\n    throw new LoadSettingError({\n      message:\n        `${description} setting must be a string. ` +\n        `The value of the ${environmentVariableName} environment variable is not a string.`,\n    });\n  }\n\n  return settingValue;\n}\n","/**\n * Maps a media type to its corresponding file extension.\n * It was originally introduced to set a filename for audio file uploads\n * in https://github.com/vercel/ai/pull/8159.\n *\n * @param mediaType The media type to map.\n * @returns The corresponding file extension\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types\n */\nexport function mediaTypeToExtension(mediaType: string) {\n  const [_type, subtype = ''] = mediaType.toLowerCase().split('/');\n\n  return (\n    {\n      mpeg: 'mp3',\n      'x-wav': 'wav',\n      opus: 'ogg',\n      mp4: 'm4a',\n      'x-m4a': 'm4a',\n    }[subtype] ?? subtype\n  );\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 =\n  /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/;\nconst suspectConstructorRx =\n  /\"(?: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: 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        node.constructor !== null &&\n        typeof node.constructor === 'object' &&\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  const { stackTraceLimit } = Error;\n  try {\n    // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n    Error.stackTraceLimit = 0;\n  } catch (e) {\n    // Fallback in case Error is immutable (v8 readonly)\n    return _parse(text);\n  }\n\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\n/**\n * Creates a validator with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a validator.\n * @returns A function that returns a validator.\n */\nexport function lazyValidator<OBJECT>(\n  createValidator: () => Validator<OBJECT>,\n): LazyValidator<OBJECT> {\n  // cache the validator to avoid initializing it multiple times\n  let validator: Validator<OBJECT> | undefined;\n  return () => {\n    if (validator == null) {\n      validator = createValidator();\n    }\n    return validator;\n  };\n}\n\nexport type LazyValidator<OBJECT> = () => Validator<OBJECT>;\n\nexport type FlexibleValidator<OBJECT> =\n  | Validator<OBJECT>\n  | LazyValidator<OBJECT>\n  | StandardSchemaV1<unknown, OBJECT>;\n\nexport type InferValidator<SCHEMA> =\n  SCHEMA extends StandardSchemaV1<unknown, infer T>\n    ? T\n    : SCHEMA extends LazyValidator<infer T>\n      ? T\n      : SCHEMA extends Validator<infer T>\n        ? T\n        : never;\n\nexport function asValidator<OBJECT>(\n  value: FlexibleValidator<OBJECT>,\n): Validator<OBJECT> {\n  return isValidator(value)\n    ? value\n    : typeof value === 'function'\n      ? value()\n      : 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 { FlexibleValidator, 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: FlexibleValidator<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: FlexibleValidator<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 { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { FlexibleValidator, 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: FlexibleValidator<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n  text,\n  schema,\n}: {\n  text: string;\n  schema?: FlexibleValidator<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: FlexibleValidator<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n  text,\n  schema,\n}: {\n  text: string;\n  schema?: FlexibleValidator<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 { ParseResult, safeParseJSON } from './parse-json';\nimport { FlexibleValidator } from './validator';\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: FlexibleValidator<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 { FlexibleValidator } from './validator';\n\nexport async function parseProviderOptions<OPTIONS>({\n  provider,\n  providerOptions,\n  schema,\n}: {\n  provider: string;\n  providerOptions: Record<string, unknown> | undefined;\n  schema: FlexibleValidator<OPTIONS>;\n}): Promise<OPTIONS | undefined> {\n  if (providerOptions?.[provider] == null) {\n    return undefined;\n  }\n\n  const parsedProviderOptions = await safeValidateTypes<OPTIONS | 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 { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\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: withUserAgentSuffix(\n        headers,\n        `ai-sdk/provider-utils/${VERSION}`,\n        getRuntimeEnvironmentUserAgent(),\n      ),\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\n/**\n * Additional options that are sent into each tool call.\n */\n// TODO AI SDK 6: rename to ToolExecutionOptions\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  /**\n   * Additional context.\n   *\n   * Experimental (can break in patch releases).\n   */\n  experimental_context?: unknown;\n}\n\nexport type ToolExecuteFunction<INPUT, OUTPUT> = (\n  input: INPUT,\n  options: ToolCallOptions,\n) => AsyncIterable<OUTPUT> | 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\ntype ToolOutputProperties<INPUT, OUTPUT> = NeverOptional<\n  OUTPUT,\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/**\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\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} & ToolOutputProperties<INPUT, OUTPUT> & {\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: 0 extends 1 & OUTPUT\n        ? any\n        : [OUTPUT] extends [never]\n          ? any\n          : NoInfer<OUTPUT>,\n    ) => LanguageModelV2ToolResultPart['output'];\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","/**\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 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';\nimport { FlexibleValidator } from './validator';\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: FlexibleValidator<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: FlexibleValidator<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: FlexibleValidator<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","import { JSONSchema7 } from '@ai-sdk/provider';\n\n/**\n * Recursively adds additionalProperties: false to the JSON schema. This is necessary because some providers (e.g. OpenAI) do not support additionalProperties: true.\n */\nexport function addAdditionalPropertiesToJsonSchema(\n  jsonSchema: JSONSchema7,\n): JSONSchema7 {\n  if (jsonSchema.type === 'object') {\n    jsonSchema.additionalProperties = false;\n    const properties = jsonSchema.properties;\n    if (properties != null) {\n      for (const property in properties) {\n        properties[property] = addAdditionalPropertiesToJsonSchema(\n          properties[property] as JSONSchema7,\n        );\n      }\n    }\n  }\n  if (jsonSchema.type === 'array' && jsonSchema.items != null) {\n    if (Array.isArray(jsonSchema.items)) {\n      jsonSchema.items = jsonSchema.items.map(item =>\n        addAdditionalPropertiesToJsonSchema(item as JSONSchema7),\n      );\n    } else {\n      jsonSchema.items = addAdditionalPropertiesToJsonSchema(\n        jsonSchema.items as JSONSchema7,\n      );\n    }\n  }\n  return jsonSchema;\n}\n","export const getRelativePath = (pathA: string[], pathB: string[]) => {\n  let i = 0;\n  for (; i < pathA.length && i < pathB.length; i++) {\n    if (pathA[i] !== pathB[i]) break;\n  }\n  return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/');\n};\n","import { ZodSchema, ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type DateStrategy =\n  | 'format:date-time'\n  | 'format:date'\n  | 'string'\n  | 'integer';\n\nexport const ignoreOverride = Symbol(\n  'Let zodToJsonSchema decide on which parser to use',\n);\n\nexport type OverrideCallback = (\n  def: ZodTypeDef,\n  refs: Refs,\n  seen: Seen | undefined,\n  forceResolution?: boolean,\n) => JsonSchema7Type | undefined | typeof ignoreOverride;\n\nexport type PostProcessCallback = (\n  jsonSchema: JsonSchema7Type | undefined,\n  def: ZodTypeDef,\n  refs: Refs,\n) => JsonSchema7Type | undefined;\n\nexport const jsonDescription: PostProcessCallback = (jsonSchema, def) => {\n  if (def.description) {\n    try {\n      return {\n        ...jsonSchema,\n        ...JSON.parse(def.description),\n      };\n    } catch {}\n  }\n\n  return jsonSchema;\n};\n\nexport type Options = {\n  name: string | undefined;\n  $refStrategy: 'root' | 'relative' | 'none' | 'seen';\n  basePath: string[];\n  effectStrategy: 'input' | 'any';\n  pipeStrategy: 'input' | 'output' | 'all';\n  dateStrategy: DateStrategy | DateStrategy[];\n  mapStrategy: 'entries' | 'record';\n  removeAdditionalStrategy: 'passthrough' | 'strict';\n  allowedAdditionalProperties: true | undefined;\n  rejectedAdditionalProperties: false | undefined;\n  strictUnions: boolean;\n  definitionPath: string;\n  definitions: Record<string, ZodSchema>;\n  errorMessages: boolean;\n  patternStrategy: 'escape' | 'preserve';\n  applyRegexFlags: boolean;\n  emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod';\n  base64Strategy: 'format:binary' | 'contentEncoding:base64' | 'pattern:zod';\n  nameStrategy: 'ref' | 'title';\n  override?: OverrideCallback;\n  postProcess?: PostProcessCallback;\n};\n\nexport const defaultOptions: Options = {\n  name: undefined,\n  $refStrategy: 'root',\n  basePath: ['#'],\n  effectStrategy: 'input',\n  pipeStrategy: 'all',\n  dateStrategy: 'format:date-time',\n  mapStrategy: 'entries',\n  removeAdditionalStrategy: 'passthrough',\n  allowedAdditionalProperties: true,\n  rejectedAdditionalProperties: false,\n  definitionPath: 'definitions',\n  strictUnions: false,\n  definitions: {},\n  errorMessages: false,\n  patternStrategy: 'escape',\n  applyRegexFlags: false,\n  emailStrategy: 'format:email',\n  base64Strategy: 'contentEncoding:base64',\n  nameStrategy: 'ref',\n};\n\nexport const getDefaultOptions = (\n  options: Partial<Options> | string | undefined,\n) =>\n  (typeof options === 'string'\n    ? {\n        ...defaultOptions,\n        name: options,\n      }\n    : {\n        ...defaultOptions,\n        ...options,\n      }) as Options;\n","export type JsonSchema7AnyType = { $ref?: string };\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n  return {};\n}\n","import { ZodArrayDef, ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ArrayType = {\n  type: 'array';\n  items?: JsonSchema7Type;\n  minItems?: number;\n  maxItems?: number;\n};\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n  const res: JsonSchema7ArrayType = {\n    type: 'array',\n  };\n  if (\n    def.type?._def &&\n    def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny\n  ) {\n    res.items = parseDef(def.type._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'items'],\n    });\n  }\n\n  if (def.minLength) {\n    res.minItems = def.minLength.value;\n  }\n  if (def.maxLength) {\n    res.maxItems = def.maxLength.value;\n  }\n  if (def.exactLength) {\n    res.minItems = def.exactLength.value;\n    res.maxItems = def.exactLength.value;\n  }\n  return res;\n}\n","import { ZodBigIntDef } from 'zod/v3';\n\nexport type JsonSchema7BigintType = {\n  type: 'integer';\n  format: 'int64';\n  minimum?: BigInt;\n  exclusiveMinimum?: BigInt;\n  maximum?: BigInt;\n  exclusiveMaximum?: BigInt;\n  multipleOf?: BigInt;\n};\n\nexport function parseBigintDef(def: ZodBigIntDef): JsonSchema7BigintType {\n  const res: JsonSchema7BigintType = {\n    type: 'integer',\n    format: 'int64',\n  };\n\n  if (!def.checks) return res;\n\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case 'min':\n        if (check.inclusive) {\n          res.minimum = check.value;\n        } else {\n          res.exclusiveMinimum = check.value;\n        }\n        break;\n      case 'max':\n        if (check.inclusive) {\n          res.maximum = check.value;\n        } else {\n          res.exclusiveMaximum = check.value;\n        }\n\n        break;\n      case 'multipleOf':\n        res.multipleOf = check.value;\n        break;\n    }\n  }\n  return res;\n}\n","export type JsonSchema7BooleanType = {\n  type: 'boolean';\n};\n\nexport function parseBooleanDef(): JsonSchema7BooleanType {\n  return { type: 'boolean' };\n}\n","import { ZodBrandedDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n  return parseDef(_def.type._def, refs);\n}\n","import { ZodCatchDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n  return parseDef(def.innerType._def, refs);\n};\n","import { ZodDateDef } from 'zod/v3';\nimport { Refs } from '../refs';\nimport { DateStrategy } from '../options';\n\nexport type JsonSchema7DateType =\n  | {\n      type: 'integer' | 'string';\n      format: 'unix-time' | 'date-time' | 'date';\n      minimum?: number;\n      maximum?: number;\n    }\n  | {\n      anyOf: JsonSchema7DateType[];\n    };\n\nexport function parseDateDef(\n  def: ZodDateDef,\n  refs: Refs,\n  overrideDateStrategy?: DateStrategy,\n): JsonSchema7DateType {\n  const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n  if (Array.isArray(strategy)) {\n    return {\n      anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n    };\n  }\n\n  switch (strategy) {\n    case 'string':\n    case 'format:date-time':\n      return {\n        type: 'string',\n        format: 'date-time',\n      };\n    case 'format:date':\n      return {\n        type: 'string',\n        format: 'date',\n      };\n    case 'integer':\n      return integerDateParser(def);\n  }\n}\n\nconst integerDateParser = (def: ZodDateDef) => {\n  const res: JsonSchema7DateType = {\n    type: 'integer',\n    format: 'unix-time',\n  };\n\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case 'min':\n        res.minimum = check.value;\n        break;\n      case 'max':\n        res.maximum = check.value;\n        break;\n    }\n  }\n\n  return res;\n};\n","import { ZodDefaultDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parseDefaultDef(\n  _def: ZodDefaultDef,\n  refs: Refs,\n): JsonSchema7Type & { default: any } {\n  return {\n    ...parseDef(_def.innerType._def, refs),\n    default: _def.defaultValue(),\n  };\n}\n","import { ZodEffectsDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport function parseEffectsDef(\n  _def: ZodEffectsDef,\n  refs: Refs,\n): JsonSchema7Type | undefined {\n  return refs.effectStrategy === 'input'\n    ? parseDef(_def.schema._def, refs)\n    : parseAnyDef();\n}\n","import { ZodEnumDef } from 'zod/v3';\n\nexport type JsonSchema7EnumType = {\n  type: 'string';\n  enum: string[];\n};\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n  return {\n    type: 'string',\n    enum: Array.from(def.values),\n  };\n}\n","import { ZodIntersectionDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7StringType } from './string';\n\nexport type JsonSchema7AllOfType = {\n  allOf: JsonSchema7Type[];\n  unevaluatedProperties?: boolean;\n};\n\nconst isJsonSchema7AllOfType = (\n  type: JsonSchema7Type | JsonSchema7StringType,\n): type is JsonSchema7AllOfType => {\n  if ('type' in type && type.type === 'string') return false;\n  return 'allOf' in type;\n};\n\nexport function parseIntersectionDef(\n  def: ZodIntersectionDef,\n  refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n  const allOf = [\n    parseDef(def.left._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'allOf', '0'],\n    }),\n    parseDef(def.right._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'allOf', '1'],\n    }),\n  ].filter((x): x is JsonSchema7Type => !!x);\n\n  const mergedAllOf: JsonSchema7Type[] = [];\n  // If either of the schemas is an allOf, merge them into a single allOf\n  allOf.forEach(schema => {\n    if (isJsonSchema7AllOfType(schema)) {\n      mergedAllOf.push(...schema.allOf);\n    } else {\n      let nestedSchema: JsonSchema7Type = schema;\n      if (\n        'additionalProperties' in schema &&\n        schema.additionalProperties === false\n      ) {\n        const { additionalProperties, ...rest } = schema;\n        nestedSchema = rest;\n      }\n      mergedAllOf.push(nestedSchema);\n    }\n  });\n  return mergedAllOf.length ? { allOf: mergedAllOf } : undefined;\n}\n","import { ZodLiteralDef } from 'zod/v3';\n\nexport type JsonSchema7LiteralType =\n  | {\n      type: 'string' | 'number' | 'integer' | 'boolean';\n      const: string | number | boolean;\n    }\n  | {\n      type: 'object' | 'array';\n    };\n\nexport function parseLiteralDef(def: ZodLiteralDef): JsonSchema7LiteralType {\n  const parsedType = typeof def.value;\n  if (\n    parsedType !== 'bigint' &&\n    parsedType !== 'number' &&\n    parsedType !== 'boolean' &&\n    parsedType !== 'string'\n  ) {\n    return {\n      type: Array.isArray(def.value) ? 'array' : 'object',\n    };\n  }\n\n  return {\n    type: parsedType === 'bigint' ? 'integer' : parsedType,\n    const: def.value,\n  };\n}\n","import { ZodStringDef } from 'zod/v3';\nimport { Refs } from '../refs';\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n  /**\n   * `c` was changed to `[cC]` to replicate /i flag\n   */\n  cuid: /^[cC][^\\s-]{8,}$/,\n  cuid2: /^[0-9a-z]+$/,\n  ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n  /**\n   * `a-z` was added to replicate /i flag\n   */\n  email:\n    /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n  /**\n   * Constructed a valid Unicode RegExp\n   *\n   * Lazily instantiate since this type of regex isn't supported\n   * in all envs (e.g. React Native).\n   *\n   * See:\n   * https://github.com/colinhacks/zod/issues/2433\n   * Fix in Zod:\n   * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n   */\n  emoji: () => {\n    if (emojiRegex === undefined) {\n      emojiRegex = RegExp(\n        '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n        'u',\n      );\n    }\n    return emojiRegex;\n  },\n  /**\n   * Unused\n   */\n  uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n  /**\n   * Unused\n   */\n  ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n  ipv4Cidr:\n    /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n  /**\n   * Unused\n   */\n  ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n  ipv6Cidr:\n    /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n  base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n  base64url:\n    /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n  nanoid: /^[a-zA-Z0-9_-]{21}$/,\n  jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n  type: 'string';\n  minLength?: number;\n  maxLength?: number;\n  format?:\n    | 'email'\n    | 'idn-email'\n    | 'uri'\n    | 'uuid'\n    | 'date-time'\n    | 'ipv4'\n    | 'ipv6'\n    | 'date'\n    | 'time'\n    | 'duration';\n  pattern?: string;\n  allOf?: {\n    pattern: string;\n  }[];\n  anyOf?: {\n    format: string;\n  }[];\n  contentEncoding?: string;\n};\n\nexport function parseStringDef(\n  def: ZodStringDef,\n  refs: Refs,\n): JsonSchema7StringType {\n  const res: JsonSchema7StringType = {\n    type: 'string',\n  };\n\n  if (def.checks) {\n    for (const check of def.checks) {\n      switch (check.kind) {\n        case 'min':\n          res.minLength =\n            typeof res.minLength === 'number'\n              ? Math.max(res.minLength, check.value)\n              : check.value;\n          break;\n        case 'max':\n          res.maxLength =\n            typeof res.maxLength === 'number'\n              ? Math.min(res.maxLength, check.value)\n              : check.value;\n\n          break;\n        case 'email':\n          switch (refs.emailStrategy) {\n            case 'format:email':\n              addFormat(res, 'email', check.message, refs);\n              break;\n            case 'format:idn-email':\n              addFormat(res, 'idn-email', check.message, refs);\n              break;\n            case 'pattern:zod':\n              addPattern(res, zodPatterns.email, check.message, refs);\n              break;\n          }\n\n          break;\n        case 'url':\n          addFormat(res, 'uri', check.message, refs);\n          break;\n        case 'uuid':\n          addFormat(res, 'uuid', check.message, refs);\n          break;\n        case 'regex':\n          addPattern(res, check.regex, check.message, refs);\n          break;\n        case 'cuid':\n          addPattern(res, zodPatterns.cuid, check.message, refs);\n          break;\n        case 'cuid2':\n          addPattern(res, zodPatterns.cuid2, check.message, refs);\n          break;\n        case 'startsWith':\n          addPattern(\n            res,\n            RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n            check.message,\n            refs,\n          );\n          break;\n        case 'endsWith':\n          addPattern(\n            res,\n            RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n            check.message,\n            refs,\n          );\n          break;\n        case 'datetime':\n          addFormat(res, 'date-time', check.message, refs);\n          break;\n        case 'date':\n          addFormat(res, 'date', check.message, refs);\n          break;\n        case 'time':\n          addFormat(res, 'time', check.message, refs);\n          break;\n        case 'duration':\n          addFormat(res, 'duration', check.message, refs);\n          break;\n        case 'length':\n          res.minLength =\n            typeof res.minLength === 'number'\n              ? Math.max(res.minLength, check.value)\n              : check.value;\n          res.maxLength =\n            typeof res.maxLength === 'number'\n              ? Math.min(res.maxLength, check.value)\n              : check.value;\n          break;\n        case 'includes': {\n          addPattern(\n            res,\n            RegExp(escapeLiteralCheckValue(check.value, refs)),\n            check.message,\n            refs,\n          );\n          break;\n        }\n        case 'ip': {\n          if (check.version !== 'v6') {\n            addFormat(res, 'ipv4', check.message, refs);\n          }\n          if (check.version !== 'v4') {\n            addFormat(res, 'ipv6', check.message, refs);\n          }\n          break;\n        }\n        case 'base64url':\n          addPattern(res, zodPatterns.base64url, check.message, refs);\n          break;\n        case 'jwt':\n          addPattern(res, zodPatterns.jwt, check.message, refs);\n          break;\n        case 'cidr': {\n          if (check.version !== 'v6') {\n            addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n          }\n          if (check.version !== 'v4') {\n            addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n          }\n          break;\n        }\n        case 'emoji':\n          addPattern(res, zodPatterns.emoji(), check.message, refs);\n          break;\n        case 'ulid': {\n          addPattern(res, zodPatterns.ulid, check.message, refs);\n          break;\n        }\n        case 'base64': {\n          switch (refs.base64Strategy) {\n            case 'format:binary': {\n              addFormat(res, 'binary' as any, check.message, refs);\n              break;\n            }\n\n            case 'contentEncoding:base64': {\n              res.contentEncoding = 'base64';\n              break;\n            }\n\n            case 'pattern:zod': {\n              addPattern(res, zodPatterns.base64, check.message, refs);\n              break;\n            }\n          }\n          break;\n        }\n        case 'nanoid': {\n          addPattern(res, zodPatterns.nanoid, check.message, refs);\n        }\n        case 'toLowerCase':\n        case 'toUpperCase':\n        case 'trim':\n          break;\n        default:\n          /* c8 ignore next */\n          ((_: never) => {})(check);\n      }\n    }\n  }\n\n  return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n  return refs.patternStrategy === 'escape'\n    ? escapeNonAlphaNumeric(literal)\n    : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n  'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789',\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n  let result = '';\n\n  for (let i = 0; i < source.length; i++) {\n    if (!ALPHA_NUMERIC.has(source[i])) {\n      result += '\\\\';\n    }\n\n    result += source[i];\n  }\n\n  return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n  schema: JsonSchema7StringType,\n  value: Required<JsonSchema7StringType>['format'],\n  message: string | undefined,\n  refs: Refs,\n) {\n  if (schema.format || schema.anyOf?.some(x => x.format)) {\n    if (!schema.anyOf) {\n      schema.anyOf = [];\n    }\n\n    if (schema.format) {\n      schema.anyOf!.push({\n        format: schema.format,\n      });\n      delete schema.format;\n    }\n\n    schema.anyOf!.push({\n      format: value,\n      ...(message &&\n        refs.errorMessages && { errorMessage: { format: message } }),\n    });\n  } else {\n    schema.format = value;\n  }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n  schema: JsonSchema7StringType,\n  regex: RegExp,\n  message: string | undefined,\n  refs: Refs,\n) {\n  if (schema.pattern || schema.allOf?.some(x => x.pattern)) {\n    if (!schema.allOf) {\n      schema.allOf = [];\n    }\n\n    if (schema.pattern) {\n      schema.allOf!.push({\n        pattern: schema.pattern,\n      });\n      delete schema.pattern;\n    }\n\n    schema.allOf!.push({\n      pattern: stringifyRegExpWithFlags(regex, refs),\n      ...(message &&\n        refs.errorMessages && { errorMessage: { pattern: message } }),\n    });\n  } else {\n    schema.pattern = stringifyRegExpWithFlags(regex, refs);\n  }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n  if (!refs.applyRegexFlags || !regex.flags) {\n    return regex.source;\n  }\n\n  // Currently handled flags\n  const flags = {\n    i: regex.flags.includes('i'), // Case-insensitive\n    m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters\n    s: regex.flags.includes('s'), // `.` matches newlines\n  };\n\n  // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n  const source = flags.i ? regex.source.toLowerCase() : regex.source;\n  let pattern = '';\n  let isEscaped = false;\n  let inCharGroup = false;\n  let inCharRange = false;\n\n  for (let i = 0; i < source.length; i++) {\n    if (isEscaped) {\n      pattern += source[i];\n      isEscaped = false;\n      continue;\n    }\n\n    if (flags.i) {\n      if (inCharGroup) {\n        if (source[i].match(/[a-z]/)) {\n          if (inCharRange) {\n            pattern += source[i];\n            pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n            inCharRange = false;\n          } else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) {\n            pattern += source[i];\n            inCharRange = true;\n          } else {\n            pattern += `${source[i]}${source[i].toUpperCase()}`;\n          }\n          continue;\n        }\n      } else if (source[i].match(/[a-z]/)) {\n        pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n        continue;\n      }\n    }\n\n    if (flags.m) {\n      if (source[i] === '^') {\n        pattern += `(^|(?<=[\\r\\n]))`;\n        continue;\n      } else if (source[i] === '$') {\n        pattern += `($|(?=[\\r\\n]))`;\n        continue;\n      }\n    }\n\n    if (flags.s && source[i] === '.') {\n      pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n      continue;\n    }\n\n    pattern += source[i];\n    if (source[i] === '\\\\') {\n      isEscaped = true;\n    } else if (inCharGroup && source[i] === ']') {\n      inCharGroup = false;\n    } else if (!inCharGroup && source[i] === '[') {\n      inCharGroup = true;\n    }\n  }\n\n  try {\n    new RegExp(pattern);\n  } catch {\n    console.warn(\n      `Could not convert regex pattern at ${refs.currentPath.join(\n        '/',\n      )} to a flag-independent form! Falling back to the flag-ignorant source`,\n    );\n    return regex.source;\n  }\n\n  return pattern;\n}\n","import {\n  ZodFirstPartyTypeKind,\n  ZodMapDef,\n  ZodRecordDef,\n  ZodTypeAny,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseBrandedDef } from './branded';\nimport { JsonSchema7EnumType } from './enum';\nimport { JsonSchema7StringType, parseStringDef } from './string';\n\ntype JsonSchema7RecordPropertyNamesType =\n  | Omit<JsonSchema7StringType, 'type'>\n  | Omit<JsonSchema7EnumType, 'type'>;\n\nexport type JsonSchema7RecordType = {\n  type: 'object';\n  additionalProperties?: JsonSchema7Type | true;\n  propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n  def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n  refs: Refs,\n): JsonSchema7RecordType {\n  const schema: JsonSchema7RecordType = {\n    type: 'object',\n    additionalProperties:\n      parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, 'additionalProperties'],\n      }) ?? refs.allowedAdditionalProperties,\n  };\n\n  if (\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n    def.keyType._def.checks?.length\n  ) {\n    const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n    return {\n      ...schema,\n      propertyNames: keyType,\n    };\n  } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n    return {\n      ...schema,\n      propertyNames: {\n        enum: def.keyType._def.values,\n      },\n    };\n  } else if (\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n    def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n    def.keyType._def.type._def.checks?.length\n  ) {\n    const { type, ...keyType } = parseBrandedDef(\n      def.keyType._def,\n      refs,\n    ) as JsonSchema7StringType;\n\n    return {\n      ...schema,\n      propertyNames: keyType,\n    };\n  }\n\n  return schema;\n}\n","import { ZodMapDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\nimport { JsonSchema7RecordType, parseRecordDef } from './record';\n\nexport type JsonSchema7MapType = {\n  type: 'array';\n  maxItems: 125;\n  items: {\n    type: 'array';\n    items: [JsonSchema7Type, JsonSchema7Type];\n    minItems: 2;\n    maxItems: 2;\n  };\n};\n\nexport function parseMapDef(\n  def: ZodMapDef,\n  refs: Refs,\n): JsonSchema7MapType | JsonSchema7RecordType {\n  if (refs.mapStrategy === 'record') {\n    return parseRecordDef(def, refs);\n  }\n\n  const keys =\n    parseDef(def.keyType._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'items', 'items', '0'],\n    }) || parseAnyDef();\n  const values =\n    parseDef(def.valueType._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'items', 'items', '1'],\n    }) || parseAnyDef();\n  return {\n    type: 'array',\n    maxItems: 125,\n    items: {\n      type: 'array',\n      items: [keys, values],\n      minItems: 2,\n      maxItems: 2,\n    },\n  };\n}\n","import { ZodNativeEnumDef } from 'zod/v3';\n\nexport type JsonSchema7NativeEnumType = {\n  type: 'string' | 'number' | ['string', 'number'];\n  enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n  def: ZodNativeEnumDef,\n): JsonSchema7NativeEnumType {\n  const object = def.values;\n  const actualKeys = Object.keys(def.values).filter((key: string) => {\n    return typeof object[object[key]] !== 'number';\n  });\n\n  const actualValues = actualKeys.map((key: string) => object[key]);\n\n  const parsedTypes = Array.from(\n    new Set(actualValues.map((values: string | number) => typeof values)),\n  );\n\n  return {\n    type:\n      parsedTypes.length === 1\n        ? parsedTypes[0] === 'string'\n          ? 'string'\n          : 'number'\n        : ['string', 'number'],\n    enum: actualValues,\n  };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7NeverType = {\n  not: JsonSchema7AnyType;\n};\n\nexport function parseNeverDef(): JsonSchema7NeverType | undefined {\n  return { not: parseAnyDef() };\n}\n","export type JsonSchema7NullType = {\n  type: 'null';\n};\n\nexport function parseNullDef(): JsonSchema7NullType {\n  return {\n    type: 'null',\n  };\n}\n","import {\n  ZodDiscriminatedUnionDef,\n  ZodLiteralDef,\n  ZodTypeAny,\n  ZodUnionDef,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport const primitiveMappings = {\n  ZodString: 'string',\n  ZodNumber: 'number',\n  ZodBigInt: 'integer',\n  ZodBoolean: 'boolean',\n  ZodNull: 'null',\n} as const;\ntype ZodPrimitive = keyof typeof primitiveMappings;\ntype JsonSchema7Primitive =\n  (typeof primitiveMappings)[keyof typeof primitiveMappings];\n\nexport type JsonSchema7UnionType =\n  | JsonSchema7PrimitiveUnionType\n  | JsonSchema7AnyOfType;\n\ntype JsonSchema7PrimitiveUnionType =\n  | {\n      type: JsonSchema7Primitive | JsonSchema7Primitive[];\n    }\n  | {\n      type: JsonSchema7Primitive | JsonSchema7Primitive[];\n      enum: (string | number | bigint | boolean | null)[];\n    };\n\ntype JsonSchema7AnyOfType = {\n  anyOf: JsonSchema7Type[];\n};\n\nexport function parseUnionDef(\n  def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n  refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined {\n  const options: readonly ZodTypeAny[] =\n    def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n\n  // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n  if (\n    options.every(\n      x =>\n        x._def.typeName in primitiveMappings &&\n        (!x._def.checks || !x._def.checks.length),\n    )\n  ) {\n    // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n    const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n      const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43\n      return type && !types.includes(type) ? [...types, type] : types;\n    }, []);\n\n    return {\n      type: types.length > 1 ? types : types[0],\n    };\n  } else if (\n    options.every(x => x._def.typeName === 'ZodLiteral' && !x.description)\n  ) {\n    // all options literals\n\n    const types = options.reduce(\n      (acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n        const type = typeof x._def.value;\n        switch (type) {\n          case 'string':\n          case 'number':\n          case 'boolean':\n            return [...acc, type];\n          case 'bigint':\n            return [...acc, 'integer' as const];\n          case 'object':\n            if (x._def.value === null) return [...acc, 'null' as const];\n          case 'symbol':\n          case 'undefined':\n          case 'function':\n          default:\n            return acc;\n        }\n      },\n      [],\n    );\n\n    if (types.length === options.length) {\n      // all the literals are primitive, as far as null can be considered primitive\n\n      const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n      return {\n        type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n        enum: options.reduce(\n          (acc, x) => {\n            return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n          },\n          [] as (string | number | bigint | boolean | null)[],\n        ),\n      };\n    }\n  } else if (options.every(x => x._def.typeName === 'ZodEnum')) {\n    return {\n      type: 'string',\n      enum: options.reduce(\n        (acc: string[], x) => [\n          ...acc,\n          ...x._def.values.filter((x: string) => !acc.includes(x)),\n        ],\n        [],\n      ),\n    };\n  }\n\n  return asAnyOf(def, refs);\n}\n\nconst asAnyOf = (\n  def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n  refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => {\n  const anyOf = (\n    (def.options instanceof Map\n      ? Array.from(def.options.values())\n      : def.options) as any[]\n  )\n    .map((x, i) =>\n      parseDef(x._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, 'anyOf', `${i}`],\n      }),\n    )\n    .filter(\n      (x): x is JsonSchema7Type =>\n        !!x &&\n        (!refs.strictUnions ||\n          (typeof x === 'object' && Object.keys(x).length > 0)),\n    );\n\n  return anyOf.length ? { anyOf } : undefined;\n};\n","import { ZodNullableDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7NullType } from './null';\nimport { primitiveMappings } from './union';\n\nexport type JsonSchema7NullableType =\n  | {\n      anyOf: [JsonSchema7Type, JsonSchema7NullType];\n    }\n  | {\n      type: [string, 'null'];\n    };\n\nexport function parseNullableDef(\n  def: ZodNullableDef,\n  refs: Refs,\n): JsonSchema7NullableType | undefined {\n  if (\n    ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(\n      def.innerType._def.typeName,\n    ) &&\n    (!def.innerType._def.checks || !def.innerType._def.checks.length)\n  ) {\n    return {\n      type: [\n        primitiveMappings[\n          def.innerType._def.typeName as keyof typeof primitiveMappings\n        ],\n        'null',\n      ],\n    };\n  }\n\n  const base = parseDef(def.innerType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'anyOf', '0'],\n  });\n\n  return base && { anyOf: [base, { type: 'null' }] };\n}\n","import { ZodNumberDef } from 'zod/v3';\n\nexport type JsonSchema7NumberType = {\n  type: 'number' | 'integer';\n  minimum?: number;\n  exclusiveMinimum?: number;\n  maximum?: number;\n  exclusiveMaximum?: number;\n  multipleOf?: number;\n};\n\nexport function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType {\n  const res: JsonSchema7NumberType = {\n    type: 'number',\n  };\n\n  if (!def.checks) return res;\n\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case 'int':\n        res.type = 'integer';\n        break;\n      case 'min':\n        if (check.inclusive) {\n          res.minimum = check.value;\n        } else {\n          res.exclusiveMinimum = check.value;\n        }\n        break;\n      case 'max':\n        if (check.inclusive) {\n          res.maximum = check.value;\n        } else {\n          res.exclusiveMaximum = check.value;\n        }\n        break;\n      case 'multipleOf':\n        res.multipleOf = check.value;\n        break;\n    }\n  }\n  return res;\n}\n","import { ZodObjectDef, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ObjectType = {\n  type: 'object';\n  properties: Record<string, JsonSchema7Type>;\n  additionalProperties?: boolean | JsonSchema7Type;\n  required?: string[];\n};\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n  const result: JsonSchema7ObjectType = {\n    type: 'object',\n    properties: {},\n  };\n\n  const required: string[] = [];\n\n  const shape = def.shape();\n\n  for (const propName in shape) {\n    let propDef = shape[propName];\n\n    if (propDef === undefined || propDef._def === undefined) {\n      continue;\n    }\n\n    const propOptional = safeIsOptional(propDef);\n\n    const parsedDef = parseDef(propDef._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'properties', propName],\n      propertyPath: [...refs.currentPath, 'properties', propName],\n    });\n\n    if (parsedDef === undefined) {\n      continue;\n    }\n\n    result.properties[propName] = parsedDef;\n\n    if (!propOptional) {\n      required.push(propName);\n    }\n  }\n\n  if (required.length) {\n    result.required = required;\n  }\n\n  const additionalProperties = decideAdditionalProperties(def, refs);\n\n  if (additionalProperties !== undefined) {\n    result.additionalProperties = additionalProperties;\n  }\n\n  return result;\n}\n\nfunction decideAdditionalProperties(def: ZodObjectDef, refs: Refs) {\n  if (def.catchall._def.typeName !== 'ZodNever') {\n    return parseDef(def.catchall._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'additionalProperties'],\n    });\n  }\n\n  switch (def.unknownKeys) {\n    case 'passthrough':\n      return refs.allowedAdditionalProperties;\n    case 'strict':\n      return refs.rejectedAdditionalProperties;\n    case 'strip':\n      return refs.removeAdditionalStrategy === 'strict'\n        ? refs.allowedAdditionalProperties\n        : refs.rejectedAdditionalProperties;\n  }\n}\n\nfunction safeIsOptional(schema: ZodTypeAny): boolean {\n  try {\n    return schema.isOptional();\n  } catch {\n    return true;\n  }\n}\n","import { ZodOptionalDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport const parseOptionalDef = (\n  def: ZodOptionalDef,\n  refs: Refs,\n): JsonSchema7Type | undefined => {\n  if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n    return parseDef(def.innerType._def, refs);\n  }\n\n  const innerSchema = parseDef(def.innerType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'anyOf', '1'],\n  });\n\n  return innerSchema\n    ? { anyOf: [{ not: parseAnyDef() }, innerSchema] }\n    : parseAnyDef();\n};\n","import { ZodPipelineDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7AllOfType } from './intersection';\n\nexport const parsePipelineDef = (\n  def: ZodPipelineDef<any, any>,\n  refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n  if (refs.pipeStrategy === 'input') {\n    return parseDef(def.in._def, refs);\n  } else if (refs.pipeStrategy === 'output') {\n    return parseDef(def.out._def, refs);\n  }\n\n  const a = parseDef(def.in._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'allOf', '0'],\n  });\n  const b = parseDef(def.out._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n  });\n\n  return {\n    allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n  };\n};\n","import { ZodPromiseDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parsePromiseDef(\n  def: ZodPromiseDef,\n  refs: Refs,\n): JsonSchema7Type | undefined {\n  return parseDef(def.type._def, refs);\n}\n","import { ZodSetDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7SetType = {\n  type: 'array';\n  uniqueItems: true;\n  items?: JsonSchema7Type;\n  minItems?: number;\n  maxItems?: number;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n  const items = parseDef(def.valueType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'items'],\n  });\n\n  const schema: JsonSchema7SetType = {\n    type: 'array',\n    uniqueItems: true,\n    items,\n  };\n\n  if (def.minSize) {\n    schema.minItems = def.minSize.value;\n  }\n\n  if (def.maxSize) {\n    schema.maxItems = def.maxSize.value;\n  }\n\n  return schema;\n}\n","import { ZodTupleDef, ZodTupleItems, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7TupleType = {\n  type: 'array';\n  minItems: number;\n  items: JsonSchema7Type[];\n} & (\n  | {\n      maxItems: number;\n    }\n  | {\n      additionalItems?: JsonSchema7Type;\n    }\n);\n\nexport function parseTupleDef(\n  def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n  refs: Refs,\n): JsonSchema7TupleType {\n  if (def.rest) {\n    return {\n      type: 'array',\n      minItems: def.items.length,\n      items: def.items\n        .map((x, i) =>\n          parseDef(x._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, 'items', `${i}`],\n          }),\n        )\n        .reduce(\n          (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n          [],\n        ),\n      additionalItems: parseDef(def.rest._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, 'additionalItems'],\n      }),\n    };\n  } else {\n    return {\n      type: 'array',\n      minItems: def.items.length,\n      maxItems: def.items.length,\n      items: def.items\n        .map((x, i) =>\n          parseDef(x._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, 'items', `${i}`],\n          }),\n        )\n        .reduce(\n          (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n          [],\n        ),\n    };\n  }\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UndefinedType = {\n  not: JsonSchema7AnyType;\n};\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n  return {\n    not: parseAnyDef(),\n  };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UnknownType = JsonSchema7AnyType;\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n  return parseAnyDef();\n}\n","import { ZodReadonlyDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n  return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseAnyDef } from './parsers/any';\nimport { parseArrayDef } from './parsers/array';\nimport { parseBigintDef } from './parsers/bigint';\nimport { parseBooleanDef } from './parsers/boolean';\nimport { parseBrandedDef } from './parsers/branded';\nimport { parseCatchDef } from './parsers/catch';\nimport { parseDateDef } from './parsers/date';\nimport { parseDefaultDef } from './parsers/default';\nimport { parseEffectsDef } from './parsers/effects';\nimport { parseEnumDef } from './parsers/enum';\nimport { parseIntersectionDef } from './parsers/intersection';\nimport { parseLiteralDef } from './parsers/literal';\nimport { parseMapDef } from './parsers/map';\nimport { parseNativeEnumDef } from './parsers/native-enum';\nimport { parseNeverDef } from './parsers/never';\nimport { parseNullDef } from './parsers/null';\nimport { parseNullableDef } from './parsers/nullable';\nimport { parseNumberDef } from './parsers/number';\nimport { parseObjectDef } from './parsers/object';\nimport { parseOptionalDef } from './parsers/optional';\nimport { parsePipelineDef } from './parsers/pipeline';\nimport { parsePromiseDef } from './parsers/promise';\nimport { parseRecordDef } from './parsers/record';\nimport { parseSetDef } from './parsers/set';\nimport { parseStringDef } from './parsers/string';\nimport { parseTupleDef } from './parsers/tuple';\nimport { parseUndefinedDef } from './parsers/undefined';\nimport { parseUnionDef } from './parsers/union';\nimport { parseUnknownDef } from './parsers/unknown';\nimport { Refs } from './refs';\nimport { parseReadonlyDef } from './parsers/readonly';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type InnerDefGetter = () => any;\n\nexport const selectParser = (\n  def: any,\n  typeName: ZodFirstPartyTypeKind,\n  refs: Refs,\n): JsonSchema7Type | undefined | InnerDefGetter => {\n  switch (typeName) {\n    case ZodFirstPartyTypeKind.ZodString:\n      return parseStringDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodNumber:\n      return parseNumberDef(def);\n    case ZodFirstPartyTypeKind.ZodObject:\n      return parseObjectDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodBigInt:\n      return parseBigintDef(def);\n    case ZodFirstPartyTypeKind.ZodBoolean:\n      return parseBooleanDef();\n    case ZodFirstPartyTypeKind.ZodDate:\n      return parseDateDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodUndefined:\n      return parseUndefinedDef();\n    case ZodFirstPartyTypeKind.ZodNull:\n      return parseNullDef();\n    case ZodFirstPartyTypeKind.ZodArray:\n      return parseArrayDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodUnion:\n    case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n      return parseUnionDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodIntersection:\n      return parseIntersectionDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodTuple:\n      return parseTupleDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodRecord:\n      return parseRecordDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodLiteral:\n      return parseLiteralDef(def);\n    case ZodFirstPartyTypeKind.ZodEnum:\n      return parseEnumDef(def);\n    case ZodFirstPartyTypeKind.ZodNativeEnum:\n      return parseNativeEnumDef(def);\n    case ZodFirstPartyTypeKind.ZodNullable:\n      return parseNullableDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodOptional:\n      return parseOptionalDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodMap:\n      return parseMapDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodSet:\n      return parseSetDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodLazy:\n      return () => (def as any).getter()._def;\n    case ZodFirstPartyTypeKind.ZodPromise:\n      return parsePromiseDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodNaN:\n    case ZodFirstPartyTypeKind.ZodNever:\n      return parseNeverDef();\n    case ZodFirstPartyTypeKind.ZodEffects:\n      return parseEffectsDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodAny:\n      return parseAnyDef();\n    case ZodFirstPartyTypeKind.ZodUnknown:\n      return parseUnknownDef();\n    case ZodFirstPartyTypeKind.ZodDefault:\n      return parseDefaultDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodBranded:\n      return parseBrandedDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodReadonly:\n      return parseReadonlyDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodCatch:\n      return parseCatchDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodPipeline:\n      return parsePipelineDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodFunction:\n    case ZodFirstPartyTypeKind.ZodVoid:\n    case ZodFirstPartyTypeKind.ZodSymbol:\n      return undefined;\n    default:\n      /* c8 ignore next */\n      return ((_: never) => undefined)(typeName);\n  }\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { ignoreOverride } from './options';\nimport { JsonSchema7Type } from './parse-types';\nimport { selectParser } from './select-parser';\nimport { getRelativePath } from './get-relative-path';\nimport { parseAnyDef } from './parsers/any';\n\nexport function parseDef(\n  def: ZodTypeDef,\n  refs: Refs,\n  forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n  const seenItem = refs.seen.get(def);\n\n  if (refs.override) {\n    const overrideResult = refs.override?.(\n      def,\n      refs,\n      seenItem,\n      forceResolution,\n    );\n\n    if (overrideResult !== ignoreOverride) {\n      return overrideResult;\n    }\n  }\n\n  if (seenItem && !forceResolution) {\n    const seenSchema = get$ref(seenItem, refs);\n\n    if (seenSchema !== undefined) {\n      return seenSchema;\n    }\n  }\n\n  const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined };\n\n  refs.seen.set(def, newItem);\n\n  const jsonSchemaOrGetter = selectParser(def, (def as any).typeName, refs);\n\n  // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n  const jsonSchema =\n    typeof jsonSchemaOrGetter === 'function'\n      ? parseDef(jsonSchemaOrGetter(), refs)\n      : jsonSchemaOrGetter;\n\n  if (jsonSchema) {\n    addMeta(def, refs, jsonSchema);\n  }\n\n  if (refs.postProcess) {\n    const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n\n    newItem.jsonSchema = jsonSchema;\n\n    return postProcessResult;\n  }\n\n  newItem.jsonSchema = jsonSchema;\n\n  return jsonSchema;\n}\n\nconst get$ref = (\n  item: Seen,\n  refs: Refs,\n):\n  | {\n      $ref: string;\n    }\n  | {}\n  | undefined => {\n  switch (refs.$refStrategy) {\n    case 'root':\n      return { $ref: item.path.join('/') };\n    case 'relative':\n      return { $ref: getRelativePath(refs.currentPath, item.path) };\n    case 'none':\n    case 'seen': {\n      if (\n        item.path.length < refs.currentPath.length &&\n        item.path.every((value, index) => refs.currentPath[index] === value)\n      ) {\n        console.warn(\n          `Recursive reference detected at ${refs.currentPath.join(\n            '/',\n          )}! Defaulting to any`,\n        );\n\n        return parseAnyDef();\n      }\n\n      return refs.$refStrategy === 'seen' ? parseAnyDef() : undefined;\n    }\n  }\n};\n\nconst addMeta = (\n  def: ZodTypeDef,\n  refs: Refs,\n  jsonSchema: JsonSchema7Type,\n): JsonSchema7Type => {\n  if (def.description) {\n    jsonSchema.description = def.description;\n  }\n  return jsonSchema;\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { getDefaultOptions, Options } from './options';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type Refs = {\n  seen: Map<ZodTypeDef, Seen>;\n  currentPath: string[];\n  propertyPath: string[] | undefined;\n} & Options;\n\nexport type Seen = {\n  def: ZodTypeDef;\n  path: string[];\n  jsonSchema: JsonSchema7Type | undefined;\n};\n\nexport const getRefs = (options?: string | Partial<Options>): Refs => {\n  const _options = getDefaultOptions(options);\n  const currentPath =\n    _options.name !== undefined\n      ? [..._options.basePath, _options.definitionPath, _options.name]\n      : _options.basePath;\n  return {\n    ..._options,\n    currentPath: currentPath,\n    propertyPath: undefined,\n    seen: new Map(\n      Object.entries(_options.definitions).map(([name, def]) => [\n        def._def,\n        {\n          def: def._def,\n          path: [..._options.basePath, _options.definitionPath, name],\n          // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n          jsonSchema: undefined,\n        },\n      ]),\n    ),\n  };\n};\n","import { ZodSchema } from 'zod/v3';\nimport { Options } from './options';\nimport { parseDef } from './parse-def';\nimport { JsonSchema7Type } from './parse-types';\nimport { getRefs } from './refs';\nimport { parseAnyDef } from './parsers/any';\n\nconst zodToJsonSchema = (\n  schema: ZodSchema<any>,\n  options?: Partial<Options> | string,\n): JsonSchema7Type & {\n  $schema?: string;\n  definitions?: {\n    [key: string]: JsonSchema7Type;\n  };\n} => {\n  const refs = getRefs(options);\n\n  let definitions =\n    typeof options === 'object' && options.definitions\n      ? Object.entries(options.definitions).reduce(\n          (acc: { [key: string]: JsonSchema7Type }, [name, schema]) => ({\n            ...acc,\n            [name]:\n              parseDef(\n                schema._def,\n                {\n                  ...refs,\n                  currentPath: [...refs.basePath, refs.definitionPath, name],\n                },\n                true,\n              ) ?? parseAnyDef(),\n          }),\n          {},\n        )\n      : undefined;\n\n  const name =\n    typeof options === 'string'\n      ? options\n      : options?.nameStrategy === 'title'\n        ? undefined\n        : options?.name;\n\n  const main =\n    parseDef(\n      schema._def,\n      name === undefined\n        ? refs\n        : {\n            ...refs,\n            currentPath: [...refs.basePath, refs.definitionPath, name],\n          },\n      false,\n    ) ?? (parseAnyDef() as JsonSchema7Type);\n\n  const title =\n    typeof options === 'object' &&\n    options.name !== undefined &&\n    options.nameStrategy === 'title'\n      ? options.name\n      : undefined;\n\n  if (title !== undefined) {\n    main.title = title;\n  }\n\n  const combined: ReturnType<typeof zodToJsonSchema> =\n    name === undefined\n      ? definitions\n        ? {\n            ...main,\n            [refs.definitionPath]: definitions,\n          }\n        : main\n      : {\n          $ref: [\n            ...(refs.$refStrategy === 'relative' ? [] : refs.basePath),\n            refs.definitionPath,\n            name,\n          ].join('/'),\n          [refs.definitionPath]: {\n            ...definitions,\n            [name]: main,\n          },\n        };\n\n  combined.$schema = 'http://json-schema.org/draft-07/schema#';\n\n  return combined;\n};\n\nexport { zodToJsonSchema };\n","export * from './get-relative-path';\nexport * from './options';\nexport * from './parse-def';\nexport * from './parse-types';\nexport * from './parsers/any';\nexport * from './parsers/array';\nexport * from './parsers/bigint';\nexport * from './parsers/boolean';\nexport * from './parsers/branded';\nexport * from './parsers/catch';\nexport * from './parsers/date';\nexport * from './parsers/default';\nexport * from './parsers/effects';\nexport * from './parsers/enum';\nexport * from './parsers/intersection';\nexport * from './parsers/literal';\nexport * from './parsers/map';\nexport * from './parsers/native-enum';\nexport * from './parsers/never';\nexport * from './parsers/null';\nexport * from './parsers/nullable';\nexport * from './parsers/number';\nexport * from './parsers/object';\nexport * from './parsers/optional';\nexport * from './parsers/pipeline';\nexport * from './parsers/promise';\nexport * from './parsers/readonly';\nexport * from './parsers/record';\nexport * from './parsers/set';\nexport * from './parsers/string';\nexport * from './parsers/tuple';\nexport * from './parsers/undefined';\nexport * from './parsers/union';\nexport * from './parsers/unknown';\nexport * from './refs';\nexport * from './select-parser';\nexport * from './zod-to-json-schema';\nimport { zodToJsonSchema } from './zod-to-json-schema';\nexport default zodToJsonSchema;\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { addAdditionalPropertiesToJsonSchema } from './add-additional-properties-to-json-schema';\nimport { jsonSchema, Schema } from './schema';\nimport zodToJsonSchema from './zod-to-json-schema';\n\nexport function zod3Schema<OBJECT>(\n  zodSchema: z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n  options?: {\n    /**\n     * Enables support for references in the schema.\n     * This is required for recursive schemas, e.g. with `z.lazy`.\n     * However, not all language models and providers support such references.\n     * Defaults to `false`.\n     */\n    useReferences?: boolean;\n  },\n): Schema<OBJECT> {\n  // default to no references (to support openapi conversion for google)\n  const useReferences = options?.useReferences ?? false;\n\n  return jsonSchema(\n    // defer json schema creation to avoid unnecessary computation when only validation is needed\n    () =>\n      zodToJsonSchema(zodSchema, {\n        $refStrategy: useReferences ? 'root' : 'none',\n      }) as JSONSchema7,\n    {\n      validate: async value => {\n        const result = await zodSchema.safeParseAsync(value);\n        return result.success\n          ? { success: true, value: result.data }\n          : { success: false, error: result.error };\n      },\n    },\n  );\n}\n\nexport function zod4Schema<OBJECT>(\n  zodSchema: z4.core.$ZodType<OBJECT, any>,\n  options?: {\n    /**\n     * Enables support for references in the schema.\n     * This is required for recursive schemas, e.g. with `z.lazy`.\n     * However, not all language models and providers support such references.\n     * Defaults to `false`.\n     */\n    useReferences?: boolean;\n  },\n): Schema<OBJECT> {\n  // default to no references (to support openapi conversion for google)\n  const useReferences = options?.useReferences ?? false;\n\n  return jsonSchema(\n    // defer json schema creation to avoid unnecessary computation when only validation is needed\n    () =>\n      addAdditionalPropertiesToJsonSchema(\n        z4.toJSONSchema(zodSchema, {\n          target: 'draft-7',\n          io: 'input',\n          reused: useReferences ? 'ref' : 'inline',\n        }) as JSONSchema7,\n      ),\n    {\n      validate: async value => {\n        const result = await z4.safeParseAsync(zodSchema, value);\n        return result.success\n          ? { success: true, value: result.data }\n          : { success: false, error: result.error };\n      },\n    },\n  );\n}\n\nexport function isZod4Schema(\n  zodSchema: z4.core.$ZodType<any, any> | z3.Schema<any, z3.ZodTypeDef, any>,\n): zodSchema is z4.core.$ZodType<any, any> {\n  // https://zod.dev/library-authors?id=how-to-support-zod-3-and-zod-4-simultaneously\n  return '_zod' in zodSchema;\n}\n\nexport function zodSchema<OBJECT>(\n  zodSchema:\n    | z4.core.$ZodType<OBJECT, any>\n    | z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n  options?: {\n    /**\n     * Enables support for references in the schema.\n     * This is required for recursive schemas, e.g. with `z.lazy`.\n     * However, not all language models and providers support such references.\n     * Defaults to `false`.\n     */\n    useReferences?: boolean;\n  },\n): Schema<OBJECT> {\n  if (isZod4Schema(zodSchema)) {\n    return zod4Schema(zodSchema, options);\n  } else {\n    return zod3Schema(zodSchema, options);\n  }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { Validator, validatorSymbol, type ValidationResult } from './validator';\nimport { zodSchema } from './zod-schema';\n\n/**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\nconst schemaSymbol = Symbol.for('vercel.ai.schema');\n\nexport type Schema<OBJECT = unknown> = Validator<OBJECT> & {\n  /**\n   * Used to mark schemas so we can support both Zod and custom schemas.\n   */\n  [schemaSymbol]: true;\n\n  /**\n   * Schema type for inference.\n   */\n  _type: OBJECT;\n\n  /**\n   * The JSON Schema for the schema. It is passed to the providers.\n   */\n  readonly jsonSchema: JSONSchema7;\n};\n\n/**\n * Creates a schema with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a schema.\n * @returns A function that returns a schema.\n */\nexport function lazySchema<SCHEMA>(\n  createSchema: () => Schema<SCHEMA>,\n): LazySchema<SCHEMA> {\n  // cache the validator to avoid initializing it multiple times\n  let schema: Schema<SCHEMA> | undefined;\n  return () => {\n    if (schema == null) {\n      schema = createSchema();\n    }\n    return schema;\n  };\n}\n\nexport type LazySchema<SCHEMA> = () => Schema<SCHEMA>;\n\n// Note: Zod types here exactly match the types in zod-schema.ts\n// to prevent type errors when using zod schemas with flexible schemas.\nexport type FlexibleSchema<SCHEMA> =\n  | z4.core.$ZodType<SCHEMA, any>\n  | z3.Schema<SCHEMA, z3.ZodTypeDef, any>\n  | Schema<SCHEMA>\n  | LazySchema<SCHEMA>;\n\nexport type InferSchema<SCHEMA> = SCHEMA extends z3.Schema\n  ? z3.infer<SCHEMA>\n  : SCHEMA extends z4.core.$ZodType\n    ? z4.infer<SCHEMA>\n    : SCHEMA extends LazySchema<infer T>\n      ? T\n      : SCHEMA extends Schema<infer T>\n        ? T\n        : never;\n\n/**\n * Create a schema using a JSON Schema.\n *\n * @param jsonSchema The JSON Schema for the schema.\n * @param options.validate Optional. A validation function for the schema.\n */\nexport function jsonSchema<OBJECT = unknown>(\n  jsonSchema: JSONSchema7 | (() => JSONSchema7),\n  {\n    validate,\n  }: {\n    validate?: (\n      value: unknown,\n    ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n  } = {},\n): Schema<OBJECT> {\n  return {\n    [schemaSymbol]: true,\n    _type: undefined as OBJECT, // should never be used directly\n    [validatorSymbol]: true,\n    get jsonSchema() {\n      if (typeof jsonSchema === 'function') {\n        jsonSchema = jsonSchema(); // cache the function results\n      }\n      return jsonSchema;\n    },\n    validate,\n  };\n}\n\nfunction isSchema(value: unknown): value is Schema {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    schemaSymbol in value &&\n    value[schemaSymbol] === true &&\n    'jsonSchema' in value &&\n    'validate' in value\n  );\n}\n\nexport function asSchema<OBJECT>(\n  schema: FlexibleSchema<OBJECT> | undefined,\n): Schema<OBJECT> {\n  return schema == null\n    ? jsonSchema({\n        properties: {},\n        additionalProperties: false,\n      })\n    : isSchema(schema)\n      ? schema\n      : typeof schema === 'function'\n        ? schema()\n        : zodSchema(schema);\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","import { DownloadError } from './download-error';\n\n/**\n * Validates that a URL is safe to download from, blocking private/internal addresses\n * to prevent SSRF attacks.\n *\n * @param url - The URL string to validate.\n * @throws DownloadError if the URL is unsafe.\n */\nexport function validateDownloadUrl(url: string): void {\n  let parsed: URL;\n  try {\n    parsed = new URL(url);\n  } catch {\n    throw new DownloadError({\n      url,\n      message: `Invalid URL: ${url}`,\n    });\n  }\n\n  // data: URLs are inline content, so they do not trigger a network fetch or SSRF risk.\n  if (parsed.protocol === 'data:') {\n    return;\n  }\n\n  // Only allow http and https network protocols\n  if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n    throw new DownloadError({\n      url,\n      message: `URL scheme must be http, https, or data, got ${parsed.protocol}`,\n    });\n  }\n\n  const hostname = parsed.hostname;\n\n  // Block empty hostname\n  if (!hostname) {\n    throw new DownloadError({\n      url,\n      message: `URL must have a hostname`,\n    });\n  }\n\n  // Block localhost and .local domains\n  if (\n    hostname === 'localhost' ||\n    hostname.endsWith('.local') ||\n    hostname.endsWith('.localhost')\n  ) {\n    throw new DownloadError({\n      url,\n      message: `URL with hostname ${hostname} is not allowed`,\n    });\n  }\n\n  // Check for IPv6 addresses (enclosed in brackets in URLs)\n  if (hostname.startsWith('[') && hostname.endsWith(']')) {\n    const ipv6 = hostname.slice(1, -1);\n    if (isPrivateIPv6(ipv6)) {\n      throw new DownloadError({\n        url,\n        message: `URL with IPv6 address ${hostname} is not allowed`,\n      });\n    }\n    return;\n  }\n\n  // Check for IPv4 addresses\n  if (isIPv4(hostname)) {\n    if (isPrivateIPv4(hostname)) {\n      throw new DownloadError({\n        url,\n        message: `URL with IP address ${hostname} is not allowed`,\n      });\n    }\n    return;\n  }\n}\n\nfunction isIPv4(hostname: string): boolean {\n  const parts = hostname.split('.');\n  if (parts.length !== 4) return false;\n  return parts.every(part => {\n    const num = Number(part);\n    return (\n      Number.isInteger(num) && num >= 0 && num <= 255 && String(num) === part\n    );\n  });\n}\n\nfunction isPrivateIPv4(ip: string): boolean {\n  const parts = ip.split('.').map(Number);\n  const [a, b] = parts;\n\n  // 0.0.0.0/8\n  if (a === 0) return true;\n  // 10.0.0.0/8\n  if (a === 10) return true;\n  // 127.0.0.0/8\n  if (a === 127) return true;\n  // 169.254.0.0/16\n  if (a === 169 && b === 254) return true;\n  // 172.16.0.0/12\n  if (a === 172 && b >= 16 && b <= 31) return true;\n  // 192.168.0.0/16\n  if (a === 192 && b === 168) return true;\n\n  return false;\n}\n\nfunction isPrivateIPv6(ip: string): boolean {\n  const normalized = ip.toLowerCase();\n\n  // ::1 (loopback)\n  if (normalized === '::1') return true;\n  // :: (unspecified)\n  if (normalized === '::') return true;\n\n  // Check for IPv4-mapped addresses (::ffff:x.x.x.x or ::ffff:HHHH:HHHH)\n  if (normalized.startsWith('::ffff:')) {\n    const mappedPart = normalized.slice(7);\n    // Dotted-decimal form: ::ffff:127.0.0.1\n    if (isIPv4(mappedPart)) {\n      return isPrivateIPv4(mappedPart);\n    }\n    // Hex form: ::ffff:7f00:1 (URL parser normalizes to this)\n    const hexParts = mappedPart.split(':');\n    if (hexParts.length === 2) {\n      const high = parseInt(hexParts[0], 16);\n      const low = parseInt(hexParts[1], 16);\n      if (!isNaN(high) && !isNaN(low)) {\n        const a = (high >> 8) & 0xff;\n        const b = high & 0xff;\n        const c = (low >> 8) & 0xff;\n        const d = low & 0xff;\n        return isPrivateIPv4(`${a}.${b}.${c}.${d}`);\n      }\n    }\n  }\n\n  // fc00::/7 (unique local addresses - fc00:: and fd00::)\n  if (normalized.startsWith('fc') || normalized.startsWith('fd')) return true;\n\n  // fe80::/10 (link-local)\n  if (normalized.startsWith('fe80')) return true;\n\n  return false;\n}\n","export function withoutTrailingSlash(url: string | undefined) {\n  return url?.replace(/\\/$/, '');\n}\n","export function isAsyncIterable<T = any>(obj: any): obj is AsyncIterable<T> {\n  return obj != null && typeof obj[Symbol.asyncIterator] === 'function';\n}\n","import { Tool, ToolCallOptions, ToolExecuteFunction } from './tool';\nimport { isAsyncIterable } from '../is-async-iterable';\n\nexport async function* executeTool<INPUT, OUTPUT>({\n  execute,\n  input,\n  options,\n}: {\n  execute: ToolExecuteFunction<INPUT, OUTPUT>;\n  input: INPUT;\n  options: ToolCallOptions;\n}): AsyncGenerator<\n  { type: 'preliminary'; output: OUTPUT } | { type: 'final'; output: OUTPUT }\n> {\n  const result = execute(input, options);\n\n  if (isAsyncIterable(result)) {\n    let lastOutput: OUTPUT | undefined;\n    for await (const output of result) {\n      lastOutput = output;\n      yield { type: 'preliminary', output };\n    }\n    yield { type: 'final', output: lastOutput! };\n  } else {\n    yield { type: 'final', output: await result };\n  }\n}\n","import {\n  LanguageModelV2Prompt,\n  SharedV2ProviderMetadata,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAICompatibleChatPrompt } from './openai-compatible-api-types';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nfunction getOpenAIMetadata(message: {\n  providerOptions?: SharedV2ProviderMetadata;\n}) {\n  return message?.providerOptions?.openaiCompatible ?? {};\n}\n\nexport function convertToOpenAICompatibleChatMessages(\n  prompt: LanguageModelV2Prompt,\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 '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                    ...partMetadata,\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n          ...metadata,\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        let text = '';\n        let reasoning = '';\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 'reasoning': {\n              reasoning += 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                ...partMetadata,\n              });\n              break;\n            }\n          }\n        }\n\n        messages.push({\n          role: 'assistant',\n          content: text,\n          ...(reasoning.length > 0 ? { reasoning_content: reasoning } : {}),\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 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          const toolResponseMetadata = getOpenAIMetadata(toolResponse);\n          messages.push({\n            role: 'tool',\n            tool_call_id: toolResponse.toolCallId,\n            content: contentValue,\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 { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAICompatibleFinishReason(\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\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  /**\n   * Controls the verbosity of the generated text. Defaults to `medium`.\n   */\n  textVerbosity: 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  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 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.inputSchema,\n        },\n      });\n    }\n  }\n\n  if (toolChoice == null) {\n    return { tools: openaiCompatTools, 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: openaiCompatTools, toolChoice: type, toolWarnings };\n    case 'tool':\n      return {\n        tools: openaiCompatTools,\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  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  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        ...Object.fromEntries(\n          Object.entries(\n            providerOptions?.[this.providerOptionsName] ?? {},\n          ).filter(\n            ([key]) =>\n              !Object.keys(openaiCompatibleProviderOptions.shape).includes(key),\n          ),\n        ),\n\n        reasoning_effort: compatibleOptions.reasoningEffort,\n        verbosity: compatibleOptions.textVerbosity,\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 =\n      choice.message.reasoning_content ?? 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    // 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            const reasoningContent = delta.reasoning_content ?? delta.reasoning;\n            if (reasoningContent) {\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: reasoningContent,\n              });\n            }\n\n            if (delta.content) {\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-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            // 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        reasoning: 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              // Most openai-compatible models set `reasoning_content`, but some\n              // providers serving `gpt-oss` set `reasoning`. See #7866\n              reasoning_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                    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  InvalidPromptError,\n  LanguageModelV2Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompatibleCompletionPrompt({\n  prompt,\n  user = 'user',\n  assistant = 'assistant',\n}: {\n  prompt: LanguageModelV2Prompt;\n  user?: string;\n  assistant?: string;\n}): {\n  prompt: string;\n  stopSequences?: string[];\n} {\n  // transform to a chat message format:\n  let text = '';\n\n  // if first message is a system message, add it to the text:\n  if (prompt[0].role === 'system') {\n    text += `${prompt[0].content}\\n\\n`;\n    prompt = prompt.slice(1);\n  }\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        throw new InvalidPromptError({\n          message: 'Unexpected system message in prompt: ${content}',\n          prompt,\n        });\n      }\n\n      case 'user': {\n        const userMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n            }\n          })\n          .filter(Boolean)\n          .join('');\n\n        text += `${user}:\\n${userMessage}\\n\\n`;\n        break;\n      }\n\n      case 'assistant': {\n        const assistantMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n              case 'tool-call': {\n                throw new UnsupportedFunctionalityError({\n                  functionality: 'tool-call messages',\n                });\n              }\n            }\n          })\n          .join('');\n\n        text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n        break;\n      }\n\n      case 'tool': {\n        throw new UnsupportedFunctionalityError({\n          functionality: 'tool messages',\n        });\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // Assistant message prefix:\n  text += `${assistant}:\\n`;\n\n  return {\n    prompt: text,\n    stopSequences: [`\\n${user}:`],\n  };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created != null ? new Date(created * 1000) : undefined,\n  };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAICompatibleFinishReason(\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\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 {\n  defaultOpenAICompatibleErrorStructure,\n  ProviderErrorStructure,\n} from '../openai-compatible-error';\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';\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 implements LanguageModelV2 {\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 implements EmbeddingModelV2<string> {\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      providerMetadata: response.providerMetadata,\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  providerMetadata: z\n    .record(z.string(), z.record(z.string(), z.any()))\n    .optional(),\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  /**\n   * The provider options key used to extract provider-specific options.\n   */\n  private get providerOptionsKey(): string {\n    return this.config.provider.split('.')[0].trim();\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[this.providerOptionsKey],\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","declare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import {\n  EmbeddingModelV2,\n  ImageModelV2,\n  LanguageModelV2,\n  ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  withoutTrailingSlash,\n  withUserAgentSuffix,\n  getRuntimeEnvironmentUserAgent,\n} from '@ai-sdk/provider-utils';\nimport {\n  OpenAICompatibleChatConfig,\n  OpenAICompatibleChatLanguageModel,\n} from './chat/openai-compatible-chat-language-model';\nimport { OpenAICompatibleCompletionLanguageModel } from './completion/openai-compatible-completion-language-model';\nimport { OpenAICompatibleEmbeddingModel } from './embedding/openai-compatible-embedding-model';\nimport { OpenAICompatibleImageModel } from './image/openai-compatible-image-model';\nimport { VERSION } from './version';\n\nexport interface OpenAICompatibleProvider<\n  CHAT_MODEL_IDS extends string = string,\n  COMPLETION_MODEL_IDS extends string = string,\n  EMBEDDING_MODEL_IDS extends string = string,\n  IMAGE_MODEL_IDS extends string = string,\n> extends Omit<ProviderV2, 'imageModel'> {\n  (modelId: CHAT_MODEL_IDS): LanguageModelV2;\n\n  languageModel(\n    modelId: CHAT_MODEL_IDS,\n    config?: Partial<OpenAICompatibleChatConfig>,\n  ): LanguageModelV2;\n\n  chatModel(modelId: CHAT_MODEL_IDS): LanguageModelV2;\n\n  completionModel(modelId: COMPLETION_MODEL_IDS): LanguageModelV2;\n\n  textEmbeddingModel(modelId: EMBEDDING_MODEL_IDS): EmbeddingModelV2<string>;\n\n  imageModel(modelId: IMAGE_MODEL_IDS): ImageModelV2;\n}\n\nexport interface OpenAICompatibleProviderSettings {\n  /**\nBase URL for the API calls.\n   */\n  baseURL: string;\n\n  /**\nProvider name.\n   */\n  name: string;\n\n  /**\nAPI key for authenticating requests. If specified, adds an `Authorization`\nheader to request headers with the value `Bearer <apiKey>`. This will be added\nbefore any headers potentially specified in the `headers` option.\n   */\n  apiKey?: string;\n\n  /**\nOptional custom headers to include in requests. These will be added to request headers\nafter any headers potentially added by use of the `apiKey` option.\n   */\n  headers?: Record<string, string>;\n\n  /**\nOptional custom url query parameters to include in request urls.\n   */\n  queryParams?: 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  /**\nInclude usage information in streaming responses.\n   */\n  includeUsage?: boolean;\n\n  /**\n   * Whether the provider supports structured outputs in chat models.\n   */\n  supportsStructuredOutputs?: boolean;\n}\n\n/**\nCreate an OpenAICompatible provider instance.\n */\nexport function createOpenAICompatible<\n  CHAT_MODEL_IDS extends string,\n  COMPLETION_MODEL_IDS extends string,\n  EMBEDDING_MODEL_IDS extends string,\n  IMAGE_MODEL_IDS extends string,\n>(\n  options: OpenAICompatibleProviderSettings,\n): OpenAICompatibleProvider<\n  CHAT_MODEL_IDS,\n  COMPLETION_MODEL_IDS,\n  EMBEDDING_MODEL_IDS,\n  IMAGE_MODEL_IDS\n> {\n  const baseURL = withoutTrailingSlash(options.baseURL);\n  const providerName = options.name;\n\n  interface CommonModelConfig {\n    provider: string;\n    url: ({ path }: { path: string }) => string;\n    headers: () => Record<string, string>;\n    fetch?: FetchFunction;\n  }\n\n  const headers = {\n    ...(options.apiKey && { Authorization: `Bearer ${options.apiKey}` }),\n    ...options.headers,\n  };\n\n  const getHeaders = () =>\n    withUserAgentSuffix(headers, `ai-sdk/openai-compatible/${VERSION}`);\n\n  const getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n    provider: `${providerName}.${modelType}`,\n    url: ({ path }) => {\n      const url = new URL(`${baseURL}${path}`);\n      if (options.queryParams) {\n        url.search = new URLSearchParams(options.queryParams).toString();\n      }\n      return url.toString();\n    },\n    headers: getHeaders,\n    fetch: options.fetch,\n  });\n\n  const createLanguageModel = (modelId: CHAT_MODEL_IDS) =>\n    createChatModel(modelId);\n\n  const createChatModel = (modelId: CHAT_MODEL_IDS) =>\n    new OpenAICompatibleChatLanguageModel(modelId, {\n      ...getCommonModelConfig('chat'),\n      includeUsage: options.includeUsage,\n      supportsStructuredOutputs: options.supportsStructuredOutputs,\n    });\n\n  const createCompletionModel = (modelId: COMPLETION_MODEL_IDS) =>\n    new OpenAICompatibleCompletionLanguageModel(modelId, {\n      ...getCommonModelConfig('completion'),\n      includeUsage: options.includeUsage,\n    });\n\n  const createEmbeddingModel = (modelId: EMBEDDING_MODEL_IDS) =>\n    new OpenAICompatibleEmbeddingModel(modelId, {\n      ...getCommonModelConfig('embedding'),\n    });\n\n  const createImageModel = (modelId: IMAGE_MODEL_IDS) =>\n    new OpenAICompatibleImageModel(modelId, getCommonModelConfig('image'));\n\n  const provider = (modelId: CHAT_MODEL_IDS) => createLanguageModel(modelId);\n\n  provider.languageModel = createLanguageModel;\n  provider.chatModel = createChatModel;\n  provider.completionModel = createCompletionModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.imageModel = createImageModel;\n\n  return provider as OpenAICompatibleProvider<\n    CHAT_MODEL_IDS,\n    COMPLETION_MODEL_IDS,\n    EMBEDDING_MODEL_IDS,\n    IMAGE_MODEL_IDS\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\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    | 'embeddingModel'\n    | 'imageModel'\n    | 'transcriptionModel'\n    | 'speechModel'\n    | 'rerankingModel'\n    | 'videoModel';\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      | 'embeddingModel'\n      | 'imageModel'\n      | 'transcriptionModel'\n      | 'speechModel'\n      | 'rerankingModel'\n      | 'videoModel';\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 interface TypeValidationContext {\n  /**\n   * Field path in dot notation (e.g., \"message.metadata\", \"message.parts[3].data\")\n   */\n  field?: string;\n\n  /**\n   * Entity name (e.g., tool name, data type name)\n   */\n  entityName?: string;\n\n  /**\n   * Entity identifier (e.g., message ID, tool call ID)\n   */\n  entityId?: string;\n}\n\nexport class TypeValidationError extends AISDKError {\n  private readonly [symbol] = true; // used in isInstance\n\n  readonly value: unknown;\n  readonly context?: TypeValidationContext;\n\n  constructor({\n    value,\n    cause,\n    context,\n  }: {\n    value: unknown;\n    cause: unknown;\n    context?: TypeValidationContext;\n  }) {\n    let contextPrefix = 'Type validation failed';\n\n    if (context?.field) {\n      contextPrefix += ` for ${context.field}`;\n    }\n\n    if (context?.entityName || context?.entityId) {\n      contextPrefix += ' (';\n      const parts: string[] = [];\n      if (context.entityName) {\n        parts.push(context.entityName);\n      }\n      if (context.entityId) {\n        parts.push(`id: \"${context.entityId}\"`);\n      }\n      contextPrefix += parts.join(', ');\n      contextPrefix += ')';\n    }\n\n    super({\n      name,\n      message:\n        `${contextPrefix}: ` +\n        `Value: ${JSON.stringify(value)}.\\n` +\n        `Error message: ${getErrorMessage(cause)}`,\n      cause,\n    });\n\n    this.value = value;\n    this.context = context;\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 and context, 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   * @param {TypeValidationContext} params.context - Optional context about what is being validated.\n   * @returns {TypeValidationError} A TypeValidationError instance.\n   */\n  static wrap({\n    value,\n    cause,\n    context,\n  }: {\n    value: unknown;\n    cause: unknown;\n    context?: TypeValidationContext;\n  }): TypeValidationError {\n    if (\n      TypeValidationError.isInstance(cause) &&\n      cause.value === value &&\n      cause.context?.field === context?.field &&\n      cause.context?.entityName === context?.entityName &&\n      cause.context?.entityId === context?.entityId\n    ) {\n      return cause;\n    }\n\n    return new TypeValidationError({ value, cause, context });\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","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","import {\n  LanguageModelV3FunctionTool,\n  LanguageModelV3ProviderTool,\n} from '@ai-sdk/provider';\n\n/**\n * Interface for mapping between custom tool names and provider tool names.\n */\nexport interface ToolNameMapping {\n  /**\n   * Maps a custom tool name (used by the client) to the provider's tool name.\n   * If the custom tool name does not have a mapping, returns the input name.\n   *\n   * @param customToolName - The custom name of the tool defined by the client.\n   * @returns The corresponding provider tool name, or the input name if not mapped.\n   */\n  toProviderToolName: (customToolName: string) => string;\n\n  /**\n   * Maps a provider tool name to the custom tool name used by the client.\n   * If the provider tool name does not have a mapping, returns the input name.\n   *\n   * @param providerToolName - The name of the tool as understood by the provider.\n   * @returns The corresponding custom tool name, or the input name if not mapped.\n   */\n  toCustomToolName: (providerToolName: string) => string;\n}\n\n/**\n * @param tools - Tools that were passed to the language model.\n * @param providerToolNames - Maps the provider tool ids to the provider tool names.\n */\nexport function createToolNameMapping({\n  tools = [],\n  providerToolNames,\n  resolveProviderToolName,\n}: {\n  /**\n   * Tools that were passed to the language model.\n   */\n  tools:\n    | Array<LanguageModelV3FunctionTool | LanguageModelV3ProviderTool>\n    | undefined;\n\n  /**\n   * Maps the provider tool ids to the provider tool names.\n   */\n  providerToolNames: Record<`${string}.${string}`, string>;\n\n  /**\n   * Optional resolver for provider tool names that cannot be represented as\n   * static id -> name mappings (e.g. dynamic provider names).\n   */\n  resolveProviderToolName?: (\n    tool: LanguageModelV3ProviderTool,\n  ) => string | undefined;\n}): ToolNameMapping {\n  const customToolNameToProviderToolName: Record<string, string> = {};\n  const providerToolNameToCustomToolName: Record<string, string> = {};\n\n  for (const tool of tools) {\n    if (tool.type === 'provider') {\n      const providerToolName =\n        resolveProviderToolName?.(tool) ??\n        (tool.id in providerToolNames ? providerToolNames[tool.id] : undefined);\n\n      if (providerToolName == null) {\n        continue;\n      }\n\n      customToolNameToProviderToolName[tool.name] = providerToolName;\n      providerToolNameToCustomToolName[providerToolName] = tool.name;\n    }\n  }\n\n  return {\n    toProviderToolName: (customToolName: string) =>\n      customToolNameToProviderToolName[customToolName] ?? customToolName,\n    toCustomToolName: (providerToolName: string) =>\n      providerToolNameToCustomToolName[providerToolName] ?? providerToolName,\n  };\n}\n","/**\n * Creates a Promise that resolves after a specified delay\n * @param delayInMs - The delay duration in milliseconds. If null or undefined, resolves immediately.\n * @param signal - Optional AbortSignal to cancel the delay\n * @returns A Promise that resolves after the specified delay\n * @throws {DOMException} When the signal is aborted\n */\nexport async function delay(\n  delayInMs?: number | null,\n  options?: {\n    abortSignal?: AbortSignal;\n  },\n): Promise<void> {\n  if (delayInMs == null) {\n    return Promise.resolve();\n  }\n\n  const signal = options?.abortSignal;\n\n  return new Promise<void>((resolve, reject) => {\n    if (signal?.aborted) {\n      reject(createAbortError());\n      return;\n    }\n\n    const timeoutId = setTimeout(() => {\n      cleanup();\n      resolve();\n    }, delayInMs);\n\n    const cleanup = () => {\n      clearTimeout(timeoutId);\n      signal?.removeEventListener('abort', onAbort);\n    };\n\n    const onAbort = () => {\n      cleanup();\n      reject(createAbortError());\n    };\n\n    signal?.addEventListener('abort', onAbort);\n  });\n}\n\nfunction createAbortError(): DOMException {\n  return new DOMException('Delay was aborted', 'AbortError');\n}\n","/**\n * Extracts 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","// 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","import { ImageModelV3File } from '@ai-sdk/provider';\nimport { convertUint8ArrayToBase64 } from './uint8-utils';\n\n/**\n * Convert an ImageModelV3File to a URL or data URI string.\n *\n * If the file is a URL, it returns the URL as-is.\n * If the file is base64 data, it returns a data URI with the base64 data.\n * If the file is a Uint8Array, it converts it to base64 and returns a data URI.\n */\nexport function convertImageModelFileToDataUri(file: ImageModelV3File): string {\n  if (file.type === 'url') return file.url;\n\n  return `data:${file.mediaType};base64,${\n    typeof file.data === 'string'\n      ? file.data\n      : convertUint8ArrayToBase64(file.data)\n  }`;\n}\n","/**\n * Converts an input object to FormData for multipart/form-data requests.\n *\n * Handles the following cases:\n * - `null` or `undefined` values are skipped\n * - Arrays with a single element are appended as a single value\n * - Arrays with multiple elements are appended with `[]` suffix (e.g., `image[]`)\n *   unless `useArrayBrackets` is set to `false`\n * - All other values are appended directly\n *\n * @param input - The input object to convert. Use a generic type for type validation.\n * @param options - Optional configuration object.\n * @param options.useArrayBrackets - Whether to add `[]` suffix for multi-element arrays.\n *   Defaults to `true`. Set to `false` for APIs that expect repeated keys without brackets.\n * @returns A FormData object containing the input values.\n *\n * @example\n * ```ts\n * type MyInput = {\n *   model: string;\n *   prompt: string;\n *   images: Blob[];\n * };\n *\n * const formData = convertToFormData<MyInput>({\n *   model: 'gpt-image-1',\n *   prompt: 'A cat',\n *   images: [blob1, blob2],\n * });\n * ```\n */\nexport function convertToFormData<T extends Record<string, unknown>>(\n  input: T,\n  options: { useArrayBrackets?: boolean } = {},\n): FormData {\n  const { useArrayBrackets = true } = options;\n  const formData = new FormData();\n\n  for (const [key, value] of Object.entries(input)) {\n    if (value == null) {\n      continue;\n    }\n\n    if (Array.isArray(value)) {\n      if (value.length === 1) {\n        formData.append(key, value[0] as string | Blob);\n        continue;\n      }\n\n      const arrayKey = useArrayBrackets ? `${key}[]` : key;\n      for (const item of value) {\n        formData.append(arrayKey, item as string | Blob);\n      }\n      continue;\n    }\n\n    formData.append(key, value as string | Blob);\n  }\n\n  return formData;\n}\n","import { AISDKError } from '@ai-sdk/provider';\n\nconst name = 'AI_DownloadError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class DownloadError extends AISDKError {\n  private readonly [symbol] = true; // used in isInstance\n\n  readonly url: string;\n  readonly statusCode?: number;\n  readonly statusText?: string;\n\n  constructor({\n    url,\n    statusCode,\n    statusText,\n    cause,\n    message = cause == null\n      ? `Failed to download ${url}: ${statusCode} ${statusText}`\n      : `Failed to download ${url}: ${cause}`,\n  }: {\n    url: string;\n    statusCode?: number;\n    statusText?: string;\n    message?: string;\n    cause?: unknown;\n  }) {\n    super({ name, message, cause });\n\n    this.url = url;\n    this.statusCode = statusCode;\n    this.statusText = statusText;\n  }\n\n  static isInstance(error: unknown): error is DownloadError {\n    return AISDKError.hasMarker(error, marker);\n  }\n}\n","import { DownloadError } from './download-error';\n\n/**\n * Default maximum download size: 2 GiB.\n *\n * `fetch().arrayBuffer()` has ~2x peak memory overhead (undici buffers the\n * body internally, then creates the JS ArrayBuffer), so very large downloads\n * risk exceeding the default V8 heap limit on 64-bit systems and terminating\n * the process with an out-of-memory error.\n *\n * Setting this limit converts an unrecoverable OOM crash into a catchable\n * `DownloadError`.\n */\nexport const DEFAULT_MAX_DOWNLOAD_SIZE = 2 * 1024 * 1024 * 1024;\n\n/**\n * Reads a fetch Response body with a size limit to prevent memory exhaustion.\n *\n * Checks the Content-Length header for early rejection, then reads the body\n * incrementally via ReadableStream and aborts with a DownloadError when the\n * limit is exceeded.\n *\n * @param response - The fetch Response to read.\n * @param url - The URL being downloaded (used in error messages).\n * @param maxBytes - Maximum allowed bytes. Defaults to DEFAULT_MAX_DOWNLOAD_SIZE.\n * @returns A Uint8Array containing the response body.\n * @throws DownloadError if the response exceeds maxBytes.\n */\nexport async function readResponseWithSizeLimit({\n  response,\n  url,\n  maxBytes = DEFAULT_MAX_DOWNLOAD_SIZE,\n}: {\n  response: Response;\n  url: string;\n  maxBytes?: number;\n}): Promise<Uint8Array> {\n  // Early rejection based on Content-Length header\n  const contentLength = response.headers.get('content-length');\n  if (contentLength != null) {\n    const length = parseInt(contentLength, 10);\n    if (!isNaN(length) && length > maxBytes) {\n      throw new DownloadError({\n        url,\n        message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes (Content-Length: ${length}).`,\n      });\n    }\n  }\n\n  const body = response.body;\n\n  // Handle missing body (empty responses)\n  if (body == null) {\n    return new Uint8Array(0);\n  }\n\n  const reader = body.getReader();\n  const chunks: Uint8Array[] = [];\n  let totalBytes = 0;\n\n  try {\n    while (true) {\n      const { done, value } = await reader.read();\n\n      if (done) {\n        break;\n      }\n\n      totalBytes += value.length;\n\n      if (totalBytes > maxBytes) {\n        throw new DownloadError({\n          url,\n          message: `Download of ${url} exceeded maximum size of ${maxBytes} bytes.`,\n        });\n      }\n\n      chunks.push(value);\n    }\n  } finally {\n    try {\n      await reader.cancel();\n    } finally {\n      reader.releaseLock();\n    }\n  }\n\n  // Concatenate chunks into a single Uint8Array\n  const result = new Uint8Array(totalBytes);\n  let offset = 0;\n  for (const chunk of chunks) {\n    result.set(chunk, offset);\n    offset += chunk.length;\n  }\n\n  return result;\n}\n","import { DownloadError } from './download-error';\n\n/**\n * Validates that a URL is safe to download from, blocking private/internal addresses\n * to prevent SSRF attacks.\n *\n * @param url - The URL string to validate.\n * @throws DownloadError if the URL is unsafe.\n */\nexport function validateDownloadUrl(url: string): void {\n  let parsed: URL;\n  try {\n    parsed = new URL(url);\n  } catch {\n    throw new DownloadError({\n      url,\n      message: `Invalid URL: ${url}`,\n    });\n  }\n\n  // data: URLs are inline content, so they do not trigger a network fetch or SSRF risk.\n  if (parsed.protocol === 'data:') {\n    return;\n  }\n\n  // Only allow http and https network protocols\n  if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n    throw new DownloadError({\n      url,\n      message: `URL scheme must be http, https, or data, got ${parsed.protocol}`,\n    });\n  }\n\n  const hostname = parsed.hostname;\n\n  // Block empty hostname\n  if (!hostname) {\n    throw new DownloadError({\n      url,\n      message: `URL must have a hostname`,\n    });\n  }\n\n  // Block localhost and .local domains\n  if (\n    hostname === 'localhost' ||\n    hostname.endsWith('.local') ||\n    hostname.endsWith('.localhost')\n  ) {\n    throw new DownloadError({\n      url,\n      message: `URL with hostname ${hostname} is not allowed`,\n    });\n  }\n\n  // Check for IPv6 addresses (enclosed in brackets in URLs)\n  if (hostname.startsWith('[') && hostname.endsWith(']')) {\n    const ipv6 = hostname.slice(1, -1);\n    if (isPrivateIPv6(ipv6)) {\n      throw new DownloadError({\n        url,\n        message: `URL with IPv6 address ${hostname} is not allowed`,\n      });\n    }\n    return;\n  }\n\n  // Check for IPv4 addresses\n  if (isIPv4(hostname)) {\n    if (isPrivateIPv4(hostname)) {\n      throw new DownloadError({\n        url,\n        message: `URL with IP address ${hostname} is not allowed`,\n      });\n    }\n    return;\n  }\n}\n\nfunction isIPv4(hostname: string): boolean {\n  const parts = hostname.split('.');\n  if (parts.length !== 4) return false;\n  return parts.every(part => {\n    const num = Number(part);\n    return (\n      Number.isInteger(num) && num >= 0 && num <= 255 && String(num) === part\n    );\n  });\n}\n\nfunction isPrivateIPv4(ip: string): boolean {\n  const parts = ip.split('.').map(Number);\n  const [a, b] = parts;\n\n  // 0.0.0.0/8\n  if (a === 0) return true;\n  // 10.0.0.0/8\n  if (a === 10) return true;\n  // 127.0.0.0/8\n  if (a === 127) return true;\n  // 169.254.0.0/16\n  if (a === 169 && b === 254) return true;\n  // 172.16.0.0/12\n  if (a === 172 && b >= 16 && b <= 31) return true;\n  // 192.168.0.0/16\n  if (a === 192 && b === 168) return true;\n\n  return false;\n}\n\nfunction isPrivateIPv6(ip: string): boolean {\n  const normalized = ip.toLowerCase();\n\n  // ::1 (loopback)\n  if (normalized === '::1') return true;\n  // :: (unspecified)\n  if (normalized === '::') return true;\n\n  // Check for IPv4-mapped addresses (::ffff:x.x.x.x or ::ffff:HHHH:HHHH)\n  if (normalized.startsWith('::ffff:')) {\n    const mappedPart = normalized.slice(7);\n    // Dotted-decimal form: ::ffff:127.0.0.1\n    if (isIPv4(mappedPart)) {\n      return isPrivateIPv4(mappedPart);\n    }\n    // Hex form: ::ffff:7f00:1 (URL parser normalizes to this)\n    const hexParts = mappedPart.split(':');\n    if (hexParts.length === 2) {\n      const high = parseInt(hexParts[0], 16);\n      const low = parseInt(hexParts[1], 16);\n      if (!isNaN(high) && !isNaN(low)) {\n        const a = (high >> 8) & 0xff;\n        const b = high & 0xff;\n        const c = (low >> 8) & 0xff;\n        const d = low & 0xff;\n        return isPrivateIPv4(`${a}.${b}.${c}.${d}`);\n      }\n    }\n  }\n\n  // fc00::/7 (unique local addresses - fc00:: and fd00::)\n  if (normalized.startsWith('fc') || normalized.startsWith('fd')) return true;\n\n  // fe80::/10 (link-local)\n  if (normalized.startsWith('fe80')) return true;\n\n  return false;\n}\n","import { DownloadError } from './download-error';\nimport {\n  readResponseWithSizeLimit,\n  DEFAULT_MAX_DOWNLOAD_SIZE,\n} from './read-response-with-size-limit';\nimport { validateDownloadUrl } from './validate-download-url';\n\n/**\n * Download a file from a URL and return it as a Blob.\n *\n * @param url - The URL to download from.\n * @param options - Optional settings for the download.\n * @param options.maxBytes - Maximum allowed download size in bytes. Defaults to 100 MiB.\n * @param options.abortSignal - An optional abort signal to cancel the download.\n * @returns A Promise that resolves to the downloaded Blob.\n *\n * @throws DownloadError if the download fails or exceeds maxBytes.\n */\nexport async function downloadBlob(\n  url: string,\n  options?: { maxBytes?: number; abortSignal?: AbortSignal },\n): Promise<Blob> {\n  validateDownloadUrl(url);\n  try {\n    const response = await fetch(url, {\n      signal: options?.abortSignal,\n    });\n\n    // Validate final URL after redirects to prevent SSRF via open redirect\n    if (response.redirected) {\n      validateDownloadUrl(response.url);\n    }\n\n    if (!response.ok) {\n      throw new DownloadError({\n        url,\n        statusCode: response.status,\n        statusText: response.statusText,\n      });\n    }\n\n    const data = await readResponseWithSizeLimit({\n      response,\n      url,\n      maxBytes: options?.maxBytes ?? DEFAULT_MAX_DOWNLOAD_SIZE,\n    });\n\n    const contentType = response.headers.get('content-type') ?? undefined;\n    return new Blob([data], contentType ? { type: contentType } : undefined);\n  } catch (error) {\n    if (DownloadError.isInstance(error)) {\n      throw error;\n    }\n\n    throw new DownloadError({ url, cause: error });\n  }\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\n * Creates an ID generator.\n * The total length of the ID is the sum of the prefix, separator, and random part length.\n * Not 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/**\n * A function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\n * Generates a 16-character random string to use for IDs.\n * Not 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\nconst BUN_ERROR_CODES = [\n  'ConnectionRefused',\n  'ConnectionClosed',\n  'FailedToOpenSocket',\n  'ECONNRESET',\n  'ECONNREFUSED',\n  'ETIMEDOUT',\n  'EPIPE',\n];\n\nfunction isBunNetworkError(error: unknown): error is Error & { code?: string } {\n  if (!(error instanceof Error)) {\n    return false;\n  }\n\n  const code = (error as any).code;\n  if (typeof code === 'string' && BUN_ERROR_CODES.includes(code)) {\n    return true;\n  }\n\n  return false;\n}\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  if (isBunNetworkError(error)) {\n    return new APICallError({\n      message: `Cannot connect to API: ${error.message}`,\n      cause: error,\n      url,\n      requestBodyValues,\n      isRetryable: true,\n    });\n  }\n\n  return error;\n}\n","export function getRuntimeEnvironmentUserAgent(\n  globalThisAny: any = globalThis as any,\n): string {\n  // Browsers\n  if (globalThisAny.window) {\n    return `runtime/browser`;\n  }\n\n  // Cloudflare Workers / Deno / Bun / Node.js >= 21.1\n  if (globalThisAny.navigator?.userAgent) {\n    return `runtime/${globalThisAny.navigator.userAgent.toLowerCase()}`;\n  }\n\n  // Nodes.js < 21.1\n  if (globalThisAny.process?.versions?.node) {\n    return `runtime/node.js/${globalThisAny.process.version.substring(0)}`;\n  }\n\n  if (globalThisAny.EdgeRuntime) {\n    return `runtime/vercel-edge`;\n  }\n\n  return 'runtime/unknown';\n}\n","/**\n * Normalizes different header inputs into a plain record with lower-case keys.\n * Entries with `undefined` or `null` values are removed.\n *\n * @param headers - Input headers (`Headers`, tuples array, plain record) to normalize.\n * @returns A record containing the normalized header entries.\n */\nexport function normalizeHeaders(\n  headers:\n    | HeadersInit\n    | Record<string, string | undefined>\n    | Array<[string, string | undefined]>\n    | undefined,\n): Record<string, string> {\n  if (headers == null) {\n    return {};\n  }\n\n  const normalized: Record<string, string> = {};\n\n  if (headers instanceof Headers) {\n    headers.forEach((value, key) => {\n      normalized[key.toLowerCase()] = value;\n    });\n  } else {\n    if (!Array.isArray(headers)) {\n      headers = Object.entries(headers);\n    }\n\n    for (const [key, value] of headers) {\n      if (value != null) {\n        normalized[key.toLowerCase()] = value;\n      }\n    }\n  }\n\n  return normalized;\n}\n","import { normalizeHeaders } from './normalize-headers';\n\n/**\n * Appends suffix parts to the `user-agent` header.\n * If a `user-agent` header already exists, the suffix parts are appended to it.\n * If no `user-agent` header exists, a new one is created with the suffix parts.\n * Automatically removes undefined entries from the headers.\n *\n * @param headers - The original headers.\n * @param userAgentSuffixParts - The parts to append to the `user-agent` header.\n * @returns The new headers with the `user-agent` header set or updated.\n */\nexport function withUserAgentSuffix(\n  headers: HeadersInit | Record<string, string | undefined> | undefined,\n  ...userAgentSuffixParts: string[]\n): Record<string, string> {\n  const normalizedHeaders = new Headers(normalizeHeaders(headers));\n\n  const currentUserAgentHeader = normalizedHeaders.get('user-agent') || '';\n\n  normalizedHeaders.set(\n    'user-agent',\n    [currentUserAgentHeader, ...userAgentSuffixParts].filter(Boolean).join(' '),\n  );\n\n  return Object.fromEntries(normalizedHeaders.entries());\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import { 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 { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const getFromApi = async <T>({\n  url,\n  headers = {},\n  successfulResponseHandler,\n  failedResponseHandler,\n  abortSignal,\n  fetch = getOriginalFetch(),\n}: {\n  url: string;\n  headers?: Record<string, string | undefined>;\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: 'GET',\n      headers: withUserAgentSuffix(\n        headers,\n        `ai-sdk/provider-utils/${VERSION}`,\n        getRuntimeEnvironmentUserAgent(),\n      ),\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: {},\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: {},\n        });\n      }\n\n      throw errorInformation.value;\n    }\n\n    try {\n      return await successfulResponseHandler({\n        response,\n        url,\n        requestBodyValues: {},\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: {},\n      });\n    }\n  } catch (error) {\n    throw handleFetchError({ error, url, requestBodyValues: {} });\n  }\n};\n","import {\n  JSONSchema7,\n  LanguageModelV3Message,\n  LanguageModelV3Prompt,\n} from '@ai-sdk/provider';\n\nconst DEFAULT_SCHEMA_PREFIX = 'JSON schema:';\nconst DEFAULT_SCHEMA_SUFFIX =\n  'You MUST answer with a JSON object that matches the JSON schema above.';\nconst DEFAULT_GENERIC_SUFFIX = 'You MUST answer with JSON.';\n\nexport function injectJsonInstruction({\n  prompt,\n  schema,\n  schemaPrefix = schema != null ? DEFAULT_SCHEMA_PREFIX : undefined,\n  schemaSuffix = schema != null\n    ? DEFAULT_SCHEMA_SUFFIX\n    : DEFAULT_GENERIC_SUFFIX,\n}: {\n  prompt?: string;\n  schema?: JSONSchema7;\n  schemaPrefix?: string;\n  schemaSuffix?: string;\n}): string {\n  return [\n    prompt != null && prompt.length > 0 ? prompt : undefined,\n    prompt != null && prompt.length > 0 ? '' : undefined, // add a newline if prompt is not null\n    schemaPrefix,\n    schema != null ? JSON.stringify(schema) : undefined,\n    schemaSuffix,\n  ]\n    .filter(line => line != null)\n    .join('\\n');\n}\n\nexport function injectJsonInstructionIntoMessages({\n  messages,\n  schema,\n  schemaPrefix,\n  schemaSuffix,\n}: {\n  messages: LanguageModelV3Prompt;\n  schema?: JSONSchema7;\n  schemaPrefix?: string;\n  schemaSuffix?: string;\n}): LanguageModelV3Prompt {\n  const systemMessage: LanguageModelV3Message =\n    messages[0]?.role === 'system'\n      ? { ...messages[0] }\n      : { role: 'system', content: '' };\n\n  systemMessage.content = injectJsonInstruction({\n    prompt: systemMessage.content,\n    schema,\n    schemaPrefix,\n    schemaSuffix,\n  });\n\n  return [\n    systemMessage,\n    ...(messages[0]?.role === 'system' ? messages.slice(1) : messages),\n  ];\n}\n","/**\n * Type guard that checks whether a value is not `null` or `undefined`.\n *\n * @template T - The type of the value to check.\n * @param value - The value to check.\n * @returns `true` if the value is neither `null` nor `undefined`, otherwise `false`.\n */\nexport function isNonNullable<T>(\n  value: T | undefined | null,\n): value is NonNullable<T> {\n  return value != null;\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 are 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","/**\n * Loads an optional `string` setting from the environment or a parameter.\n *\n * @param settingValue - The setting value.\n * @param environmentVariableName - The environment variable name.\n * @returns The setting value.\n */\nexport function loadOptionalSetting({\n  settingValue,\n  environmentVariableName,\n}: {\n  settingValue: string | undefined;\n  environmentVariableName: string;\n}): string | undefined {\n  if (typeof settingValue === 'string') {\n    return settingValue;\n  }\n\n  if (settingValue != null || typeof process === 'undefined') {\n    return undefined;\n  }\n\n  settingValue = process.env[environmentVariableName];\n\n  if (settingValue == null || typeof settingValue !== 'string') {\n    return undefined;\n  }\n\n  return settingValue;\n}\n","/**\n * Maps a media type to its corresponding file extension.\n * It was originally introduced to set a filename for audio file uploads\n * in https://github.com/vercel/ai/pull/8159.\n *\n * @param mediaType The media type to map.\n * @returns The corresponding file extension\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/MIME_types/Common_types\n */\nexport function mediaTypeToExtension(mediaType: string) {\n  const [_type, subtype = ''] = mediaType.toLowerCase().split('/');\n\n  return (\n    {\n      mpeg: 'mp3',\n      'x-wav': 'wav',\n      opus: 'ogg',\n      mp4: 'm4a',\n      'x-m4a': 'm4a',\n    }[subtype] ?? subtype\n  );\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 =\n  /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/;\nconst suspectConstructorRx =\n  /\"(?: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: 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        node.constructor !== null &&\n        typeof node.constructor === 'object' &&\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  const { stackTraceLimit } = Error;\n  try {\n    // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n    Error.stackTraceLimit = 0;\n  } catch (e) {\n    // Fallback in case Error is immutable (v8 readonly)\n    return _parse(text);\n  }\n\n  try {\n    return _parse(text);\n  } finally {\n    Error.stackTraceLimit = stackTraceLimit;\n  }\n}\n","import { JSONSchema7, JSONSchema7Definition } from '@ai-sdk/provider';\n\n/**\n * Recursively adds additionalProperties: false to the JSON schema. This is necessary because some providers (e.g. OpenAI) do not support additionalProperties: true.\n */\nexport function addAdditionalPropertiesToJsonSchema(\n  jsonSchema: JSONSchema7,\n): JSONSchema7 {\n  if (\n    jsonSchema.type === 'object' ||\n    (Array.isArray(jsonSchema.type) && jsonSchema.type.includes('object'))\n  ) {\n    jsonSchema.additionalProperties = false;\n    const { properties } = jsonSchema;\n    if (properties != null) {\n      for (const key of Object.keys(properties)) {\n        properties[key] = visit(properties[key]);\n      }\n    }\n  }\n\n  if (jsonSchema.items != null) {\n    jsonSchema.items = Array.isArray(jsonSchema.items)\n      ? jsonSchema.items.map(visit)\n      : visit(jsonSchema.items);\n  }\n\n  if (jsonSchema.anyOf != null) {\n    jsonSchema.anyOf = jsonSchema.anyOf.map(visit);\n  }\n\n  if (jsonSchema.allOf != null) {\n    jsonSchema.allOf = jsonSchema.allOf.map(visit);\n  }\n\n  if (jsonSchema.oneOf != null) {\n    jsonSchema.oneOf = jsonSchema.oneOf.map(visit);\n  }\n\n  const { definitions } = jsonSchema;\n  if (definitions != null) {\n    for (const key of Object.keys(definitions)) {\n      definitions[key] = visit(definitions[key]);\n    }\n  }\n\n  return jsonSchema;\n}\n\nfunction visit(def: JSONSchema7Definition): JSONSchema7Definition {\n  if (typeof def === 'boolean') return def;\n  return addAdditionalPropertiesToJsonSchema(def);\n}\n","import { ZodSchema, ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type DateStrategy =\n  | 'format:date-time'\n  | 'format:date'\n  | 'string'\n  | 'integer';\n\nexport const ignoreOverride = Symbol(\n  'Let zodToJsonSchema decide on which parser to use',\n);\n\nexport type OverrideCallback = (\n  def: ZodTypeDef,\n  refs: Refs,\n  seen: Seen | undefined,\n  forceResolution?: boolean,\n) => JsonSchema7Type | undefined | typeof ignoreOverride;\n\nexport type PostProcessCallback = (\n  jsonSchema: JsonSchema7Type | undefined,\n  def: ZodTypeDef,\n  refs: Refs,\n) => JsonSchema7Type | undefined;\n\nexport const jsonDescription: PostProcessCallback = (jsonSchema, def) => {\n  if (def.description) {\n    try {\n      return {\n        ...jsonSchema,\n        ...JSON.parse(def.description),\n      };\n    } catch {}\n  }\n\n  return jsonSchema;\n};\n\nexport type Options = {\n  name: string | undefined;\n  $refStrategy: 'root' | 'relative' | 'none' | 'seen';\n  basePath: string[];\n  effectStrategy: 'input' | 'any';\n  pipeStrategy: 'input' | 'output' | 'all';\n  dateStrategy: DateStrategy | DateStrategy[];\n  mapStrategy: 'entries' | 'record';\n  removeAdditionalStrategy: 'passthrough' | 'strict';\n  allowedAdditionalProperties: true | undefined;\n  rejectedAdditionalProperties: false | undefined;\n  strictUnions: boolean;\n  definitionPath: string;\n  definitions: Record<string, ZodSchema>;\n  errorMessages: boolean;\n  patternStrategy: 'escape' | 'preserve';\n  applyRegexFlags: boolean;\n  emailStrategy: 'format:email' | 'format:idn-email' | 'pattern:zod';\n  base64Strategy: 'format:binary' | 'contentEncoding:base64' | 'pattern:zod';\n  nameStrategy: 'ref' | 'title';\n  override?: OverrideCallback;\n  postProcess?: PostProcessCallback;\n};\n\nexport const defaultOptions: Options = {\n  name: undefined,\n  $refStrategy: 'root',\n  basePath: ['#'],\n  effectStrategy: 'input',\n  pipeStrategy: 'all',\n  dateStrategy: 'format:date-time',\n  mapStrategy: 'entries',\n  removeAdditionalStrategy: 'passthrough',\n  allowedAdditionalProperties: true,\n  rejectedAdditionalProperties: false,\n  definitionPath: 'definitions',\n  strictUnions: false,\n  definitions: {},\n  errorMessages: false,\n  patternStrategy: 'escape',\n  applyRegexFlags: false,\n  emailStrategy: 'format:email',\n  base64Strategy: 'contentEncoding:base64',\n  nameStrategy: 'ref',\n};\n\nexport const getDefaultOptions = (\n  options: Partial<Options> | string | undefined,\n) =>\n  (typeof options === 'string'\n    ? {\n        ...defaultOptions,\n        name: options,\n      }\n    : {\n        ...defaultOptions,\n        ...options,\n      }) as Options;\n","export type JsonSchema7AnyType = { $ref?: string };\n\nexport function parseAnyDef(): JsonSchema7AnyType {\n  return {};\n}\n","import { ZodArrayDef, ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ArrayType = {\n  type: 'array';\n  items?: JsonSchema7Type;\n  minItems?: number;\n  maxItems?: number;\n};\n\nexport function parseArrayDef(def: ZodArrayDef, refs: Refs) {\n  const res: JsonSchema7ArrayType = {\n    type: 'array',\n  };\n  if (\n    def.type?._def &&\n    def.type?._def?.typeName !== ZodFirstPartyTypeKind.ZodAny\n  ) {\n    res.items = parseDef(def.type._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'items'],\n    });\n  }\n\n  if (def.minLength) {\n    res.minItems = def.minLength.value;\n  }\n  if (def.maxLength) {\n    res.maxItems = def.maxLength.value;\n  }\n  if (def.exactLength) {\n    res.minItems = def.exactLength.value;\n    res.maxItems = def.exactLength.value;\n  }\n  return res;\n}\n","import { ZodBigIntDef } from 'zod/v3';\n\nexport type JsonSchema7BigintType = {\n  type: 'integer';\n  format: 'int64';\n  minimum?: BigInt;\n  exclusiveMinimum?: BigInt;\n  maximum?: BigInt;\n  exclusiveMaximum?: BigInt;\n  multipleOf?: BigInt;\n};\n\nexport function parseBigintDef(def: ZodBigIntDef): JsonSchema7BigintType {\n  const res: JsonSchema7BigintType = {\n    type: 'integer',\n    format: 'int64',\n  };\n\n  if (!def.checks) return res;\n\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case 'min':\n        if (check.inclusive) {\n          res.minimum = check.value;\n        } else {\n          res.exclusiveMinimum = check.value;\n        }\n        break;\n      case 'max':\n        if (check.inclusive) {\n          res.maximum = check.value;\n        } else {\n          res.exclusiveMaximum = check.value;\n        }\n\n        break;\n      case 'multipleOf':\n        res.multipleOf = check.value;\n        break;\n    }\n  }\n  return res;\n}\n","export type JsonSchema7BooleanType = {\n  type: 'boolean';\n};\n\nexport function parseBooleanDef(): JsonSchema7BooleanType {\n  return { type: 'boolean' };\n}\n","import { ZodBrandedDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport function parseBrandedDef(_def: ZodBrandedDef<any>, refs: Refs) {\n  return parseDef(_def.type._def, refs);\n}\n","import { ZodCatchDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseCatchDef = (def: ZodCatchDef<any>, refs: Refs) => {\n  return parseDef(def.innerType._def, refs);\n};\n","import { ZodDateDef } from 'zod/v3';\nimport { Refs } from '../refs';\nimport { DateStrategy } from '../options';\n\nexport type JsonSchema7DateType =\n  | {\n      type: 'integer' | 'string';\n      format: 'unix-time' | 'date-time' | 'date';\n      minimum?: number;\n      maximum?: number;\n    }\n  | {\n      anyOf: JsonSchema7DateType[];\n    };\n\nexport function parseDateDef(\n  def: ZodDateDef,\n  refs: Refs,\n  overrideDateStrategy?: DateStrategy,\n): JsonSchema7DateType {\n  const strategy = overrideDateStrategy ?? refs.dateStrategy;\n\n  if (Array.isArray(strategy)) {\n    return {\n      anyOf: strategy.map((item, i) => parseDateDef(def, refs, item)),\n    };\n  }\n\n  switch (strategy) {\n    case 'string':\n    case 'format:date-time':\n      return {\n        type: 'string',\n        format: 'date-time',\n      };\n    case 'format:date':\n      return {\n        type: 'string',\n        format: 'date',\n      };\n    case 'integer':\n      return integerDateParser(def);\n  }\n}\n\nconst integerDateParser = (def: ZodDateDef) => {\n  const res: JsonSchema7DateType = {\n    type: 'integer',\n    format: 'unix-time',\n  };\n\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case 'min':\n        res.minimum = check.value;\n        break;\n      case 'max':\n        res.maximum = check.value;\n        break;\n    }\n  }\n\n  return res;\n};\n","import { ZodDefaultDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parseDefaultDef(\n  _def: ZodDefaultDef,\n  refs: Refs,\n): JsonSchema7Type & { default: any } {\n  return {\n    ...parseDef(_def.innerType._def, refs),\n    default: _def.defaultValue(),\n  };\n}\n","import { ZodEffectsDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport function parseEffectsDef(\n  _def: ZodEffectsDef,\n  refs: Refs,\n): JsonSchema7Type | undefined {\n  return refs.effectStrategy === 'input'\n    ? parseDef(_def.schema._def, refs)\n    : parseAnyDef();\n}\n","import { ZodEnumDef } from 'zod/v3';\n\nexport type JsonSchema7EnumType = {\n  type: 'string';\n  enum: string[];\n};\n\nexport function parseEnumDef(def: ZodEnumDef): JsonSchema7EnumType {\n  return {\n    type: 'string',\n    enum: Array.from(def.values),\n  };\n}\n","import { ZodIntersectionDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7StringType } from './string';\n\nexport type JsonSchema7AllOfType = {\n  allOf: JsonSchema7Type[];\n  unevaluatedProperties?: boolean;\n};\n\nconst isJsonSchema7AllOfType = (\n  type: JsonSchema7Type | JsonSchema7StringType,\n): type is JsonSchema7AllOfType => {\n  if ('type' in type && type.type === 'string') return false;\n  return 'allOf' in type;\n};\n\nexport function parseIntersectionDef(\n  def: ZodIntersectionDef,\n  refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined {\n  const allOf = [\n    parseDef(def.left._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'allOf', '0'],\n    }),\n    parseDef(def.right._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'allOf', '1'],\n    }),\n  ].filter((x): x is JsonSchema7Type => !!x);\n\n  const mergedAllOf: JsonSchema7Type[] = [];\n  // If either of the schemas is an allOf, merge them into a single allOf\n  allOf.forEach(schema => {\n    if (isJsonSchema7AllOfType(schema)) {\n      mergedAllOf.push(...schema.allOf);\n    } else {\n      let nestedSchema: JsonSchema7Type = schema;\n      if (\n        'additionalProperties' in schema &&\n        schema.additionalProperties === false\n      ) {\n        const { additionalProperties, ...rest } = schema;\n        nestedSchema = rest;\n      }\n      mergedAllOf.push(nestedSchema);\n    }\n  });\n  return mergedAllOf.length ? { allOf: mergedAllOf } : undefined;\n}\n","import { ZodLiteralDef } from 'zod/v3';\n\nexport type JsonSchema7LiteralType =\n  | {\n      type: 'string' | 'number' | 'integer' | 'boolean';\n      const: string | number | boolean;\n    }\n  | {\n      type: 'object' | 'array';\n    };\n\nexport function parseLiteralDef(def: ZodLiteralDef): JsonSchema7LiteralType {\n  const parsedType = typeof def.value;\n  if (\n    parsedType !== 'bigint' &&\n    parsedType !== 'number' &&\n    parsedType !== 'boolean' &&\n    parsedType !== 'string'\n  ) {\n    return {\n      type: Array.isArray(def.value) ? 'array' : 'object',\n    };\n  }\n\n  return {\n    type: parsedType === 'bigint' ? 'integer' : parsedType,\n    const: def.value,\n  };\n}\n","import { ZodStringDef } from 'zod/v3';\nimport { Refs } from '../refs';\n\nlet emojiRegex: RegExp | undefined = undefined;\n\n/**\n * Generated from the regular expressions found here as of 2024-05-22:\n * https://github.com/colinhacks/zod/blob/master/src/types.ts.\n *\n * Expressions with /i flag have been changed accordingly.\n */\nexport const zodPatterns = {\n  /**\n   * `c` was changed to `[cC]` to replicate /i flag\n   */\n  cuid: /^[cC][^\\s-]{8,}$/,\n  cuid2: /^[0-9a-z]+$/,\n  ulid: /^[0-9A-HJKMNP-TV-Z]{26}$/,\n  /**\n   * `a-z` was added to replicate /i flag\n   */\n  email:\n    /^(?!\\.)(?!.*\\.\\.)([a-zA-Z0-9_'+\\-\\.]*)[a-zA-Z0-9_+-]@([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+[a-zA-Z]{2,}$/,\n  /**\n   * Constructed a valid Unicode RegExp\n   *\n   * Lazily instantiate since this type of regex isn't supported\n   * in all envs (e.g. React Native).\n   *\n   * See:\n   * https://github.com/colinhacks/zod/issues/2433\n   * Fix in Zod:\n   * https://github.com/colinhacks/zod/commit/9340fd51e48576a75adc919bff65dbc4a5d4c99b\n   */\n  emoji: () => {\n    if (emojiRegex === undefined) {\n      emojiRegex = RegExp(\n        '^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$',\n        'u',\n      );\n    }\n    return emojiRegex;\n  },\n  /**\n   * Unused\n   */\n  uuid: /^[0-9a-fA-F]{8}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{4}\\b-[0-9a-fA-F]{12}$/,\n  /**\n   * Unused\n   */\n  ipv4: /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,\n  ipv4Cidr:\n    /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/(3[0-2]|[12]?[0-9])$/,\n  /**\n   * Unused\n   */\n  ipv6: /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/,\n  ipv6Cidr:\n    /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,\n  base64: /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,\n  base64url:\n    /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,\n  nanoid: /^[a-zA-Z0-9_-]{21}$/,\n  jwt: /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/,\n} as const;\n\nexport type JsonSchema7StringType = {\n  type: 'string';\n  minLength?: number;\n  maxLength?: number;\n  format?:\n    | 'email'\n    | 'idn-email'\n    | 'uri'\n    | 'uuid'\n    | 'date-time'\n    | 'ipv4'\n    | 'ipv6'\n    | 'date'\n    | 'time'\n    | 'duration';\n  pattern?: string;\n  allOf?: {\n    pattern: string;\n  }[];\n  anyOf?: {\n    format: string;\n  }[];\n  contentEncoding?: string;\n};\n\nexport function parseStringDef(\n  def: ZodStringDef,\n  refs: Refs,\n): JsonSchema7StringType {\n  const res: JsonSchema7StringType = {\n    type: 'string',\n  };\n\n  if (def.checks) {\n    for (const check of def.checks) {\n      switch (check.kind) {\n        case 'min':\n          res.minLength =\n            typeof res.minLength === 'number'\n              ? Math.max(res.minLength, check.value)\n              : check.value;\n          break;\n        case 'max':\n          res.maxLength =\n            typeof res.maxLength === 'number'\n              ? Math.min(res.maxLength, check.value)\n              : check.value;\n\n          break;\n        case 'email':\n          switch (refs.emailStrategy) {\n            case 'format:email':\n              addFormat(res, 'email', check.message, refs);\n              break;\n            case 'format:idn-email':\n              addFormat(res, 'idn-email', check.message, refs);\n              break;\n            case 'pattern:zod':\n              addPattern(res, zodPatterns.email, check.message, refs);\n              break;\n          }\n\n          break;\n        case 'url':\n          addFormat(res, 'uri', check.message, refs);\n          break;\n        case 'uuid':\n          addFormat(res, 'uuid', check.message, refs);\n          break;\n        case 'regex':\n          addPattern(res, check.regex, check.message, refs);\n          break;\n        case 'cuid':\n          addPattern(res, zodPatterns.cuid, check.message, refs);\n          break;\n        case 'cuid2':\n          addPattern(res, zodPatterns.cuid2, check.message, refs);\n          break;\n        case 'startsWith':\n          addPattern(\n            res,\n            RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`),\n            check.message,\n            refs,\n          );\n          break;\n        case 'endsWith':\n          addPattern(\n            res,\n            RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`),\n            check.message,\n            refs,\n          );\n          break;\n        case 'datetime':\n          addFormat(res, 'date-time', check.message, refs);\n          break;\n        case 'date':\n          addFormat(res, 'date', check.message, refs);\n          break;\n        case 'time':\n          addFormat(res, 'time', check.message, refs);\n          break;\n        case 'duration':\n          addFormat(res, 'duration', check.message, refs);\n          break;\n        case 'length':\n          res.minLength =\n            typeof res.minLength === 'number'\n              ? Math.max(res.minLength, check.value)\n              : check.value;\n          res.maxLength =\n            typeof res.maxLength === 'number'\n              ? Math.min(res.maxLength, check.value)\n              : check.value;\n          break;\n        case 'includes': {\n          addPattern(\n            res,\n            RegExp(escapeLiteralCheckValue(check.value, refs)),\n            check.message,\n            refs,\n          );\n          break;\n        }\n        case 'ip': {\n          if (check.version !== 'v6') {\n            addFormat(res, 'ipv4', check.message, refs);\n          }\n          if (check.version !== 'v4') {\n            addFormat(res, 'ipv6', check.message, refs);\n          }\n          break;\n        }\n        case 'base64url':\n          addPattern(res, zodPatterns.base64url, check.message, refs);\n          break;\n        case 'jwt':\n          addPattern(res, zodPatterns.jwt, check.message, refs);\n          break;\n        case 'cidr': {\n          if (check.version !== 'v6') {\n            addPattern(res, zodPatterns.ipv4Cidr, check.message, refs);\n          }\n          if (check.version !== 'v4') {\n            addPattern(res, zodPatterns.ipv6Cidr, check.message, refs);\n          }\n          break;\n        }\n        case 'emoji':\n          addPattern(res, zodPatterns.emoji(), check.message, refs);\n          break;\n        case 'ulid': {\n          addPattern(res, zodPatterns.ulid, check.message, refs);\n          break;\n        }\n        case 'base64': {\n          switch (refs.base64Strategy) {\n            case 'format:binary': {\n              addFormat(res, 'binary' as any, check.message, refs);\n              break;\n            }\n\n            case 'contentEncoding:base64': {\n              res.contentEncoding = 'base64';\n              break;\n            }\n\n            case 'pattern:zod': {\n              addPattern(res, zodPatterns.base64, check.message, refs);\n              break;\n            }\n          }\n          break;\n        }\n        case 'nanoid': {\n          addPattern(res, zodPatterns.nanoid, check.message, refs);\n        }\n        case 'toLowerCase':\n        case 'toUpperCase':\n        case 'trim':\n          break;\n        default:\n          /* c8 ignore next */\n          ((_: never) => {})(check);\n      }\n    }\n  }\n\n  return res;\n}\n\nfunction escapeLiteralCheckValue(literal: string, refs: Refs): string {\n  return refs.patternStrategy === 'escape'\n    ? escapeNonAlphaNumeric(literal)\n    : literal;\n}\n\nconst ALPHA_NUMERIC = new Set(\n  'ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789',\n);\n\nfunction escapeNonAlphaNumeric(source: string) {\n  let result = '';\n\n  for (let i = 0; i < source.length; i++) {\n    if (!ALPHA_NUMERIC.has(source[i])) {\n      result += '\\\\';\n    }\n\n    result += source[i];\n  }\n\n  return result;\n}\n\n// Adds a \"format\" keyword to the schema. If a format exists, both formats will be joined in an allOf-node, along with subsequent ones.\nfunction addFormat(\n  schema: JsonSchema7StringType,\n  value: Required<JsonSchema7StringType>['format'],\n  message: string | undefined,\n  refs: Refs,\n) {\n  if (schema.format || schema.anyOf?.some(x => x.format)) {\n    if (!schema.anyOf) {\n      schema.anyOf = [];\n    }\n\n    if (schema.format) {\n      schema.anyOf!.push({\n        format: schema.format,\n      });\n      delete schema.format;\n    }\n\n    schema.anyOf!.push({\n      format: value,\n      ...(message &&\n        refs.errorMessages && { errorMessage: { format: message } }),\n    });\n  } else {\n    schema.format = value;\n  }\n}\n\n// Adds a \"pattern\" keyword to the schema. If a pattern exists, both patterns will be joined in an allOf-node, along with subsequent ones.\nfunction addPattern(\n  schema: JsonSchema7StringType,\n  regex: RegExp,\n  message: string | undefined,\n  refs: Refs,\n) {\n  if (schema.pattern || schema.allOf?.some(x => x.pattern)) {\n    if (!schema.allOf) {\n      schema.allOf = [];\n    }\n\n    if (schema.pattern) {\n      schema.allOf!.push({\n        pattern: schema.pattern,\n      });\n      delete schema.pattern;\n    }\n\n    schema.allOf!.push({\n      pattern: stringifyRegExpWithFlags(regex, refs),\n      ...(message &&\n        refs.errorMessages && { errorMessage: { pattern: message } }),\n    });\n  } else {\n    schema.pattern = stringifyRegExpWithFlags(regex, refs);\n  }\n}\n\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex: RegExp, refs: Refs): string {\n  if (!refs.applyRegexFlags || !regex.flags) {\n    return regex.source;\n  }\n\n  // Currently handled flags\n  const flags = {\n    i: regex.flags.includes('i'), // Case-insensitive\n    m: regex.flags.includes('m'), // `^` and `$` matches adjacent to newline characters\n    s: regex.flags.includes('s'), // `.` matches newlines\n  };\n\n  // The general principle here is to step through each character, one at a time, applying mutations as flags require. We keep track when the current character is escaped, and when it's inside a group /like [this]/ or (also) a range like /[a-z]/. The following is fairly brittle imperative code; edit at your peril!\n  const source = flags.i ? regex.source.toLowerCase() : regex.source;\n  let pattern = '';\n  let isEscaped = false;\n  let inCharGroup = false;\n  let inCharRange = false;\n\n  for (let i = 0; i < source.length; i++) {\n    if (isEscaped) {\n      pattern += source[i];\n      isEscaped = false;\n      continue;\n    }\n\n    if (flags.i) {\n      if (inCharGroup) {\n        if (source[i].match(/[a-z]/)) {\n          if (inCharRange) {\n            pattern += source[i];\n            pattern += `${source[i - 2]}-${source[i]}`.toUpperCase();\n            inCharRange = false;\n          } else if (source[i + 1] === '-' && source[i + 2]?.match(/[a-z]/)) {\n            pattern += source[i];\n            inCharRange = true;\n          } else {\n            pattern += `${source[i]}${source[i].toUpperCase()}`;\n          }\n          continue;\n        }\n      } else if (source[i].match(/[a-z]/)) {\n        pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n        continue;\n      }\n    }\n\n    if (flags.m) {\n      if (source[i] === '^') {\n        pattern += `(^|(?<=[\\r\\n]))`;\n        continue;\n      } else if (source[i] === '$') {\n        pattern += `($|(?=[\\r\\n]))`;\n        continue;\n      }\n    }\n\n    if (flags.s && source[i] === '.') {\n      pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n      continue;\n    }\n\n    pattern += source[i];\n    if (source[i] === '\\\\') {\n      isEscaped = true;\n    } else if (inCharGroup && source[i] === ']') {\n      inCharGroup = false;\n    } else if (!inCharGroup && source[i] === '[') {\n      inCharGroup = true;\n    }\n  }\n\n  try {\n    new RegExp(pattern);\n  } catch {\n    console.warn(\n      `Could not convert regex pattern at ${refs.currentPath.join(\n        '/',\n      )} to a flag-independent form! Falling back to the flag-ignorant source`,\n    );\n    return regex.source;\n  }\n\n  return pattern;\n}\n","import {\n  ZodFirstPartyTypeKind,\n  ZodMapDef,\n  ZodRecordDef,\n  ZodTypeAny,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseBrandedDef } from './branded';\nimport { JsonSchema7EnumType } from './enum';\nimport { JsonSchema7StringType, parseStringDef } from './string';\n\ntype JsonSchema7RecordPropertyNamesType =\n  | Omit<JsonSchema7StringType, 'type'>\n  | Omit<JsonSchema7EnumType, 'type'>;\n\nexport type JsonSchema7RecordType = {\n  type: 'object';\n  additionalProperties?: JsonSchema7Type | true;\n  propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n  def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n  refs: Refs,\n): JsonSchema7RecordType {\n  const schema: JsonSchema7RecordType = {\n    type: 'object',\n    additionalProperties:\n      parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, 'additionalProperties'],\n      }) ?? refs.allowedAdditionalProperties,\n  };\n\n  if (\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n    def.keyType._def.checks?.length\n  ) {\n    const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n    return {\n      ...schema,\n      propertyNames: keyType,\n    };\n  } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n    return {\n      ...schema,\n      propertyNames: {\n        enum: def.keyType._def.values,\n      },\n    };\n  } else if (\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n    def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n    def.keyType._def.type._def.checks?.length\n  ) {\n    const { type, ...keyType } = parseBrandedDef(\n      def.keyType._def,\n      refs,\n    ) as JsonSchema7StringType;\n\n    return {\n      ...schema,\n      propertyNames: keyType,\n    };\n  }\n\n  return schema;\n}\n","import { ZodMapDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\nimport { JsonSchema7RecordType, parseRecordDef } from './record';\n\nexport type JsonSchema7MapType = {\n  type: 'array';\n  maxItems: 125;\n  items: {\n    type: 'array';\n    items: [JsonSchema7Type, JsonSchema7Type];\n    minItems: 2;\n    maxItems: 2;\n  };\n};\n\nexport function parseMapDef(\n  def: ZodMapDef,\n  refs: Refs,\n): JsonSchema7MapType | JsonSchema7RecordType {\n  if (refs.mapStrategy === 'record') {\n    return parseRecordDef(def, refs);\n  }\n\n  const keys =\n    parseDef(def.keyType._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'items', 'items', '0'],\n    }) || parseAnyDef();\n  const values =\n    parseDef(def.valueType._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'items', 'items', '1'],\n    }) || parseAnyDef();\n  return {\n    type: 'array',\n    maxItems: 125,\n    items: {\n      type: 'array',\n      items: [keys, values],\n      minItems: 2,\n      maxItems: 2,\n    },\n  };\n}\n","import { ZodNativeEnumDef } from 'zod/v3';\n\nexport type JsonSchema7NativeEnumType = {\n  type: 'string' | 'number' | ['string', 'number'];\n  enum: (string | number)[];\n};\n\nexport function parseNativeEnumDef(\n  def: ZodNativeEnumDef,\n): JsonSchema7NativeEnumType {\n  const object = def.values;\n  const actualKeys = Object.keys(def.values).filter((key: string) => {\n    return typeof object[object[key]] !== 'number';\n  });\n\n  const actualValues = actualKeys.map((key: string) => object[key]);\n\n  const parsedTypes = Array.from(\n    new Set(actualValues.map((values: string | number) => typeof values)),\n  );\n\n  return {\n    type:\n      parsedTypes.length === 1\n        ? parsedTypes[0] === 'string'\n          ? 'string'\n          : 'number'\n        : ['string', 'number'],\n    enum: actualValues,\n  };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7NeverType = {\n  not: JsonSchema7AnyType;\n};\n\nexport function parseNeverDef(): JsonSchema7NeverType | undefined {\n  return { not: parseAnyDef() };\n}\n","export type JsonSchema7NullType = {\n  type: 'null';\n};\n\nexport function parseNullDef(): JsonSchema7NullType {\n  return {\n    type: 'null',\n  };\n}\n","import {\n  ZodDiscriminatedUnionDef,\n  ZodLiteralDef,\n  ZodTypeAny,\n  ZodUnionDef,\n} from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport const primitiveMappings = {\n  ZodString: 'string',\n  ZodNumber: 'number',\n  ZodBigInt: 'integer',\n  ZodBoolean: 'boolean',\n  ZodNull: 'null',\n} as const;\ntype ZodPrimitive = keyof typeof primitiveMappings;\ntype JsonSchema7Primitive =\n  (typeof primitiveMappings)[keyof typeof primitiveMappings];\n\nexport type JsonSchema7UnionType =\n  | JsonSchema7PrimitiveUnionType\n  | JsonSchema7AnyOfType;\n\ntype JsonSchema7PrimitiveUnionType =\n  | {\n      type: JsonSchema7Primitive | JsonSchema7Primitive[];\n    }\n  | {\n      type: JsonSchema7Primitive | JsonSchema7Primitive[];\n      enum: (string | number | bigint | boolean | null)[];\n    };\n\ntype JsonSchema7AnyOfType = {\n  anyOf: JsonSchema7Type[];\n};\n\nexport function parseUnionDef(\n  def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n  refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined {\n  const options: readonly ZodTypeAny[] =\n    def.options instanceof Map ? Array.from(def.options.values()) : def.options;\n\n  // This blocks tries to look ahead a bit to produce nicer looking schemas with type array instead of anyOf.\n  if (\n    options.every(\n      x =>\n        x._def.typeName in primitiveMappings &&\n        (!x._def.checks || !x._def.checks.length),\n    )\n  ) {\n    // all types in union are primitive and lack checks, so might as well squash into {type: [...]}\n\n    const types = options.reduce((types: JsonSchema7Primitive[], x) => {\n      const type = primitiveMappings[x._def.typeName as ZodPrimitive]; //Can be safely casted due to row 43\n      return type && !types.includes(type) ? [...types, type] : types;\n    }, []);\n\n    return {\n      type: types.length > 1 ? types : types[0],\n    };\n  } else if (\n    options.every(x => x._def.typeName === 'ZodLiteral' && !x.description)\n  ) {\n    // all options literals\n\n    const types = options.reduce(\n      (acc: JsonSchema7Primitive[], x: { _def: ZodLiteralDef }) => {\n        const type = typeof x._def.value;\n        switch (type) {\n          case 'string':\n          case 'number':\n          case 'boolean':\n            return [...acc, type];\n          case 'bigint':\n            return [...acc, 'integer' as const];\n          case 'object':\n            if (x._def.value === null) return [...acc, 'null' as const];\n          case 'symbol':\n          case 'undefined':\n          case 'function':\n          default:\n            return acc;\n        }\n      },\n      [],\n    );\n\n    if (types.length === options.length) {\n      // all the literals are primitive, as far as null can be considered primitive\n\n      const uniqueTypes = types.filter((x, i, a) => a.indexOf(x) === i);\n      return {\n        type: uniqueTypes.length > 1 ? uniqueTypes : uniqueTypes[0],\n        enum: options.reduce(\n          (acc, x) => {\n            return acc.includes(x._def.value) ? acc : [...acc, x._def.value];\n          },\n          [] as (string | number | bigint | boolean | null)[],\n        ),\n      };\n    }\n  } else if (options.every(x => x._def.typeName === 'ZodEnum')) {\n    return {\n      type: 'string',\n      enum: options.reduce(\n        (acc: string[], x) => [\n          ...acc,\n          ...x._def.values.filter((x: string) => !acc.includes(x)),\n        ],\n        [],\n      ),\n    };\n  }\n\n  return asAnyOf(def, refs);\n}\n\nconst asAnyOf = (\n  def: ZodUnionDef | ZodDiscriminatedUnionDef<any, any>,\n  refs: Refs,\n): JsonSchema7PrimitiveUnionType | JsonSchema7AnyOfType | undefined => {\n  const anyOf = (\n    (def.options instanceof Map\n      ? Array.from(def.options.values())\n      : def.options) as any[]\n  )\n    .map((x, i) =>\n      parseDef(x._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, 'anyOf', `${i}`],\n      }),\n    )\n    .filter(\n      (x): x is JsonSchema7Type =>\n        !!x &&\n        (!refs.strictUnions ||\n          (typeof x === 'object' && Object.keys(x).length > 0)),\n    );\n\n  return anyOf.length ? { anyOf } : undefined;\n};\n","import { ZodNullableDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7NullType } from './null';\nimport { primitiveMappings } from './union';\n\nexport type JsonSchema7NullableType =\n  | {\n      anyOf: [JsonSchema7Type, JsonSchema7NullType];\n    }\n  | {\n      type: [string, 'null'];\n    };\n\nexport function parseNullableDef(\n  def: ZodNullableDef,\n  refs: Refs,\n): JsonSchema7NullableType | undefined {\n  if (\n    ['ZodString', 'ZodNumber', 'ZodBigInt', 'ZodBoolean', 'ZodNull'].includes(\n      def.innerType._def.typeName,\n    ) &&\n    (!def.innerType._def.checks || !def.innerType._def.checks.length)\n  ) {\n    return {\n      type: [\n        primitiveMappings[\n          def.innerType._def.typeName as keyof typeof primitiveMappings\n        ],\n        'null',\n      ],\n    };\n  }\n\n  const base = parseDef(def.innerType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'anyOf', '0'],\n  });\n\n  return base && { anyOf: [base, { type: 'null' }] };\n}\n","import { ZodNumberDef } from 'zod/v3';\n\nexport type JsonSchema7NumberType = {\n  type: 'number' | 'integer';\n  minimum?: number;\n  exclusiveMinimum?: number;\n  maximum?: number;\n  exclusiveMaximum?: number;\n  multipleOf?: number;\n};\n\nexport function parseNumberDef(def: ZodNumberDef): JsonSchema7NumberType {\n  const res: JsonSchema7NumberType = {\n    type: 'number',\n  };\n\n  if (!def.checks) return res;\n\n  for (const check of def.checks) {\n    switch (check.kind) {\n      case 'int':\n        res.type = 'integer';\n        break;\n      case 'min':\n        if (check.inclusive) {\n          res.minimum = check.value;\n        } else {\n          res.exclusiveMinimum = check.value;\n        }\n        break;\n      case 'max':\n        if (check.inclusive) {\n          res.maximum = check.value;\n        } else {\n          res.exclusiveMaximum = check.value;\n        }\n        break;\n      case 'multipleOf':\n        res.multipleOf = check.value;\n        break;\n    }\n  }\n  return res;\n}\n","import { ZodObjectDef, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7ObjectType = {\n  type: 'object';\n  properties: Record<string, JsonSchema7Type>;\n  additionalProperties?: boolean | JsonSchema7Type;\n  required?: string[];\n};\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n  const result: JsonSchema7ObjectType = {\n    type: 'object',\n    properties: {},\n  };\n\n  const required: string[] = [];\n\n  const shape = def.shape();\n\n  for (const propName in shape) {\n    let propDef = shape[propName];\n\n    if (propDef === undefined || propDef._def === undefined) {\n      continue;\n    }\n\n    const propOptional = safeIsOptional(propDef);\n\n    const parsedDef = parseDef(propDef._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'properties', propName],\n      propertyPath: [...refs.currentPath, 'properties', propName],\n    });\n\n    if (parsedDef === undefined) {\n      continue;\n    }\n\n    result.properties[propName] = parsedDef;\n\n    if (!propOptional) {\n      required.push(propName);\n    }\n  }\n\n  if (required.length) {\n    result.required = required;\n  }\n\n  const additionalProperties = decideAdditionalProperties(def, refs);\n\n  if (additionalProperties !== undefined) {\n    result.additionalProperties = additionalProperties;\n  }\n\n  return result;\n}\n\nfunction decideAdditionalProperties(def: ZodObjectDef, refs: Refs) {\n  if (def.catchall._def.typeName !== 'ZodNever') {\n    return parseDef(def.catchall._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, 'additionalProperties'],\n    });\n  }\n\n  switch (def.unknownKeys) {\n    case 'passthrough':\n      return refs.allowedAdditionalProperties;\n    case 'strict':\n      return refs.rejectedAdditionalProperties;\n    case 'strip':\n      return refs.removeAdditionalStrategy === 'strict'\n        ? refs.allowedAdditionalProperties\n        : refs.rejectedAdditionalProperties;\n  }\n}\n\nfunction safeIsOptional(schema: ZodTypeAny): boolean {\n  try {\n    return schema.isOptional();\n  } catch {\n    return true;\n  }\n}\n","import { ZodOptionalDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { parseAnyDef } from './any';\n\nexport const parseOptionalDef = (\n  def: ZodOptionalDef,\n  refs: Refs,\n): JsonSchema7Type | undefined => {\n  if (refs.currentPath.toString() === refs.propertyPath?.toString()) {\n    return parseDef(def.innerType._def, refs);\n  }\n\n  const innerSchema = parseDef(def.innerType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'anyOf', '1'],\n  });\n\n  return innerSchema\n    ? { anyOf: [{ not: parseAnyDef() }, innerSchema] }\n    : parseAnyDef();\n};\n","import { ZodPipelineDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\nimport { JsonSchema7AllOfType } from './intersection';\n\nexport const parsePipelineDef = (\n  def: ZodPipelineDef<any, any>,\n  refs: Refs,\n): JsonSchema7AllOfType | JsonSchema7Type | undefined => {\n  if (refs.pipeStrategy === 'input') {\n    return parseDef(def.in._def, refs);\n  } else if (refs.pipeStrategy === 'output') {\n    return parseDef(def.out._def, refs);\n  }\n\n  const a = parseDef(def.in._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'allOf', '0'],\n  });\n  const b = parseDef(def.out._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'allOf', a ? '1' : '0'],\n  });\n\n  return {\n    allOf: [a, b].filter((x): x is JsonSchema7Type => x !== undefined),\n  };\n};\n","import { ZodPromiseDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport function parsePromiseDef(\n  def: ZodPromiseDef,\n  refs: Refs,\n): JsonSchema7Type | undefined {\n  return parseDef(def.type._def, refs);\n}\n","import { ZodSetDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7SetType = {\n  type: 'array';\n  uniqueItems: true;\n  items?: JsonSchema7Type;\n  minItems?: number;\n  maxItems?: number;\n};\n\nexport function parseSetDef(def: ZodSetDef, refs: Refs): JsonSchema7SetType {\n  const items = parseDef(def.valueType._def, {\n    ...refs,\n    currentPath: [...refs.currentPath, 'items'],\n  });\n\n  const schema: JsonSchema7SetType = {\n    type: 'array',\n    uniqueItems: true,\n    items,\n  };\n\n  if (def.minSize) {\n    schema.minItems = def.minSize.value;\n  }\n\n  if (def.maxSize) {\n    schema.maxItems = def.maxSize.value;\n  }\n\n  return schema;\n}\n","import { ZodTupleDef, ZodTupleItems, ZodTypeAny } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { JsonSchema7Type } from '../parse-types';\nimport { Refs } from '../refs';\n\nexport type JsonSchema7TupleType = {\n  type: 'array';\n  minItems: number;\n  items: JsonSchema7Type[];\n} & (\n  | {\n      maxItems: number;\n    }\n  | {\n      additionalItems?: JsonSchema7Type;\n    }\n);\n\nexport function parseTupleDef(\n  def: ZodTupleDef<ZodTupleItems | [], ZodTypeAny | null>,\n  refs: Refs,\n): JsonSchema7TupleType {\n  if (def.rest) {\n    return {\n      type: 'array',\n      minItems: def.items.length,\n      items: def.items\n        .map((x, i) =>\n          parseDef(x._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, 'items', `${i}`],\n          }),\n        )\n        .reduce(\n          (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n          [],\n        ),\n      additionalItems: parseDef(def.rest._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, 'additionalItems'],\n      }),\n    };\n  } else {\n    return {\n      type: 'array',\n      minItems: def.items.length,\n      maxItems: def.items.length,\n      items: def.items\n        .map((x, i) =>\n          parseDef(x._def, {\n            ...refs,\n            currentPath: [...refs.currentPath, 'items', `${i}`],\n          }),\n        )\n        .reduce(\n          (acc: JsonSchema7Type[], x) => (x === undefined ? acc : [...acc, x]),\n          [],\n        ),\n    };\n  }\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UndefinedType = {\n  not: JsonSchema7AnyType;\n};\n\nexport function parseUndefinedDef(): JsonSchema7UndefinedType {\n  return {\n    not: parseAnyDef(),\n  };\n}\n","import { JsonSchema7AnyType, parseAnyDef } from './any';\n\nexport type JsonSchema7UnknownType = JsonSchema7AnyType;\n\nexport function parseUnknownDef(): JsonSchema7UnknownType {\n  return parseAnyDef();\n}\n","import { ZodReadonlyDef } from 'zod/v3';\nimport { parseDef } from '../parse-def';\nimport { Refs } from '../refs';\n\nexport const parseReadonlyDef = (def: ZodReadonlyDef<any>, refs: Refs) => {\n  return parseDef(def.innerType._def, refs);\n};\n","import { ZodFirstPartyTypeKind } from 'zod/v3';\nimport { parseAnyDef } from './parsers/any';\nimport { parseArrayDef } from './parsers/array';\nimport { parseBigintDef } from './parsers/bigint';\nimport { parseBooleanDef } from './parsers/boolean';\nimport { parseBrandedDef } from './parsers/branded';\nimport { parseCatchDef } from './parsers/catch';\nimport { parseDateDef } from './parsers/date';\nimport { parseDefaultDef } from './parsers/default';\nimport { parseEffectsDef } from './parsers/effects';\nimport { parseEnumDef } from './parsers/enum';\nimport { parseIntersectionDef } from './parsers/intersection';\nimport { parseLiteralDef } from './parsers/literal';\nimport { parseMapDef } from './parsers/map';\nimport { parseNativeEnumDef } from './parsers/native-enum';\nimport { parseNeverDef } from './parsers/never';\nimport { parseNullDef } from './parsers/null';\nimport { parseNullableDef } from './parsers/nullable';\nimport { parseNumberDef } from './parsers/number';\nimport { parseObjectDef } from './parsers/object';\nimport { parseOptionalDef } from './parsers/optional';\nimport { parsePipelineDef } from './parsers/pipeline';\nimport { parsePromiseDef } from './parsers/promise';\nimport { parseRecordDef } from './parsers/record';\nimport { parseSetDef } from './parsers/set';\nimport { parseStringDef } from './parsers/string';\nimport { parseTupleDef } from './parsers/tuple';\nimport { parseUndefinedDef } from './parsers/undefined';\nimport { parseUnionDef } from './parsers/union';\nimport { parseUnknownDef } from './parsers/unknown';\nimport { Refs } from './refs';\nimport { parseReadonlyDef } from './parsers/readonly';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type InnerDefGetter = () => any;\n\nexport const selectParser = (\n  def: any,\n  typeName: ZodFirstPartyTypeKind,\n  refs: Refs,\n): JsonSchema7Type | undefined | InnerDefGetter => {\n  switch (typeName) {\n    case ZodFirstPartyTypeKind.ZodString:\n      return parseStringDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodNumber:\n      return parseNumberDef(def);\n    case ZodFirstPartyTypeKind.ZodObject:\n      return parseObjectDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodBigInt:\n      return parseBigintDef(def);\n    case ZodFirstPartyTypeKind.ZodBoolean:\n      return parseBooleanDef();\n    case ZodFirstPartyTypeKind.ZodDate:\n      return parseDateDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodUndefined:\n      return parseUndefinedDef();\n    case ZodFirstPartyTypeKind.ZodNull:\n      return parseNullDef();\n    case ZodFirstPartyTypeKind.ZodArray:\n      return parseArrayDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodUnion:\n    case ZodFirstPartyTypeKind.ZodDiscriminatedUnion:\n      return parseUnionDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodIntersection:\n      return parseIntersectionDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodTuple:\n      return parseTupleDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodRecord:\n      return parseRecordDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodLiteral:\n      return parseLiteralDef(def);\n    case ZodFirstPartyTypeKind.ZodEnum:\n      return parseEnumDef(def);\n    case ZodFirstPartyTypeKind.ZodNativeEnum:\n      return parseNativeEnumDef(def);\n    case ZodFirstPartyTypeKind.ZodNullable:\n      return parseNullableDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodOptional:\n      return parseOptionalDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodMap:\n      return parseMapDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodSet:\n      return parseSetDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodLazy:\n      return () => (def as any).getter()._def;\n    case ZodFirstPartyTypeKind.ZodPromise:\n      return parsePromiseDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodNaN:\n    case ZodFirstPartyTypeKind.ZodNever:\n      return parseNeverDef();\n    case ZodFirstPartyTypeKind.ZodEffects:\n      return parseEffectsDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodAny:\n      return parseAnyDef();\n    case ZodFirstPartyTypeKind.ZodUnknown:\n      return parseUnknownDef();\n    case ZodFirstPartyTypeKind.ZodDefault:\n      return parseDefaultDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodBranded:\n      return parseBrandedDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodReadonly:\n      return parseReadonlyDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodCatch:\n      return parseCatchDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodPipeline:\n      return parsePipelineDef(def, refs);\n    case ZodFirstPartyTypeKind.ZodFunction:\n    case ZodFirstPartyTypeKind.ZodVoid:\n    case ZodFirstPartyTypeKind.ZodSymbol:\n      return undefined;\n    default:\n      /* c8 ignore next */\n      return ((_: never) => undefined)(typeName);\n  }\n};\n","export const getRelativePath = (pathA: string[], pathB: string[]) => {\n  let i = 0;\n  for (; i < pathA.length && i < pathB.length; i++) {\n    if (pathA[i] !== pathB[i]) break;\n  }\n  return [(pathA.length - i).toString(), ...pathB.slice(i)].join('/');\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { Refs, Seen } from './refs';\nimport { ignoreOverride } from './options';\nimport { JsonSchema7Type } from './parse-types';\nimport { selectParser } from './select-parser';\nimport { getRelativePath } from './get-relative-path';\nimport { parseAnyDef } from './parsers/any';\n\nexport function parseDef(\n  def: ZodTypeDef,\n  refs: Refs,\n  forceResolution = false, // Forces a new schema to be instantiated even though its def has been seen. Used for improving refs in definitions. See https://github.com/StefanTerdell/zod-to-json-schema/pull/61.\n): JsonSchema7Type | undefined {\n  const seenItem = refs.seen.get(def);\n\n  if (refs.override) {\n    const overrideResult = refs.override?.(\n      def,\n      refs,\n      seenItem,\n      forceResolution,\n    );\n\n    if (overrideResult !== ignoreOverride) {\n      return overrideResult;\n    }\n  }\n\n  if (seenItem && !forceResolution) {\n    const seenSchema = get$ref(seenItem, refs);\n\n    if (seenSchema !== undefined) {\n      return seenSchema;\n    }\n  }\n\n  const newItem: Seen = { def, path: refs.currentPath, jsonSchema: undefined };\n\n  refs.seen.set(def, newItem);\n\n  const jsonSchemaOrGetter = selectParser(def, (def as any).typeName, refs);\n\n  // If the return was a function, then the inner definition needs to be extracted before a call to parseDef (recursive)\n  const jsonSchema =\n    typeof jsonSchemaOrGetter === 'function'\n      ? parseDef(jsonSchemaOrGetter(), refs)\n      : jsonSchemaOrGetter;\n\n  if (jsonSchema) {\n    addMeta(def, refs, jsonSchema);\n  }\n\n  if (refs.postProcess) {\n    const postProcessResult = refs.postProcess(jsonSchema, def, refs);\n\n    newItem.jsonSchema = jsonSchema;\n\n    return postProcessResult;\n  }\n\n  newItem.jsonSchema = jsonSchema;\n\n  return jsonSchema;\n}\n\nconst get$ref = (\n  item: Seen,\n  refs: Refs,\n):\n  | {\n      $ref: string;\n    }\n  | {}\n  | undefined => {\n  switch (refs.$refStrategy) {\n    case 'root':\n      return { $ref: item.path.join('/') };\n    case 'relative':\n      return { $ref: getRelativePath(refs.currentPath, item.path) };\n    case 'none':\n    case 'seen': {\n      if (\n        item.path.length < refs.currentPath.length &&\n        item.path.every((value, index) => refs.currentPath[index] === value)\n      ) {\n        console.warn(\n          `Recursive reference detected at ${refs.currentPath.join(\n            '/',\n          )}! Defaulting to any`,\n        );\n\n        return parseAnyDef();\n      }\n\n      return refs.$refStrategy === 'seen' ? parseAnyDef() : undefined;\n    }\n  }\n};\n\nconst addMeta = (\n  def: ZodTypeDef,\n  refs: Refs,\n  jsonSchema: JsonSchema7Type,\n): JsonSchema7Type => {\n  if (def.description) {\n    jsonSchema.description = def.description;\n  }\n  return jsonSchema;\n};\n","import { ZodTypeDef } from 'zod/v3';\nimport { getDefaultOptions, Options } from './options';\nimport { JsonSchema7Type } from './parse-types';\n\nexport type Refs = {\n  seen: Map<ZodTypeDef, Seen>;\n  currentPath: string[];\n  propertyPath: string[] | undefined;\n} & Options;\n\nexport type Seen = {\n  def: ZodTypeDef;\n  path: string[];\n  jsonSchema: JsonSchema7Type | undefined;\n};\n\nexport const getRefs = (options?: string | Partial<Options>): Refs => {\n  const _options = getDefaultOptions(options);\n  const currentPath =\n    _options.name !== undefined\n      ? [..._options.basePath, _options.definitionPath, _options.name]\n      : _options.basePath;\n  return {\n    ..._options,\n    currentPath: currentPath,\n    propertyPath: undefined,\n    seen: new Map(\n      Object.entries(_options.definitions).map(([name, def]) => [\n        def._def,\n        {\n          def: def._def,\n          path: [..._options.basePath, _options.definitionPath, name],\n          // Resolution of references will be forced even though seen, so it's ok that the schema is undefined here for now.\n          jsonSchema: undefined,\n        },\n      ]),\n    ),\n  };\n};\n","import { ZodSchema } from 'zod/v3';\nimport { Options } from './options';\nimport { parseDef } from './parse-def';\nimport { JsonSchema7Type } from './parse-types';\nimport { getRefs } from './refs';\nimport { parseAnyDef } from './parsers/any';\n\nconst zod3ToJsonSchema = (\n  schema: ZodSchema<any>,\n  options?: Partial<Options> | string,\n): JsonSchema7Type & {\n  $schema?: string;\n  definitions?: {\n    [key: string]: JsonSchema7Type;\n  };\n} => {\n  const refs = getRefs(options);\n\n  let definitions =\n    typeof options === 'object' && options.definitions\n      ? Object.entries(options.definitions).reduce(\n          (acc: { [key: string]: JsonSchema7Type }, [name, schema]) => ({\n            ...acc,\n            [name]:\n              parseDef(\n                schema._def,\n                {\n                  ...refs,\n                  currentPath: [...refs.basePath, refs.definitionPath, name],\n                },\n                true,\n              ) ?? parseAnyDef(),\n          }),\n          {},\n        )\n      : undefined;\n\n  const name =\n    typeof options === 'string'\n      ? options\n      : options?.nameStrategy === 'title'\n        ? undefined\n        : options?.name;\n\n  const main =\n    parseDef(\n      schema._def,\n      name === undefined\n        ? refs\n        : {\n            ...refs,\n            currentPath: [...refs.basePath, refs.definitionPath, name],\n          },\n      false,\n    ) ?? (parseAnyDef() as JsonSchema7Type);\n\n  const title =\n    typeof options === 'object' &&\n    options.name !== undefined &&\n    options.nameStrategy === 'title'\n      ? options.name\n      : undefined;\n\n  if (title !== undefined) {\n    main.title = title;\n  }\n\n  const combined: ReturnType<typeof zod3ToJsonSchema> =\n    name === undefined\n      ? definitions\n        ? {\n            ...main,\n            [refs.definitionPath]: definitions,\n          }\n        : main\n      : {\n          $ref: [\n            ...(refs.$refStrategy === 'relative' ? [] : refs.basePath),\n            refs.definitionPath,\n            name,\n          ].join('/'),\n          [refs.definitionPath]: {\n            ...definitions,\n            [name]: main,\n          },\n        };\n\n  combined.$schema = 'http://json-schema.org/draft-07/schema#';\n\n  return combined;\n};\n\nexport { zod3ToJsonSchema };\n","import { JSONSchema7, TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1, StandardJSONSchemaV1 } from '@standard-schema/spec';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { addAdditionalPropertiesToJsonSchema } from './add-additional-properties-to-json-schema';\nimport { zod3ToJsonSchema } from './to-json-schema/zod3-to-json-schema';\n\n/**\n * Used to mark schemas so we can support both Zod and custom schemas.\n */\nconst schemaSymbol = Symbol.for('vercel.ai.schema');\n\nexport type ValidationResult<OBJECT> =\n  | { success: true; value: OBJECT }\n  | { success: false; error: Error };\n\nexport type Schema<OBJECT = unknown> = {\n  /**\n   * Used to mark schemas so we can support both Zod and custom schemas.\n   */\n  [schemaSymbol]: true;\n\n  /**\n   * Schema type for inference.\n   */\n  _type: OBJECT;\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   * The JSON Schema for the schema. It is passed to the providers.\n   */\n  readonly jsonSchema: JSONSchema7 | PromiseLike<JSONSchema7>;\n};\n\n/**\n * Creates a schema with deferred creation.\n * This is important to reduce the startup time of the library\n * and to avoid initializing unused validators.\n *\n * @param createValidator A function that creates a schema.\n * @returns A function that returns a schema.\n */\nexport function lazySchema<SCHEMA>(\n  createSchema: () => Schema<SCHEMA>,\n): LazySchema<SCHEMA> {\n  // cache the validator to avoid initializing it multiple times\n  let schema: Schema<SCHEMA> | undefined;\n  return () => {\n    if (schema == null) {\n      schema = createSchema();\n    }\n    return schema;\n  };\n}\n\nexport type LazySchema<SCHEMA> = () => Schema<SCHEMA>;\n\nexport type ZodSchema<SCHEMA = any> =\n  | z3.Schema<SCHEMA, z3.ZodTypeDef, any>\n  | z4.core.$ZodType<SCHEMA, any>;\n\nexport type StandardSchema<SCHEMA = any> = StandardSchemaV1<unknown, SCHEMA> &\n  StandardJSONSchemaV1<unknown, SCHEMA>;\n\nexport type FlexibleSchema<SCHEMA = any> =\n  | Schema<SCHEMA>\n  | LazySchema<SCHEMA>\n  | ZodSchema<SCHEMA>\n  | StandardSchema<SCHEMA>;\n\nexport type InferSchema<SCHEMA> =\n  SCHEMA extends ZodSchema<infer T>\n    ? T\n    : SCHEMA extends StandardSchema<infer T>\n      ? T\n      : SCHEMA extends LazySchema<infer T>\n        ? T\n        : SCHEMA extends Schema<infer T>\n          ? T\n          : never;\n\n/**\n * Create a schema using a JSON Schema.\n *\n * @param jsonSchema The JSON Schema for the schema.\n * @param options.validate Optional. A validation function for the schema.\n */\nexport function jsonSchema<OBJECT = unknown>(\n  jsonSchema:\n    | JSONSchema7\n    | PromiseLike<JSONSchema7>\n    | (() => JSONSchema7 | PromiseLike<JSONSchema7>),\n  {\n    validate,\n  }: {\n    validate?: (\n      value: unknown,\n    ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n  } = {},\n): Schema<OBJECT> {\n  return {\n    [schemaSymbol]: true,\n    _type: undefined as OBJECT, // should never be used directly\n    get jsonSchema() {\n      if (typeof jsonSchema === 'function') {\n        jsonSchema = jsonSchema(); // cache the function results\n      }\n      return jsonSchema;\n    },\n    validate,\n  };\n}\n\nfunction isSchema(value: unknown): value is Schema {\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    schemaSymbol in value &&\n    value[schemaSymbol] === true &&\n    'jsonSchema' in value &&\n    'validate' in value\n  );\n}\n\nexport function asSchema<OBJECT>(\n  schema: FlexibleSchema<OBJECT> | undefined,\n): Schema<OBJECT> {\n  return schema == null\n    ? jsonSchema({ properties: {}, additionalProperties: false })\n    : isSchema(schema)\n      ? schema\n      : '~standard' in schema\n        ? schema['~standard'].vendor === 'zod'\n          ? zodSchema(schema as ZodSchema<OBJECT>)\n          : standardSchema(schema as StandardSchema<OBJECT>)\n        : schema();\n}\n\nfunction standardSchema<OBJECT>(\n  standardSchema: StandardSchema<OBJECT>,\n): Schema<OBJECT> {\n  return jsonSchema(\n    () =>\n      addAdditionalPropertiesToJsonSchema(\n        standardSchema['~standard'].jsonSchema.input({\n          target: 'draft-07',\n        }) as JSONSchema7,\n      ),\n    {\n      validate: async value => {\n        const result = await standardSchema['~standard'].validate(value);\n        return 'value' in result\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  );\n}\n\nexport function zod3Schema<OBJECT>(\n  zodSchema: z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n  options?: {\n    /**\n     * Enables support for references in the schema.\n     * This is required for recursive schemas, e.g. with `z.lazy`.\n     * However, not all language models and providers support such references.\n     * Defaults to `false`.\n     */\n    useReferences?: boolean;\n  },\n): Schema<OBJECT> {\n  // default to no references (to support openapi conversion for google)\n  const useReferences = options?.useReferences ?? false;\n\n  return jsonSchema(\n    // defer json schema creation to avoid unnecessary computation when only validation is needed\n    () =>\n      zod3ToJsonSchema(zodSchema, {\n        $refStrategy: useReferences ? 'root' : 'none',\n      }) as JSONSchema7,\n    {\n      validate: async value => {\n        const result = await zodSchema.safeParseAsync(value);\n        return result.success\n          ? { success: true, value: result.data }\n          : { success: false, error: result.error };\n      },\n    },\n  );\n}\n\nexport function zod4Schema<OBJECT>(\n  zodSchema: z4.core.$ZodType<OBJECT, any>,\n  options?: {\n    /**\n     * Enables support for references in the schema.\n     * This is required for recursive schemas, e.g. with `z.lazy`.\n     * However, not all language models and providers support such references.\n     * Defaults to `false`.\n     */\n    useReferences?: boolean;\n  },\n): Schema<OBJECT> {\n  // default to no references (to support openapi conversion for google)\n  const useReferences = options?.useReferences ?? false;\n\n  return jsonSchema(\n    // defer json schema creation to avoid unnecessary computation when only validation is needed\n    () =>\n      addAdditionalPropertiesToJsonSchema(\n        z4.toJSONSchema(zodSchema, {\n          target: 'draft-7',\n          io: 'input',\n          reused: useReferences ? 'ref' : 'inline',\n        }) as JSONSchema7,\n      ),\n    {\n      validate: async value => {\n        const result = await z4.safeParseAsync(zodSchema, value);\n        return result.success\n          ? { success: true, value: result.data }\n          : { success: false, error: result.error };\n      },\n    },\n  );\n}\n\nexport function isZod4Schema(\n  zodSchema: z4.core.$ZodType<any, any> | z3.Schema<any, z3.ZodTypeDef, any>,\n): zodSchema is z4.core.$ZodType<any, any> {\n  // https://zod.dev/library-authors?id=how-to-support-zod-3-and-zod-4-simultaneously\n  return '_zod' in zodSchema;\n}\n\nexport function zodSchema<OBJECT>(\n  zodSchema:\n    | z4.core.$ZodType<OBJECT, any>\n    | z3.Schema<OBJECT, z3.ZodTypeDef, any>,\n  options?: {\n    /**\n     * Enables support for references in the schema.\n     * This is required for recursive schemas, e.g. with `z.lazy`.\n     * However, not all language models and providers support such references.\n     * Defaults to `false`.\n     */\n    useReferences?: boolean;\n  },\n): Schema<OBJECT> {\n  if (isZod4Schema(zodSchema)) {\n    return zod4Schema(zodSchema, options);\n  } else {\n    return zod3Schema(zodSchema, options);\n  }\n}\n","import { TypeValidationContext, TypeValidationError } from '@ai-sdk/provider';\nimport { FlexibleSchema, asSchema } from './schema';\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 * @param {TypeValidationContext} options.context - Optional context about what is being validated.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n  value,\n  schema,\n  context,\n}: {\n  value: unknown;\n  schema: FlexibleSchema<OBJECT>;\n  context?: TypeValidationContext;\n}): Promise<OBJECT> {\n  const result = await safeValidateTypes({ value, schema, context });\n\n  if (!result.success) {\n    throw TypeValidationError.wrap({ value, cause: result.error, context });\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 * @param {TypeValidationContext} options.context - Optional context about what is being validated.\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  context,\n}: {\n  value: unknown;\n  schema: FlexibleSchema<OBJECT>;\n  context?: TypeValidationContext;\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 actualSchema = asSchema(schema);\n\n  try {\n    if (actualSchema.validate == null) {\n      return { success: true, value: value as OBJECT, rawValue: value };\n    }\n\n    const result = await actualSchema.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, context }),\n      rawValue: value,\n    };\n  } catch (error) {\n    return {\n      success: false,\n      error: TypeValidationError.wrap({ value, cause: error, context }),\n      rawValue: value,\n    };\n  }\n}\n","import {\n  JSONParseError,\n  JSONValue,\n  TypeValidationError,\n} from '@ai-sdk/provider';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { FlexibleSchema } from './schema';\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: FlexibleSchema<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n  text,\n  schema,\n}: {\n  text: string;\n  schema?: FlexibleSchema<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: FlexibleSchema<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n  text,\n  schema,\n}: {\n  text: string;\n  schema?: FlexibleSchema<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 { ParseResult, safeParseJSON } from './parse-json';\nimport { FlexibleSchema } from './schema';\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: FlexibleSchema<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 { FlexibleSchema } from './schema';\n\nexport async function parseProviderOptions<OPTIONS>({\n  provider,\n  providerOptions,\n  schema,\n}: {\n  provider: string;\n  providerOptions: Record<string, unknown> | undefined;\n  schema: FlexibleSchema<OPTIONS>;\n}): Promise<OPTIONS | undefined> {\n  if (providerOptions?.[provider] == null) {\n    return undefined;\n  }\n\n  const parsedProviderOptions = await safeValidateTypes<OPTIONS | 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 { ResponseHandler } from './response-handler';\nimport { getRuntimeEnvironmentUserAgent } from './get-runtime-environment-user-agent';\nimport { withUserAgentSuffix } from './with-user-agent-suffix';\nimport { VERSION } from './version';\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: withUserAgentSuffix(\n        headers,\n        `ai-sdk/provider-utils/${VERSION}`,\n        getRuntimeEnvironmentUserAgent(),\n      ),\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 } from '@ai-sdk/provider';\nimport { FlexibleSchema } from '../schema';\nimport { ToolResultOutput } from './content-part';\nimport { ModelMessage } from './model-message';\nimport { ProviderOptions } from './provider-options';\n\n/**\n * Additional options that are sent into each tool call.\n */\nexport interface ToolExecutionOptions {\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  /**\n   * User-defined context.\n   *\n   * Treat the context object as immutable inside tools.\n   * Mutating the context object can lead to race conditions and unexpected results\n   * when tools are called in parallel.\n   *\n   * If you need to mutate the context, analyze the tool calls and results\n   * in `prepareStep` and update it there.\n   *\n   * Experimental (can break in patch releases).\n   */\n  experimental_context?: unknown;\n}\n\n/**\n * Function that is called to determine if the tool needs approval before it can be executed.\n */\nexport type ToolNeedsApprovalFunction<INPUT> = (\n  input: INPUT,\n  options: {\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     * Additional context.\n     *\n     * Experimental (can break in patch releases).\n     */\n    experimental_context?: unknown;\n  },\n) => boolean | PromiseLike<boolean>;\n\nexport type ToolExecuteFunction<INPUT, OUTPUT> = (\n  input: INPUT,\n  options: ToolExecutionOptions,\n) => AsyncIterable<OUTPUT> | 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\ntype ToolOutputProperties<INPUT, OUTPUT> = NeverOptional<\n  OUTPUT,\n  | {\n      /**\n       * An async function that is called with the arguments from the tool call and produces a result.\n       * If 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 * A tool contains the description and the schema of the input that the tool expects.\n * This enables the language model to generate the input.\n *\n * The 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  /**\n   * An optional description of what the tool does.\n   * Will be used by the language model to decide whether to use the tool.\n   * Not used for provider-defined tools.\n   */\n  description?: string;\n\n  /**\n   * An optional title of the tool.\n   */\n  title?: string;\n\n  /**\n   * Additional provider-specific metadata. They are passed through\n   * to the provider from the AI SDK and enable provider-specific\n   * functionality that can be fully encapsulated in the provider.\n   */\n  providerOptions?: ProviderOptions;\n\n  /**\n   * The schema of the input that the tool expects.\n   * The language model will use this to generate the input.\n   * It is also used to validate the output of the language model.\n   *\n   * You can use descriptions on the schema properties to make the input understandable for the language model.\n   */\n  inputSchema: FlexibleSchema<INPUT>;\n\n  /**\n   * An optional list of input examples that show the language\n   * model what the input should look like.\n   */\n  inputExamples?: Array<{ input: NoInfer<INPUT> }>;\n\n  /**\n   * Whether the tool needs approval before it can be executed.\n   */\n  needsApproval?:\n    | boolean\n    | ToolNeedsApprovalFunction<[INPUT] extends [never] ? unknown : INPUT>;\n\n  /**\n   * Strict mode setting for the tool.\n   *\n   * Providers that support strict mode will use this setting to determine\n   * how the input should be generated. Strict mode will always produce\n   * valid inputs, but it might limit what input schemas are supported.\n   */\n  strict?: boolean;\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: ToolExecutionOptions) => 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 } & ToolExecutionOptions,\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] ? unknown : INPUT;\n    } & ToolExecutionOptions,\n  ) => void | PromiseLike<void>;\n} & ToolOutputProperties<INPUT, OUTPUT> & {\n    /**\n     * Optional conversion function that maps the tool result to an output that can be used by the language model.\n     *\n     * If not provided, the tool result will be sent as a JSON object.\n     */\n    toModelOutput?: (options: {\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       * The input of the tool call.\n       */\n      input: [INPUT] extends [never] ? unknown : INPUT;\n\n      /**\n       * The output of the tool call.\n       */\n      output: 0 extends 1 & OUTPUT\n        ? any\n        : [OUTPUT] extends [never]\n          ? any\n          : NoInfer<OUTPUT>;\n    }) => ToolResultOutput | PromiseLike<ToolResultOutput>;\n  } & (\n    | {\n        /**\n         * Tool with user-defined input and output schemas.\n         */\n        type?: undefined | 'function';\n      }\n    | {\n        /**\n         * Tool that is defined at runtime (e.g. an MCP tool).\n         * The types of input and output are not known at development time.\n         */\n        type: 'dynamic';\n      }\n    | {\n        /**\n         * Tool with provider-defined input and output schemas.\n         */\n        type: 'provider';\n\n        /**\n         * The ID of the tool. Must follow the format `<provider-name>.<unique-tool-name>`.\n         */\n        id: `${string}.${string}`;\n\n        /**\n         * The 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         * Whether this provider-executed tool supports deferred results.\n         *\n         * When true, the tool result may not be returned in the same turn as the\n         * tool call (e.g., when using programmatic tool calling where a server tool\n         * triggers a client-executed tool, and the server tool's result is deferred\n         * until the client tool is resolved).\n         *\n         * This flag allows the AI SDK to handle tool results that arrive without\n         * a matching tool call in the current response.\n         *\n         * @default false\n         */\n        supportsDeferredResults?: boolean;\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/**\n * Helper 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/**\n * Defines a dynamic tool.\n */\nexport function dynamicTool(tool: {\n  description?: string;\n  title?: string;\n  providerOptions?: ProviderOptions;\n  inputSchema: FlexibleSchema<unknown>;\n  execute: ToolExecuteFunction<unknown, unknown>;\n\n  /**\n   * Optional conversion function that maps the tool result to an output that can be used by the language model.\n   *\n   * If not provided, the tool result will be sent as a JSON object.\n   */\n  toModelOutput?: (options: {\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     * The input of the tool call.\n     */\n    input: unknown;\n\n    /**\n     * The output of the tool call.\n     */\n    output: unknown;\n  }) => ToolResultOutput | PromiseLike<ToolResultOutput>;\n\n  /**\n   * Whether the tool needs approval before it can be executed.\n   */\n  needsApproval?: boolean | ToolNeedsApprovalFunction<unknown>;\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 ProviderToolFactory<INPUT, ARGS extends object> = <OUTPUT>(\n  options: ARGS & {\n    execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n    needsApproval?: Tool<INPUT, OUTPUT>['needsApproval'];\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 createProviderToolFactory<INPUT, ARGS extends object>({\n  id,\n  inputSchema,\n}: {\n  id: `${string}.${string}`;\n  inputSchema: FlexibleSchema<INPUT>;\n}): ProviderToolFactory<INPUT, ARGS> {\n  return <OUTPUT>({\n    execute,\n    outputSchema,\n    needsApproval,\n    toModelOutput,\n    onInputStart,\n    onInputDelta,\n    onInputAvailable,\n    ...args\n  }: ARGS & {\n    execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n    outputSchema?: FlexibleSchema<OUTPUT>;\n    needsApproval?: Tool<INPUT, OUTPUT>['needsApproval'];\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',\n      id,\n      args,\n      inputSchema,\n      outputSchema,\n      execute,\n      needsApproval,\n      toModelOutput,\n      onInputStart,\n      onInputDelta,\n      onInputAvailable,\n    });\n}\n\nexport type ProviderToolFactoryWithOutputSchema<\n  INPUT,\n  OUTPUT,\n  ARGS extends object,\n> = (\n  options: ARGS & {\n    execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n    needsApproval?: Tool<INPUT, OUTPUT>['needsApproval'];\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 createProviderToolFactoryWithOutputSchema<\n  INPUT,\n  OUTPUT,\n  ARGS extends object,\n>({\n  id,\n  inputSchema,\n  outputSchema,\n  supportsDeferredResults,\n}: {\n  id: `${string}.${string}`;\n  inputSchema: FlexibleSchema<INPUT>;\n  outputSchema: FlexibleSchema<OUTPUT>;\n  /**\n   * Whether this provider-executed tool supports deferred results.\n   *\n   * When true, the tool result may not be returned in the same turn as the\n   * tool call (e.g., when using programmatic tool calling where a server tool\n   * triggers a client-executed tool, and the server tool's result is deferred\n   * until the client tool is resolved).\n   *\n   * @default false\n   */\n  supportsDeferredResults?: boolean;\n}): ProviderToolFactoryWithOutputSchema<INPUT, OUTPUT, ARGS> {\n  return ({\n    execute,\n    needsApproval,\n    toModelOutput,\n    onInputStart,\n    onInputDelta,\n    onInputAvailable,\n    ...args\n  }: ARGS & {\n    execute?: ToolExecuteFunction<INPUT, OUTPUT>;\n    needsApproval?: Tool<INPUT, OUTPUT>['needsApproval'];\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',\n      id,\n      args,\n      inputSchema,\n      outputSchema,\n      execute,\n      needsApproval,\n      toModelOutput,\n      onInputStart,\n      onInputDelta,\n      onInputAvailable,\n      supportsDeferredResults,\n    });\n}\n","import { MaybePromiseLike } from './maybe-promise-like';\n\nexport type Resolvable<T> = MaybePromiseLike<T> | (() => MaybePromiseLike<T>);\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 { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\nimport { FlexibleSchema } from './schema';\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: FlexibleSchema<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: FlexibleSchema<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 createJsonResponseHandler =\n  <T>(responseSchema: FlexibleSchema<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","export function withoutTrailingSlash(url: string | undefined) {\n  return url?.replace(/\\/$/, '');\n}\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const openaiErrorDataSchema = z.object({\n  error: z.object({\n    message: z.string(),\n\n    // The additional information below is handled loosely to support\n    // OpenAI-compatible providers that have slightly different error\n    // responses:\n    type: z.string().nullish(),\n    param: z.any().nullish(),\n    code: z.union([z.string(), z.number()]).nullish(),\n  }),\n});\n\nexport type OpenAIErrorData = z.infer<typeof openaiErrorDataSchema>;\n\nexport const openaiFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: openaiErrorDataSchema,\n  errorToMessage: data => data.error.message,\n});\n","export type OpenAILanguageModelCapabilities = {\n  isReasoningModel: boolean;\n  systemMessageMode: 'remove' | 'system' | 'developer';\n  supportsFlexProcessing: boolean;\n  supportsPriorityProcessing: boolean;\n\n  /**\n   * Allow temperature, topP, logProbs when reasoningEffort is none.\n   */\n  supportsNonReasoningParameters: boolean;\n};\n\nexport function getOpenAILanguageModelCapabilities(\n  modelId: string,\n): OpenAILanguageModelCapabilities {\n  const supportsFlexProcessing =\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini') ||\n    (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n\n  const supportsPriorityProcessing =\n    modelId.startsWith('gpt-4') ||\n    (modelId.startsWith('gpt-5') &&\n      !modelId.startsWith('gpt-5-nano') &&\n      !modelId.startsWith('gpt-5-chat') &&\n      !modelId.startsWith('gpt-5.4-nano')) ||\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini');\n\n  // Use allowlist approach: only known reasoning models should use 'developer' role\n  // This prevents issues with fine-tuned models, third-party models, and custom models\n  const isReasoningModel =\n    modelId.startsWith('o1') ||\n    modelId.startsWith('o3') ||\n    modelId.startsWith('o4-mini') ||\n    (modelId.startsWith('gpt-5') && !modelId.startsWith('gpt-5-chat'));\n\n  // https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n  // GPT-5.1, GPT-5.2, and GPT-5.4 support temperature, topP, logProbs when reasoningEffort is none\n  const supportsNonReasoningParameters =\n    modelId.startsWith('gpt-5.1') ||\n    modelId.startsWith('gpt-5.2') ||\n    modelId.startsWith('gpt-5.3') ||\n    modelId.startsWith('gpt-5.4');\n\n  const systemMessageMode = isReasoningModel ? 'developer' : 'system';\n\n  return {\n    supportsFlexProcessing,\n    supportsPriorityProcessing,\n    isReasoningModel,\n    systemMessageMode,\n    supportsNonReasoningParameters,\n  };\n}\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type OpenAIChatUsage = {\n  prompt_tokens?: number | null;\n  completion_tokens?: number | null;\n  total_tokens?: number | null;\n  prompt_tokens_details?: {\n    cached_tokens?: number | null;\n  } | null;\n  completion_tokens_details?: {\n    reasoning_tokens?: number | null;\n    accepted_prediction_tokens?: number | null;\n    rejected_prediction_tokens?: number | null;\n  } | null;\n};\n\nexport function convertOpenAIChatUsage(\n  usage: OpenAIChatUsage | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const promptTokens = usage.prompt_tokens ?? 0;\n  const completionTokens = usage.completion_tokens ?? 0;\n  const cachedTokens = usage.prompt_tokens_details?.cached_tokens ?? 0;\n  const reasoningTokens =\n    usage.completion_tokens_details?.reasoning_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: promptTokens,\n      noCache: promptTokens - cachedTokens,\n      cacheRead: cachedTokens,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: completionTokens,\n      text: completionTokens - reasoningTokens,\n      reasoning: reasoningTokens,\n    },\n    raw: usage,\n  };\n}\n","import {\n  SharedV3Warning,\n  LanguageModelV3Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { OpenAIChatPrompt } from './openai-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nfunction serializeToolCallArguments(input: unknown): string {\n  return JSON.stringify(input === undefined ? {} : input);\n}\n\nexport function convertToOpenAIChatMessages({\n  prompt,\n  systemMessageMode = 'system',\n}: {\n  prompt: LanguageModelV3Prompt;\n  systemMessageMode?: 'system' | 'developer' | 'remove';\n}): {\n  messages: OpenAIChatPrompt;\n  warnings: Array<SharedV3Warning>;\n} {\n  const messages: OpenAIChatPrompt = [];\n  const warnings: Array<SharedV3Warning> = [];\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        switch (systemMessageMode) {\n          case 'system': {\n            messages.push({ role: 'system', content });\n            break;\n          }\n          case 'developer': {\n            messages.push({ role: 'developer', content });\n            break;\n          }\n          case 'remove': {\n            warnings.push({\n              type: 'other',\n              message: 'system messages are removed for this model',\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck: never = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`,\n            );\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        if (content.length === 1 && content[0].type === 'text') {\n          messages.push({ role: 'user', content: content[0].text });\n          break;\n        }\n\n        messages.push({\n          role: 'user',\n          content: content.map((part, index) => {\n            switch (part.type) {\n              case 'text': {\n                return { type: 'text', text: part.text };\n              }\n              case 'file': {\n                if (part.mediaType.startsWith('image/')) {\n                  const mediaType =\n                    part.mediaType === 'image/*'\n                      ? 'image/jpeg'\n                      : part.mediaType;\n\n                  return {\n                    type: 'image_url',\n                    image_url: {\n                      url:\n                        part.data instanceof URL\n                          ? part.data.toString()\n                          : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n\n                      // OpenAI specific extension: image detail\n                      detail: part.providerOptions?.openai?.imageDetail,\n                    },\n                  };\n                } else if (part.mediaType.startsWith('audio/')) {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: 'audio file parts with URLs',\n                    });\n                  }\n\n                  switch (part.mediaType) {\n                    case 'audio/wav': {\n                      return {\n                        type: 'input_audio',\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: 'wav',\n                        },\n                      };\n                    }\n                    case 'audio/mp3':\n                    case 'audio/mpeg': {\n                      return {\n                        type: 'input_audio',\n                        input_audio: {\n                          data: convertToBase64(part.data),\n                          format: 'mp3',\n                        },\n                      };\n                    }\n\n                    default: {\n                      throw new UnsupportedFunctionalityError({\n                        functionality: `audio content parts with media type ${part.mediaType}`,\n                      });\n                    }\n                  }\n                } else if (part.mediaType === 'application/pdf') {\n                  if (part.data instanceof URL) {\n                    throw new UnsupportedFunctionalityError({\n                      functionality: 'PDF file parts with URLs',\n                    });\n                  }\n\n                  return {\n                    type: 'file',\n                    file:\n                      typeof part.data === 'string' &&\n                      part.data.startsWith('file-')\n                        ? { file_id: part.data }\n                        : {\n                            filename: part.filename ?? `part-${index}.pdf`,\n                            file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n                          },\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        let text = '';\n        const toolCalls: Array<{\n          id: string;\n          type: 'function';\n          function: { name: string; arguments: string };\n        }> = [];\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              text += part.text;\n              break;\n            }\n            case 'tool-call': {\n              toolCalls.push({\n                id: part.toolCallId,\n                type: 'function',\n                function: {\n                  name: part.toolName,\n                  arguments: serializeToolCallArguments(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          if (toolResponse.type === 'tool-approval-response') {\n            continue;\n          }\n          const output = toolResponse.output;\n\n          let contentValue: string;\n          switch (output.type) {\n            case 'text':\n            case 'error-text':\n              contentValue = output.value;\n              break;\n            case 'execution-denied':\n              contentValue = output.reason ?? 'Tool execution denied.';\n              break;\n            case 'content':\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n          }\n\n          messages.push({\n            role: 'tool',\n            tool_call_id: toolResponse.toolCallId,\n            content: contentValue,\n          });\n        }\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  return { messages, warnings };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created ? new Date(created * 1000) : undefined,\n  };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\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 'other';\n  }\n}\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\n\nexport interface OpenAIChatFunctionTool {\n  type: 'function';\n  function: {\n    name: string;\n    description: string | undefined;\n    parameters: JSONSchema7;\n    strict?: boolean;\n  };\n}\n\nexport type OpenAIChatToolChoice =\n  | 'auto'\n  | 'none'\n  | 'required'\n  | { type: 'function'; function: { name: string } };\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string().nullish(),\n      created: z.number().nullish(),\n      model: z.string().nullish(),\n      choices: z.array(\n        z.object({\n          message: z.object({\n            role: z.literal('assistant').nullish(),\n            content: z.string().nullish(),\n            tool_calls: z\n              .array(\n                z.object({\n                  id: z.string().nullish(),\n                  type: z.literal('function'),\n                  function: z.object({\n                    name: z.string(),\n                    arguments: z.string(),\n                  }),\n                }),\n              )\n              .nullish(),\n            annotations: z\n              .array(\n                z.object({\n                  type: z.literal('url_citation'),\n                  url_citation: z.object({\n                    start_index: z.number(),\n                    end_index: z.number(),\n                    url: z.string(),\n                    title: 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: z\n        .object({\n          prompt_tokens: z.number().nullish(),\n          completion_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          prompt_tokens_details: z\n            .object({\n              cached_tokens: z.number().nullish(),\n            })\n            .nullish(),\n          completion_tokens_details: z\n            .object({\n              reasoning_tokens: z.number().nullish(),\n              accepted_prediction_tokens: z.number().nullish(),\n              rejected_prediction_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiChatChunkSchema = lazySchema(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            delta: z\n              .object({\n                role: z.enum(['assistant']).nullish(),\n                content: z.string().nullish(),\n                tool_calls: z\n                  .array(\n                    z.object({\n                      index: z.number(),\n                      id: z.string().nullish(),\n                      type: z.literal('function').nullish(),\n                      function: z.object({\n                        name: z.string().nullish(),\n                        arguments: z.string().nullish(),\n                      }),\n                    }),\n                  )\n                  .nullish(),\n                annotations: z\n                  .array(\n                    z.object({\n                      type: z.literal('url_citation'),\n                      url_citation: z.object({\n                        start_index: z.number(),\n                        end_index: z.number(),\n                        url: z.string(),\n                        title: z.string(),\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: z\n          .object({\n            prompt_tokens: z.number().nullish(),\n            completion_tokens: z.number().nullish(),\n            total_tokens: z.number().nullish(),\n            prompt_tokens_details: z\n              .object({\n                cached_tokens: z.number().nullish(),\n              })\n              .nullish(),\n            completion_tokens_details: z\n              .object({\n                reasoning_tokens: z.number().nullish(),\n                accepted_prediction_tokens: z.number().nullish(),\n                rejected_prediction_tokens: z.number().nullish(),\n              })\n              .nullish(),\n          })\n          .nullish(),\n      }),\n      openaiErrorDataSchema,\n    ]),\n  ),\n);\n\nexport type OpenAIChatResponse = InferSchema<typeof openaiChatResponseSchema>;\n\nexport type OpenAIChatChunk = InferSchema<typeof openaiChatChunkSchema>;\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAIChatModelId =\n  | 'o1'\n  | 'o1-2024-12-17'\n  | 'o3-mini'\n  | 'o3-mini-2025-01-31'\n  | 'o3'\n  | 'o3-2025-04-16'\n  | '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-12-17'\n  | 'gpt-4o-audio-preview-2025-06-03'\n  | 'gpt-4o-mini'\n  | 'gpt-4o-mini-2024-07-18'\n  | 'gpt-4o-mini-audio-preview'\n  | 'gpt-4o-mini-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-3.5-turbo-0125'\n  | 'gpt-3.5-turbo'\n  | 'gpt-3.5-turbo-1106'\n  | 'gpt-3.5-turbo-16k'\n  | 'gpt-5'\n  | 'gpt-5-2025-08-07'\n  | 'gpt-5-mini'\n  | 'gpt-5-mini-2025-08-07'\n  | 'gpt-5-nano'\n  | 'gpt-5-nano-2025-08-07'\n  | 'gpt-5-chat-latest'\n  | 'gpt-5.1'\n  | 'gpt-5.1-2025-11-13'\n  | 'gpt-5.1-chat-latest'\n  | 'gpt-5.2'\n  | 'gpt-5.2-2025-12-11'\n  | 'gpt-5.2-chat-latest'\n  | 'gpt-5.2-pro'\n  | 'gpt-5.2-pro-2025-12-11'\n  | 'gpt-5.3-chat-latest'\n  | 'gpt-5.4'\n  | 'gpt-5.4-2026-03-05'\n  | 'gpt-5.4-mini'\n  | 'gpt-5.4-mini-2026-03-17'\n  | 'gpt-5.4-nano'\n  | 'gpt-5.4-nano-2026-03-17'\n  | 'gpt-5.4-pro'\n  | 'gpt-5.4-pro-2026-03-05'\n  | (string & {});\n\nexport const openaiLanguageModelChatOptions = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Modify the likelihood of specified tokens appearing in the completion.\n       *\n       * Accepts a JSON object that maps tokens (specified by their token ID in\n       * the GPT tokenizer) to an associated bias value from -100 to 100.\n       */\n      logitBias: z.record(z.coerce.number<string>(), z.number()).optional(),\n\n      /**\n       * Return the log probabilities of the tokens.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       */\n      logprobs: z.union([z.boolean(), z.number()]).optional(),\n\n      /**\n       * Whether to enable parallel function calling during tool use. Default to true.\n       */\n      parallelToolCalls: z.boolean().optional(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse.\n       */\n      user: z.string().optional(),\n\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`.\n       */\n      reasoningEffort: z\n        .enum(['none', 'minimal', 'low', 'medium', 'high', 'xhigh'])\n        .optional(),\n\n      /**\n       * Maximum number of completion tokens to generate. Useful for reasoning models.\n       */\n      maxCompletionTokens: z.number().optional(),\n\n      /**\n       * Whether to enable persistence in responses API.\n       */\n      store: z.boolean().optional(),\n\n      /**\n       * Metadata to associate with the request.\n       */\n      metadata: z.record(z.string().max(64), z.string().max(512)).optional(),\n\n      /**\n       * Parameters for prediction mode.\n       */\n      prediction: z.record(z.string(), z.any()).optional(),\n\n      /**\n       * Service tier for the request.\n       * - 'auto': Default service tier. The request will be processed with the service tier configured in the\n       *           Project settings. Unless otherwise configured, the Project will use 'default'.\n       * - 'flex': 50% cheaper processing at the cost of increased latency. Only available for o3 and o4-mini models.\n       * - 'priority': Higher-speed processing with predictably low latency at premium cost. Available for Enterprise customers.\n       * - 'default': The request will be processed with the standard pricing and performance for the selected model.\n       *\n       * @default 'auto'\n       */\n      serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).optional(),\n\n      /**\n       * Whether to use strict JSON schema validation.\n       *\n       * @default true\n       */\n      strictJsonSchema: z.boolean().optional(),\n\n      /**\n       * Controls the verbosity of the model's responses.\n       * Lower values will result in more concise responses, while higher values will result in more verbose responses.\n       */\n      textVerbosity: z.enum(['low', 'medium', 'high']).optional(),\n\n      /**\n       * A cache key for prompt caching. Allows manual control over prompt caching behavior.\n       * Useful for improving cache hit rates and working around automatic caching issues.\n       */\n      promptCacheKey: z.string().optional(),\n\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Currently only available for 5.1 series models.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z.enum(['in_memory', '24h']).optional(),\n\n      /**\n       * A stable identifier used to help detect users of your application\n       * that may be violating OpenAI's usage policies. The IDs should be a\n       * string that uniquely identifies each user. We recommend hashing their\n       * username or email address, in order to avoid sending us any identifying\n       * information.\n       */\n      safetyIdentifier: z.string().optional(),\n\n      /**\n       * Override the system message mode for this model.\n       * - 'system': Use the 'system' role for system messages (default for most models)\n       * - 'developer': Use the 'developer' role for system messages (used by reasoning models)\n       * - 'remove': Remove system messages entirely\n       *\n       * If not specified, the mode is automatically determined based on the model.\n       */\n      systemMessageMode: z.enum(['system', 'developer', 'remove']).optional(),\n\n      /**\n       * Force treating this model as a reasoning model.\n       *\n       * This is useful for \"stealth\" reasoning models (e.g. via a custom baseURL)\n       * where the model ID is not recognized by the SDK's allowlist.\n       *\n       * When enabled, the SDK applies reasoning-model parameter compatibility rules\n       * and defaults `systemMessageMode` to `developer` unless overridden.\n       */\n      forceReasoning: z.boolean().optional(),\n    }),\n  ),\n);\n\nexport type OpenAILanguageModelChatOptions = InferSchema<\n  typeof openaiLanguageModelChatOptions\n>;\n","import {\n  LanguageModelV3CallOptions,\n  SharedV3Warning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n  OpenAIChatToolChoice,\n  OpenAIChatFunctionTool,\n} from './openai-chat-api';\n\nexport function prepareChatTools({\n  tools,\n  toolChoice,\n}: {\n  tools: LanguageModelV3CallOptions['tools'];\n  toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n}): {\n  tools?: OpenAIChatFunctionTool[];\n  toolChoice?: OpenAIChatToolChoice;\n  toolWarnings: Array<SharedV3Warning>;\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: SharedV3Warning[] = [];\n\n  if (tools == null) {\n    return { tools: undefined, toolChoice: undefined, toolWarnings };\n  }\n\n  const openaiTools: OpenAIChatFunctionTool[] = [];\n\n  for (const tool of tools) {\n    switch (tool.type) {\n      case 'function':\n        openaiTools.push({\n          type: 'function',\n          function: {\n            name: tool.name,\n            description: tool.description,\n            parameters: tool.inputSchema,\n            ...(tool.strict != null ? { strict: tool.strict } : {}),\n          },\n        });\n        break;\n      default:\n        toolWarnings.push({\n          type: 'unsupported',\n          feature: `tool type: ${tool.type}`,\n        });\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  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n  SharedV3ProviderMetadata,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  ParseResult,\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  generateId,\n  isParsableJson,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\nimport {\n  OpenAIChatUsage,\n  convertOpenAIChatUsage,\n} from './convert-openai-chat-usage';\nimport { convertToOpenAIChatMessages } from './convert-to-openai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n  OpenAIChatChunk,\n  openaiChatChunkSchema,\n  openaiChatResponseSchema,\n} from './openai-chat-api';\nimport {\n  OpenAIChatModelId,\n  openaiLanguageModelChatOptions,\n} from './openai-chat-options';\nimport { prepareChatTools } from './openai-chat-prepare-tools';\n\ntype OpenAIChatConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class OpenAIChatLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: OpenAIChatModelId;\n\n  readonly supportedUrls = {\n    'image/*': [/^https?:\\/\\/.*$/],\n  };\n\n  private readonly config: OpenAIChatConfig;\n\n  constructor(modelId: OpenAIChatModelId, config: OpenAIChatConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences,\n    responseFormat,\n    seed,\n    tools,\n    toolChoice,\n    providerOptions,\n  }: LanguageModelV3CallOptions) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openaiOptions =\n      (await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiLanguageModelChatOptions,\n      })) ?? {};\n\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n    const isReasoningModel =\n      openaiOptions.forceReasoning ?? modelCapabilities.isReasoningModel;\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported', feature: 'topK' });\n    }\n\n    const { messages, warnings: messageWarnings } = convertToOpenAIChatMessages(\n      {\n        prompt,\n        systemMessageMode:\n          openaiOptions.systemMessageMode ??\n          (isReasoningModel\n            ? 'developer'\n            : modelCapabilities.systemMessageMode),\n      },\n    );\n\n    warnings.push(...messageWarnings);\n\n    const strictJsonSchema = openaiOptions.strictJsonSchema ?? true;\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          ? responseFormat.schema != null\n            ? {\n                type: 'json_schema',\n                json_schema: {\n                  schema: responseFormat.schema,\n                  strict: strictJsonSchema,\n                  name: responseFormat.name ?? 'response',\n                  description: responseFormat.description,\n                },\n              }\n            : { type: 'json_object' }\n          : undefined,\n      stop: stopSequences,\n      seed,\n      verbosity: openaiOptions.textVerbosity,\n\n      // openai specific settings:\n      // TODO AI SDK 6: remove, we auto-map maxOutputTokens now\n      max_completion_tokens: openaiOptions.maxCompletionTokens,\n      store: openaiOptions.store,\n      metadata: openaiOptions.metadata,\n      prediction: openaiOptions.prediction,\n      reasoning_effort: openaiOptions.reasoningEffort,\n      service_tier: openaiOptions.serviceTier,\n      prompt_cache_key: openaiOptions.promptCacheKey,\n      prompt_cache_retention: openaiOptions.promptCacheRetention,\n      safety_identifier: openaiOptions.safetyIdentifier,\n\n      // messages:\n      messages,\n    };\n\n    // remove unsupported settings for reasoning models\n    // see https://platform.openai.com/docs/guides/reasoning#limitations\n    if (isReasoningModel) {\n      // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n      //  https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n      if (\n        openaiOptions.reasoningEffort !== 'none' ||\n        !modelCapabilities.supportsNonReasoningParameters\n      ) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = undefined;\n          warnings.push({\n            type: 'unsupported',\n            feature: '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',\n            feature: 'topP',\n            details: 'topP 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      }\n\n      if (baseArgs.frequency_penalty != null) {\n        baseArgs.frequency_penalty = undefined;\n        warnings.push({\n          type: 'unsupported',\n          feature: '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',\n          feature: '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\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',\n          feature: '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      !modelCapabilities.supportsFlexProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'flex processing is only available for o3, o4-mini, and gpt-5 models',\n      });\n      baseArgs.service_tier = undefined;\n    }\n\n    // Validate priority processing support\n    if (\n      openaiOptions.serviceTier === 'priority' &&\n      !modelCapabilities.supportsPriorityProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n      });\n      baseArgs.service_tier = undefined;\n    }\n\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings,\n    } = prepareChatTools({\n      tools,\n      toolChoice,\n    });\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: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const { args: body, warnings } = await this.getArgs(options);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/chat/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiChatResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = response.choices[0];\n    const content: Array<LanguageModelV3Content> = [];\n\n    // text content:\n    const text = choice.message.content;\n    if (text != null && text.length > 0) {\n      content.push({ type: 'text', text });\n    }\n\n    // tool calls:\n    for (const toolCall of choice.message.tool_calls ?? []) {\n      content.push({\n        type: 'tool-call' as const,\n        toolCallId: toolCall.id ?? generateId(),\n        toolName: toolCall.function.name,\n        input: toolCall.function.arguments!,\n      });\n    }\n\n    // annotations/citations:\n    for (const annotation of choice.message.annotations ?? []) {\n      content.push({\n        type: 'source',\n        sourceType: 'url',\n        id: generateId(),\n        url: annotation.url_citation.url,\n        title: annotation.url_citation.title,\n      });\n    }\n\n    // provider metadata:\n    const completionTokenDetails = response.usage?.completion_tokens_details;\n    const promptTokenDetails = response.usage?.prompt_tokens_details;\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n    if (completionTokenDetails?.accepted_prediction_tokens != null) {\n      providerMetadata.openai.acceptedPredictionTokens =\n        completionTokenDetails?.accepted_prediction_tokens;\n    }\n    if (completionTokenDetails?.rejected_prediction_tokens != null) {\n      providerMetadata.openai.rejectedPredictionTokens =\n        completionTokenDetails?.rejected_prediction_tokens;\n    }\n    if (choice.logprobs?.content != null) {\n      providerMetadata.openai.logprobs = choice.logprobs.content;\n    }\n\n    return {\n      content,\n      finishReason: {\n        unified: mapOpenAIFinishReason(choice.finish_reason),\n        raw: choice.finish_reason ?? undefined,\n      },\n      usage: convertOpenAIChatUsage(response.usage),\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: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const body = {\n      ...args,\n      stream: true,\n      stream_options: {\n        include_usage: true,\n      },\n    };\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/chat/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiChatChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const toolCalls: Array<{\n      id: string;\n      type: 'function';\n      function: {\n        name: string;\n        arguments: string;\n      };\n      hasFinished: boolean;\n    }> = [];\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    let usage: OpenAIChatUsage | undefined = undefined;\n    let metadataExtracted = false;\n    let isActiveText = false;\n\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIChatChunk>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = { unified: 'error', raw: undefined };\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 = { unified: 'error', raw: undefined };\n              controller.enqueue({ type: 'error', error: value.error });\n              return;\n            }\n\n            // extract and emit response metadata once. Usually it comes in the first chunk.\n            // Azure may prepend a chunk with a `\"prompt_filter_results\"` key which does not contain other metadata,\n            // https://learn.microsoft.com/en-us/azure/ai-foundry/openai/concepts/content-filter-annotations?tabs=powershell\n            if (!metadataExtracted) {\n              const metadata = getResponseMetadata(value);\n              if (Object.values(metadata).some(Boolean)) {\n                metadataExtracted = true;\n                controller.enqueue({\n                  type: 'response-metadata',\n                  ...getResponseMetadata(value),\n                });\n              }\n            }\n\n            if (value.usage != null) {\n              usage = value.usage;\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 = {\n                unified: mapOpenAIFinishReason(choice.finish_reason),\n                raw: choice.finish_reason,\n              };\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 (\n                    toolCallDelta.type != null &&\n                    toolCallDelta.type !== 'function'\n                  ) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function' type.`,\n                    });\n                  }\n\n                  if (toolCallDelta.id == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'id' to be a string.`,\n                    });\n                  }\n\n                  if (toolCallDelta.function?.name == null) {\n                    throw new InvalidResponseDataError({\n                      data: toolCallDelta,\n                      message: `Expected 'function.name' to be a string.`,\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-start',\n                    id: toolCallDelta.id,\n                    toolName: toolCallDelta.function.name,\n                  });\n\n                  toolCalls[index] = {\n                    id: toolCallDelta.id,\n                    type: 'function',\n                    function: {\n                      name: toolCallDelta.function.name,\n                      arguments: toolCallDelta.function.arguments ?? '',\n                    },\n                    hasFinished: false,\n                  };\n\n                  const toolCall = toolCalls[index];\n\n                  if (\n                    toolCall.function?.name != null &&\n                    toolCall.function?.arguments != null\n                  ) {\n                    // send delta if the argument text has already started:\n                    if (toolCall.function.arguments.length > 0) {\n                      controller.enqueue({\n                        type: 'tool-input-delta',\n                        id: toolCall.id,\n                        delta: toolCall.function.arguments,\n                      });\n                    }\n\n                    // check if tool call is complete\n                    // (some providers send the full tool call in one chunk):\n                    if (isParsableJson(toolCall.function.arguments)) {\n                      controller.enqueue({\n                        type: 'tool-input-end',\n                        id: toolCall.id,\n                      });\n\n                      controller.enqueue({\n                        type: 'tool-call',\n                        toolCallId: toolCall.id ?? generateId(),\n                        toolName: toolCall.function.name,\n                        input: toolCall.function.arguments,\n                      });\n                      toolCall.hasFinished = true;\n                    }\n                  }\n\n                  continue;\n                }\n\n                // existing tool call, merge if not finished\n                const toolCall = toolCalls[index];\n\n                if (toolCall.hasFinished) {\n                  continue;\n                }\n\n                if (toolCallDelta.function?.arguments != null) {\n                  toolCall.function!.arguments +=\n                    toolCallDelta.function?.arguments ?? '';\n                }\n\n                // send delta\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.id,\n                  delta: toolCallDelta.function.arguments ?? '',\n                });\n\n                // check if tool call is complete\n                if (\n                  toolCall.function?.name != null &&\n                  toolCall.function?.arguments != null &&\n                  isParsableJson(toolCall.function.arguments)\n                ) {\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCall.id,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId: toolCall.id ?? generateId(),\n                    toolName: toolCall.function.name,\n                    input: toolCall.function.arguments,\n                  });\n                  toolCall.hasFinished = true;\n                }\n              }\n            }\n\n            // annotations/citations:\n            if (delta.annotations != null) {\n              for (const annotation of delta.annotations) {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: generateId(),\n                  url: annotation.url_citation.url,\n                  title: annotation.url_citation.title,\n                });\n              }\n            }\n          },\n\n          flush(controller) {\n            if (isActiveText) {\n              controller.enqueue({ type: 'text-end', id: '0' });\n            }\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage: convertOpenAIChatUsage(usage),\n              ...(providerMetadata != null ? { providerMetadata } : {}),\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type OpenAICompletionUsage = {\n  prompt_tokens?: number | null;\n  completion_tokens?: number | null;\n  total_tokens?: number | null;\n};\n\nexport function convertOpenAICompletionUsage(\n  usage: OpenAICompletionUsage | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const promptTokens = usage.prompt_tokens ?? 0;\n  const completionTokens = usage.completion_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: usage.prompt_tokens ?? undefined,\n      noCache: promptTokens,\n      cacheRead: undefined,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: usage.completion_tokens ?? undefined,\n      text: completionTokens,\n      reasoning: undefined,\n    },\n    raw: usage,\n  };\n}\n","import {\n  InvalidPromptError,\n  LanguageModelV3Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenAICompletionPrompt({\n  prompt,\n  user = 'user',\n  assistant = 'assistant',\n}: {\n  prompt: LanguageModelV3Prompt;\n  user?: string;\n  assistant?: string;\n}): {\n  prompt: string;\n  stopSequences?: string[];\n} {\n  // transform to a chat message format:\n  let text = '';\n\n  // if first message is a system message, add it to the text:\n  if (prompt[0].role === 'system') {\n    text += `${prompt[0].content}\\n\\n`;\n    prompt = prompt.slice(1);\n  }\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        throw new InvalidPromptError({\n          message: 'Unexpected system message in prompt: ${content}',\n          prompt,\n        });\n      }\n\n      case 'user': {\n        const userMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n            }\n          })\n          .filter(Boolean)\n          .join('');\n\n        text += `${user}:\\n${userMessage}\\n\\n`;\n        break;\n      }\n\n      case 'assistant': {\n        const assistantMessage = content\n          .map(part => {\n            switch (part.type) {\n              case 'text': {\n                return part.text;\n              }\n              case 'tool-call': {\n                throw new UnsupportedFunctionalityError({\n                  functionality: 'tool-call messages',\n                });\n              }\n            }\n          })\n          .join('');\n\n        text += `${assistant}:\\n${assistantMessage}\\n\\n`;\n        break;\n      }\n\n      case 'tool': {\n        throw new UnsupportedFunctionalityError({\n          functionality: 'tool messages',\n        });\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // Assistant message prefix:\n  text += `${assistant}:\\n`;\n\n  return {\n    prompt: text,\n    stopSequences: [`\\n${user}:`],\n  };\n}\n","export function getResponseMetadata({\n  id,\n  model,\n  created,\n}: {\n  id?: string | undefined | null;\n  created?: number | undefined | null;\n  model?: string | undefined | null;\n}) {\n  return {\n    id: id ?? undefined,\n    modelId: model ?? undefined,\n    timestamp: created != null ? new Date(created * 1000) : undefined,\n  };\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIFinishReason(\n  finishReason: string | null | undefined,\n): LanguageModelV3FinishReason['unified'] {\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 'other';\n  }\n}\n","import { z } from 'zod/v4';\nimport { openaiErrorDataSchema } from '../openai-error';\nimport { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string().nullish(),\n      created: z.number().nullish(),\n      model: z.string().nullish(),\n      choices: z.array(\n        z.object({\n          text: z.string(),\n          finish_reason: z.string(),\n          logprobs: z\n            .object({\n              tokens: z.array(z.string()),\n              token_logprobs: z.array(z.number()),\n              top_logprobs: z.array(z.record(z.string(), z.number())).nullish(),\n            })\n            .nullish(),\n        }),\n      ),\n      usage: z\n        .object({\n          prompt_tokens: z.number(),\n          completion_tokens: z.number(),\n          total_tokens: z.number(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiCompletionChunkSchema = lazySchema(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        id: z.string().nullish(),\n        created: z.number().nullish(),\n        model: z.string().nullish(),\n        choices: z.array(\n          z.object({\n            text: z.string(),\n            finish_reason: z.string().nullish(),\n            index: z.number(),\n            logprobs: z\n              .object({\n                tokens: z.array(z.string()),\n                token_logprobs: z.array(z.number()),\n                top_logprobs: z\n                  .array(z.record(z.string(), z.number()))\n                  .nullish(),\n              })\n              .nullish(),\n          }),\n        ),\n        usage: z\n          .object({\n            prompt_tokens: z.number(),\n            completion_tokens: z.number(),\n            total_tokens: z.number(),\n          })\n          .nullish(),\n      }),\n      openaiErrorDataSchema,\n    ]),\n  ),\n);\n\nexport type OpenAICompletionChunk = InferSchema<\n  typeof openaiCompletionChunkSchema\n>;\n\nexport type OpenAICompletionResponse = InferSchema<\n  typeof openaiCompletionResponseSchema\n>;\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://platform.openai.com/docs/models\nexport type OpenAICompletionModelId =\n  | 'gpt-3.5-turbo-instruct'\n  | 'gpt-3.5-turbo-instruct-0914'\n  | (string & {});\n\nexport const openaiLanguageModelCompletionOptions = lazySchema(() =>\n  zodSchema(\n    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. You\n       * can use this tokenizer tool to convert text to token IDs. Mathematically,\n       * the bias is added to the logits generated by the model prior to sampling.\n       * The exact effect will vary per model, but values between -1 and 1 should\n       * decrease or increase likelihood of selection; values like -100 or 100\n       * should result in a ban or exclusive selection of the relevant token.\n       *\n       * As an example, you can pass {\"50256\": -100} to prevent the <|endoftext|>\n       * token from being generated.\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 OpenAI to\n       * monitor and detect abuse. Learn more.\n       */\n      user: z.string().optional(),\n\n      /**\n       * Return the log probabilities of the tokens. Including logprobs will increase\n       * the response size and can slow down response times. However, it can\n       * be useful to better understand how the model is behaving.\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\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);\n\nexport type OpenAILanguageModelCompletionOptions = InferSchema<\n  typeof openaiLanguageModelCompletionOptions\n>;\n","import {\n  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3FinishReason,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n  SharedV3ProviderMetadata,\n  SharedV3Warning,\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 { openaiFailedResponseHandler } from '../openai-error';\nimport {\n  convertOpenAICompletionUsage,\n  OpenAICompletionUsage,\n} from './convert-openai-completion-usage';\nimport { convertToOpenAICompletionPrompt } from './convert-to-openai-completion-prompt';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapOpenAIFinishReason } from './map-openai-finish-reason';\nimport {\n  OpenAICompletionChunk,\n  openaiCompletionChunkSchema,\n  openaiCompletionResponseSchema,\n} from './openai-completion-api';\nimport {\n  OpenAICompletionModelId,\n  openaiLanguageModelCompletionOptions,\n} from './openai-completion-options';\n\ntype OpenAICompletionConfig = {\n  provider: string;\n  headers: () => Record<string, string | undefined>;\n  url: (options: { modelId: string; path: string }) => string;\n  fetch?: FetchFunction;\n};\n\nexport class OpenAICompletionLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: OpenAICompletionModelId;\n\n  private readonly config: OpenAICompletionConfig;\n\n  private get providerOptionsName(): string {\n    return this.config.provider.split('.')[0].trim();\n  }\n\n  constructor(\n    modelId: OpenAICompletionModelId,\n    config: OpenAICompletionConfig,\n  ) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    // No URLs are supported for completion models.\n  };\n\n  private async getArgs({\n    prompt,\n    maxOutputTokens,\n    temperature,\n    topP,\n    topK,\n    frequencyPenalty,\n    presencePenalty,\n    stopSequences: userStopSequences,\n    responseFormat,\n    tools,\n    toolChoice,\n    seed,\n    providerOptions,\n  }: LanguageModelV3CallOptions) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openaiOptions = {\n      ...(await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiLanguageModelCompletionOptions,\n      })),\n      ...(await parseProviderOptions({\n        provider: this.providerOptionsName,\n        providerOptions,\n        schema: openaiLanguageModelCompletionOptions,\n      })),\n    };\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported', feature: 'topK' });\n    }\n\n    if (tools?.length) {\n      warnings.push({ type: 'unsupported', feature: 'tools' });\n    }\n\n    if (toolChoice != null) {\n      warnings.push({ type: 'unsupported', feature: 'toolChoice' });\n    }\n\n    if (responseFormat != null && responseFormat.type !== 'text') {\n      warnings.push({\n        type: 'unsupported',\n        feature: '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: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: args,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiCompletionResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const choice = response.choices[0];\n\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n\n    if (choice.logprobs != null) {\n      providerMetadata.openai.logprobs = choice.logprobs;\n    }\n\n    return {\n      content: [{ type: 'text', text: choice.text }],\n      usage: convertOpenAICompletionUsage(response.usage),\n      finishReason: {\n        unified: mapOpenAIFinishReason(choice.finish_reason),\n        raw: choice.finish_reason ?? undefined,\n      },\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: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const { args, warnings } = await this.getArgs(options);\n\n    const body = {\n      ...args,\n      stream: true,\n\n      stream_options: {\n        include_usage: true,\n      },\n    };\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/completions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiCompletionChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    const providerMetadata: SharedV3ProviderMetadata = { openai: {} };\n    let usage: OpenAICompletionUsage | undefined = undefined;\n    let isFirstChunk = true;\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAICompletionChunk>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = { unified: 'error', raw: undefined };\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 = { unified: 'error', raw: undefined };\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 = value.usage;\n            }\n\n            const choice = value.choices[0];\n\n            if (choice?.finish_reason != null) {\n              finishReason = {\n                unified: mapOpenAIFinishReason(choice.finish_reason),\n                raw: choice.finish_reason,\n              };\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: convertOpenAICompletionUsage(usage),\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAIEmbeddingModelId =\n  | 'text-embedding-3-small'\n  | 'text-embedding-3-large'\n  | 'text-embedding-ada-002'\n  | (string & {});\n\nexport const openaiEmbeddingModelOptions = lazySchema(() =>\n  zodSchema(\n    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 OpenAI to\n       * monitor and detect abuse. Learn more.\n       */\n      user: z.string().optional(),\n    }),\n  ),\n);\n\nexport type OpenAIEmbeddingModelOptions = InferSchema<\n  typeof openaiEmbeddingModelOptions\n>;\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiTextEmbeddingResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      data: z.array(z.object({ embedding: z.array(z.number()) })),\n      usage: z.object({ prompt_tokens: z.number() }).nullish(),\n    }),\n  ),\n);\n","import {\n  EmbeddingModelV3,\n  TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport {\n  OpenAIEmbeddingModelId,\n  openaiEmbeddingModelOptions,\n} from './openai-embedding-options';\nimport { openaiTextEmbeddingResponseSchema } from './openai-embedding-api';\n\nexport class OpenAIEmbeddingModel implements EmbeddingModelV3 {\n  readonly specificationVersion = 'v3';\n  readonly modelId: OpenAIEmbeddingModelId;\n  readonly maxEmbeddingsPerCall = 2048;\n  readonly supportsParallelCalls = true;\n\n  private readonly config: OpenAIConfig;\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(modelId: OpenAIEmbeddingModelId, config: OpenAIConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  async doEmbed({\n    values,\n    headers,\n    abortSignal,\n    providerOptions,\n  }: Parameters<EmbeddingModelV3['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV3['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: openaiEmbeddingModelOptions,\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      warnings: [],\n      embeddings: response.data.map(item => item.embedding),\n      usage: response.usage\n        ? { tokens: response.usage.prompt_tokens }\n        : undefined,\n      response: { headers: responseHeaders, body: rawValue },\n    };\n  }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// minimal version of the schema, focused on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const openaiImageResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      created: z.number().nullish(),\n      data: z.array(\n        z.object({\n          b64_json: z.string(),\n          revised_prompt: z.string().nullish(),\n        }),\n      ),\n      background: z.string().nullish(),\n      output_format: z.string().nullish(),\n      size: z.string().nullish(),\n      quality: z.string().nullish(),\n      usage: z\n        .object({\n          input_tokens: z.number().nullish(),\n          output_tokens: z.number().nullish(),\n          total_tokens: z.number().nullish(),\n          input_tokens_details: z\n            .object({\n              image_tokens: z.number().nullish(),\n              text_tokens: z.number().nullish(),\n            })\n            .nullish(),\n        })\n        .nullish(),\n    }),\n  ),\n);\n","export type OpenAIImageModelId =\n  | 'dall-e-3'\n  | 'dall-e-2'\n  | 'gpt-image-1'\n  | 'gpt-image-1-mini'\n  | 'gpt-image-1.5'\n  | 'chatgpt-image-latest'\n  | (string & {});\n\n// https://platform.openai.com/docs/guides/images\nexport const modelMaxImagesPerCall: Record<OpenAIImageModelId, number> = {\n  'dall-e-3': 1,\n  'dall-e-2': 10,\n  'gpt-image-1': 10,\n  'gpt-image-1-mini': 10,\n  'gpt-image-1.5': 10,\n  'chatgpt-image-latest': 10,\n};\n\nconst defaultResponseFormatPrefixes = [\n  'chatgpt-image-',\n  'gpt-image-1-mini',\n  'gpt-image-1.5',\n  'gpt-image-1',\n];\n\nexport function hasDefaultResponseFormat(modelId: string): boolean {\n  return defaultResponseFormatPrefixes.some(prefix =>\n    modelId.startsWith(prefix),\n  );\n}\n","import {\n  ImageModelV3,\n  ImageModelV3File,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertBase64ToUint8Array,\n  convertToFormData,\n  createJsonResponseHandler,\n  downloadBlob,\n  postFormDataToApi,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiImageResponseSchema } from './openai-image-api';\nimport {\n  OpenAIImageModelId,\n  hasDefaultResponseFormat,\n  modelMaxImagesPerCall,\n} from './openai-image-options';\n\ninterface OpenAIImageModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\nexport class OpenAIImageModel implements ImageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get maxImagesPerCall(): number {\n    return modelMaxImagesPerCall[this.modelId] ?? 1;\n  }\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAIImageModelId,\n    private readonly config: OpenAIImageModelConfig,\n  ) {}\n\n  async doGenerate({\n    prompt,\n    files,\n    mask,\n    n,\n    size,\n    aspectRatio,\n    seed,\n    providerOptions,\n    headers,\n    abortSignal,\n  }: Parameters<ImageModelV3['doGenerate']>[0]): Promise<\n    Awaited<ReturnType<ImageModelV3['doGenerate']>>\n  > {\n    const warnings: Array<SharedV3Warning> = [];\n\n    if (aspectRatio != null) {\n      warnings.push({\n        type: 'unsupported',\n        feature: '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', feature: 'seed' });\n    }\n\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n    if (files != null) {\n      const { value: response, responseHeaders } = await postFormDataToApi({\n        url: this.config.url({\n          path: '/images/edits',\n          modelId: this.modelId,\n        }),\n        headers: combineHeaders(this.config.headers(), headers),\n        formData: convertToFormData<OpenAIImageEditInput>({\n          model: this.modelId,\n          prompt,\n          image: await Promise.all(\n            files.map(file =>\n              file.type === 'file'\n                ? new Blob(\n                    [\n                      file.data instanceof Uint8Array\n                        ? new Blob([file.data as BlobPart], {\n                            type: file.mediaType,\n                          })\n                        : new Blob([convertBase64ToUint8Array(file.data)], {\n                            type: file.mediaType,\n                          }),\n                    ],\n                    { type: file.mediaType },\n                  )\n                : downloadBlob(file.url),\n            ),\n          ),\n          mask: mask != null ? await fileToBlob(mask) : undefined,\n          n,\n          size,\n          ...(providerOptions.openai ?? {}),\n        }),\n        failedResponseHandler: openaiFailedResponseHandler,\n        successfulResponseHandler: createJsonResponseHandler(\n          openaiImageResponseSchema,\n        ),\n        abortSignal,\n        fetch: this.config.fetch,\n      });\n\n      return {\n        images: response.data.map(item => item.b64_json),\n        warnings,\n        usage:\n          response.usage != null\n            ? {\n                inputTokens: response.usage.input_tokens ?? undefined,\n                outputTokens: response.usage.output_tokens ?? undefined,\n                totalTokens: response.usage.total_tokens ?? undefined,\n              }\n            : undefined,\n        response: {\n          timestamp: currentDate,\n          modelId: this.modelId,\n          headers: responseHeaders,\n        },\n        providerMetadata: {\n          openai: {\n            images: response.data.map((item, index) => ({\n              ...(item.revised_prompt\n                ? { revisedPrompt: item.revised_prompt }\n                : {}),\n              created: response.created ?? undefined,\n              size: response.size ?? undefined,\n              quality: response.quality ?? undefined,\n              background: response.background ?? undefined,\n              outputFormat: response.output_format ?? undefined,\n              ...distributeTokenDetails(\n                response.usage?.input_tokens_details,\n                index,\n                response.data.length,\n              ),\n            })),\n          },\n        },\n      };\n    }\n\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(this.modelId)\n          ? { response_format: 'b64_json' }\n          : {}),\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiImageResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      images: response.data.map(item => item.b64_json),\n      warnings,\n      usage:\n        response.usage != null\n          ? {\n              inputTokens: response.usage.input_tokens ?? undefined,\n              outputTokens: response.usage.output_tokens ?? undefined,\n              totalTokens: response.usage.total_tokens ?? undefined,\n            }\n          : undefined,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n      },\n      providerMetadata: {\n        openai: {\n          images: response.data.map((item, index) => ({\n            ...(item.revised_prompt\n              ? { revisedPrompt: item.revised_prompt }\n              : {}),\n            created: response.created ?? undefined,\n            size: response.size ?? undefined,\n            quality: response.quality ?? undefined,\n            background: response.background ?? undefined,\n            outputFormat: response.output_format ?? undefined,\n            ...distributeTokenDetails(\n              response.usage?.input_tokens_details,\n              index,\n              response.data.length,\n            ),\n          })),\n        },\n      },\n    };\n  }\n}\n\n/**\n * Distributes input token details evenly across images, with the remainder\n * assigned to the last image so that summing across all entries gives the\n * exact total.\n */\nfunction distributeTokenDetails(\n  details:\n    | { image_tokens?: number | null; text_tokens?: number | null }\n    | null\n    | undefined,\n  index: number,\n  total: number,\n): { imageTokens?: number; textTokens?: number } {\n  if (details == null) {\n    return {};\n  }\n\n  const result: { imageTokens?: number; textTokens?: number } = {};\n\n  if (details.image_tokens != null) {\n    const base = Math.floor(details.image_tokens / total);\n    const remainder = details.image_tokens - base * (total - 1);\n    result.imageTokens = index === total - 1 ? remainder : base;\n  }\n\n  if (details.text_tokens != null) {\n    const base = Math.floor(details.text_tokens / total);\n    const remainder = details.text_tokens - base * (total - 1);\n    result.textTokens = index === total - 1 ? remainder : base;\n  }\n\n  return result;\n}\n\ntype OpenAIImageEditInput = {\n  /**\n   * Allows to set transparency for the background of the generated image(s).\n   * This parameter is only supported for `gpt-image-1`. Must be one of\n   * `transparent`, `opaque` or `auto` (default value). When `auto` is used, the\n   * model will automatically determine the best background for the image.\n   *\n   * If `transparent`, the output format needs to support transparency, so it\n   * should be set to either `png` (default value) or `webp`.\n   *\n   */\n  background?: 'transparent' | 'opaque' | 'auto';\n  /**\n   * The image(s) to edit. Must be a supported image file or an array of images.\n   *\n   * For `gpt-image-1`, each image should be a `png`, `webp`, or `jpg` file less\n   * than 50MB. You can provide up to 16 images.\n   *\n   * For `dall-e-2`, you can only provide one image, and it should be a square\n   * `png` file less than 4MB.\n   *\n   */\n  image: Blob | Blob[];\n  input_fidelity?: ('high' | 'low') | null;\n  /**\n   * An additional image whose fully transparent areas (e.g. where alpha is zero) indicate where `image` should be edited. If there are multiple images provided, the mask will be applied on the first image. Must be a valid PNG file, less than 4MB, and have the same dimensions as `image`.\n   */\n  mask?: Blob;\n  /**\n   * The model to use for image generation. Only `dall-e-2` and `gpt-image-1` are supported. Defaults to `dall-e-2` unless a parameter specific to `gpt-image-1` is used.\n   */\n  model?: 'dall-e-2' | 'gpt-image-1' | 'gpt-image-1-mini' | (string & {});\n  /**\n   * The number of images to generate. Must be between 1 and 10.\n   */\n  n?: number;\n  /**\n   * The compression level (0-100%) for the generated images. This parameter\n   * is only supported for `gpt-image-1` with the `webp` or `jpeg` output\n   * formats, and defaults to 100.\n   *\n   */\n  output_compression?: number;\n  /**\n   * The format in which the generated images are returned. This parameter is\n   * only supported for `gpt-image-1`. Must be one of `png`, `jpeg`, or `webp`.\n   * The default value is `png`.\n   *\n   */\n  output_format?: 'png' | 'jpeg' | 'webp';\n  partial_images?: number | null;\n  /**\n   * A text description of the desired image(s). The maximum length is 1000 characters for `dall-e-2`, and 32000 characters for `gpt-image-1`.\n   */\n  prompt?: string;\n  /**\n   * The quality of the image that will be generated. `high`, `medium` and `low` are only supported for `gpt-image-1`. `dall-e-2` only supports `standard` quality. Defaults to `auto`.\n   *\n   */\n  quality?: 'standard' | 'low' | 'medium' | 'high' | 'auto';\n  /**\n   * The format in which the generated images are returned. Must be one of `url` or `b64_json`. URLs are only valid for 60 minutes after the image has been generated. This parameter is only supported for `dall-e-2`, as `gpt-image-1` will always return base64-encoded images.\n   */\n  response_format?: 'url' | 'b64_json';\n  /**\n   * The size of the generated images. Must be one of `1024x1024`, `1536x1024` (landscape), `1024x1536` (portrait), or `auto` (default value) for `gpt-image-1`, and one of `256x256`, `512x512`, or `1024x1024` for `dall-e-2`.\n   */\n  size?: `${number}x${number}`;\n  /**\n   * Edit the image in streaming mode. Defaults to `false`. See the\n   * [Image generation guide](https://platform.openai.com/docs/guides/image-generation) for more information.\n   *\n   */\n  stream?: boolean;\n  /**\n   * A unique identifier representing your end-user, which can help OpenAI to monitor and detect abuse. [Learn more](https://platform.openai.com/docs/guides/safety-best-practices#end-user-ids).\n   *\n   */\n  user?: string;\n};\n\nasync function fileToBlob(\n  file: ImageModelV3File | undefined,\n): Promise<Blob | undefined> {\n  if (!file) return undefined;\n\n  if (file.type === 'url') {\n    return downloadBlob(file.url);\n  }\n\n  const data =\n    file.data instanceof Uint8Array\n      ? file.data\n      : convertBase64ToUint8Array(file.data);\n\n  return new Blob([data as BlobPart], { type: file.mediaType });\n}\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Schema for the apply_patch input - what the model sends.\n *\n * Refer the official spec here: https://platform.openai.com/docs/api-reference/responses/create#responses_create-input-input_item_list-item-apply_patch_tool_call\n *\n */\nexport const applyPatchInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      callId: z.string(),\n      operation: z.discriminatedUnion('type', [\n        z.object({\n          type: z.literal('create_file'),\n          path: z.string(),\n          diff: z.string(),\n        }),\n        z.object({\n          type: z.literal('delete_file'),\n          path: z.string(),\n        }),\n        z.object({\n          type: z.literal('update_file'),\n          path: z.string(),\n          diff: z.string(),\n        }),\n      ]),\n    }),\n  ),\n);\n\n/**\n * Schema for the apply_patch output - what we send back.\n */\nexport const applyPatchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      status: z.enum(['completed', 'failed']),\n      output: z.string().optional(),\n    }),\n  ),\n);\n\n/**\n * Schema for tool arguments (configuration options).\n * The apply_patch tool doesn't require any configuration options.\n */\nexport const applyPatchArgsSchema = lazySchema(() => zodSchema(z.object({})));\n\n/**\n * Type definitions for the apply_patch operations.\n */\nexport type ApplyPatchOperation =\n  | {\n      type: 'create_file';\n      /**\n       * Path of the file to create relative to the workspace root.\n       */\n      path: string;\n      /**\n       * Unified diff content to apply when creating the file.\n       */\n      diff: string;\n    }\n  | {\n      type: 'delete_file';\n      /**\n       * Path of the file to delete relative to the workspace root.\n       */\n      path: string;\n    }\n  | {\n      type: 'update_file';\n      /**\n       * Path of the file to update relative to the workspace root.\n       */\n      path: string;\n      /**\n       * Unified diff content to apply to the existing file.\n       */\n      diff: string;\n    };\n\n/**\n * The apply_patch tool lets GPT-5.1 create, update, and delete files in your\n * codebase using structured diffs. Instead of just suggesting edits, the model\n * emits patch operations that your application applies and then reports back on,\n * enabling iterative, multi-step code editing workflows.\n *\n * The tool factory creates a provider-defined tool that:\n * - Receives patch operations from the model (create_file, update_file, delete_file)\n * - Returns the status of applying those patches (completed or failed)\n *\n */\nexport const applyPatchToolFactory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The unique ID of the apply patch tool call generated by the model.\n     */\n    callId: string;\n\n    /**\n     * The specific create, delete, or update instruction for the apply_patch tool call.\n     */\n    operation: ApplyPatchOperation;\n  },\n  {\n    /**\n     * The status of the apply patch tool call output.\n     * - 'completed': The patch was applied successfully.\n     * - 'failed': The patch failed to apply.\n     */\n    status: 'completed' | 'failed';\n\n    /**\n     * Optional human-readable log text from the apply patch tool\n     * (e.g., patch results or errors).\n     */\n    output?: string;\n  },\n  // No configuration options for apply_patch\n  {}\n>({\n  id: 'openai.apply_patch',\n  inputSchema: applyPatchInputSchema,\n  outputSchema: applyPatchOutputSchema,\n});\n\n/**\n * The apply_patch tool lets GPT-5.1 create, update, and delete files in your\n * codebase using structured diffs. Instead of just suggesting edits, the model\n * emits patch operations that your application applies and then reports back on,\n * enabling iterative, multi-step code editing workflows.\n */\nexport const applyPatch = applyPatchToolFactory;\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeInterpreterInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      code: z.string().nullish(),\n      containerId: z.string(),\n    }),\n  ),\n);\n\nexport const codeInterpreterOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      outputs: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({ type: z.literal('logs'), logs: z.string() }),\n            z.object({ type: z.literal('image'), url: z.string() }),\n          ]),\n        )\n        .nullish(),\n    }),\n  ),\n);\n\nexport const codeInterpreterArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      container: z\n        .union([\n          z.string(),\n          z.object({\n            fileIds: z.array(z.string()).optional(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\ntype CodeInterpreterArgs = {\n  /**\n   * The code interpreter container.\n   * Can be a container ID\n   * or an object that specifies uploaded file IDs to make available to your code.\n   */\n  container?: string | { fileIds?: string[] };\n};\n\nexport const codeInterpreterToolFactory =\n  createProviderToolFactoryWithOutputSchema<\n    {\n      /**\n       * The code to run, or null if not available.\n       */\n      code?: string | null;\n\n      /**\n       * The ID of the container used to run the code.\n       */\n      containerId: string;\n    },\n    {\n      /**\n       * The outputs generated by the code interpreter, such as logs or images.\n       * Can be null if no outputs are available.\n       */\n      outputs?: Array<\n        | {\n            type: 'logs';\n\n            /**\n             * The logs output from the code interpreter.\n             */\n            logs: string;\n          }\n        | {\n            type: 'image';\n\n            /**\n             * The URL of the image output from the code interpreter.\n             */\n            url: string;\n          }\n      > | null;\n    },\n    CodeInterpreterArgs\n  >({\n    id: 'openai.code_interpreter',\n    inputSchema: codeInterpreterInputSchema,\n    outputSchema: codeInterpreterOutputSchema,\n  });\n\nexport const codeInterpreter = (\n  args: CodeInterpreterArgs = {}, // default\n) => {\n  return codeInterpreterToolFactory(args);\n};\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const customArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      name: z.string(),\n      description: z.string().optional(),\n      format: z\n        .union([\n          z.object({\n            type: z.literal('grammar'),\n            syntax: z.enum(['regex', 'lark']),\n            definition: z.string(),\n          }),\n          z.object({\n            type: z.literal('text'),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\nconst customInputSchema = lazySchema(() => zodSchema(z.string()));\n\nexport const customToolFactory = createProviderToolFactory<\n  string,\n  {\n    /**\n     * The name of the custom tool, used to identify it in the API.\n     */\n    name: string;\n\n    /**\n     * An optional description of what the tool does.\n     */\n    description?: string;\n\n    /**\n     * The output format specification for the tool.\n     * Omit for unconstrained text output.\n     */\n    format?:\n      | {\n          type: 'grammar';\n          syntax: 'regex' | 'lark';\n          definition: string;\n        }\n      | {\n          type: 'text';\n        };\n  }\n>({\n  id: 'openai.custom',\n  inputSchema: customInputSchema,\n});\n\nexport const customTool = (args: Parameters<typeof customToolFactory>[0]) =>\n  customToolFactory(args);\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n  OpenAIResponsesFileSearchToolComparisonFilter,\n  OpenAIResponsesFileSearchToolCompoundFilter,\n} from '../responses/openai-responses-api';\n\nconst comparisonFilterSchema = z.object({\n  key: z.string(),\n  type: z.enum(['eq', 'ne', 'gt', 'gte', 'lt', 'lte', 'in', 'nin']),\n  value: z.union([z.string(), z.number(), z.boolean(), z.array(z.string())]),\n});\n\nconst compoundFilterSchema: z.ZodType<any> = z.object({\n  type: z.enum(['and', 'or']),\n  filters: z.array(\n    z.union([comparisonFilterSchema, z.lazy(() => compoundFilterSchema)]),\n  ),\n});\n\nexport const fileSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      vectorStoreIds: z.array(z.string()),\n      maxNumResults: z.number().optional(),\n      ranking: z\n        .object({\n          ranker: z.string().optional(),\n          scoreThreshold: z.number().optional(),\n        })\n        .optional(),\n      filters: z\n        .union([comparisonFilterSchema, compoundFilterSchema])\n        .optional(),\n    }),\n  ),\n);\n\nexport const fileSearchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      queries: z.array(z.string()),\n      results: z\n        .array(\n          z.object({\n            attributes: z.record(z.string(), z.unknown()),\n            fileId: z.string(),\n            filename: z.string(),\n            score: z.number(),\n            text: z.string(),\n          }),\n        )\n        .nullable(),\n    }),\n  ),\n);\n\nexport const fileSearch = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    /**\n     * The search query to execute.\n     */\n    queries: string[];\n\n    /**\n     * The results of the file search tool call.\n     */\n    results:\n      | null\n      | {\n          /**\n           * Set of 16 key-value pairs that can be attached to an object.\n           * This can be useful for storing additional information about the object\n           * in a structured format, and querying for objects via API or the dashboard.\n           * Keys are strings with a maximum length of 64 characters.\n           * Values are strings with a maximum length of 512 characters, booleans, or numbers.\n           */\n          attributes: Record<string, unknown>;\n\n          /**\n           * The unique ID of the file.\n           */\n          fileId: string;\n\n          /**\n           * The name of the file.\n           */\n          filename: string;\n\n          /**\n           * The relevance score of the file - a value between 0 and 1.\n           */\n          score: number;\n\n          /**\n           * The text that was retrieved from the file.\n           */\n          text: string;\n        }[];\n  },\n  {\n    /**\n     * List of vector store IDs to search through.\n     */\n    vectorStoreIds: string[];\n\n    /**\n     * Maximum number of search results to return. Defaults to 10.\n     */\n    maxNumResults?: number;\n\n    /**\n     * Ranking options for the search.\n     */\n    ranking?: {\n      /**\n       * The ranker to use for the file search.\n       */\n      ranker?: string;\n\n      /**\n       * The score threshold for the file search, a number between 0 and 1.\n       * Numbers closer to 1 will attempt to return only the most relevant results,\n       * but may return fewer results.\n       */\n      scoreThreshold?: number;\n    };\n\n    /**\n     * A filter to apply.\n     */\n    filters?:\n      | OpenAIResponsesFileSearchToolComparisonFilter\n      | OpenAIResponsesFileSearchToolCompoundFilter;\n  }\n>({\n  id: 'openai.file_search',\n  inputSchema: z.object({}),\n  outputSchema: fileSearchOutputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const imageGenerationArgsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        background: z.enum(['auto', 'opaque', 'transparent']).optional(),\n        inputFidelity: z.enum(['low', 'high']).optional(),\n        inputImageMask: z\n          .object({\n            fileId: z.string().optional(),\n            imageUrl: z.string().optional(),\n          })\n          .optional(),\n        model: z.string().optional(),\n        moderation: z.enum(['auto']).optional(),\n        outputCompression: z.number().int().min(0).max(100).optional(),\n        outputFormat: z.enum(['png', 'jpeg', 'webp']).optional(),\n        partialImages: z.number().int().min(0).max(3).optional(),\n        quality: z.enum(['auto', 'low', 'medium', 'high']).optional(),\n        size: z\n          .enum(['1024x1024', '1024x1536', '1536x1024', 'auto'])\n          .optional(),\n      })\n      .strict(),\n  ),\n);\n\nconst imageGenerationInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const imageGenerationOutputSchema = lazySchema(() =>\n  zodSchema(z.object({ result: z.string() })),\n);\n\ntype ImageGenerationArgs = {\n  /**\n   * Background type for the generated image. Default is 'auto'.\n   */\n  background?: 'auto' | 'opaque' | 'transparent';\n\n  /**\n   * Input fidelity for the generated image. Default is 'low'.\n   */\n  inputFidelity?: 'low' | 'high';\n\n  /**\n   * Optional mask for inpainting.\n   * Contains image_url (string, optional) and file_id (string, optional).\n   */\n  inputImageMask?: {\n    /**\n     * File ID for the mask image.\n     */\n    fileId?: string;\n\n    /**\n     * Base64-encoded mask image.\n     */\n    imageUrl?: string;\n  };\n\n  /**\n   * The image generation model to use. Default: gpt-image-1.\n   */\n  model?: string;\n\n  /**\n   * Moderation level for the generated image. Default: auto.\n   */\n  moderation?: 'auto';\n\n  /**\n   * Compression level for the output image. Default: 100.\n   */\n  outputCompression?: number;\n\n  /**\n   * The output format of the generated image. One of png, webp, or jpeg.\n   * Default: png\n   */\n  outputFormat?: 'png' | 'jpeg' | 'webp';\n\n  /**\n   * Number of partial images to generate in streaming mode, from 0 (default value) to 3.\n   */\n  partialImages?: number;\n\n  /**\n   * The quality of the generated image.\n   * One of low, medium, high, or auto. Default: auto.\n   */\n  quality?: 'auto' | 'low' | 'medium' | 'high';\n\n  /**\n   * The size of the generated image.\n   * One of 1024x1024, 1024x1536, 1536x1024, or auto.\n   * Default: auto.\n   */\n  size?: 'auto' | '1024x1024' | '1024x1536' | '1536x1024';\n};\n\nconst imageGenerationToolFactory = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    /**\n     * The generated image encoded in base64.\n     */\n    result: string;\n  },\n  ImageGenerationArgs\n>({\n  id: 'openai.image_generation',\n  inputSchema: imageGenerationInputSchema,\n  outputSchema: imageGenerationOutputSchema,\n});\n\nexport const imageGeneration = (\n  args: ImageGenerationArgs = {}, // default\n) => {\n  return imageGenerationToolFactory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const localShellInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z.object({\n        type: z.literal('exec'),\n        command: z.array(z.string()),\n        timeoutMs: z.number().optional(),\n        user: z.string().optional(),\n        workingDirectory: z.string().optional(),\n        env: z.record(z.string(), z.string()).optional(),\n      }),\n    }),\n  ),\n);\n\nexport const localShellOutputSchema = lazySchema(() =>\n  zodSchema(z.object({ output: z.string() })),\n);\n\nexport const localShell = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * Execute a shell command on the server.\n     */\n    action: {\n      type: 'exec';\n\n      /**\n       * The command to run.\n       */\n      command: string[];\n\n      /**\n       * Optional timeout in milliseconds for the command.\n       */\n      timeoutMs?: number;\n\n      /**\n       * Optional user to run the command as.\n       */\n      user?: string;\n\n      /**\n       * Optional working directory to run the command in.\n       */\n      workingDirectory?: string;\n\n      /**\n       * Environment variables to set for the command.\n       */\n      env?: Record<string, string>;\n    };\n  },\n  {\n    /**\n     * The output of local shell tool call.\n     */\n    output: string;\n  },\n  {}\n>({\n  id: 'openai.local_shell',\n  inputSchema: localShellInputSchema,\n  outputSchema: localShellOutputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const shellInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z.object({\n        commands: z.array(z.string()),\n        timeoutMs: z.number().optional(),\n        maxOutputLength: z.number().optional(),\n      }),\n    }),\n  ),\n);\n\nexport const shellOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      output: z.array(\n        z.object({\n          stdout: z.string(),\n          stderr: z.string(),\n          outcome: z.discriminatedUnion('type', [\n            z.object({ type: z.literal('timeout') }),\n            z.object({ type: z.literal('exit'), exitCode: z.number() }),\n          ]),\n        }),\n      ),\n    }),\n  ),\n);\n\nconst shellSkillsSchema = z\n  .array(\n    z.discriminatedUnion('type', [\n      z.object({\n        type: z.literal('skillReference'),\n        skillId: z.string(),\n        version: z.string().optional(),\n      }),\n      z.object({\n        type: z.literal('inline'),\n        name: z.string(),\n        description: z.string(),\n        source: z.object({\n          type: z.literal('base64'),\n          mediaType: z.literal('application/zip'),\n          data: z.string(),\n        }),\n      }),\n    ]),\n  )\n  .optional();\n\nexport const shellArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      environment: z\n        .union([\n          z.object({\n            type: z.literal('containerAuto'),\n            fileIds: z.array(z.string()).optional(),\n            memoryLimit: z.enum(['1g', '4g', '16g', '64g']).optional(),\n            networkPolicy: z\n              .discriminatedUnion('type', [\n                z.object({ type: z.literal('disabled') }),\n                z.object({\n                  type: z.literal('allowlist'),\n                  allowedDomains: z.array(z.string()),\n                  domainSecrets: z\n                    .array(\n                      z.object({\n                        domain: z.string(),\n                        name: z.string(),\n                        value: z.string(),\n                      }),\n                    )\n                    .optional(),\n                }),\n              ])\n              .optional(),\n            skills: shellSkillsSchema,\n          }),\n          z.object({\n            type: z.literal('containerReference'),\n            containerId: z.string(),\n          }),\n          z.object({\n            type: z.literal('local').optional(),\n            skills: z\n              .array(\n                z.object({\n                  name: z.string(),\n                  description: z.string(),\n                  path: z.string(),\n                }),\n              )\n              .optional(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\ntype ShellArgs = {\n  environment?:\n    | {\n        type: 'containerAuto';\n        fileIds?: string[];\n        memoryLimit?: '1g' | '4g' | '16g' | '64g';\n        networkPolicy?:\n          | { type: 'disabled' }\n          | {\n              type: 'allowlist';\n              allowedDomains: string[];\n              domainSecrets?: Array<{\n                domain: string;\n                name: string;\n                value: string;\n              }>;\n            };\n        skills?: Array<\n          | { type: 'skillReference'; skillId: string; version?: string }\n          | {\n              type: 'inline';\n              name: string;\n              description: string;\n              source: {\n                type: 'base64';\n                mediaType: 'application/zip';\n                data: string;\n              };\n            }\n        >;\n      }\n    | {\n        type: 'containerReference';\n        containerId: string;\n      }\n    | {\n        type?: 'local';\n        skills?: Array<{\n          name: string;\n          description: string;\n          path: string;\n        }>;\n      };\n};\n\nexport const shell = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * Shell tool action containing commands to execute.\n     */\n    action: {\n      /**\n       * A list of shell commands to execute.\n       */\n      commands: string[];\n\n      /**\n       * Optional timeout in milliseconds for the commands.\n       */\n      timeoutMs?: number;\n\n      /**\n       * Optional maximum number of characters to return from each command.\n       */\n      maxOutputLength?: number;\n    };\n  },\n  {\n    /**\n     * An array of shell call output contents.\n     */\n    output: Array<{\n      /**\n       * Standard output from the command.\n       */\n      stdout: string;\n\n      /**\n       * Standard error from the command.\n       */\n      stderr: string;\n\n      /**\n       * The outcome of the shell execution - either timeout or exit with code.\n       */\n      outcome: { type: 'timeout' } | { type: 'exit'; exitCode: number };\n    }>;\n  },\n  ShellArgs\n>({\n  id: 'openai.shell',\n  inputSchema: shellInputSchema,\n  outputSchema: shellOutputSchema,\n});\n","import { JSONObject } from '@ai-sdk/provider';\nimport {\n  createProviderToolFactoryWithOutputSchema,\n  FlexibleSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const toolSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      execution: z.enum(['server', 'client']).optional(),\n      description: z.string().optional(),\n      parameters: z.record(z.string(), z.unknown()).optional(),\n    }),\n  ),\n);\n\nexport const toolSearchInputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      arguments: z.unknown().optional(),\n      call_id: z.string().nullish(),\n    }),\n  ),\n);\n\nexport const toolSearchOutputSchema: FlexibleSchema<{\n  tools: Array<JSONObject>;\n}> = lazySchema(() =>\n  zodSchema(\n    z.object({\n      tools: z.array(z.record(z.string(), z.unknown())),\n    }),\n  ),\n) as FlexibleSchema<{ tools: Array<JSONObject> }>;\n\nconst toolSearchToolFactory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The arguments from the tool_search_call.\n     * This is preserved for multi-turn conversation reconstruction.\n     */\n    arguments?: unknown;\n\n    /**\n     * The call ID from the tool_search_call.\n     * Present for client-executed tool search; null for hosted.\n     */\n    call_id?: string | null;\n  },\n  {\n    /**\n     * The tools that were loaded by the tool search.\n     * These are the deferred tools that the model requested to load.\n     * Each tool is represented as a JSON object with properties depending on its type.\n     *\n     * Common properties include:\n     * - `type`: The type of the tool (e.g., 'function', 'web_search', etc.)\n     * - `name`: The name of the tool (for function tools)\n     * - `description`: A description of the tool\n     * - `deferLoading`: Whether this tool was deferred (had defer_loading: true)\n     * - `parameters`: The JSON Schema for the function parameters (for function tools)\n     * - `strict`: Whether to enable strict schema adherence (for function tools)\n     */\n    tools: Array<JSONObject>;\n  },\n  {\n    /**\n     * Whether the tool search is executed by the server (hosted) or client.\n     * - `'server'` (default): OpenAI performs the search across deferred tools.\n     * - `'client'`: The model emits a `tool_search_call` and your `execute`\n     *   function performs the lookup, returning the tools to load.\n     */\n    execution?: 'server' | 'client';\n\n    /**\n     * A description of the tool search capability.\n     * Only used for client-executed tool search.\n     */\n    description?: string;\n\n    /**\n     * JSON Schema for the search arguments your application expects.\n     * Only used for client-executed tool search.\n     */\n    parameters?: Record<string, unknown>;\n  }\n>({\n  id: 'openai.tool_search',\n  inputSchema: toolSearchInputSchema,\n  outputSchema: toolSearchOutputSchema,\n});\n\nexport const toolSearch = (\n  args: Parameters<typeof toolSearchToolFactory>[0] = {},\n) => toolSearchToolFactory(args);\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      externalWebAccess: z.boolean().optional(),\n      filters: z\n        .object({ allowedDomains: z.array(z.string()).optional() })\n        .optional(),\n      searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n      userLocation: z\n        .object({\n          type: z.literal('approximate'),\n          country: z.string().optional(),\n          city: z.string().optional(),\n          region: z.string().optional(),\n          timezone: z.string().optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nconst webSearchInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const webSearchOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z\n        .discriminatedUnion('type', [\n          z.object({\n            type: z.literal('search'),\n            query: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('openPage'),\n            url: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('findInPage'),\n            url: z.string().nullish(),\n            pattern: z.string().nullish(),\n          }),\n        ])\n        .optional(),\n      sources: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({ type: z.literal('url'), url: z.string() }),\n            z.object({ type: z.literal('api'), name: z.string() }),\n          ]),\n        )\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchToolFactory = createProviderToolFactoryWithOutputSchema<\n  {\n    // Web search doesn't take input parameters - it's controlled by the prompt\n  },\n  {\n    /**\n     * An object describing the specific action taken in this web search call.\n     * Includes details on how the model used the web (search, open_page, find_in_page).\n     */\n    action?:\n      | {\n          /**\n           * Action type \"search\" - Performs a web search query.\n           */\n          type: 'search';\n\n          /**\n           * The search query.\n           */\n          query?: string;\n        }\n      | {\n          /**\n           * Action type \"openPage\" - Opens a specific URL from search results.\n           */\n          type: 'openPage';\n\n          /**\n           * The URL opened by the model.\n           */\n          url?: string | null;\n        }\n      | {\n          /**\n           * Action type \"findInPage\": Searches for a pattern within a loaded page.\n           */\n          type: 'findInPage';\n\n          /**\n           * The URL of the page searched for the pattern.\n           */\n          url?: string | null;\n\n          /**\n           * The pattern or text to search for within the page.\n           */\n          pattern?: string | null;\n        };\n\n    /**\n     * Optional sources cited by the model for the web search call.\n     */\n    sources?: Array<\n      { type: 'url'; url: string } | { type: 'api'; name: string }\n    >;\n  },\n  {\n    /**\n     * Whether to use external web access for fetching live content.\n     * - true: Fetch live web content (default)\n     * - false: Use cached/indexed results\n     */\n    externalWebAccess?: boolean;\n\n    /**\n     * Filters for the search.\n     */\n    filters?: {\n      /**\n       * Allowed domains for the search.\n       * If not provided, all domains are allowed.\n       * Subdomains of the provided domains are allowed as well.\n       */\n      allowedDomains?: string[];\n    };\n\n    /**\n     * Search context size to use for the web search.\n     * - high: Most comprehensive context, highest cost, slower response\n     * - medium: Balanced context, cost, and latency (default)\n     * - low: Least context, lowest cost, fastest response\n     */\n    searchContextSize?: 'low' | 'medium' | 'high';\n\n    /**\n     * User location information to provide geographically relevant search results.\n     */\n    userLocation?: {\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: 'approximate';\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country?: string;\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city?: string;\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region?: string;\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'openai.web_search',\n  inputSchema: webSearchInputSchema,\n  outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n  args: Parameters<typeof webSearchToolFactory>[0] = {}, // default\n) => webSearchToolFactory(args);\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchPreviewArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      searchContextSize: z.enum(['low', 'medium', 'high']).optional(),\n      userLocation: z\n        .object({\n          type: z.literal('approximate'),\n          country: z.string().optional(),\n          city: z.string().optional(),\n          region: z.string().optional(),\n          timezone: z.string().optional(),\n        })\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchPreviewInputSchema = lazySchema(() =>\n  zodSchema(z.object({})),\n);\n\nconst webSearchPreviewOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      action: z\n        .discriminatedUnion('type', [\n          z.object({\n            type: z.literal('search'),\n            query: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('openPage'),\n            url: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('findInPage'),\n            url: z.string().nullish(),\n            pattern: z.string().nullish(),\n          }),\n        ])\n        .optional(),\n    }),\n  ),\n);\n\nexport const webSearchPreview = createProviderToolFactoryWithOutputSchema<\n  {\n    // Web search preview doesn't take input parameters - it's controlled by the prompt\n  },\n  {\n    /**\n     * An object describing the specific action taken in this web search call.\n     * Includes details on how the model used the web (search, open_page, find_in_page).\n     */\n    action?:\n      | {\n          /**\n           * Action type \"search\" - Performs a web search query.\n           */\n          type: 'search';\n\n          /**\n           * The search query.\n           */\n          query?: string;\n        }\n      | {\n          /**\n           * Action type \"openPage\" - Opens a specific URL from search results.\n           */\n          type: 'openPage';\n\n          /**\n           * The URL opened by the model.\n           */\n          url?: string | null;\n        }\n      | {\n          /**\n           * Action type \"findInPage\": Searches for a pattern within a loaded page.\n           */\n          type: 'findInPage';\n\n          /**\n           * The URL of the page searched for the pattern.\n           */\n          url?: string | null;\n\n          /**\n           * The pattern or text to search for within the page.\n           */\n          pattern?: string | null;\n        };\n  },\n  {\n    /**\n     * Search context size to use for the web search.\n     * - high: Most comprehensive context, highest cost, slower response\n     * - medium: Balanced context, cost, and latency (default)\n     * - low: Least context, lowest cost, fastest response\n     */\n    searchContextSize?: 'low' | 'medium' | 'high';\n\n    /**\n     * User location information to provide geographically relevant search results.\n     */\n    userLocation?: {\n      /**\n       * Type of location (always 'approximate')\n       */\n      type: 'approximate';\n      /**\n       * Two-letter ISO country code (e.g., 'US', 'GB')\n       */\n      country?: string;\n      /**\n       * City name (free text, e.g., 'Minneapolis')\n       */\n      city?: string;\n      /**\n       * Region name (free text, e.g., 'Minnesota')\n       */\n      region?: string;\n      /**\n       * IANA timezone (e.g., 'America/Chicago')\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'openai.web_search_preview',\n  inputSchema: webSearchPreviewInputSchema,\n  outputSchema: webSearchPreviewOutputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { JSONValue } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nconst jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n  z.union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.null(),\n    z.array(jsonValueSchema),\n    z.record(z.string(), jsonValueSchema),\n  ]),\n);\n\nexport const mcpArgsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        serverLabel: z.string(),\n        allowedTools: z\n          .union([\n            z.array(z.string()),\n            z.object({\n              readOnly: z.boolean().optional(),\n              toolNames: z.array(z.string()).optional(),\n            }),\n          ])\n          .optional(),\n        authorization: z.string().optional(),\n        connectorId: z.string().optional(),\n        headers: z.record(z.string(), z.string()).optional(),\n\n        requireApproval: z\n          .union([\n            z.enum(['always', 'never']),\n            z.object({\n              never: z\n                .object({\n                  toolNames: z.array(z.string()).optional(),\n                })\n                .optional(),\n            }),\n          ])\n          .optional(),\n        serverDescription: z.string().optional(),\n        serverUrl: z.string().optional(),\n      })\n      .refine(\n        v => v.serverUrl != null || v.connectorId != null,\n        'One of serverUrl or connectorId must be provided.',\n      ),\n  ),\n);\n\nconst mcpInputSchema = lazySchema(() => zodSchema(z.object({})));\n\nexport const mcpOutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      type: z.literal('call'),\n      serverLabel: z.string(),\n      name: z.string(),\n      arguments: z.string(),\n      output: z.string().nullish(),\n      error: z.union([z.string(), jsonValueSchema]).optional(),\n    }),\n  ),\n);\n\ntype McpArgs = {\n  /** A label for this MCP server, used to identify it in tool calls. */\n  serverLabel: string;\n  /** List of allowed tool names or a filter object. */\n  allowedTools?:\n    | string[]\n    | {\n        readOnly?: boolean;\n        toolNames?: string[];\n      };\n  /** OAuth access token usable with the remote MCP server or connector. */\n  authorization?: string;\n  /** Identifier for a service connector. */\n  connectorId?: string;\n  /** Optional HTTP headers to send to the MCP server. */\n  headers?: Record<string, string>;\n  /**\n   * Which tools require approval before execution.\n   */\n  requireApproval?:\n    | 'always'\n    | 'never'\n    | {\n        never?: {\n          toolNames?: string[];\n        };\n      };\n  /** Optional description of the MCP server. */\n  serverDescription?: string;\n  /** URL for the MCP server. One of serverUrl or connectorId must be provided. */\n  serverUrl?: string;\n};\n\nexport const mcpToolFactory = createProviderToolFactoryWithOutputSchema<\n  {},\n  {\n    type: 'call';\n    serverLabel: string;\n    name: string;\n    arguments: string;\n    output?: string | null;\n    error?: JSONValue;\n  },\n  McpArgs\n>({\n  id: 'openai.mcp',\n  inputSchema: mcpInputSchema,\n  outputSchema: mcpOutputSchema,\n});\n\nexport const mcp = (args: McpArgs) => mcpToolFactory(args);\n","import { applyPatch } from './tool/apply-patch';\nimport { codeInterpreter } from './tool/code-interpreter';\nimport { customTool } from './tool/custom';\nimport { fileSearch } from './tool/file-search';\nimport { imageGeneration } from './tool/image-generation';\nimport { localShell } from './tool/local-shell';\nimport { shell } from './tool/shell';\nimport { toolSearch } from './tool/tool-search';\nimport { webSearch } from './tool/web-search';\nimport { webSearchPreview } from './tool/web-search-preview';\nimport { mcp } from './tool/mcp';\n\nexport const openaiTools = {\n  /**\n   * The apply_patch tool lets GPT-5.1 create, update, and delete files in your\n   * codebase using structured diffs. Instead of just suggesting edits, the model\n   * emits patch operations that your application applies and then reports back on,\n   * enabling iterative, multi-step code editing workflows.\n   *\n   */\n  applyPatch,\n\n  /**\n   * Custom tools let callers constrain model output to a grammar (regex or\n   * Lark syntax). The model returns a `custom_tool_call` output item whose\n   * `input` field is a string matching the specified grammar.\n   *\n   * @param name - The name of the custom tool.\n   * @param description - An optional description of the tool.\n   * @param format - The output format constraint (grammar type, syntax, and definition).\n   */\n  customTool,\n\n  /**\n   * The Code Interpreter tool allows models to write and run Python code in a\n   * sandboxed environment to solve complex problems in domains like data analysis,\n   * coding, and math.\n   *\n   * @param container - The container to use for the code interpreter.\n   */\n  codeInterpreter,\n\n  /**\n   * File search is a tool available in the Responses API. It enables models to\n   * retrieve information in a knowledge base of previously uploaded files through\n   * semantic and keyword search.\n   *\n   * @param vectorStoreIds - The vector store IDs to use for the file search.\n   * @param maxNumResults - The maximum number of results to return.\n   * @param ranking - The ranking options to use for the file search.\n   * @param filters - The filters to use for the file search.\n   */\n  fileSearch,\n\n  /**\n   * The image generation tool allows you to generate images using a text prompt,\n   * and optionally image inputs. It leverages the GPT Image model,\n   * and automatically optimizes text inputs for improved performance.\n   *\n   * @param background - Background type for the generated image. One of 'auto', 'opaque', or 'transparent'.\n   * @param inputFidelity - Input fidelity for the generated image. One of 'low' or 'high'.\n   * @param inputImageMask - Optional mask for inpainting. Contains fileId and/or imageUrl.\n   * @param model - The image generation model to use. Default: gpt-image-1.\n   * @param moderation - Moderation level for the generated image. Default: 'auto'.\n   * @param outputCompression - Compression level for the output image (0-100).\n   * @param outputFormat - The output format of the generated image. One of 'png', 'jpeg', or 'webp'.\n   * @param partialImages - Number of partial images to generate in streaming mode (0-3).\n   * @param quality - The quality of the generated image. One of 'auto', 'low', 'medium', or 'high'.\n   * @param size - The size of the generated image. One of 'auto', '1024x1024', '1024x1536', or '1536x1024'.\n   */\n  imageGeneration,\n\n  /**\n   * Local shell is a tool that allows agents to run shell commands locally\n   * on a machine you or the user provides.\n   *\n   * Supported models: `gpt-5-codex`\n   */\n  localShell,\n\n  /**\n   * The shell tool allows the model to interact with your local computer through\n   * a controlled command-line interface. The model proposes shell commands; your\n   * integration executes them and returns the outputs.\n   *\n   * Available through the Responses API for use with GPT-5.1.\n   *\n   * WARNING: Running arbitrary shell commands can be dangerous. Always sandbox\n   * execution or add strict allow-/deny-lists before forwarding a command to\n   * the system shell.\n   */\n  shell,\n\n  /**\n   * Web search allows models to access up-to-date information from the internet\n   * and provide answers with sourced citations.\n   *\n   * @param searchContextSize - The search context size to use for the web search.\n   * @param userLocation - The user location to use for the web search.\n   */\n  webSearchPreview,\n\n  /**\n   * Web search allows models to access up-to-date information from the internet\n   * and provide answers with sourced citations.\n   *\n   * @param filters - The filters to use for the web search.\n   * @param searchContextSize - The search context size to use for the web search.\n   * @param userLocation - The user location to use for the web search.\n   */\n  webSearch,\n\n  /**\n   * MCP (Model Context Protocol) allows models to call tools exposed by\n   * remote MCP servers or service connectors.\n   *\n   * @param serverLabel - Label to identify the MCP server.\n   * @param allowedTools - Allowed tool names or filter object.\n   * @param authorization - OAuth access token for the MCP server/connector.\n   * @param connectorId - Identifier for a service connector.\n   * @param headers - Optional headers to include in MCP requests.\n   * // param requireApproval - Approval policy ('always'|'never'|filter object). (Removed - always 'never')\n   * @param serverDescription - Optional description of the server.\n   * @param serverUrl - URL for the MCP server.\n   */\n  mcp,\n\n  /**\n   * Tool search allows the model to dynamically search for and load deferred\n   * tools into the model's context as needed. This helps reduce overall token\n   * usage, cost, and latency by only loading tools when the model needs them.\n   *\n   * To use tool search, mark functions or namespaces with `defer_loading: true`\n   * in the tools array. The model will use tool search to load these tools\n   * when it determines they are needed.\n   */\n  toolSearch,\n};\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type OpenAIResponsesUsage = {\n  input_tokens: number;\n  output_tokens: number;\n  input_tokens_details?: {\n    cached_tokens?: number | null;\n  } | null;\n  output_tokens_details?: {\n    reasoning_tokens?: number | null;\n  } | null;\n};\n\nexport function convertOpenAIResponsesUsage(\n  usage: OpenAIResponsesUsage | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const inputTokens = usage.input_tokens;\n  const outputTokens = usage.output_tokens;\n  const cachedTokens = usage.input_tokens_details?.cached_tokens ?? 0;\n  const reasoningTokens = usage.output_tokens_details?.reasoning_tokens ?? 0;\n\n  return {\n    inputTokens: {\n      total: inputTokens,\n      noCache: inputTokens - cachedTokens,\n      cacheRead: cachedTokens,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: outputTokens,\n      text: outputTokens - reasoningTokens,\n      reasoning: reasoningTokens,\n    },\n    raw: usage,\n  };\n}\n","import {\n  LanguageModelV3Prompt,\n  LanguageModelV3ToolApprovalResponsePart,\n  SharedV3Warning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n  convertToBase64,\n  isNonNullable,\n  parseJSON,\n  parseProviderOptions,\n  ToolNameMapping,\n  validateTypes,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n  applyPatchInputSchema,\n  applyPatchOutputSchema,\n} from '../tool/apply-patch';\nimport {\n  localShellInputSchema,\n  localShellOutputSchema,\n} from '../tool/local-shell';\nimport { shellInputSchema, shellOutputSchema } from '../tool/shell';\nimport {\n  toolSearchInputSchema,\n  toolSearchOutputSchema,\n} from '../tool/tool-search';\nimport {\n  OpenAIResponsesCustomToolCallOutput,\n  OpenAIResponsesFunctionCallOutput,\n  OpenAIResponsesInput,\n  OpenAIResponsesReasoning,\n} from './openai-responses-api';\n\nfunction serializeToolCallArguments(input: unknown): string {\n  return JSON.stringify(input === undefined ? {} : input);\n}\n\n/**\n * Check if a string is a file ID based on the given prefixes\n * Returns false if prefixes is undefined (disables file ID detection)\n */\nfunction isFileId(data: string, prefixes?: readonly string[]): boolean {\n  if (!prefixes) return false;\n  return prefixes.some(prefix => data.startsWith(prefix));\n}\n\nexport async function convertToOpenAIResponsesInput({\n  prompt,\n  toolNameMapping,\n  systemMessageMode,\n  providerOptionsName,\n  fileIdPrefixes,\n  store,\n  hasConversation = false,\n  hasLocalShellTool = false,\n  hasShellTool = false,\n  hasApplyPatchTool = false,\n  customProviderToolNames,\n}: {\n  prompt: LanguageModelV3Prompt;\n  toolNameMapping: ToolNameMapping;\n  systemMessageMode: 'system' | 'developer' | 'remove';\n  providerOptionsName: string;\n  fileIdPrefixes?: readonly string[];\n  store: boolean;\n  hasConversation?: boolean; // when true, skip assistant messages that already have item IDs\n  hasLocalShellTool?: boolean;\n  hasShellTool?: boolean;\n  hasApplyPatchTool?: boolean;\n  customProviderToolNames?: Set<string>;\n}): Promise<{\n  input: OpenAIResponsesInput;\n  warnings: Array<SharedV3Warning>;\n}> {\n  let input: OpenAIResponsesInput = [];\n  const warnings: Array<SharedV3Warning> = [];\n  const processedApprovalIds = new Set<string>();\n\n  for (const { role, content } of prompt) {\n    switch (role) {\n      case 'system': {\n        switch (systemMessageMode) {\n          case 'system': {\n            input.push({ role: 'system', content });\n            break;\n          }\n          case 'developer': {\n            input.push({ role: 'developer', content });\n            break;\n          }\n          case 'remove': {\n            warnings.push({\n              type: 'other',\n              message: 'system messages are removed for this model',\n            });\n            break;\n          }\n          default: {\n            const _exhaustiveCheck: never = systemMessageMode;\n            throw new Error(\n              `Unsupported system message mode: ${_exhaustiveCheck}`,\n            );\n          }\n        }\n        break;\n      }\n\n      case 'user': {\n        input.push({\n          role: 'user',\n          content: content.map((part, index) => {\n            switch (part.type) {\n              case 'text': {\n                return { type: 'input_text', text: part.text };\n              }\n              case 'file': {\n                if (part.mediaType.startsWith('image/')) {\n                  const mediaType =\n                    part.mediaType === 'image/*'\n                      ? 'image/jpeg'\n                      : part.mediaType;\n\n                  return {\n                    type: 'input_image',\n                    ...(part.data instanceof URL\n                      ? { image_url: part.data.toString() }\n                      : typeof part.data === 'string' &&\n                          isFileId(part.data, fileIdPrefixes)\n                        ? { file_id: part.data }\n                        : {\n                            image_url: `data:${mediaType};base64,${convertToBase64(part.data)}`,\n                          }),\n                    detail:\n                      part.providerOptions?.[providerOptionsName]?.imageDetail,\n                  };\n                } else if (part.mediaType === 'application/pdf') {\n                  if (part.data instanceof URL) {\n                    return {\n                      type: 'input_file',\n                      file_url: part.data.toString(),\n                    };\n                  }\n                  return {\n                    type: 'input_file',\n                    ...(typeof part.data === 'string' &&\n                    isFileId(part.data, fileIdPrefixes)\n                      ? { file_id: part.data }\n                      : {\n                          filename: part.filename ?? `part-${index}.pdf`,\n                          file_data: `data:application/pdf;base64,${convertToBase64(part.data)}`,\n                        }),\n                  };\n                } else {\n                  throw new UnsupportedFunctionalityError({\n                    functionality: `file part media type ${part.mediaType}`,\n                  });\n                }\n              }\n            }\n          }),\n        });\n\n        break;\n      }\n\n      case 'assistant': {\n        const reasoningMessages: Record<string, OpenAIResponsesReasoning> = {};\n\n        for (const part of content) {\n          switch (part.type) {\n            case 'text': {\n              const providerOpts = part.providerOptions?.[providerOptionsName];\n              const id = providerOpts?.itemId as string | undefined;\n              const phase = providerOpts?.phase as\n                | 'commentary'\n                | 'final_answer'\n                | null\n                | undefined;\n\n              // when using conversation, skip items that already exist in the conversation context to avoid \"Duplicate item found\" errors\n              if (hasConversation && id != null) {\n                break;\n              }\n\n              // item references reduce the payload size\n              if (store && id != null) {\n                input.push({ type: 'item_reference', id });\n                break;\n              }\n\n              input.push({\n                role: 'assistant',\n                content: [{ type: 'output_text', text: part.text }],\n                id,\n                ...(phase != null && { phase }),\n              });\n\n              break;\n            }\n            case 'tool-call': {\n              const id = (part.providerOptions?.[providerOptionsName]?.itemId ??\n                (\n                  part as {\n                    providerMetadata?: {\n                      [providerOptionsName]?: { itemId?: string };\n                    };\n                  }\n                ).providerMetadata?.[providerOptionsName]?.itemId) as\n                | string\n                | undefined;\n\n              if (hasConversation && id != null) {\n                break;\n              }\n\n              const resolvedToolName = toolNameMapping.toProviderToolName(\n                part.toolName,\n              );\n\n              if (resolvedToolName === 'tool_search') {\n                if (store && id != null) {\n                  input.push({ type: 'item_reference', id });\n                  break;\n                }\n\n                const parsedInput =\n                  typeof part.input === 'string'\n                    ? await parseJSON({\n                        text: part.input,\n                        schema: toolSearchInputSchema,\n                      })\n                    : await validateTypes({\n                        value: part.input,\n                        schema: toolSearchInputSchema,\n                      });\n\n                const execution =\n                  parsedInput.call_id != null ? 'client' : 'server';\n\n                input.push({\n                  type: 'tool_search_call',\n                  id: id ?? part.toolCallId,\n                  execution,\n                  call_id: parsedInput.call_id ?? null,\n                  status: 'completed',\n                  arguments: parsedInput.arguments,\n                });\n                break;\n              }\n\n              if (part.providerExecuted) {\n                if (store && id != null) {\n                  input.push({ type: 'item_reference', id });\n                }\n                break;\n              }\n\n              if (store && id != null) {\n                input.push({ type: 'item_reference', id });\n                break;\n              }\n\n              if (hasLocalShellTool && resolvedToolName === 'local_shell') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: localShellInputSchema,\n                });\n                input.push({\n                  type: 'local_shell_call',\n                  call_id: part.toolCallId,\n                  id: id!,\n                  action: {\n                    type: 'exec',\n                    command: parsedInput.action.command,\n                    timeout_ms: parsedInput.action.timeoutMs,\n                    user: parsedInput.action.user,\n                    working_directory: parsedInput.action.workingDirectory,\n                    env: parsedInput.action.env,\n                  },\n                });\n\n                break;\n              }\n\n              if (hasShellTool && resolvedToolName === 'shell') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: shellInputSchema,\n                });\n                input.push({\n                  type: 'shell_call',\n                  call_id: part.toolCallId,\n                  id: id!,\n                  status: 'completed',\n                  action: {\n                    commands: parsedInput.action.commands,\n                    timeout_ms: parsedInput.action.timeoutMs,\n                    max_output_length: parsedInput.action.maxOutputLength,\n                  },\n                });\n\n                break;\n              }\n\n              if (hasApplyPatchTool && resolvedToolName === 'apply_patch') {\n                const parsedInput = await validateTypes({\n                  value: part.input,\n                  schema: applyPatchInputSchema,\n                });\n                input.push({\n                  type: 'apply_patch_call',\n                  call_id: parsedInput.callId,\n                  id: id!,\n                  status: 'completed',\n                  operation: parsedInput.operation,\n                });\n\n                break;\n              }\n\n              if (customProviderToolNames?.has(resolvedToolName)) {\n                input.push({\n                  type: 'custom_tool_call',\n                  call_id: part.toolCallId,\n                  name: resolvedToolName,\n                  input:\n                    typeof part.input === 'string'\n                      ? part.input\n                      : JSON.stringify(part.input),\n                  id,\n                });\n                break;\n              }\n\n              input.push({\n                type: 'function_call',\n                call_id: part.toolCallId,\n                name: resolvedToolName,\n                arguments: serializeToolCallArguments(part.input),\n                id,\n              });\n              break;\n            }\n\n            // assistant tool result parts are from provider-executed tools:\n            case 'tool-result': {\n              // Skip execution-denied results - these are synthetic results from denied\n              // approvals and have no corresponding item in OpenAI's store.\n              // Check both the direct type and if it was transformed to json with execution-denied inside\n              if (\n                part.output.type === 'execution-denied' ||\n                (part.output.type === 'json' &&\n                  typeof part.output.value === 'object' &&\n                  part.output.value != null &&\n                  'type' in part.output.value &&\n                  part.output.value.type === 'execution-denied')\n              ) {\n                break;\n              }\n\n              if (hasConversation) {\n                break;\n              }\n\n              const resolvedResultToolName = toolNameMapping.toProviderToolName(\n                part.toolName,\n              );\n\n              if (resolvedResultToolName === 'tool_search') {\n                const itemId =\n                  (\n                    part.providerOptions?.[providerOptionsName] as\n                      | { itemId?: string }\n                      | undefined\n                  )?.itemId ?? part.toolCallId;\n\n                if (store) {\n                  input.push({ type: 'item_reference', id: itemId });\n                } else if (part.output.type === 'json') {\n                  const parsedOutput = await validateTypes({\n                    value: part.output.value,\n                    schema: toolSearchOutputSchema,\n                  });\n\n                  input.push({\n                    type: 'tool_search_output',\n                    id: itemId,\n                    execution: 'server',\n                    call_id: null,\n                    status: 'completed',\n                    tools: parsedOutput.tools,\n                  });\n                }\n\n                break;\n              }\n\n              /*\n               * Shell tool results are separate output items (shell_call_output)\n               * with their own item IDs distinct from the shell_call's item ID.\n               * Since the pipeline only preserves the shell_call's item ID in\n               * callProviderMetadata, we reconstruct the full shell_call_output\n               * instead of using an item_reference with the wrong ID.\n               */\n              if (hasShellTool && resolvedResultToolName === 'shell') {\n                if (part.output.type === 'json') {\n                  const parsedOutput = await validateTypes({\n                    value: part.output.value,\n                    schema: shellOutputSchema,\n                  });\n                  input.push({\n                    type: 'shell_call_output',\n                    call_id: part.toolCallId,\n                    output: parsedOutput.output.map(item => ({\n                      stdout: item.stdout,\n                      stderr: item.stderr,\n                      outcome:\n                        item.outcome.type === 'timeout'\n                          ? { type: 'timeout' as const }\n                          : {\n                              type: 'exit' as const,\n                              exit_code: item.outcome.exitCode,\n                            },\n                    })),\n                  });\n                }\n                break;\n              }\n\n              if (store) {\n                const itemId =\n                  (\n                    part.providerOptions?.[providerOptionsName] as\n                      | { itemId?: string }\n                      | undefined\n                  )?.itemId ?? part.toolCallId;\n                input.push({ type: 'item_reference', id: itemId });\n              } else {\n                warnings.push({\n                  type: 'other',\n                  message: `Results for OpenAI tool ${part.toolName} are not sent to the API when store is false`,\n                });\n              }\n\n              break;\n            }\n\n            case 'reasoning': {\n              const providerOptions = await parseProviderOptions({\n                provider: providerOptionsName,\n                providerOptions: part.providerOptions,\n                schema: openaiResponsesReasoningProviderOptionsSchema,\n              });\n\n              const reasoningId = providerOptions?.itemId;\n\n              if (hasConversation && reasoningId != null) {\n                break;\n              }\n\n              if (reasoningId != null) {\n                const reasoningMessage = reasoningMessages[reasoningId];\n\n                if (store) {\n                  // use item references to refer to reasoning (single reference)\n                  // when the first part is encountered\n                  if (reasoningMessage === undefined) {\n                    input.push({ type: 'item_reference', id: reasoningId });\n\n                    // store unused reasoning message to mark id as used\n                    reasoningMessages[reasoningId] = {\n                      type: 'reasoning',\n                      id: reasoningId,\n                      summary: [],\n                    };\n                  }\n                } else {\n                  const summaryParts: Array<{\n                    type: 'summary_text';\n                    text: string;\n                  }> = [];\n\n                  if (part.text.length > 0) {\n                    summaryParts.push({\n                      type: 'summary_text',\n                      text: part.text,\n                    });\n                  } else if (reasoningMessage !== undefined) {\n                    warnings.push({\n                      type: 'other',\n                      message: `Cannot append empty reasoning part to existing reasoning sequence. Skipping reasoning part: ${JSON.stringify(part)}.`,\n                    });\n                  }\n\n                  if (reasoningMessage === undefined) {\n                    reasoningMessages[reasoningId] = {\n                      type: 'reasoning',\n                      id: reasoningId,\n                      encrypted_content:\n                        providerOptions?.reasoningEncryptedContent,\n                      summary: summaryParts,\n                    };\n                    input.push(reasoningMessages[reasoningId]);\n                  } else {\n                    reasoningMessage.summary.push(...summaryParts);\n\n                    // updated encrypted content to enable setting it in the last summary part:\n                    if (providerOptions?.reasoningEncryptedContent != null) {\n                      reasoningMessage.encrypted_content =\n                        providerOptions.reasoningEncryptedContent;\n                    }\n                  }\n                }\n              } else {\n                // No itemId — fall back to encrypted_content if available.\n                // The OpenAI Responses API accepts reasoning items without an\n                // id when encrypted_content is provided, enabling multi-turn\n                // reasoning even when server-side item persistence is not used\n                // or when itemId has been stripped from providerOptions.\n                const encryptedContent =\n                  providerOptions?.reasoningEncryptedContent;\n\n                if (encryptedContent != null) {\n                  const summaryParts: Array<{\n                    type: 'summary_text';\n                    text: string;\n                  }> = [];\n                  if (part.text.length > 0) {\n                    summaryParts.push({\n                      type: 'summary_text',\n                      text: part.text,\n                    });\n                  }\n                  input.push({\n                    type: 'reasoning',\n                    encrypted_content: encryptedContent,\n                    summary: 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              }\n              break;\n            }\n          }\n        }\n\n        break;\n      }\n\n      case 'tool': {\n        for (const part of content) {\n          if (part.type === 'tool-approval-response') {\n            const approvalResponse =\n              part as LanguageModelV3ToolApprovalResponsePart;\n\n            if (processedApprovalIds.has(approvalResponse.approvalId)) {\n              continue;\n            }\n            processedApprovalIds.add(approvalResponse.approvalId);\n\n            if (store) {\n              input.push({\n                type: 'item_reference',\n                id: approvalResponse.approvalId,\n              });\n            }\n\n            input.push({\n              type: 'mcp_approval_response',\n              approval_request_id: approvalResponse.approvalId,\n              approve: approvalResponse.approved,\n            });\n            continue;\n          }\n\n          const output = part.output;\n\n          // Skip execution-denied with approvalId - already handled via tool-approval-response\n          if (output.type === 'execution-denied') {\n            const approvalId = (\n              output.providerOptions?.openai as { approvalId?: string }\n            )?.approvalId;\n\n            if (approvalId) {\n              continue;\n            }\n          }\n\n          const resolvedToolName = toolNameMapping.toProviderToolName(\n            part.toolName,\n          );\n\n          if (resolvedToolName === 'tool_search' && output.type === 'json') {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: toolSearchOutputSchema,\n            });\n\n            input.push({\n              type: 'tool_search_output',\n              execution: 'client',\n              call_id: part.toolCallId,\n              status: 'completed',\n              tools: parsedOutput.tools,\n            });\n            continue;\n          }\n\n          if (\n            hasLocalShellTool &&\n            resolvedToolName === 'local_shell' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: localShellOutputSchema,\n            });\n\n            input.push({\n              type: 'local_shell_call_output',\n              call_id: part.toolCallId,\n              output: parsedOutput.output,\n            });\n            continue;\n          }\n\n          if (\n            hasShellTool &&\n            resolvedToolName === 'shell' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: shellOutputSchema,\n            });\n\n            input.push({\n              type: 'shell_call_output',\n              call_id: part.toolCallId,\n              output: parsedOutput.output.map(item => ({\n                stdout: item.stdout,\n                stderr: item.stderr,\n                outcome:\n                  item.outcome.type === 'timeout'\n                    ? { type: 'timeout' as const }\n                    : {\n                        type: 'exit' as const,\n                        exit_code: item.outcome.exitCode,\n                      },\n              })),\n            });\n            continue;\n          }\n\n          if (\n            hasApplyPatchTool &&\n            part.toolName === 'apply_patch' &&\n            output.type === 'json'\n          ) {\n            const parsedOutput = await validateTypes({\n              value: output.value,\n              schema: applyPatchOutputSchema,\n            });\n\n            input.push({\n              type: 'apply_patch_call_output',\n              call_id: part.toolCallId,\n              status: parsedOutput.status,\n              output: parsedOutput.output,\n            });\n            continue;\n          }\n\n          if (customProviderToolNames?.has(resolvedToolName)) {\n            let outputValue: OpenAIResponsesCustomToolCallOutput['output'];\n            switch (output.type) {\n              case 'text':\n              case 'error-text':\n                outputValue = output.value;\n                break;\n              case 'execution-denied':\n                outputValue = output.reason ?? 'Tool execution denied.';\n                break;\n              case 'json':\n              case 'error-json':\n                outputValue = JSON.stringify(output.value);\n                break;\n              case 'content':\n                outputValue = output.value\n                  .map(item => {\n                    switch (item.type) {\n                      case 'text':\n                        return { type: 'input_text' as const, text: item.text };\n                      case 'image-data':\n                        return {\n                          type: 'input_image' as const,\n                          image_url: `data:${item.mediaType};base64,${item.data}`,\n                        };\n                      case 'image-url':\n                        return {\n                          type: 'input_image' as const,\n                          image_url: item.url,\n                        };\n                      case 'file-data':\n                        return {\n                          type: 'input_file' as const,\n                          filename: item.filename ?? 'data',\n                          file_data: `data:${item.mediaType};base64,${item.data}`,\n                        };\n                      case 'file-url':\n                        return {\n                          type: 'input_file' as const,\n                          file_url: item.url,\n                        };\n                      default:\n                        warnings.push({\n                          type: 'other',\n                          message: `unsupported custom tool content part type: ${item.type}`,\n                        });\n                        return undefined;\n                    }\n                  })\n                  .filter(isNonNullable);\n                break;\n              default:\n                outputValue = '';\n            }\n            input.push({\n              type: 'custom_tool_call_output',\n              call_id: part.toolCallId,\n              output: outputValue,\n            } satisfies OpenAIResponsesCustomToolCallOutput);\n            continue;\n          }\n\n          let contentValue: OpenAIResponsesFunctionCallOutput['output'];\n          switch (output.type) {\n            case 'text':\n            case 'error-text':\n              contentValue = output.value;\n              break;\n            case 'execution-denied':\n              contentValue = output.reason ?? 'Tool execution denied.';\n              break;\n            case 'json':\n            case 'error-json':\n              contentValue = JSON.stringify(output.value);\n              break;\n            case 'content':\n              contentValue = output.value\n                .map(item => {\n                  switch (item.type) {\n                    case 'text': {\n                      return { type: 'input_text' as const, text: item.text };\n                    }\n\n                    case 'image-data': {\n                      return {\n                        type: 'input_image' as const,\n                        image_url: `data:${item.mediaType};base64,${item.data}`,\n                      };\n                    }\n\n                    case 'image-url': {\n                      return {\n                        type: 'input_image' as const,\n                        image_url: item.url,\n                      };\n                    }\n\n                    case 'file-data': {\n                      return {\n                        type: 'input_file' as const,\n                        filename: item.filename ?? 'data',\n                        file_data: `data:${item.mediaType};base64,${item.data}`,\n                      };\n                    }\n\n                    case 'file-url': {\n                      return {\n                        type: 'input_file' as const,\n                        file_url: item.url,\n                      };\n                    }\n\n                    default: {\n                      warnings.push({\n                        type: 'other',\n                        message: `unsupported tool content part type: ${item.type}`,\n                      });\n                      return undefined;\n                    }\n                  }\n                })\n                .filter(isNonNullable);\n              break;\n          }\n\n          input.push({\n            type: 'function_call_output',\n            call_id: part.toolCallId,\n            output: contentValue,\n          });\n        }\n\n        break;\n      }\n\n      default: {\n        const _exhaustiveCheck: never = role;\n        throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n      }\n    }\n  }\n\n  // when store is false, remove reasoning parts without encrypted content\n  if (\n    !store &&\n    input.some(\n      item =>\n        'type' in item &&\n        item.type === 'reasoning' &&\n        item.encrypted_content == null,\n    )\n  ) {\n    warnings.push({\n      type: 'other',\n      message:\n        'Reasoning parts without encrypted content are not supported when store is false. Skipping reasoning parts.',\n    });\n    input = input.filter(\n      item =>\n        !('type' in item) ||\n        item.type !== 'reasoning' ||\n        item.encrypted_content != null,\n    );\n  }\n\n  return { input, warnings };\n}\n\nconst openaiResponsesReasoningProviderOptionsSchema = z.object({\n  itemId: z.string().nullish(),\n  reasoningEncryptedContent: z.string().nullish(),\n});\n\nexport type OpenAIResponsesReasoningProviderOptions = z.infer<\n  typeof openaiResponsesReasoningProviderOptionsSchema\n>;\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenAIResponseFinishReason({\n  finishReason,\n  hasFunctionCall,\n}: {\n  finishReason: string | null | undefined;\n  // flag that checks if there have been client-side tool calls (not executed by openai)\n  hasFunctionCall: boolean;\n}): LanguageModelV3FinishReason['unified'] {\n  switch (finishReason) {\n    case undefined:\n    case null:\n      return hasFunctionCall ? 'tool-calls' : 'stop';\n    case 'max_output_tokens':\n      return 'length';\n    case 'content_filter':\n      return 'content-filter';\n    default:\n      return hasFunctionCall ? 'tool-calls' : 'other';\n  }\n}\n","import { JSONObject, JSONSchema7, JSONValue } from '@ai-sdk/provider';\nimport { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>\n  z.union([\n    z.string(),\n    z.number(),\n    z.boolean(),\n    z.null(),\n    z.array(jsonValueSchema),\n    z.record(z.string(), jsonValueSchema.optional()),\n  ]),\n);\n\nexport type OpenAIResponsesInput = Array<OpenAIResponsesInputItem>;\n\nexport type OpenAIResponsesInputItem =\n  | OpenAIResponsesSystemMessage\n  | OpenAIResponsesUserMessage\n  | OpenAIResponsesAssistantMessage\n  | OpenAIResponsesFunctionCall\n  | OpenAIResponsesFunctionCallOutput\n  | OpenAIResponsesCustomToolCall\n  | OpenAIResponsesCustomToolCallOutput\n  | OpenAIResponsesMcpApprovalResponse\n  | OpenAIResponsesComputerCall\n  | OpenAIResponsesLocalShellCall\n  | OpenAIResponsesLocalShellCallOutput\n  | OpenAIResponsesShellCall\n  | OpenAIResponsesShellCallOutput\n  | OpenAIResponsesApplyPatchCall\n  | OpenAIResponsesApplyPatchCallOutput\n  | OpenAIResponsesToolSearchCall\n  | OpenAIResponsesToolSearchOutput\n  | OpenAIResponsesReasoning\n  | OpenAIResponsesItemReference;\n\nexport type OpenAIResponsesIncludeValue =\n  | 'web_search_call.action.sources'\n  | 'code_interpreter_call.outputs'\n  | 'computer_call_output.output.image_url'\n  | 'file_search_call.results'\n  | 'message.input_image.image_url'\n  | 'message.output_text.logprobs'\n  | 'reasoning.encrypted_content';\n\nexport type OpenAIResponsesIncludeOptions =\n  | Array<OpenAIResponsesIncludeValue>\n  | undefined\n  | null;\n\nexport type OpenAIResponsesApplyPatchOperationDiffDeltaChunk = {\n  type: 'response.apply_patch_call_operation_diff.delta';\n  item_id: string;\n  output_index: number;\n  delta: string;\n  obfuscation?: string | null;\n};\n\nexport type OpenAIResponsesApplyPatchOperationDiffDoneChunk = {\n  type: 'response.apply_patch_call_operation_diff.done';\n  item_id: string;\n  output_index: number;\n  diff: string;\n};\n\nexport type OpenAIResponsesSystemMessage = {\n  role: 'system' | 'developer';\n  content: string;\n};\n\nexport type OpenAIResponsesUserMessage = {\n  role: 'user';\n  content: Array<\n    | { type: 'input_text'; text: string }\n    | { type: 'input_image'; image_url: string }\n    | { type: 'input_image'; file_id: string }\n    | { type: 'input_file'; file_url: string }\n    | { type: 'input_file'; filename: string; file_data: string }\n    | { type: 'input_file'; file_id: string }\n  >;\n};\n\nexport type OpenAIResponsesAssistantMessage = {\n  role: 'assistant';\n  content: Array<{ type: 'output_text'; text: string }>;\n  id?: string;\n  phase?: 'commentary' | 'final_answer' | null;\n};\n\nexport type OpenAIResponsesFunctionCall = {\n  type: 'function_call';\n  call_id: string;\n  name: string;\n  arguments: string;\n  id?: string;\n};\n\nexport type OpenAIResponsesFunctionCallOutput = {\n  type: 'function_call_output';\n  call_id: string;\n  output:\n    | string\n    | Array<\n        | { type: 'input_text'; text: string }\n        | { type: 'input_image'; image_url: string }\n        | { type: 'input_file'; filename: string; file_data: string }\n        | { type: 'input_file'; file_url: string }\n      >;\n};\n\nexport type OpenAIResponsesCustomToolCall = {\n  type: 'custom_tool_call';\n  id?: string;\n  call_id: string;\n  name: string;\n  input: string;\n};\n\nexport type OpenAIResponsesCustomToolCallOutput = {\n  type: 'custom_tool_call_output';\n  call_id: string;\n  output: OpenAIResponsesFunctionCallOutput['output'];\n};\n\nexport type OpenAIResponsesMcpApprovalResponse = {\n  type: 'mcp_approval_response';\n  approval_request_id: string;\n  approve: boolean;\n};\n\nexport type OpenAIResponsesComputerCall = {\n  type: 'computer_call';\n  id: string;\n  status?: string;\n};\n\nexport type OpenAIResponsesLocalShellCall = {\n  type: 'local_shell_call';\n  id: string;\n  call_id: string;\n  action: {\n    type: 'exec';\n    command: string[];\n    timeout_ms?: number;\n    user?: string;\n    working_directory?: string;\n    env?: Record<string, string>;\n  };\n};\n\nexport type OpenAIResponsesLocalShellCallOutput = {\n  type: 'local_shell_call_output';\n  call_id: string;\n  output: string;\n};\n\n/**\n * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/object#responses-object-output-shell_tool_call\n */\nexport type OpenAIResponsesShellCall = {\n  type: 'shell_call';\n  id: string;\n  call_id: string;\n  status: 'in_progress' | 'completed' | 'incomplete';\n  action: {\n    commands: string[];\n    timeout_ms?: number;\n    max_output_length?: number;\n  };\n};\n\nexport type OpenAIResponsesShellCallOutput = {\n  type: 'shell_call_output';\n  id?: string;\n  call_id: string;\n  status?: 'in_progress' | 'completed' | 'incomplete';\n  max_output_length?: number | null;\n  output: Array<{\n    stdout: string;\n    stderr: string;\n    outcome: { type: 'timeout' } | { type: 'exit'; exit_code: number };\n  }>;\n};\n\nexport type OpenAIResponsesApplyPatchCall = {\n  type: 'apply_patch_call';\n  id?: string;\n  call_id: string;\n  status: 'in_progress' | 'completed';\n  operation:\n    | {\n        type: 'create_file';\n        path: string;\n        diff: string;\n      }\n    | {\n        type: 'delete_file';\n        path: string;\n      }\n    | {\n        type: 'update_file';\n        path: string;\n        diff: string;\n      };\n};\n\nexport type OpenAIResponsesApplyPatchCallOutput = {\n  type: 'apply_patch_call_output';\n  call_id: string;\n  status: 'completed' | 'failed';\n  output?: string;\n};\n\nexport type OpenAIResponsesToolSearchCall = {\n  type: 'tool_search_call';\n  id: string;\n  execution: 'server' | 'client';\n  call_id: string | null;\n  status: 'in_progress' | 'completed' | 'incomplete';\n  arguments: unknown;\n};\n\nexport type OpenAIResponsesToolSearchOutput = {\n  type: 'tool_search_output';\n  id?: string;\n  execution: 'server' | 'client';\n  call_id: string | null;\n  status: 'in_progress' | 'completed' | 'incomplete';\n  tools: Array<JSONObject>;\n};\n\nexport type OpenAIResponsesItemReference = {\n  type: 'item_reference';\n  id: string;\n};\n\n/**\n * A filter used to compare a specified attribute key to a given value using a defined comparison operation.\n */\nexport type OpenAIResponsesFileSearchToolComparisonFilter = {\n  /**\n   * The key to compare against the value.\n   */\n  key: string;\n\n  /**\n   * Specifies the comparison operator: eq, ne, gt, gte, lt, lte, in, nin.\n   */\n  type: 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'nin';\n\n  /**\n   * The value to compare against the attribute key; supports string, number, boolean, or array of string types.\n   */\n  value: string | number | boolean | string[];\n};\n\n/**\n * Combine multiple filters using and or or.\n */\nexport type OpenAIResponsesFileSearchToolCompoundFilter = {\n  /**\n   * Type of operation: and or or.\n   */\n  type: 'and' | 'or';\n\n  /**\n   * Array of filters to combine. Items can be ComparisonFilter or CompoundFilter.\n   */\n  filters: Array<\n    | OpenAIResponsesFileSearchToolComparisonFilter\n    | OpenAIResponsesFileSearchToolCompoundFilter\n  >;\n};\n\nexport type OpenAIResponsesTool =\n  | {\n      type: 'function';\n      name: string;\n      description: string | undefined;\n      parameters: JSONSchema7;\n      strict?: boolean;\n      defer_loading?: boolean;\n    }\n  | {\n      type: 'apply_patch';\n    }\n  | {\n      type: 'web_search';\n      external_web_access: boolean | undefined;\n      filters: { allowed_domains: string[] | undefined } | undefined;\n      search_context_size: 'low' | 'medium' | 'high' | undefined;\n      user_location:\n        | {\n            type: 'approximate';\n            city?: string;\n            country?: string;\n            region?: string;\n            timezone?: string;\n          }\n        | undefined;\n    }\n  | {\n      type: 'web_search_preview';\n      search_context_size: 'low' | 'medium' | 'high' | undefined;\n      user_location:\n        | {\n            type: 'approximate';\n            city?: string;\n            country?: string;\n            region?: string;\n            timezone?: string;\n          }\n        | undefined;\n    }\n  | {\n      type: 'code_interpreter';\n      container: string | { type: 'auto'; file_ids: string[] | undefined };\n    }\n  | {\n      type: 'file_search';\n      vector_store_ids: string[];\n      max_num_results: number | undefined;\n      ranking_options:\n        | { ranker?: string; score_threshold?: number }\n        | undefined;\n      filters:\n        | OpenAIResponsesFileSearchToolComparisonFilter\n        | OpenAIResponsesFileSearchToolCompoundFilter\n        | undefined;\n    }\n  | {\n      type: 'image_generation';\n      background: 'auto' | 'opaque' | 'transparent' | undefined;\n      input_fidelity: 'low' | 'high' | undefined;\n      input_image_mask:\n        | {\n            file_id: string | undefined;\n            image_url: string | undefined;\n          }\n        | undefined;\n      model: string | undefined;\n      moderation: 'auto' | undefined;\n      output_compression: number | undefined;\n      output_format: 'png' | 'jpeg' | 'webp' | undefined;\n      partial_images: number | undefined;\n      quality: 'auto' | 'low' | 'medium' | 'high' | undefined;\n      size: 'auto' | '1024x1024' | '1024x1536' | '1536x1024' | undefined;\n    }\n\n  /**\n   * Official OpenAI API Specifications: https://platform.openai.com/docs/api-reference/responses/create#responses_create-tools-mcp_tool\n   */\n  | {\n      type: 'mcp';\n      server_label: string;\n      allowed_tools:\n        | string[]\n        | {\n            read_only?: boolean;\n            tool_names?: string[];\n          }\n        | undefined;\n      authorization: string | undefined;\n      connector_id: string | undefined;\n      headers: Record<string, string> | undefined;\n      require_approval:\n        | 'always'\n        | 'never'\n        | {\n            never?: { tool_names?: string[] };\n          }\n        | undefined;\n      server_description: string | undefined;\n      server_url: string | undefined;\n    }\n  | {\n      type: 'custom';\n      name: string;\n      description?: string;\n      format?:\n        | {\n            type: 'grammar';\n            syntax: 'regex' | 'lark';\n            definition: string;\n          }\n        | {\n            type: 'text';\n          };\n    }\n  | {\n      type: 'local_shell';\n    }\n  | {\n      type: 'shell';\n      environment?:\n        | {\n            type: 'container_auto';\n            file_ids?: string[];\n            memory_limit?: '1g' | '4g' | '16g' | '64g';\n            network_policy?:\n              | { type: 'disabled' }\n              | {\n                  type: 'allowlist';\n                  allowed_domains: string[];\n                  domain_secrets?: Array<{\n                    domain: string;\n                    name: string;\n                    value: string;\n                  }>;\n                };\n            skills?: Array<\n              | {\n                  type: 'skill_reference';\n                  skill_id: string;\n                  version?: string;\n                }\n              | {\n                  type: 'inline';\n                  name: string;\n                  description: string;\n                  source: {\n                    type: 'base64';\n                    media_type: 'application/zip';\n                    data: string;\n                  };\n                }\n            >;\n          }\n        | {\n            type: 'container_reference';\n            container_id: string;\n          }\n        | {\n            type: 'local';\n            skills?: Array<{\n              name: string;\n              description: string;\n              path: string;\n            }>;\n          };\n    }\n  | {\n      type: 'tool_search';\n      execution?: 'server' | 'client';\n      description?: string;\n      parameters?: Record<string, unknown>;\n    };\n\nexport type OpenAIResponsesReasoning = {\n  type: 'reasoning';\n  id?: string;\n  encrypted_content?: string | null;\n  summary: Array<{\n    type: 'summary_text';\n    text: string;\n  }>;\n};\n\nexport const openaiResponsesChunkSchema = lazySchema(() =>\n  zodSchema(\n    z.union([\n      z.object({\n        type: z.literal('response.output_text.delta'),\n        item_id: z.string(),\n        delta: z.string(),\n        logprobs: z\n          .array(\n            z.object({\n              token: z.string(),\n              logprob: z.number(),\n              top_logprobs: z.array(\n                z.object({\n                  token: z.string(),\n                  logprob: z.number(),\n                }),\n              ),\n            }),\n          )\n          .nullish(),\n      }),\n      z.object({\n        type: z.enum(['response.completed', 'response.incomplete']),\n        response: z.object({\n          incomplete_details: z.object({ reason: z.string() }).nullish(),\n          usage: z.object({\n            input_tokens: z.number(),\n            input_tokens_details: z\n              .object({ cached_tokens: z.number().nullish() })\n              .nullish(),\n            output_tokens: z.number(),\n            output_tokens_details: z\n              .object({ reasoning_tokens: z.number().nullish() })\n              .nullish(),\n          }),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.failed'),\n        response: z.object({\n          error: z\n            .object({\n              code: z.string().nullish(),\n              message: z.string(),\n            })\n            .nullish(),\n          incomplete_details: z.object({ reason: z.string() }).nullish(),\n          usage: z\n            .object({\n              input_tokens: z.number(),\n              input_tokens_details: z\n                .object({ cached_tokens: z.number().nullish() })\n                .nullish(),\n              output_tokens: z.number(),\n              output_tokens_details: z\n                .object({ reasoning_tokens: z.number().nullish() })\n                .nullish(),\n            })\n            .nullish(),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.created'),\n        response: z.object({\n          id: z.string(),\n          created_at: z.number(),\n          model: z.string(),\n          service_tier: z.string().nullish(),\n        }),\n      }),\n      z.object({\n        type: z.literal('response.output_item.added'),\n        output_index: z.number(),\n        item: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('message'),\n            id: z.string(),\n            phase: z.enum(['commentary', 'final_answer']).nullish(),\n          }),\n          z.object({\n            type: z.literal('reasoning'),\n            id: z.string(),\n            encrypted_content: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('function_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n          }),\n          z.object({\n            type: z.literal('web_search_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('computer_call'),\n            id: z.string(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('file_search_call'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('image_generation_call'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('code_interpreter_call'),\n            id: z.string(),\n            container_id: z.string(),\n            code: z.string().nullable(),\n            outputs: z\n              .array(\n                z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('logs'), logs: z.string() }),\n                  z.object({ type: z.literal('image'), url: z.string() }),\n                ]),\n              )\n              .nullable(),\n            status: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n            approval_request_id: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: z.string(),\n          }),\n          z.object({\n            type: z.literal('apply_patch_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed']),\n            operation: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('create_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n              z.object({\n                type: z.literal('delete_file'),\n                path: z.string(),\n              }),\n              z.object({\n                type: z.literal('update_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n            ]),\n          }),\n          z.object({\n            type: z.literal('custom_tool_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            input: z.string(),\n          }),\n          z.object({\n            type: z.literal('shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            action: z.object({\n              commands: z.array(z.string()),\n            }),\n          }),\n          z.object({\n            type: z.literal('shell_call_output'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            output: z.array(\n              z.object({\n                stdout: z.string(),\n                stderr: z.string(),\n                outcome: z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('timeout') }),\n                  z.object({\n                    type: z.literal('exit'),\n                    exit_code: z.number(),\n                  }),\n                ]),\n              }),\n            ),\n          }),\n          z.object({\n            type: z.literal('tool_search_call'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            arguments: z.unknown(),\n          }),\n          z.object({\n            type: z.literal('tool_search_output'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            tools: z.array(z.record(z.string(), jsonValueSchema.optional())),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.output_item.done'),\n        output_index: z.number(),\n        item: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('message'),\n            id: z.string(),\n            phase: z.enum(['commentary', 'final_answer']).nullish(),\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('custom_tool_call'),\n            id: z.string(),\n            call_id: z.string(),\n            name: z.string(),\n            input: z.string(),\n            status: z.literal('completed'),\n          }),\n          z.object({\n            type: z.literal('code_interpreter_call'),\n            id: z.string(),\n            code: z.string().nullable(),\n            container_id: z.string(),\n            outputs: z\n              .array(\n                z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('logs'), logs: z.string() }),\n                  z.object({ type: z.literal('image'), url: z.string() }),\n                ]),\n              )\n              .nullable(),\n          }),\n          z.object({\n            type: z.literal('image_generation_call'),\n            id: z.string(),\n            result: z.string(),\n          }),\n          z.object({\n            type: z.literal('web_search_call'),\n            id: z.string(),\n            status: z.string(),\n            action: z\n              .discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('search'),\n                  query: z.string().nullish(),\n                  sources: z\n                    .array(\n                      z.discriminatedUnion('type', [\n                        z.object({ type: z.literal('url'), url: z.string() }),\n                        z.object({ type: z.literal('api'), name: z.string() }),\n                      ]),\n                    )\n                    .nullish(),\n                }),\n                z.object({\n                  type: z.literal('open_page'),\n                  url: z.string().nullish(),\n                }),\n                z.object({\n                  type: z.literal('find_in_page'),\n                  url: z.string().nullish(),\n                  pattern: z.string().nullish(),\n                }),\n              ])\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('file_search_call'),\n            id: z.string(),\n            queries: z.array(z.string()),\n            results: z\n              .array(\n                z.object({\n                  attributes: z.record(\n                    z.string(),\n                    z.union([z.string(), z.number(), z.boolean()]),\n                  ),\n                  file_id: z.string(),\n                  filename: z.string(),\n                  score: z.number(),\n                  text: z.string(),\n                }),\n              )\n              .nullish(),\n          }),\n          z.object({\n            type: z.literal('local_shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            action: z.object({\n              type: z.literal('exec'),\n              command: z.array(z.string()),\n              timeout_ms: z.number().optional(),\n              user: z.string().optional(),\n              working_directory: z.string().optional(),\n              env: z.record(z.string(), z.string()).optional(),\n            }),\n          }),\n          z.object({\n            type: z.literal('computer_call'),\n            id: z.string(),\n            status: z.literal('completed'),\n          }),\n          z.object({\n            type: z.literal('mcp_call'),\n            id: z.string(),\n            status: z.string(),\n            arguments: z.string(),\n            name: z.string(),\n            server_label: z.string(),\n            output: z.string().nullish(),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .nullish(),\n            approval_request_id: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('mcp_list_tools'),\n            id: z.string(),\n            server_label: z.string(),\n            tools: z.array(\n              z.object({\n                name: z.string(),\n                description: z.string().optional(),\n                input_schema: z.any(),\n                annotations: z.record(z.string(), z.unknown()).optional(),\n              }),\n            ),\n            error: z\n              .union([\n                z.string(),\n                z\n                  .object({\n                    type: z.string().optional(),\n                    code: z.union([z.number(), z.string()]).optional(),\n                    message: z.string().optional(),\n                  })\n                  .loose(),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('mcp_approval_request'),\n            id: z.string(),\n            server_label: z.string(),\n            name: z.string(),\n            arguments: z.string(),\n            approval_request_id: z.string().optional(),\n          }),\n          z.object({\n            type: z.literal('apply_patch_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed']),\n            operation: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('create_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n              z.object({\n                type: z.literal('delete_file'),\n                path: z.string(),\n              }),\n              z.object({\n                type: z.literal('update_file'),\n                path: z.string(),\n                diff: z.string(),\n              }),\n            ]),\n          }),\n          z.object({\n            type: z.literal('shell_call'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            action: z.object({\n              commands: z.array(z.string()),\n            }),\n          }),\n          z.object({\n            type: z.literal('shell_call_output'),\n            id: z.string(),\n            call_id: z.string(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            output: z.array(\n              z.object({\n                stdout: z.string(),\n                stderr: z.string(),\n                outcome: z.discriminatedUnion('type', [\n                  z.object({ type: z.literal('timeout') }),\n                  z.object({\n                    type: z.literal('exit'),\n                    exit_code: z.number(),\n                  }),\n                ]),\n              }),\n            ),\n          }),\n          z.object({\n            type: z.literal('tool_search_call'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            arguments: z.unknown(),\n          }),\n          z.object({\n            type: z.literal('tool_search_output'),\n            id: z.string(),\n            execution: z.enum(['server', 'client']),\n            call_id: z.string().nullable(),\n            status: z.enum(['in_progress', 'completed', 'incomplete']),\n            tools: z.array(z.record(z.string(), jsonValueSchema.optional())),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.function_call_arguments.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.custom_tool_call_input.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.image_generation_call.partial_image'),\n        item_id: z.string(),\n        output_index: z.number(),\n        partial_image_b64: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.code_interpreter_call_code.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.code_interpreter_call_code.done'),\n        item_id: z.string(),\n        output_index: z.number(),\n        code: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.output_text.annotation.added'),\n        annotation: z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('url_citation'),\n            start_index: z.number(),\n            end_index: z.number(),\n            url: z.string(),\n            title: z.string(),\n          }),\n          z.object({\n            type: z.literal('file_citation'),\n            file_id: z.string(),\n            filename: z.string(),\n            index: z.number(),\n          }),\n          z.object({\n            type: z.literal('container_file_citation'),\n            container_id: z.string(),\n            file_id: z.string(),\n            filename: z.string(),\n            start_index: z.number(),\n            end_index: z.number(),\n          }),\n          z.object({\n            type: z.literal('file_path'),\n            file_id: z.string(),\n            index: z.number(),\n          }),\n        ]),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_part.added'),\n        item_id: z.string(),\n        summary_index: z.number(),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_text.delta'),\n        item_id: z.string(),\n        summary_index: z.number(),\n        delta: z.string(),\n      }),\n      z.object({\n        type: z.literal('response.reasoning_summary_part.done'),\n        item_id: z.string(),\n        summary_index: z.number(),\n      }),\n      z.object({\n        type: z.literal('response.apply_patch_call_operation_diff.delta'),\n        item_id: z.string(),\n        output_index: z.number(),\n        delta: z.string(),\n        obfuscation: z.string().nullish(),\n      }),\n      z.object({\n        type: z.literal('response.apply_patch_call_operation_diff.done'),\n        item_id: z.string(),\n        output_index: z.number(),\n        diff: z.string(),\n      }),\n      z.object({\n        type: z.literal('error'),\n        sequence_number: z.number(),\n        error: z.object({\n          type: z.string(),\n          code: z.string(),\n          message: z.string(),\n          param: z.string().nullish(),\n        }),\n      }),\n      z\n        .object({ type: z.string() })\n        .loose()\n        .transform(value => ({\n          type: 'unknown_chunk' as const,\n          message: value.type,\n        })), // fallback for unknown chunks\n    ]),\n  ),\n);\n\nexport type OpenAIResponsesChunk = InferSchema<\n  typeof openaiResponsesChunkSchema\n>;\n\nexport type OpenAIResponsesLogprobs = NonNullable<\n  (OpenAIResponsesChunk & {\n    type: 'response.output_text.delta';\n  })['logprobs']\n> | null;\n\nexport type OpenAIResponsesWebSearchAction = NonNullable<\n  ((OpenAIResponsesChunk & {\n    type: 'response.output_item.done';\n  })['item'] & {\n    type: 'web_search_call';\n  })['action']\n>;\n\nexport const openaiResponsesResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      id: z.string().optional(),\n      created_at: z.number().optional(),\n      error: z\n        .object({\n          message: z.string(),\n          type: z.string(),\n          param: z.string().nullish(),\n          code: z.string(),\n        })\n        .nullish(),\n      model: z.string().optional(),\n      output: z\n        .array(\n          z.discriminatedUnion('type', [\n            z.object({\n              type: z.literal('message'),\n              role: z.literal('assistant'),\n              id: z.string(),\n              phase: z.enum(['commentary', 'final_answer']).nullish(),\n              content: z.array(\n                z.object({\n                  type: z.literal('output_text'),\n                  text: z.string(),\n                  logprobs: z\n                    .array(\n                      z.object({\n                        token: z.string(),\n                        logprob: z.number(),\n                        top_logprobs: z.array(\n                          z.object({\n                            token: z.string(),\n                            logprob: z.number(),\n                          }),\n                        ),\n                      }),\n                    )\n                    .nullish(),\n                  annotations: z.array(\n                    z.discriminatedUnion('type', [\n                      z.object({\n                        type: z.literal('url_citation'),\n                        start_index: z.number(),\n                        end_index: z.number(),\n                        url: z.string(),\n                        title: z.string(),\n                      }),\n                      z.object({\n                        type: z.literal('file_citation'),\n                        file_id: z.string(),\n                        filename: z.string(),\n                        index: z.number(),\n                      }),\n                      z.object({\n                        type: z.literal('container_file_citation'),\n                        container_id: z.string(),\n                        file_id: z.string(),\n                        filename: z.string(),\n                        start_index: z.number(),\n                        end_index: z.number(),\n                      }),\n                      z.object({\n                        type: z.literal('file_path'),\n                        file_id: z.string(),\n                        index: z.number(),\n                      }),\n                    ]),\n                  ),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('web_search_call'),\n              id: z.string(),\n              status: z.string(),\n              action: z\n                .discriminatedUnion('type', [\n                  z.object({\n                    type: z.literal('search'),\n                    query: z.string().nullish(),\n                    sources: z\n                      .array(\n                        z.discriminatedUnion('type', [\n                          z.object({ type: z.literal('url'), url: z.string() }),\n                          z.object({\n                            type: z.literal('api'),\n                            name: z.string(),\n                          }),\n                        ]),\n                      )\n                      .nullish(),\n                  }),\n                  z.object({\n                    type: z.literal('open_page'),\n                    url: z.string().nullish(),\n                  }),\n                  z.object({\n                    type: z.literal('find_in_page'),\n                    url: z.string().nullish(),\n                    pattern: z.string().nullish(),\n                  }),\n                ])\n                .nullish(),\n            }),\n            z.object({\n              type: z.literal('file_search_call'),\n              id: z.string(),\n              queries: z.array(z.string()),\n              results: z\n                .array(\n                  z.object({\n                    attributes: z.record(\n                      z.string(),\n                      z.union([z.string(), z.number(), z.boolean()]),\n                    ),\n                    file_id: z.string(),\n                    filename: z.string(),\n                    score: z.number(),\n                    text: z.string(),\n                  }),\n                )\n                .nullish(),\n            }),\n            z.object({\n              type: z.literal('code_interpreter_call'),\n              id: z.string(),\n              code: z.string().nullable(),\n              container_id: z.string(),\n              outputs: z\n                .array(\n                  z.discriminatedUnion('type', [\n                    z.object({ type: z.literal('logs'), logs: z.string() }),\n                    z.object({ type: z.literal('image'), url: z.string() }),\n                  ]),\n                )\n                .nullable(),\n            }),\n            z.object({\n              type: z.literal('image_generation_call'),\n              id: z.string(),\n              result: z.string(),\n            }),\n            z.object({\n              type: z.literal('local_shell_call'),\n              id: z.string(),\n              call_id: z.string(),\n              action: z.object({\n                type: z.literal('exec'),\n                command: z.array(z.string()),\n                timeout_ms: z.number().optional(),\n                user: z.string().optional(),\n                working_directory: z.string().optional(),\n                env: z.record(z.string(), z.string()).optional(),\n              }),\n            }),\n            z.object({\n              type: z.literal('function_call'),\n              call_id: z.string(),\n              name: z.string(),\n              arguments: z.string(),\n              id: z.string(),\n            }),\n            z.object({\n              type: z.literal('custom_tool_call'),\n              call_id: z.string(),\n              name: z.string(),\n              input: z.string(),\n              id: z.string(),\n            }),\n            z.object({\n              type: z.literal('computer_call'),\n              id: z.string(),\n              status: z.string().optional(),\n            }),\n            z.object({\n              type: z.literal('reasoning'),\n              id: z.string(),\n              encrypted_content: z.string().nullish(),\n              summary: z.array(\n                z.object({\n                  type: z.literal('summary_text'),\n                  text: z.string(),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('mcp_call'),\n              id: z.string(),\n              status: z.string(),\n              arguments: z.string(),\n              name: z.string(),\n              server_label: z.string(),\n              output: z.string().nullish(),\n              error: z\n                .union([\n                  z.string(),\n                  z\n                    .object({\n                      type: z.string().optional(),\n                      code: z.union([z.number(), z.string()]).optional(),\n                      message: z.string().optional(),\n                    })\n                    .loose(),\n                ])\n                .nullish(),\n              approval_request_id: z.string().nullish(),\n            }),\n            z.object({\n              type: z.literal('mcp_list_tools'),\n              id: z.string(),\n              server_label: z.string(),\n              tools: z.array(\n                z.object({\n                  name: z.string(),\n                  description: z.string().optional(),\n                  input_schema: z.any(),\n                  annotations: z.record(z.string(), z.unknown()).optional(),\n                }),\n              ),\n              error: z\n                .union([\n                  z.string(),\n                  z\n                    .object({\n                      type: z.string().optional(),\n                      code: z.union([z.number(), z.string()]).optional(),\n                      message: z.string().optional(),\n                    })\n                    .loose(),\n                ])\n                .optional(),\n            }),\n            z.object({\n              type: z.literal('mcp_approval_request'),\n              id: z.string(),\n              server_label: z.string(),\n              name: z.string(),\n              arguments: z.string(),\n              approval_request_id: z.string().optional(),\n            }),\n            z.object({\n              type: z.literal('apply_patch_call'),\n              id: z.string(),\n              call_id: z.string(),\n              status: z.enum(['in_progress', 'completed']),\n              operation: z.discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('create_file'),\n                  path: z.string(),\n                  diff: z.string(),\n                }),\n                z.object({\n                  type: z.literal('delete_file'),\n                  path: z.string(),\n                }),\n                z.object({\n                  type: z.literal('update_file'),\n                  path: z.string(),\n                  diff: z.string(),\n                }),\n              ]),\n            }),\n            z.object({\n              type: z.literal('shell_call'),\n              id: z.string(),\n              call_id: z.string(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              action: z.object({\n                commands: z.array(z.string()),\n              }),\n            }),\n            z.object({\n              type: z.literal('shell_call_output'),\n              id: z.string(),\n              call_id: z.string(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              output: z.array(\n                z.object({\n                  stdout: z.string(),\n                  stderr: z.string(),\n                  outcome: z.discriminatedUnion('type', [\n                    z.object({ type: z.literal('timeout') }),\n                    z.object({\n                      type: z.literal('exit'),\n                      exit_code: z.number(),\n                    }),\n                  ]),\n                }),\n              ),\n            }),\n            z.object({\n              type: z.literal('tool_search_call'),\n              id: z.string(),\n              execution: z.enum(['server', 'client']),\n              call_id: z.string().nullable(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              arguments: z.unknown(),\n            }),\n            z.object({\n              type: z.literal('tool_search_output'),\n              id: z.string(),\n              execution: z.enum(['server', 'client']),\n              call_id: z.string().nullable(),\n              status: z.enum(['in_progress', 'completed', 'incomplete']),\n              tools: z.array(z.record(z.string(), jsonValueSchema.optional())),\n            }),\n          ]),\n        )\n        .optional(),\n      service_tier: z.string().nullish(),\n      incomplete_details: z.object({ reason: z.string() }).nullish(),\n      usage: z\n        .object({\n          input_tokens: z.number(),\n          input_tokens_details: z\n            .object({ cached_tokens: z.number().nullish() })\n            .nullish(),\n          output_tokens: z.number(),\n          output_tokens_details: z\n            .object({ reasoning_tokens: z.number().nullish() })\n            .nullish(),\n        })\n        .optional(),\n    }),\n  ),\n);\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * `top_logprobs` request body argument can be set to an integer between\n * 0 and 20 specifying the number of most likely tokens to return at each\n * token position, each with an associated log probability.\n *\n * @see https://platform.openai.com/docs/api-reference/responses/create#responses_create-top_logprobs\n */\nexport const TOP_LOGPROBS_MAX = 20;\n\nexport const openaiResponsesReasoningModelIds = [\n  'o1',\n  'o1-2024-12-17',\n  'o3',\n  'o3-2025-04-16',\n  'o3-mini',\n  'o3-mini-2025-01-31',\n  'o4-mini',\n  'o4-mini-2025-04-16',\n  'gpt-5',\n  'gpt-5-2025-08-07',\n  'gpt-5-codex',\n  'gpt-5-mini',\n  'gpt-5-mini-2025-08-07',\n  'gpt-5-nano',\n  'gpt-5-nano-2025-08-07',\n  'gpt-5-pro',\n  'gpt-5-pro-2025-10-06',\n  'gpt-5.1',\n  'gpt-5.1-chat-latest',\n  'gpt-5.1-codex-mini',\n  'gpt-5.1-codex',\n  'gpt-5.1-codex-max',\n  'gpt-5.2',\n  'gpt-5.2-chat-latest',\n  'gpt-5.2-pro',\n  'gpt-5.2-codex',\n  'gpt-5.3-chat-latest',\n  'gpt-5.3-codex',\n  'gpt-5.4',\n  'gpt-5.4-2026-03-05',\n  'gpt-5.4-mini',\n  'gpt-5.4-mini-2026-03-17',\n  'gpt-5.4-nano',\n  'gpt-5.4-nano-2026-03-17',\n  'gpt-5.4-pro',\n  'gpt-5.4-pro-2026-03-05',\n] as const;\n\nexport const openaiResponsesModelIds = [\n  'gpt-4.1',\n  'gpt-4.1-2025-04-14',\n  'gpt-4.1-mini',\n  'gpt-4.1-mini-2025-04-14',\n  'gpt-4.1-nano',\n  'gpt-4.1-nano-2025-04-14',\n  'gpt-4o',\n  'gpt-4o-2024-05-13',\n  'gpt-4o-2024-08-06',\n  'gpt-4o-2024-11-20',\n  'gpt-4o-audio-preview',\n  'gpt-4o-audio-preview-2024-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-3.5-turbo-0125',\n  'gpt-3.5-turbo',\n  'gpt-3.5-turbo-1106',\n  'gpt-5-chat-latest',\n  ...openaiResponsesReasoningModelIds,\n] as const;\n\nexport type OpenAIResponsesModelId =\n  | 'gpt-3.5-turbo-0125'\n  | 'gpt-3.5-turbo-1106'\n  | 'gpt-3.5-turbo'\n  | 'gpt-4.1-2025-04-14'\n  | 'gpt-4.1-mini-2025-04-14'\n  | 'gpt-4.1-mini'\n  | 'gpt-4.1-nano-2025-04-14'\n  | 'gpt-4.1-nano'\n  | 'gpt-4.1'\n  | 'gpt-4o-2024-05-13'\n  | 'gpt-4o-2024-08-06'\n  | 'gpt-4o-2024-11-20'\n  | 'gpt-4o-mini-2024-07-18'\n  | 'gpt-4o-mini'\n  | 'gpt-4o'\n  | 'gpt-5.1'\n  | 'gpt-5.1-2025-11-13'\n  | 'gpt-5.1-chat-latest'\n  | 'gpt-5.1-codex-mini'\n  | 'gpt-5.1-codex'\n  | 'gpt-5.1-codex-max'\n  | 'gpt-5.2'\n  | 'gpt-5.2-2025-12-11'\n  | 'gpt-5.2-chat-latest'\n  | 'gpt-5.2-pro'\n  | 'gpt-5.2-pro-2025-12-11'\n  | 'gpt-5.2-codex'\n  | 'gpt-5.3-chat-latest'\n  | 'gpt-5.3-codex'\n  | 'gpt-5.4'\n  | 'gpt-5.4-2026-03-05'\n  | 'gpt-5.4-mini'\n  | 'gpt-5.4-mini-2026-03-17'\n  | 'gpt-5.4-nano'\n  | 'gpt-5.4-nano-2026-03-17'\n  | 'gpt-5.4-pro'\n  | 'gpt-5.4-pro-2026-03-05'\n  | 'gpt-5-2025-08-07'\n  | 'gpt-5-chat-latest'\n  | 'gpt-5-codex'\n  | 'gpt-5-mini-2025-08-07'\n  | 'gpt-5-mini'\n  | 'gpt-5-nano-2025-08-07'\n  | 'gpt-5-nano'\n  | 'gpt-5-pro-2025-10-06'\n  | 'gpt-5-pro'\n  | 'gpt-5'\n  | 'o1-2024-12-17'\n  | 'o1'\n  | 'o3-2025-04-16'\n  | 'o3-mini-2025-01-31'\n  | 'o3-mini'\n  | 'o3'\n  | 'o4-mini'\n  | 'o4-mini-2025-04-16'\n  | (string & {});\n\n// TODO AI SDK 6: use optional here instead of nullish\nexport const openaiLanguageModelResponsesOptionsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * The ID of the OpenAI Conversation to continue.\n       * You must create a conversation first via the OpenAI API.\n       * Cannot be used in conjunction with `previousResponseId`.\n       * Defaults to `undefined`.\n       * @see https://platform.openai.com/docs/api-reference/conversations/create\n       */\n      conversation: z.string().nullish(),\n\n      /**\n       * The set of extra fields to include in the response (advanced, usually not needed).\n       * Example values: 'reasoning.encrypted_content', 'file_search_call.results', 'message.output_text.logprobs'.\n       */\n      include: z\n        .array(\n          z.enum([\n            'reasoning.encrypted_content', // handled internally by default, only needed for unknown reasoning models\n            'file_search_call.results',\n            'message.output_text.logprobs',\n          ]),\n        )\n        .nullish(),\n\n      /**\n       * Instructions for the model.\n       * They can be used to change the system or developer message when continuing a conversation using the `previousResponseId` option.\n       * Defaults to `undefined`.\n       */\n      instructions: z.string().nullish(),\n\n      /**\n       * Return the log probabilities of the tokens. Including logprobs will increase\n       * the response size and can slow down response times. However, it can\n       * be useful to better understand how the model is behaving.\n       *\n       * Setting to true will return the log probabilities of the tokens that\n       * were generated.\n       *\n       * Setting to a number will return the log probabilities of the top n\n       * tokens that were generated.\n       *\n       * @see https://platform.openai.com/docs/api-reference/responses/create\n       * @see https://cookbook.openai.com/examples/using_logprobs\n       */\n      logprobs: z\n        .union([z.boolean(), z.number().min(1).max(TOP_LOGPROBS_MAX)])\n        .optional(),\n\n      /**\n       * The maximum number of total calls to built-in tools that can be processed in a response.\n       * This maximum number applies across all built-in tool calls, not per individual tool.\n       * Any further attempts to call a tool by the model will be ignored.\n       */\n      maxToolCalls: z.number().nullish(),\n\n      /**\n       * Additional metadata to store with the generation.\n       */\n      metadata: z.any().nullish(),\n\n      /**\n       * Whether to use parallel tool calls. Defaults to `true`.\n       */\n      parallelToolCalls: z.boolean().nullish(),\n\n      /**\n       * The ID of the previous response. You can use it to continue a conversation.\n       * Defaults to `undefined`.\n       */\n      previousResponseId: z.string().nullish(),\n\n      /**\n       * Sets a cache key to tie this prompt to cached prefixes for better caching performance.\n       */\n      promptCacheKey: z.string().nullish(),\n\n      /**\n       * The retention policy for the prompt cache.\n       * - 'in_memory': Default. Standard prompt caching behavior.\n       * - '24h': Extended prompt caching that keeps cached prefixes active for up to 24 hours.\n       *          Currently only available for 5.1 series models.\n       *\n       * @default 'in_memory'\n       */\n      promptCacheRetention: z.enum(['in_memory', '24h']).nullish(),\n\n      /**\n       * Reasoning effort for reasoning models. Defaults to `medium`. If you use\n       * `providerOptions` to set the `reasoningEffort` option, this model setting will be ignored.\n       * Valid values: 'none' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh'\n       *\n       * The 'none' type for `reasoningEffort` is only available for OpenAI's GPT-5.1\n       * models. Also, the 'xhigh' type for `reasoningEffort` is only available for\n       * OpenAI's GPT-5.1-Codex-Max model. Setting `reasoningEffort` to 'none' or 'xhigh' with unsupported models will result in\n       * an error.\n       */\n      reasoningEffort: z.string().nullish(),\n\n      /**\n       * Controls reasoning summary output from the model.\n       * Set to \"auto\" to automatically receive the richest level available,\n       * or \"detailed\" for comprehensive summaries.\n       */\n      reasoningSummary: z.string().nullish(),\n\n      /**\n       * The identifier for safety monitoring and tracking.\n       */\n      safetyIdentifier: z.string().nullish(),\n\n      /**\n       * Service tier for the request.\n       * Set to 'flex' for 50% cheaper processing at the cost of increased latency (available for o3, o4-mini, and gpt-5 models).\n       * Set to 'priority' for faster processing with Enterprise access (available for gpt-4, gpt-5, gpt-5-mini, o3, o4-mini; gpt-5-nano is not supported).\n       *\n       * Defaults to 'auto'.\n       */\n      serviceTier: z.enum(['auto', 'flex', 'priority', 'default']).nullish(),\n\n      /**\n       * Whether to store the generation. Defaults to `true`.\n       */\n      store: z.boolean().nullish(),\n\n      /**\n       * Whether to use strict JSON schema validation.\n       * Defaults to `true`.\n       */\n      strictJsonSchema: z.boolean().nullish(),\n\n      /**\n       * Controls the verbosity of the model's responses. Lower values ('low') will result\n       * in more concise responses, while higher values ('high') will result in more verbose responses.\n       * Valid values: 'low', 'medium', 'high'.\n       */\n      textVerbosity: z.enum(['low', 'medium', 'high']).nullish(),\n\n      /**\n       * Controls output truncation. 'auto' (default) performs truncation automatically;\n       * 'disabled' turns truncation off.\n       */\n      truncation: z.enum(['auto', 'disabled']).nullish(),\n\n      /**\n       * A unique identifier representing your end-user, which can help OpenAI to\n       * monitor and detect abuse.\n       * Defaults to `undefined`.\n       * @see https://platform.openai.com/docs/guides/safety-best-practices/end-user-ids\n       */\n      user: z.string().nullish(),\n\n      /**\n       * Override the system message mode for this model.\n       * - 'system': Use the 'system' role for system messages (default for most models)\n       * - 'developer': Use the 'developer' role for system messages (used by reasoning models)\n       * - 'remove': Remove system messages entirely\n       *\n       * If not specified, the mode is automatically determined based on the model.\n       */\n      systemMessageMode: z.enum(['system', 'developer', 'remove']).optional(),\n\n      /**\n       * Force treating this model as a reasoning model.\n       *\n       * This is useful for \"stealth\" reasoning models (e.g. via a custom baseURL)\n       * where the model ID is not recognized by the SDK's allowlist.\n       *\n       * When enabled, the SDK applies reasoning-model parameter compatibility rules\n       * and defaults `systemMessageMode` to `developer` unless overridden.\n       */\n      forceReasoning: z.boolean().optional(),\n    }),\n  ),\n);\n\nexport type OpenAILanguageModelResponsesOptions = InferSchema<\n  typeof openaiLanguageModelResponsesOptionsSchema\n>;\n","import {\n  LanguageModelV3CallOptions,\n  SharedV3Warning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { ToolNameMapping, validateTypes } from '@ai-sdk/provider-utils';\nimport { codeInterpreterArgsSchema } from '../tool/code-interpreter';\nimport { fileSearchArgsSchema } from '../tool/file-search';\nimport { imageGenerationArgsSchema } from '../tool/image-generation';\nimport { customArgsSchema } from '../tool/custom';\nimport { mcpArgsSchema } from '../tool/mcp';\nimport { shellArgsSchema } from '../tool/shell';\nimport { toolSearchArgsSchema } from '../tool/tool-search';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { webSearchPreviewArgsSchema } from '../tool/web-search-preview';\nimport { OpenAIResponsesTool } from './openai-responses-api';\n\nexport async function prepareResponsesTools({\n  tools,\n  toolChoice,\n  toolNameMapping,\n  customProviderToolNames,\n}: {\n  tools: LanguageModelV3CallOptions['tools'];\n  toolChoice: LanguageModelV3CallOptions['toolChoice'] | undefined;\n  toolNameMapping?: ToolNameMapping;\n  customProviderToolNames?: Set<string>;\n}): Promise<{\n  tools?: Array<OpenAIResponsesTool>;\n  toolChoice?:\n    | 'auto'\n    | 'none'\n    | 'required'\n    | { type: 'file_search' }\n    | { type: 'web_search_preview' }\n    | { type: 'web_search' }\n    | { type: 'function'; name: string }\n    | { type: 'custom'; name: string }\n    | { type: 'code_interpreter' }\n    | { type: 'mcp' }\n    | { type: 'image_generation' }\n    | { type: 'apply_patch' };\n  toolWarnings: SharedV3Warning[];\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: SharedV3Warning[] = [];\n\n  if (tools == null) {\n    return { tools: undefined, toolChoice: undefined, toolWarnings };\n  }\n\n  const openaiTools: Array<OpenAIResponsesTool> = [];\n  const resolvedCustomProviderToolNames =\n    customProviderToolNames ?? new Set<string>();\n\n  for (const tool of tools) {\n    switch (tool.type) {\n      case 'function': {\n        const openaiOptions = tool.providerOptions?.openai as\n          | { deferLoading?: boolean }\n          | undefined;\n        const deferLoading = openaiOptions?.deferLoading;\n\n        openaiTools.push({\n          type: 'function',\n          name: tool.name,\n          description: tool.description,\n          parameters: tool.inputSchema,\n          ...(tool.strict != null ? { strict: tool.strict } : {}),\n          ...(deferLoading != null ? { defer_loading: deferLoading } : {}),\n        });\n        break;\n      }\n      case 'provider': {\n        switch (tool.id) {\n          case 'openai.file_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: fileSearchArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'file_search',\n              vector_store_ids: args.vectorStoreIds,\n              max_num_results: args.maxNumResults,\n              ranking_options: args.ranking\n                ? {\n                    ranker: args.ranking.ranker,\n                    score_threshold: args.ranking.scoreThreshold,\n                  }\n                : undefined,\n              filters: args.filters,\n            });\n\n            break;\n          }\n          case 'openai.local_shell': {\n            openaiTools.push({\n              type: 'local_shell',\n            });\n            break;\n          }\n          case 'openai.shell': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: shellArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'shell',\n              ...(args.environment && {\n                environment: mapShellEnvironment(args.environment),\n              }),\n            });\n            break;\n          }\n          case 'openai.apply_patch': {\n            openaiTools.push({\n              type: 'apply_patch',\n            });\n            break;\n          }\n          case 'openai.web_search_preview': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearchPreviewArgsSchema,\n            });\n            openaiTools.push({\n              type: 'web_search_preview',\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation,\n            });\n            break;\n          }\n          case 'openai.web_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearchArgsSchema,\n            });\n            openaiTools.push({\n              type: 'web_search',\n              filters:\n                args.filters != null\n                  ? { allowed_domains: args.filters.allowedDomains }\n                  : undefined,\n              external_web_access: args.externalWebAccess,\n              search_context_size: args.searchContextSize,\n              user_location: args.userLocation,\n            });\n            break;\n          }\n          case 'openai.code_interpreter': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: codeInterpreterArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'code_interpreter',\n              container:\n                args.container == null\n                  ? { type: 'auto', file_ids: undefined }\n                  : typeof args.container === 'string'\n                    ? args.container\n                    : { type: 'auto', file_ids: args.container.fileIds },\n            });\n            break;\n          }\n          case 'openai.image_generation': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: imageGenerationArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'image_generation',\n              background: args.background,\n              input_fidelity: args.inputFidelity,\n              input_image_mask: args.inputImageMask\n                ? {\n                    file_id: args.inputImageMask.fileId,\n                    image_url: args.inputImageMask.imageUrl,\n                  }\n                : undefined,\n              model: args.model,\n              moderation: args.moderation,\n              partial_images: args.partialImages,\n              quality: args.quality,\n              output_compression: args.outputCompression,\n              output_format: args.outputFormat,\n              size: args.size,\n            });\n            break;\n          }\n          case 'openai.mcp': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: mcpArgsSchema,\n            });\n\n            const mapApprovalFilter = (filter: { toolNames?: string[] }) => ({\n              tool_names: filter.toolNames,\n            });\n\n            const requireApproval = args.requireApproval;\n            const requireApprovalParam:\n              | 'always'\n              | 'never'\n              | {\n                  never?: { tool_names?: string[] };\n                }\n              | undefined =\n              requireApproval == null\n                ? undefined\n                : typeof requireApproval === 'string'\n                  ? requireApproval\n                  : requireApproval.never != null\n                    ? { never: mapApprovalFilter(requireApproval.never) }\n                    : undefined;\n\n            openaiTools.push({\n              type: 'mcp',\n              server_label: args.serverLabel,\n              allowed_tools: Array.isArray(args.allowedTools)\n                ? args.allowedTools\n                : args.allowedTools\n                  ? {\n                      read_only: args.allowedTools.readOnly,\n                      tool_names: args.allowedTools.toolNames,\n                    }\n                  : undefined,\n              authorization: args.authorization,\n              connector_id: args.connectorId,\n              headers: args.headers,\n              require_approval: requireApprovalParam ?? 'never',\n              server_description: args.serverDescription,\n              server_url: args.serverUrl,\n            });\n\n            break;\n          }\n          case 'openai.custom': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: customArgsSchema,\n            });\n\n            openaiTools.push({\n              type: 'custom',\n              name: args.name,\n              description: args.description,\n              format: args.format,\n            });\n            resolvedCustomProviderToolNames.add(args.name);\n            break;\n          }\n          case 'openai.tool_search': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: toolSearchArgsSchema,\n            });\n            openaiTools.push({\n              type: 'tool_search',\n              ...(args.execution != null ? { execution: args.execution } : {}),\n              ...(args.description != null\n                ? { description: args.description }\n                : {}),\n              ...(args.parameters != null\n                ? { parameters: args.parameters }\n                : {}),\n            });\n            break;\n          }\n        }\n        break;\n      }\n      default:\n        toolWarnings.push({\n          type: 'unsupported',\n          feature: `function tool ${tool}`,\n        });\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      const resolvedToolName =\n        toolNameMapping?.toProviderToolName(toolChoice.toolName) ??\n        toolChoice.toolName;\n\n      return {\n        tools: openaiTools,\n        toolChoice:\n          resolvedToolName === 'code_interpreter' ||\n          resolvedToolName === 'file_search' ||\n          resolvedToolName === 'image_generation' ||\n          resolvedToolName === 'web_search_preview' ||\n          resolvedToolName === 'web_search' ||\n          resolvedToolName === 'mcp' ||\n          resolvedToolName === 'apply_patch'\n            ? { type: resolvedToolName }\n            : resolvedCustomProviderToolNames.has(resolvedToolName)\n              ? { type: 'custom', name: resolvedToolName }\n              : { type: 'function', name: resolvedToolName },\n        toolWarnings,\n      };\n    }\n    default: {\n      const _exhaustiveCheck: never = type;\n      throw new UnsupportedFunctionalityError({\n        functionality: `tool choice type: ${_exhaustiveCheck}`,\n      });\n    }\n  }\n}\n\nfunction mapShellEnvironment(environment: {\n  type?: string;\n  [key: string]: unknown;\n}): NonNullable<\n  Extract<OpenAIResponsesTool, { type: 'shell' }>['environment']\n> {\n  if (environment.type === 'containerReference') {\n    const env = environment as {\n      type: 'containerReference';\n      containerId: string;\n    };\n    return {\n      type: 'container_reference',\n      container_id: env.containerId,\n    };\n  }\n\n  if (environment.type === 'containerAuto') {\n    const env = environment as {\n      type: 'containerAuto';\n      fileIds?: string[];\n      memoryLimit?: '1g' | '4g' | '16g' | '64g';\n      networkPolicy?: {\n        type: string;\n        allowedDomains?: string[];\n        domainSecrets?: Array<{\n          domain: string;\n          name: string;\n          value: string;\n        }>;\n      };\n      skills?: Array<{\n        type: string;\n        skillId?: string;\n        version?: string;\n        name?: string;\n        description?: string;\n        source?: { type: string; mediaType: string; data: string };\n      }>;\n    };\n\n    return {\n      type: 'container_auto',\n      file_ids: env.fileIds,\n      memory_limit: env.memoryLimit,\n      network_policy:\n        env.networkPolicy == null\n          ? undefined\n          : env.networkPolicy.type === 'disabled'\n            ? { type: 'disabled' as const }\n            : {\n                type: 'allowlist' as const,\n                allowed_domains: env.networkPolicy.allowedDomains!,\n                domain_secrets: env.networkPolicy.domainSecrets,\n              },\n      skills: mapShellSkills(env.skills),\n    };\n  }\n\n  const env = environment as {\n    type?: 'local';\n    skills?: Array<{\n      name: string;\n      description: string;\n      path: string;\n    }>;\n  };\n  return {\n    type: 'local',\n    skills: env.skills,\n  };\n}\n\nfunction mapShellSkills(\n  skills:\n    | Array<{\n        type: string;\n        skillId?: string;\n        version?: string;\n        name?: string;\n        description?: string;\n        source?: { type: string; mediaType: string; data: string };\n      }>\n    | undefined,\n) {\n  return skills?.map(skill =>\n    skill.type === 'skillReference'\n      ? {\n          type: 'skill_reference' as const,\n          skill_id: skill.skillId!,\n          version: skill.version,\n        }\n      : {\n          type: 'inline' as const,\n          name: skill.name!,\n          description: skill.description!,\n          source: {\n            type: 'base64' as const,\n            media_type: skill.source!.mediaType as 'application/zip',\n            data: skill.source!.data,\n          },\n        },\n  );\n}\n","import {\n  APICallError,\n  JSONValue,\n  LanguageModelV3,\n  LanguageModelV3Prompt,\n  LanguageModelV3CallOptions,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3ProviderTool,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n  LanguageModelV3ToolApprovalRequest,\n  SharedV3ProviderMetadata,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  createToolNameMapping,\n  generateId,\n  InferSchema,\n  parseProviderOptions,\n  ParseResult,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { getOpenAILanguageModelCapabilities } from '../openai-language-model-capabilities';\nimport { applyPatchInputSchema } from '../tool/apply-patch';\nimport {\n  codeInterpreterInputSchema,\n  codeInterpreterOutputSchema,\n} from '../tool/code-interpreter';\nimport { fileSearchOutputSchema } from '../tool/file-search';\nimport { imageGenerationOutputSchema } from '../tool/image-generation';\nimport { localShellInputSchema } from '../tool/local-shell';\nimport { mcpOutputSchema } from '../tool/mcp';\nimport { shellInputSchema, shellOutputSchema } from '../tool/shell';\nimport {\n  toolSearchInputSchema,\n  toolSearchOutputSchema,\n} from '../tool/tool-search';\nimport { webSearchOutputSchema } from '../tool/web-search';\nimport {\n  convertOpenAIResponsesUsage,\n  OpenAIResponsesUsage,\n} from './convert-openai-responses-usage';\nimport { convertToOpenAIResponsesInput } from './convert-to-openai-responses-input';\nimport { mapOpenAIResponseFinishReason } from './map-openai-responses-finish-reason';\nimport {\n  OpenAIResponsesChunk,\n  openaiResponsesChunkSchema,\n  OpenAIResponsesIncludeOptions,\n  OpenAIResponsesIncludeValue,\n  OpenAIResponsesLogprobs,\n  openaiResponsesResponseSchema,\n  OpenAIResponsesWebSearchAction,\n  OpenAIResponsesApplyPatchOperationDiffDeltaChunk,\n  OpenAIResponsesApplyPatchOperationDiffDoneChunk,\n} from './openai-responses-api';\nimport {\n  OpenAIResponsesModelId,\n  openaiLanguageModelResponsesOptionsSchema,\n  TOP_LOGPROBS_MAX,\n} from './openai-responses-options';\nimport { prepareResponsesTools } from './openai-responses-prepare-tools';\nimport {\n  ResponsesProviderMetadata,\n  ResponsesReasoningProviderMetadata,\n  ResponsesSourceDocumentProviderMetadata,\n  ResponsesTextProviderMetadata,\n} from './openai-responses-provider-metadata';\n\n/**\n * Extracts a mapping from MCP approval request IDs to their corresponding tool call IDs\n * from the prompt. When an MCP tool requires approval, we generate a tool call ID to track\n * the pending approval in our system. When the user responds to the approval (and we\n * continue the conversation), we need to map the approval request ID back to our tool call ID\n * so that tool results reference the correct tool call.\n */\nfunction extractApprovalRequestIdToToolCallIdMapping(\n  prompt: LanguageModelV3Prompt,\n): Record<string, string> {\n  const mapping: Record<string, string> = {};\n  for (const message of prompt) {\n    if (message.role !== 'assistant') continue;\n    for (const part of message.content) {\n      if (part.type !== 'tool-call') continue;\n      const approvalRequestId = part.providerOptions?.openai\n        ?.approvalRequestId as string | undefined;\n      if (approvalRequestId != null) {\n        mapping[approvalRequestId] = part.toolCallId;\n      }\n    }\n  }\n  return mapping;\n}\n\nexport class OpenAIResponsesLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  readonly modelId: OpenAIResponsesModelId;\n\n  private readonly config: OpenAIConfig;\n\n  constructor(modelId: OpenAIResponsesModelId, config: OpenAIConfig) {\n    this.modelId = modelId;\n    this.config = config;\n  }\n\n  readonly supportedUrls: Record<string, RegExp[]> = {\n    'image/*': [/^https?:\\/\\/.*$/],\n    'application/pdf': [/^https?:\\/\\/.*$/],\n  };\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  private async getArgs({\n    maxOutputTokens,\n    temperature,\n    stopSequences,\n    topP,\n    topK,\n    presencePenalty,\n    frequencyPenalty,\n    seed,\n    prompt,\n    providerOptions,\n    tools,\n    toolChoice,\n    responseFormat,\n  }: LanguageModelV3CallOptions) {\n    const warnings: SharedV3Warning[] = [];\n    const modelCapabilities = getOpenAILanguageModelCapabilities(this.modelId);\n\n    if (topK != null) {\n      warnings.push({ type: 'unsupported', feature: 'topK' });\n    }\n\n    if (seed != null) {\n      warnings.push({ type: 'unsupported', feature: 'seed' });\n    }\n\n    if (presencePenalty != null) {\n      warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n    }\n\n    if (frequencyPenalty != null) {\n      warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n    }\n\n    if (stopSequences != null) {\n      warnings.push({ type: 'unsupported', feature: 'stopSequences' });\n    }\n\n    const providerOptionsName = this.config.provider.includes('azure')\n      ? 'azure'\n      : 'openai';\n    let openaiOptions = await parseProviderOptions({\n      provider: providerOptionsName,\n      providerOptions,\n      schema: openaiLanguageModelResponsesOptionsSchema,\n    });\n\n    if (openaiOptions == null && providerOptionsName !== 'openai') {\n      openaiOptions = await parseProviderOptions({\n        provider: 'openai',\n        providerOptions,\n        schema: openaiLanguageModelResponsesOptionsSchema,\n      });\n    }\n\n    const isReasoningModel =\n      openaiOptions?.forceReasoning ?? modelCapabilities.isReasoningModel;\n\n    if (openaiOptions?.conversation && openaiOptions?.previousResponseId) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'conversation',\n        details: 'conversation and previousResponseId cannot be used together',\n      });\n    }\n\n    const toolNameMapping = createToolNameMapping({\n      tools,\n      providerToolNames: {\n        'openai.code_interpreter': 'code_interpreter',\n        'openai.file_search': 'file_search',\n        'openai.image_generation': 'image_generation',\n        'openai.local_shell': 'local_shell',\n        'openai.shell': 'shell',\n        'openai.web_search': 'web_search',\n        'openai.web_search_preview': 'web_search_preview',\n        'openai.mcp': 'mcp',\n        'openai.apply_patch': 'apply_patch',\n        'openai.tool_search': 'tool_search',\n      },\n      resolveProviderToolName: tool =>\n        tool.id === 'openai.custom'\n          ? (tool.args as { name?: string }).name\n          : undefined,\n    });\n\n    const customProviderToolNames = new Set<string>();\n    const {\n      tools: openaiTools,\n      toolChoice: openaiToolChoice,\n      toolWarnings,\n    } = await prepareResponsesTools({\n      tools,\n      toolChoice,\n      toolNameMapping,\n      customProviderToolNames,\n    });\n\n    const { input, warnings: inputWarnings } =\n      await convertToOpenAIResponsesInput({\n        prompt,\n        toolNameMapping,\n        systemMessageMode:\n          openaiOptions?.systemMessageMode ??\n          (isReasoningModel\n            ? 'developer'\n            : modelCapabilities.systemMessageMode),\n        providerOptionsName,\n        fileIdPrefixes: this.config.fileIdPrefixes,\n        store: openaiOptions?.store ?? true,\n        hasConversation: openaiOptions?.conversation != null,\n        hasLocalShellTool: hasOpenAITool('openai.local_shell'),\n        hasShellTool: hasOpenAITool('openai.shell'),\n        hasApplyPatchTool: hasOpenAITool('openai.apply_patch'),\n        customProviderToolNames:\n          customProviderToolNames.size > 0\n            ? customProviderToolNames\n            : undefined,\n      });\n\n    warnings.push(...inputWarnings);\n\n    const strictJsonSchema = openaiOptions?.strictJsonSchema ?? true;\n\n    let include: OpenAIResponsesIncludeOptions = openaiOptions?.include;\n\n    function addInclude(key: OpenAIResponsesIncludeValue) {\n      if (include == null) {\n        include = [key];\n      } else if (!include.includes(key)) {\n        include = [...include, key];\n      }\n    }\n\n    function hasOpenAITool(id: string) {\n      return (\n        tools?.find(tool => tool.type === 'provider' && tool.id === id) != null\n      );\n    }\n\n    // when logprobs are requested, automatically include them:\n    const topLogprobs =\n      typeof openaiOptions?.logprobs === 'number'\n        ? openaiOptions?.logprobs\n        : openaiOptions?.logprobs === true\n          ? TOP_LOGPROBS_MAX\n          : undefined;\n\n    if (topLogprobs) {\n      addInclude('message.output_text.logprobs');\n    }\n\n    // when a web search tool is present, automatically include the sources:\n    const webSearchToolName = (\n      tools?.find(\n        tool =>\n          tool.type === 'provider' &&\n          (tool.id === 'openai.web_search' ||\n            tool.id === 'openai.web_search_preview'),\n      ) as LanguageModelV3ProviderTool | undefined\n    )?.name;\n\n    if (webSearchToolName) {\n      addInclude('web_search_call.action.sources');\n    }\n\n    // when a code interpreter tool is present, automatically include the outputs:\n    if (hasOpenAITool('openai.code_interpreter')) {\n      addInclude('code_interpreter_call.outputs');\n    }\n\n    const store = openaiOptions?.store;\n\n    // store defaults to true in the OpenAI responses API, so check for false exactly:\n    if (store === false && isReasoningModel) {\n      addInclude('reasoning.encrypted_content');\n    }\n\n    const baseArgs = {\n      model: this.modelId,\n      input,\n      temperature,\n      top_p: topP,\n      max_output_tokens: maxOutputTokens,\n\n      ...((responseFormat?.type === 'json' || openaiOptions?.textVerbosity) && {\n        text: {\n          ...(responseFormat?.type === 'json' && {\n            format:\n              responseFormat.schema != null\n                ? {\n                    type: 'json_schema',\n                    strict: strictJsonSchema,\n                    name: responseFormat.name ?? 'response',\n                    description: responseFormat.description,\n                    schema: responseFormat.schema,\n                  }\n                : { type: 'json_object' },\n          }),\n          ...(openaiOptions?.textVerbosity && {\n            verbosity: openaiOptions.textVerbosity,\n          }),\n        },\n      }),\n\n      // provider options:\n      conversation: openaiOptions?.conversation,\n      max_tool_calls: openaiOptions?.maxToolCalls,\n      metadata: openaiOptions?.metadata,\n      parallel_tool_calls: openaiOptions?.parallelToolCalls,\n      previous_response_id: openaiOptions?.previousResponseId,\n      store,\n      user: openaiOptions?.user,\n      instructions: openaiOptions?.instructions,\n      service_tier: openaiOptions?.serviceTier,\n      include,\n      prompt_cache_key: openaiOptions?.promptCacheKey,\n      prompt_cache_retention: openaiOptions?.promptCacheRetention,\n      safety_identifier: openaiOptions?.safetyIdentifier,\n      top_logprobs: topLogprobs,\n      truncation: openaiOptions?.truncation,\n\n      // model-specific settings:\n      ...(isReasoningModel &&\n        (openaiOptions?.reasoningEffort != null ||\n          openaiOptions?.reasoningSummary != null) && {\n          reasoning: {\n            ...(openaiOptions?.reasoningEffort != null && {\n              effort: openaiOptions.reasoningEffort,\n            }),\n            ...(openaiOptions?.reasoningSummary != null && {\n              summary: openaiOptions.reasoningSummary,\n            }),\n          },\n        }),\n    };\n\n    // remove unsupported settings for reasoning models\n    // see https://platform.openai.com/docs/guides/reasoning#limitations\n    if (isReasoningModel) {\n      // when reasoning effort is none, gpt-5.1 models allow temperature, topP, logprobs\n      //  https://platform.openai.com/docs/guides/latest-model#gpt-5-1-parameter-compatibility\n      if (\n        !(\n          openaiOptions?.reasoningEffort === 'none' &&\n          modelCapabilities.supportsNonReasoningParameters\n        )\n      ) {\n        if (baseArgs.temperature != null) {\n          baseArgs.temperature = undefined;\n          warnings.push({\n            type: 'unsupported',\n            feature: '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',\n            feature: 'topP',\n            details: 'topP is not supported for reasoning models',\n          });\n        }\n      }\n    } else {\n      if (openaiOptions?.reasoningEffort != null) {\n        warnings.push({\n          type: 'unsupported',\n          feature: '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',\n          feature: '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      !modelCapabilities.supportsFlexProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'flex processing is only available for o3, o4-mini, and gpt-5 models',\n      });\n      // Remove from args if not supported\n      delete (baseArgs as any).service_tier;\n    }\n\n    // Validate priority processing support\n    if (\n      openaiOptions?.serviceTier === 'priority' &&\n      !modelCapabilities.supportsPriorityProcessing\n    ) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'serviceTier',\n        details:\n          'priority processing is only available for supported models (gpt-4, gpt-5, gpt-5-mini, o3, o4-mini) and requires Enterprise access. gpt-5-nano is not supported',\n      });\n      // Remove from args if not supported\n      delete (baseArgs as any).service_tier;\n    }\n\n    const shellToolEnvType = (\n      tools?.find(\n        tool => tool.type === 'provider' && tool.id === 'openai.shell',\n      ) as { args?: { environment?: { type?: string } } } | undefined\n    )?.args?.environment?.type;\n\n    const isShellProviderExecuted =\n      shellToolEnvType === 'containerAuto' ||\n      shellToolEnvType === 'containerReference';\n\n    return {\n      webSearchToolName,\n      args: {\n        ...baseArgs,\n        tools: openaiTools,\n        tool_choice: openaiToolChoice,\n      },\n      warnings: [...warnings, ...toolWarnings],\n      store,\n      toolNameMapping,\n      providerOptionsName,\n      isShellProviderExecuted,\n    };\n  }\n\n  async doGenerate(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n      toolNameMapping,\n      providerOptionsName,\n      isShellProviderExecuted,\n    } = await this.getArgs(options);\n    const url = this.config.url({\n      path: '/responses',\n      modelId: this.modelId,\n    });\n\n    const approvalRequestIdToDummyToolCallIdFromPrompt =\n      extractApprovalRequestIdToToolCallIdMapping(options.prompt);\n\n    const {\n      responseHeaders,\n      value: response,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url,\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiResponsesResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    if (response.error) {\n      throw new APICallError({\n        message: response.error.message,\n        url,\n        requestBodyValues: body,\n        statusCode: 400,\n        responseHeaders,\n        responseBody: rawResponse as string,\n        isRetryable: false,\n      });\n    }\n\n    const content: Array<LanguageModelV3Content> = [];\n    const logprobs: Array<OpenAIResponsesLogprobs> = [];\n\n    // flag that checks if there have been client-side tool calls (not executed by openai)\n    let hasFunctionCall = false;\n    const hostedToolSearchCallIds: string[] = [];\n\n    // map response content to content array (defined when there is no error)\n    for (const part of response.output!) {\n      switch (part.type) {\n        case 'reasoning': {\n          // when there are no summary parts, we need to add an empty reasoning part:\n          if (part.summary.length === 0) {\n            part.summary.push({ type: 'summary_text', text: '' });\n          }\n\n          for (const summary of part.summary) {\n            content.push({\n              type: 'reasoning' as const,\n              text: summary.text,\n              providerMetadata: {\n                [providerOptionsName]: {\n                  itemId: part.id,\n                  reasoningEncryptedContent: part.encrypted_content ?? null,\n                } satisfies ResponsesReasoningProviderMetadata,\n              },\n            });\n          }\n          break;\n        }\n\n        case 'image_generation_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('image_generation'),\n            input: '{}',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('image_generation'),\n            result: {\n              result: part.result,\n            } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n          });\n\n          break;\n        }\n\n        case 'tool_search_call': {\n          const toolCallId = part.call_id ?? part.id;\n          const isHosted = part.execution === 'server';\n\n          if (isHosted) {\n            hostedToolSearchCallIds.push(toolCallId);\n          }\n\n          content.push({\n            type: 'tool-call',\n            toolCallId,\n            toolName: toolNameMapping.toCustomToolName('tool_search'),\n            input: JSON.stringify({\n              arguments: part.arguments,\n              call_id: part.call_id,\n            } satisfies InferSchema<typeof toolSearchInputSchema>),\n            ...(isHosted ? { providerExecuted: true } : {}),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'tool_search_output': {\n          const toolCallId =\n            part.call_id ?? hostedToolSearchCallIds.shift() ?? part.id;\n\n          content.push({\n            type: 'tool-result',\n            toolCallId,\n            toolName: toolNameMapping.toCustomToolName('tool_search'),\n            result: {\n              tools: part.tools,\n            } satisfies InferSchema<typeof toolSearchOutputSchema>,\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'local_shell_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('local_shell'),\n            input: JSON.stringify({\n              action: part.action,\n            } satisfies InferSchema<typeof localShellInputSchema>),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'shell_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('shell'),\n            input: JSON.stringify({\n              action: {\n                commands: part.action.commands,\n              },\n            } satisfies InferSchema<typeof shellInputSchema>),\n            ...(isShellProviderExecuted && { providerExecuted: true }),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n\n        case 'shell_call_output': {\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('shell'),\n            result: {\n              output: part.output.map(item => ({\n                stdout: item.stdout,\n                stderr: item.stderr,\n                outcome:\n                  item.outcome.type === 'exit'\n                    ? {\n                        type: 'exit' as const,\n                        exitCode: item.outcome.exit_code,\n                      }\n                    : { type: 'timeout' as const },\n              })),\n            } satisfies InferSchema<typeof shellOutputSchema>,\n          });\n          break;\n        }\n\n        case 'message': {\n          for (const contentPart of part.content) {\n            if (\n              options.providerOptions?.[providerOptionsName]?.logprobs &&\n              contentPart.logprobs\n            ) {\n              logprobs.push(contentPart.logprobs);\n            }\n\n            const providerMetadata: SharedV3ProviderMetadata[string] = {\n              itemId: part.id,\n              ...(part.phase != null && { phase: part.phase }),\n              ...(contentPart.annotations.length > 0 && {\n                annotations: contentPart.annotations,\n              }),\n            } satisfies ResponsesTextProviderMetadata;\n\n            content.push({\n              type: 'text',\n              text: contentPart.text,\n              providerMetadata: {\n                [providerOptionsName]: providerMetadata,\n              },\n            });\n\n            for (const annotation of contentPart.annotations) {\n              if (annotation.type === 'url_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: this.config.generateId?.() ?? generateId(),\n                  url: annotation.url,\n                  title: annotation.title,\n                });\n              } else if (annotation.type === 'file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: annotation.filename,\n                  filename: annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: annotation.type,\n                      fileId: annotation.file_id,\n                      index: annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_citation' }\n                    >,\n                  },\n                });\n              } else if (annotation.type === 'container_file_citation') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: annotation.filename,\n                  filename: annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: annotation.type,\n                      fileId: annotation.file_id,\n                      containerId: annotation.container_id,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'container_file_citation' }\n                    >,\n                  },\n                });\n              } else if (annotation.type === 'file_path') {\n                content.push({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: this.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: annotation.file_id,\n                  filename: annotation.file_id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: annotation.type,\n                      fileId: annotation.file_id,\n                      index: annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_path' }\n                    >,\n                  },\n                });\n              }\n            }\n          }\n\n          break;\n        }\n\n        case 'function_call': {\n          hasFunctionCall = true;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: part.name,\n            input: part.arguments,\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n          break;\n        }\n\n        case 'custom_tool_call': {\n          hasFunctionCall = true;\n          const toolName = toolNameMapping.toCustomToolName(part.name);\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName,\n            input: JSON.stringify(part.input),\n            providerMetadata: {\n              [providerOptionsName]: {\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: toolNameMapping.toCustomToolName(\n              webSearchToolName ?? 'web_search',\n            ),\n            input: JSON.stringify({}),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName(\n              webSearchToolName ?? 'web_search',\n            ),\n            result: mapWebSearchOutput(part.action),\n          });\n\n          break;\n        }\n\n        case 'mcp_call': {\n          const toolCallId =\n            part.approval_request_id != null\n              ? (approvalRequestIdToDummyToolCallIdFromPrompt[\n                  part.approval_request_id\n                ] ?? part.id)\n              : part.id;\n\n          const toolName = `mcp.${part.name}`;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId,\n            toolName,\n            input: part.arguments,\n            providerExecuted: true,\n            dynamic: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId,\n            toolName,\n            result: {\n              type: 'call',\n              serverLabel: part.server_label,\n              name: part.name,\n              arguments: part.arguments,\n              ...(part.output != null ? { output: part.output } : {}),\n              ...(part.error != null\n                ? { error: part.error as unknown as JSONValue }\n                : {}),\n            } satisfies InferSchema<typeof mcpOutputSchema>,\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n          break;\n        }\n\n        case 'mcp_list_tools': {\n          // skip\n          break;\n        }\n\n        case 'mcp_approval_request': {\n          const approvalRequestId = part.approval_request_id ?? part.id;\n          const dummyToolCallId = this.config.generateId?.() ?? generateId();\n          const toolName = `mcp.${part.name}`;\n\n          content.push({\n            type: 'tool-call',\n            toolCallId: dummyToolCallId,\n            toolName,\n            input: part.arguments,\n            providerExecuted: true,\n            dynamic: true,\n          });\n\n          content.push({\n            type: 'tool-approval-request',\n            approvalId: approvalRequestId,\n            toolCallId: dummyToolCallId,\n          } satisfies LanguageModelV3ToolApprovalRequest);\n          break;\n        }\n\n        case 'computer_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('computer_use'),\n            input: '',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('computer_use'),\n            result: {\n              type: 'computer_use_tool_result',\n              status: part.status || 'completed',\n            },\n          });\n          break;\n        }\n\n        case 'file_search_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('file_search'),\n            input: '{}',\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('file_search'),\n            result: {\n              queries: part.queries,\n              results:\n                part.results?.map(result => ({\n                  attributes: result.attributes,\n                  fileId: result.file_id,\n                  filename: result.filename,\n                  score: result.score,\n                  text: result.text,\n                })) ?? null,\n            } satisfies InferSchema<typeof fileSearchOutputSchema>,\n          });\n          break;\n        }\n\n        case 'code_interpreter_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('code_interpreter'),\n            input: JSON.stringify({\n              code: part.code,\n              containerId: part.container_id,\n            } satisfies InferSchema<typeof codeInterpreterInputSchema>),\n            providerExecuted: true,\n          });\n\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.id,\n            toolName: toolNameMapping.toCustomToolName('code_interpreter'),\n            result: {\n              outputs: part.outputs,\n            } satisfies InferSchema<typeof codeInterpreterOutputSchema>,\n          });\n          break;\n        }\n\n        case 'apply_patch_call': {\n          content.push({\n            type: 'tool-call',\n            toolCallId: part.call_id,\n            toolName: toolNameMapping.toCustomToolName('apply_patch'),\n            input: JSON.stringify({\n              callId: part.call_id,\n              operation: part.operation,\n            } satisfies InferSchema<typeof applyPatchInputSchema>),\n            providerMetadata: {\n              [providerOptionsName]: {\n                itemId: part.id,\n              },\n            },\n          });\n\n          break;\n        }\n      }\n    }\n\n    const providerMetadata: SharedV3ProviderMetadata = {\n      [providerOptionsName]: {\n        responseId: response.id,\n        ...(logprobs.length > 0 ? { logprobs } : {}),\n        ...(typeof response.service_tier === 'string'\n          ? { serviceTier: response.service_tier }\n          : {}),\n      } satisfies ResponsesProviderMetadata,\n    };\n\n    const usage = response.usage!; // defined when there is no error\n\n    return {\n      content,\n      finishReason: {\n        unified: mapOpenAIResponseFinishReason({\n          finishReason: response.incomplete_details?.reason,\n          hasFunctionCall,\n        }),\n        raw: response.incomplete_details?.reason ?? undefined,\n      },\n      usage: convertOpenAIResponsesUsage(usage),\n      request: { body },\n      response: {\n        id: response.id,\n        timestamp: new Date(response.created_at! * 1000),\n        modelId: response.model,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n      providerMetadata,\n      warnings,\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const {\n      args: body,\n      warnings,\n      webSearchToolName,\n      toolNameMapping,\n      store,\n      providerOptionsName,\n      isShellProviderExecuted,\n    } = await this.getArgs(options);\n\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url: this.config.url({\n        path: '/responses',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: {\n        ...body,\n        stream: true,\n      },\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        openaiResponsesChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const self = this;\n\n    const approvalRequestIdToDummyToolCallIdFromPrompt =\n      extractApprovalRequestIdToToolCallIdMapping(options.prompt);\n\n    const approvalRequestIdToDummyToolCallIdFromStream = new Map<\n      string,\n      string\n    >();\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    let usage: OpenAIResponsesUsage | undefined = undefined;\n    const logprobs: Array<OpenAIResponsesLogprobs> = [];\n    let responseId: string | null = null;\n\n    const ongoingToolCalls: Record<\n      number,\n      | {\n          toolName: string;\n          toolCallId: string;\n          codeInterpreter?: {\n            containerId: string;\n          };\n          applyPatch?: {\n            hasDiff: boolean;\n            endEmitted: boolean;\n          };\n          toolSearchExecution?: 'server' | 'client';\n        }\n      | undefined\n    > = {};\n\n    // set annotations in 'text-end' part providerMetadata.\n    const ongoingAnnotations: Array<\n      Extract<\n        OpenAIResponsesChunk,\n        { type: 'response.output_text.annotation.added' }\n      >['annotation']\n    > = [];\n\n    // track the phase of the current message being streamed\n    let activeMessagePhase: 'commentary' | 'final_answer' | undefined;\n\n    // flag that checks if there have been client-side tool calls (not executed by openai)\n    let hasFunctionCall = false;\n\n    const activeReasoning: Record<\n      string,\n      {\n        encryptedContent?: string | null;\n        // summary index as string to reasoning part state:\n        summaryParts: Record<string, 'active' | 'can-conclude' | 'concluded'>;\n      }\n    > = {};\n\n    let serviceTier: string | undefined;\n    const hostedToolSearchCallIds: string[] = [];\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<OpenAIResponsesChunk>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            // handle failed chunk parsing / validation:\n            if (!chunk.success) {\n              finishReason = { unified: 'error', raw: undefined };\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 === 'custom_tool_call') {\n                const toolName = toolNameMapping.toCustomToolName(\n                  value.item.name,\n                );\n                ongoingToolCalls[value.output_index] = {\n                  toolName,\n                  toolCallId: value.item.call_id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.call_id,\n                  toolName,\n                });\n              } else if (value.item.type === 'web_search_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  toolCallId: value.item.id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  input: JSON.stringify({}),\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'computer_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  toolCallId: value.item.id,\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'code_interpreter_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  toolCallId: value.item.id,\n                  codeInterpreter: {\n                    containerId: value.item.container_id,\n                  },\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: value.item.id,\n                  delta: `{\"containerId\":\"${value.item.container_id}\",\"code\":\"`,\n                });\n              } else if (value.item.type === 'file_search_call') {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('file_search'),\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'image_generation_call') {\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('image_generation'),\n                  input: '{}',\n                  providerExecuted: true,\n                });\n              } else if (value.item.type === 'tool_search_call') {\n                const toolCallId = value.item.id;\n                const toolName =\n                  toolNameMapping.toCustomToolName('tool_search');\n                const isHosted = value.item.execution === 'server';\n\n                ongoingToolCalls[value.output_index] = {\n                  toolName,\n                  toolCallId,\n                  toolSearchExecution: value.item.execution ?? 'server',\n                };\n\n                if (isHosted) {\n                  controller.enqueue({\n                    type: 'tool-input-start',\n                    id: toolCallId,\n                    toolName,\n                    providerExecuted: true,\n                  });\n                }\n              } else if (value.item.type === 'tool_search_output') {\n                // handled on output_item.done so we can pair it with the call\n              } else if (\n                value.item.type === 'mcp_call' ||\n                value.item.type === 'mcp_list_tools' ||\n                value.item.type === 'mcp_approval_request'\n              ) {\n                // Emit MCP tool-call/approval parts on output_item.done instead, so we can:\n                // - alias mcp_call IDs when an approval_request_id is present\n                // - emit a proper tool-approval-request part for MCP approvals\n              } else if (value.item.type === 'apply_patch_call') {\n                const { call_id: callId, operation } = value.item;\n\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName('apply_patch'),\n                  toolCallId: callId,\n                  applyPatch: {\n                    // delete_file doesn't have diff\n                    hasDiff: operation.type === 'delete_file',\n                    endEmitted: operation.type === 'delete_file',\n                  },\n                };\n\n                controller.enqueue({\n                  type: 'tool-input-start',\n                  id: callId,\n                  toolName: toolNameMapping.toCustomToolName('apply_patch'),\n                });\n\n                if (operation.type === 'delete_file') {\n                  const inputString = JSON.stringify({\n                    callId,\n                    operation,\n                  } satisfies InferSchema<typeof applyPatchInputSchema>);\n\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: callId,\n                    delta: inputString,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: callId,\n                  });\n                } else {\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: callId,\n                    delta: `{\"callId\":\"${escapeJSONDelta(callId)}\",\"operation\":{\"type\":\"${escapeJSONDelta(operation.type)}\",\"path\":\"${escapeJSONDelta(operation.path)}\",\"diff\":\"`,\n                  });\n                }\n              } else if (value.item.type === 'shell_call') {\n                ongoingToolCalls[value.output_index] = {\n                  toolName: toolNameMapping.toCustomToolName('shell'),\n                  toolCallId: value.item.call_id,\n                };\n              } else if (value.item.type === 'shell_call_output') {\n                // shell_call_output is handled in output_item.done\n              } else if (value.item.type === 'message') {\n                ongoingAnnotations.splice(0, ongoingAnnotations.length);\n                activeMessagePhase = value.item.phase ?? undefined;\n                controller.enqueue({\n                  type: 'text-start',\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      ...(value.item.phase != null && {\n                        phase: value.item.phase,\n                      }),\n                    },\n                  },\n                });\n              } else if (\n                isResponseOutputItemAddedChunk(value) &&\n                value.item.type === 'reasoning'\n              ) {\n                activeReasoning[value.item.id] = {\n                  encryptedContent: value.item.encrypted_content,\n                  summaryParts: { 0: 'active' },\n                };\n\n                controller.enqueue({\n                  type: 'reasoning-start',\n                  id: `${value.item.id}:0`,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      reasoningEncryptedContent:\n                        value.item.encrypted_content ?? null,\n                    } satisfies ResponsesReasoningProviderMetadata,\n                  },\n                });\n              }\n            } else if (isResponseOutputItemDoneChunk(value)) {\n              if (value.item.type === 'message') {\n                const phase = value.item.phase ?? activeMessagePhase;\n                activeMessagePhase = undefined;\n                controller.enqueue({\n                  type: 'text-end',\n                  id: value.item.id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                      ...(phase != null && { phase }),\n                      ...(ongoingAnnotations.length > 0 && {\n                        annotations: ongoingAnnotations,\n                      }),\n                    } satisfies ResponsesTextProviderMetadata,\n                  },\n                });\n              } else if (value.item.type === 'function_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n                hasFunctionCall = true;\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.call_id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: value.item.name,\n                  input: value.item.arguments,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'custom_tool_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n                hasFunctionCall = true;\n                const toolName = toolNameMapping.toCustomToolName(\n                  value.item.name,\n                );\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,\n                  input: JSON.stringify(value.item.input),\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'web_search_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName(\n                    webSearchToolName ?? 'web_search',\n                  ),\n                  result: mapWebSearchOutput(value.item.action),\n                });\n              } else if (value.item.type === 'computer_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: value.item.id,\n                });\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  input: '',\n                  providerExecuted: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('computer_use'),\n                  result: {\n                    type: 'computer_use_tool_result',\n                    status: value.item.status || 'completed',\n                  },\n                });\n              } else if (value.item.type === 'file_search_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName: toolNameMapping.toCustomToolName('file_search'),\n                  result: {\n                    queries: value.item.queries,\n                    results:\n                      value.item.results?.map(result => ({\n                        attributes: result.attributes,\n                        fileId: result.file_id,\n                        filename: result.filename,\n                        score: result.score,\n                        text: result.text,\n                      })) ?? null,\n                  } satisfies InferSchema<typeof fileSearchOutputSchema>,\n                });\n              } else if (value.item.type === 'code_interpreter_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  result: {\n                    outputs: value.item.outputs,\n                  } satisfies InferSchema<typeof codeInterpreterOutputSchema>,\n                });\n              } else if (value.item.type === 'image_generation_call') {\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.id,\n                  toolName:\n                    toolNameMapping.toCustomToolName('image_generation'),\n                  result: {\n                    result: value.item.result,\n                  } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n                });\n              } else if (value.item.type === 'tool_search_call') {\n                const toolCall = ongoingToolCalls[value.output_index];\n                const isHosted = value.item.execution === 'server';\n\n                if (toolCall != null) {\n                  const toolCallId = isHosted\n                    ? toolCall.toolCallId\n                    : (value.item.call_id ?? value.item.id);\n\n                  if (isHosted) {\n                    hostedToolSearchCallIds.push(toolCallId);\n                  } else {\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: toolCallId,\n                      toolName: toolCall.toolName,\n                    });\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.toolName,\n                    input: JSON.stringify({\n                      arguments: value.item.arguments,\n                      call_id: isHosted ? null : toolCallId,\n                    } satisfies InferSchema<typeof toolSearchInputSchema>),\n                    ...(isHosted ? { providerExecuted: true } : {}),\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        itemId: value.item.id,\n                      },\n                    },\n                  });\n                }\n\n                ongoingToolCalls[value.output_index] = undefined;\n              } else if (value.item.type === 'tool_search_output') {\n                const toolCallId =\n                  value.item.call_id ??\n                  hostedToolSearchCallIds.shift() ??\n                  value.item.id;\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId,\n                  toolName: toolNameMapping.toCustomToolName('tool_search'),\n                  result: {\n                    tools: value.item.tools,\n                  } satisfies InferSchema<typeof toolSearchOutputSchema>,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'mcp_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                const approvalRequestId =\n                  value.item.approval_request_id ?? undefined;\n\n                // when MCP tools require approval, we track them with our own\n                // tool call IDs and then map OpenAI's approval_request_id back to our ID so results match.\n                const aliasedToolCallId =\n                  approvalRequestId != null\n                    ? (approvalRequestIdToDummyToolCallIdFromStream.get(\n                        approvalRequestId,\n                      ) ??\n                      approvalRequestIdToDummyToolCallIdFromPrompt[\n                        approvalRequestId\n                      ] ??\n                      value.item.id)\n                    : value.item.id;\n\n                const toolName = `mcp.${value.item.name}`;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: aliasedToolCallId,\n                  toolName,\n                  input: value.item.arguments,\n                  providerExecuted: true,\n                  dynamic: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: aliasedToolCallId,\n                  toolName,\n                  result: {\n                    type: 'call',\n                    serverLabel: value.item.server_label,\n                    name: value.item.name,\n                    arguments: value.item.arguments,\n                    ...(value.item.output != null\n                      ? { output: value.item.output }\n                      : {}),\n                    ...(value.item.error != null\n                      ? { error: value.item.error as unknown as JSONValue }\n                      : {}),\n                  } satisfies InferSchema<typeof mcpOutputSchema>,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item.id,\n                    },\n                  },\n                });\n              } else if (value.item.type === 'mcp_list_tools') {\n                // Skip listTools - we don't expose this to the UI or send it back\n                ongoingToolCalls[value.output_index] = undefined;\n\n                // skip\n              } else if (value.item.type === 'apply_patch_call') {\n                const toolCall = ongoingToolCalls[value.output_index];\n                if (\n                  toolCall?.applyPatch &&\n                  !toolCall.applyPatch.endEmitted &&\n                  value.item.operation.type !== 'delete_file'\n                ) {\n                  if (!toolCall.applyPatch.hasDiff) {\n                    controller.enqueue({\n                      type: 'tool-input-delta',\n                      id: toolCall.toolCallId,\n                      delta: escapeJSONDelta(value.item.operation.diff),\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: toolCall.toolCallId,\n                    delta: '\"}}',\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCall.toolCallId,\n                  });\n\n                  toolCall.applyPatch.endEmitted = true;\n                }\n\n                // Emit the final tool-call with complete diff when status is 'completed'\n                if (toolCall && value.item.status === 'completed') {\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId: toolCall.toolCallId,\n                    toolName: toolNameMapping.toCustomToolName('apply_patch'),\n                    input: JSON.stringify({\n                      callId: value.item.call_id,\n                      operation: value.item.operation,\n                    } satisfies InferSchema<typeof applyPatchInputSchema>),\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        itemId: value.item.id,\n                      },\n                    },\n                  });\n                }\n\n                ongoingToolCalls[value.output_index] = undefined;\n              } else if (value.item.type === 'mcp_approval_request') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                const dummyToolCallId =\n                  self.config.generateId?.() ?? generateId();\n                const approvalRequestId =\n                  value.item.approval_request_id ?? value.item.id;\n                approvalRequestIdToDummyToolCallIdFromStream.set(\n                  approvalRequestId,\n                  dummyToolCallId,\n                );\n\n                const toolName = `mcp.${value.item.name}`;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: dummyToolCallId,\n                  toolName,\n                  input: value.item.arguments,\n                  providerExecuted: true,\n                  dynamic: true,\n                });\n\n                controller.enqueue({\n                  type: 'tool-approval-request',\n                  approvalId: approvalRequestId,\n                  toolCallId: dummyToolCallId,\n                });\n              } else if (value.item.type === 'local_shell_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: toolNameMapping.toCustomToolName('local_shell'),\n                  input: JSON.stringify({\n                    action: {\n                      type: 'exec',\n                      command: value.item.action.command,\n                      timeoutMs: value.item.action.timeout_ms,\n                      user: value.item.action.user,\n                      workingDirectory: value.item.action.working_directory,\n                      env: value.item.action.env,\n                    },\n                  } satisfies InferSchema<typeof localShellInputSchema>),\n                  providerMetadata: {\n                    [providerOptionsName]: { itemId: value.item.id },\n                  },\n                });\n              } else if (value.item.type === 'shell_call') {\n                ongoingToolCalls[value.output_index] = undefined;\n\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: value.item.call_id,\n                  toolName: toolNameMapping.toCustomToolName('shell'),\n                  input: JSON.stringify({\n                    action: {\n                      commands: value.item.action.commands,\n                    },\n                  } satisfies InferSchema<typeof shellInputSchema>),\n                  ...(isShellProviderExecuted && {\n                    providerExecuted: true,\n                  }),\n                  providerMetadata: {\n                    [providerOptionsName]: { itemId: value.item.id },\n                  },\n                });\n              } else if (value.item.type === 'shell_call_output') {\n                controller.enqueue({\n                  type: 'tool-result',\n                  toolCallId: value.item.call_id,\n                  toolName: toolNameMapping.toCustomToolName('shell'),\n                  result: {\n                    output: value.item.output.map(\n                      (item: {\n                        stdout: string;\n                        stderr: string;\n                        outcome:\n                          | { type: 'exit'; exit_code: number }\n                          | { type: 'timeout' };\n                      }) => ({\n                        stdout: item.stdout,\n                        stderr: item.stderr,\n                        outcome:\n                          item.outcome.type === 'exit'\n                            ? {\n                                type: 'exit' as const,\n                                exitCode: item.outcome.exit_code,\n                              }\n                            : { type: 'timeout' as const },\n                      }),\n                    ),\n                  } satisfies InferSchema<typeof shellOutputSchema>,\n                });\n              } else if (value.item.type === 'reasoning') {\n                const activeReasoningPart = activeReasoning[value.item.id];\n\n                // get all active or can-conclude summary parts' ids\n                // to conclude ongoing reasoning parts:\n                const summaryPartIndices = Object.entries(\n                  activeReasoningPart.summaryParts,\n                )\n                  .filter(\n                    ([_, status]) =>\n                      status === 'active' || status === 'can-conclude',\n                  )\n                  .map(([summaryIndex]) => summaryIndex);\n\n                for (const summaryIndex of summaryPartIndices) {\n                  controller.enqueue({\n                    type: 'reasoning-end',\n                    id: `${value.item.id}:${summaryIndex}`,\n                    providerMetadata: {\n                      [providerOptionsName]: {\n                        itemId: value.item.id,\n                        reasoningEncryptedContent:\n                          value.item.encrypted_content ?? null,\n                      } satisfies ResponsesReasoningProviderMetadata,\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 (isResponseCustomToolCallInputDeltaChunk(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 (isResponseApplyPatchCallOperationDiffDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall?.applyPatch) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: escapeJSONDelta(value.delta),\n                });\n\n                toolCall.applyPatch.hasDiff = true;\n              }\n            } else if (isResponseApplyPatchCallOperationDiffDoneChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall?.applyPatch && !toolCall.applyPatch.endEmitted) {\n                if (!toolCall.applyPatch.hasDiff) {\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: toolCall.toolCallId,\n                    delta: escapeJSONDelta(value.diff),\n                  });\n\n                  toolCall.applyPatch.hasDiff = true;\n                }\n\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: '\"}}',\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: toolCall.toolCallId,\n                });\n\n                toolCall.applyPatch.endEmitted = true;\n              }\n            } else if (isResponseImageGenerationCallPartialImageChunk(value)) {\n              controller.enqueue({\n                type: 'tool-result',\n                toolCallId: value.item_id,\n                toolName: toolNameMapping.toCustomToolName('image_generation'),\n                result: {\n                  result: value.partial_image_b64,\n                } satisfies InferSchema<typeof imageGenerationOutputSchema>,\n                preliminary: true,\n              });\n            } else if (isResponseCodeInterpreterCallCodeDeltaChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: escapeJSONDelta(value.delta),\n                });\n              }\n            } else if (isResponseCodeInterpreterCallCodeDoneChunk(value)) {\n              const toolCall = ongoingToolCalls[value.output_index];\n\n              if (toolCall != null) {\n                controller.enqueue({\n                  type: 'tool-input-delta',\n                  id: toolCall.toolCallId,\n                  delta: '\"}',\n                });\n\n                controller.enqueue({\n                  type: 'tool-input-end',\n                  id: toolCall.toolCallId,\n                });\n\n                // immediately send the tool call after the input end:\n                controller.enqueue({\n                  type: 'tool-call',\n                  toolCallId: toolCall.toolCallId,\n                  toolName:\n                    toolNameMapping.toCustomToolName('code_interpreter'),\n                  input: JSON.stringify({\n                    code: value.code,\n                    containerId: toolCall.codeInterpreter!.containerId,\n                  } satisfies InferSchema<typeof codeInterpreterInputSchema>),\n                  providerExecuted: true,\n                });\n              }\n            } else if (isResponseCreatedChunk(value)) {\n              responseId = value.response.id;\n              controller.enqueue({\n                type: 'response-metadata',\n                id: value.response.id,\n                timestamp: new Date(value.response.created_at * 1000),\n                modelId: value.response.model,\n              });\n            } else if (isTextDeltaChunk(value)) {\n              controller.enqueue({\n                type: 'text-delta',\n                id: value.item_id,\n                delta: value.delta,\n              });\n\n              if (\n                options.providerOptions?.[providerOptionsName]?.logprobs &&\n                value.logprobs\n              ) {\n                logprobs.push(value.logprobs);\n              }\n            } else if (value.type === 'response.reasoning_summary_part.added') {\n              // the first reasoning start is pushed in isResponseOutputItemAddedReasoningChunk\n              if (value.summary_index > 0) {\n                const activeReasoningPart = activeReasoning[value.item_id]!;\n\n                activeReasoningPart.summaryParts[value.summary_index] =\n                  'active';\n\n                // since there is a new active summary part, we can conclude all can-conclude summary parts\n                for (const summaryIndex of Object.keys(\n                  activeReasoningPart.summaryParts,\n                )) {\n                  if (\n                    activeReasoningPart.summaryParts[summaryIndex] ===\n                    'can-conclude'\n                  ) {\n                    controller.enqueue({\n                      type: 'reasoning-end',\n                      id: `${value.item_id}:${summaryIndex}`,\n                      providerMetadata: {\n                        [providerOptionsName]: {\n                          itemId: value.item_id,\n                        } satisfies ResponsesReasoningProviderMetadata,\n                      },\n                    });\n                    activeReasoningPart.summaryParts[summaryIndex] =\n                      'concluded';\n                  }\n                }\n\n                controller.enqueue({\n                  type: 'reasoning-start',\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item_id,\n                      reasoningEncryptedContent:\n                        activeReasoning[value.item_id]?.encryptedContent ??\n                        null,\n                    } satisfies ResponsesReasoningProviderMetadata,\n                  },\n                });\n              }\n            } else if (value.type === 'response.reasoning_summary_text.delta') {\n              controller.enqueue({\n                type: 'reasoning-delta',\n                id: `${value.item_id}:${value.summary_index}`,\n                delta: value.delta,\n                providerMetadata: {\n                  [providerOptionsName]: {\n                    itemId: value.item_id,\n                  } satisfies ResponsesReasoningProviderMetadata,\n                },\n              });\n            } else if (value.type === 'response.reasoning_summary_part.done') {\n              // when OpenAI stores the message data, we can immediately conclude the reasoning part\n              // since we do not need to send the encrypted content.\n              if (store) {\n                controller.enqueue({\n                  type: 'reasoning-end',\n                  id: `${value.item_id}:${value.summary_index}`,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      itemId: value.item_id,\n                    } satisfies ResponsesReasoningProviderMetadata,\n                  },\n                });\n\n                // mark the summary part as concluded\n                activeReasoning[value.item_id]!.summaryParts[\n                  value.summary_index\n                ] = 'concluded';\n              } else {\n                // mark the summary part as can-conclude only\n                // because we need to have a final summary part with the encrypted content\n                activeReasoning[value.item_id]!.summaryParts[\n                  value.summary_index\n                ] = 'can-conclude';\n              }\n            } else if (isResponseFinishedChunk(value)) {\n              finishReason = {\n                unified: mapOpenAIResponseFinishReason({\n                  finishReason: value.response.incomplete_details?.reason,\n                  hasFunctionCall,\n                }),\n                raw: value.response.incomplete_details?.reason ?? undefined,\n              };\n              usage = value.response.usage;\n              if (typeof value.response.service_tier === 'string') {\n                serviceTier = value.response.service_tier;\n              }\n            } else if (isResponseFailedChunk(value)) {\n              const incompleteReason =\n                value.response.incomplete_details?.reason;\n              finishReason = {\n                unified: incompleteReason\n                  ? mapOpenAIResponseFinishReason({\n                      finishReason: incompleteReason,\n                      hasFunctionCall,\n                    })\n                  : 'error',\n                raw: incompleteReason ?? 'error',\n              };\n              usage = value.response.usage ?? undefined;\n            } else if (isResponseAnnotationAddedChunk(value)) {\n              ongoingAnnotations.push(value.annotation);\n              if (value.annotation.type === 'url_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'url',\n                  id: self.config.generateId?.() ?? generateId(),\n                  url: value.annotation.url,\n                  title: value.annotation.title,\n                });\n              } else if (value.annotation.type === 'file_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: value.annotation.filename,\n                  filename: value.annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: value.annotation.type,\n                      fileId: value.annotation.file_id,\n                      index: value.annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_citation' }\n                    >,\n                  },\n                });\n              } else if (value.annotation.type === 'container_file_citation') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'text/plain',\n                  title: value.annotation.filename,\n                  filename: value.annotation.filename,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: value.annotation.type,\n                      fileId: value.annotation.file_id,\n                      containerId: value.annotation.container_id,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'container_file_citation' }\n                    >,\n                  },\n                });\n              } else if (value.annotation.type === 'file_path') {\n                controller.enqueue({\n                  type: 'source',\n                  sourceType: 'document',\n                  id: self.config.generateId?.() ?? generateId(),\n                  mediaType: 'application/octet-stream',\n                  title: value.annotation.file_id,\n                  filename: value.annotation.file_id,\n                  providerMetadata: {\n                    [providerOptionsName]: {\n                      type: value.annotation.type,\n                      fileId: value.annotation.file_id,\n                      index: value.annotation.index,\n                    } satisfies Extract<\n                      ResponsesSourceDocumentProviderMetadata,\n                      { type: 'file_path' }\n                    >,\n                  },\n                });\n              }\n            } else if (isErrorChunk(value)) {\n              controller.enqueue({ type: 'error', error: value });\n            }\n          },\n\n          flush(controller) {\n            const providerMetadata: SharedV3ProviderMetadata = {\n              [providerOptionsName]: {\n                responseId: responseId,\n                ...(logprobs.length > 0 ? { logprobs } : {}),\n                ...(serviceTier !== undefined ? { serviceTier } : {}),\n              } satisfies ResponsesProviderMetadata,\n            };\n\n            controller.enqueue({\n              type: 'finish',\n              finishReason,\n              usage: convertOpenAIResponsesUsage(usage),\n              providerMetadata,\n            });\n          },\n        }),\n      ),\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n\nfunction isTextDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_text.delta' } {\n  return chunk.type === 'response.output_text.delta';\n}\n\nfunction isResponseOutputItemDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.done' } {\n  return chunk.type === 'response.output_item.done';\n}\n\nfunction isResponseFinishedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.completed' | 'response.incomplete';\n} {\n  return (\n    chunk.type === 'response.completed' || chunk.type === 'response.incomplete'\n  );\n}\n\nfunction isResponseFailedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.failed' } {\n  return chunk.type === 'response.failed';\n}\n\nfunction isResponseCreatedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.created' } {\n  return chunk.type === 'response.created';\n}\n\nfunction isResponseFunctionCallArgumentsDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.function_call_arguments.delta';\n} {\n  return chunk.type === 'response.function_call_arguments.delta';\n}\n\nfunction isResponseCustomToolCallInputDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.custom_tool_call_input.delta';\n} {\n  return chunk.type === 'response.custom_tool_call_input.delta';\n}\n\nfunction isResponseImageGenerationCallPartialImageChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.image_generation_call.partial_image';\n} {\n  return chunk.type === 'response.image_generation_call.partial_image';\n}\n\nfunction isResponseCodeInterpreterCallCodeDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.code_interpreter_call_code.delta';\n} {\n  return chunk.type === 'response.code_interpreter_call_code.delta';\n}\n\nfunction isResponseCodeInterpreterCallCodeDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.code_interpreter_call_code.done';\n} {\n  return chunk.type === 'response.code_interpreter_call_code.done';\n}\n\nfunction isResponseApplyPatchCallOperationDiffDeltaChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesApplyPatchOperationDiffDeltaChunk {\n  return chunk.type === 'response.apply_patch_call_operation_diff.delta';\n}\n\nfunction isResponseApplyPatchCallOperationDiffDoneChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesApplyPatchOperationDiffDoneChunk {\n  return chunk.type === 'response.apply_patch_call_operation_diff.done';\n}\n\nfunction isResponseOutputItemAddedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'response.output_item.added' } {\n  return chunk.type === 'response.output_item.added';\n}\n\nfunction isResponseAnnotationAddedChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & {\n  type: 'response.output_text.annotation.added';\n} {\n  return chunk.type === 'response.output_text.annotation.added';\n}\n\nfunction isErrorChunk(\n  chunk: OpenAIResponsesChunk,\n): chunk is OpenAIResponsesChunk & { type: 'error' } {\n  return chunk.type === 'error';\n}\n\nfunction mapWebSearchOutput(\n  action: OpenAIResponsesWebSearchAction | null | undefined,\n): InferSchema<typeof webSearchOutputSchema> {\n  if (action == null) {\n    return {};\n  }\n\n  switch (action.type) {\n    case 'search':\n      return {\n        action: { type: 'search', query: action.query ?? undefined },\n        // include sources when provided by the Responses API (behind include flag)\n        ...(action.sources != null && { sources: action.sources }),\n      };\n    case 'open_page':\n      return { action: { type: 'openPage', url: action.url } };\n    case 'find_in_page':\n      return {\n        action: {\n          type: 'findInPage',\n          url: action.url,\n          pattern: action.pattern,\n        },\n      };\n  }\n}\n\n// The delta is embedded in a JSON string.\n// To escape it, we use JSON.stringify and slice to remove the outer quotes.\nfunction escapeJSONDelta(delta: string) {\n  return JSON.stringify(delta).slice(1, -1);\n}\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAISpeechModelId =\n  | 'tts-1'\n  | 'tts-1-1106'\n  | 'tts-1-hd'\n  | 'tts-1-hd-1106'\n  | 'gpt-4o-mini-tts'\n  | 'gpt-4o-mini-tts-2025-03-20'\n  | 'gpt-4o-mini-tts-2025-12-15'\n  | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createSpeech\nexport const openaiSpeechModelOptionsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      instructions: z.string().nullish(),\n      speed: z.number().min(0.25).max(4.0).default(1.0).nullish(),\n    }),\n  ),\n);\n\nexport type OpenAISpeechModelOptions = InferSchema<\n  typeof openaiSpeechModelOptionsSchema\n>;\n","import { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createBinaryResponseHandler,\n  parseProviderOptions,\n  postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { OpenAISpeechAPITypes } from './openai-speech-api';\nimport {\n  openaiSpeechModelOptionsSchema,\n  OpenAISpeechModelId,\n} from './openai-speech-options';\n\ninterface OpenAISpeechModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\nexport class OpenAISpeechModel implements SpeechModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAISpeechModelId,\n    private readonly config: OpenAISpeechModelConfig,\n  ) {}\n\n  private async getArgs({\n    text,\n    voice = 'alloy',\n    outputFormat = 'mp3',\n    speed,\n    instructions,\n    language,\n    providerOptions,\n  }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openAIOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openaiSpeechModelOptionsSchema,\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',\n          feature: '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',\n        feature: 'language',\n        details: `OpenAI speech models do not support language selection. Language parameter \"${language}\" was ignored.`,\n      });\n    }\n\n    return {\n      requestBody,\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: Parameters<SpeechModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { requestBody, warnings } = await this.getArgs(options);\n\n    const {\n      value: audio,\n      responseHeaders,\n      rawValue: rawResponse,\n    } = await postJsonToApi({\n      url: this.config.url({\n        path: '/audio/speech',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      body: requestBody,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createBinaryResponseHandler(),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      audio,\n      warnings,\n      request: {\n        body: JSON.stringify(requestBody),\n      },\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const openaiTranscriptionResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      text: z.string(),\n      language: z.string().nullish(),\n      duration: z.number().nullish(),\n      words: z\n        .array(\n          z.object({\n            word: z.string(),\n            start: z.number(),\n            end: z.number(),\n          }),\n        )\n        .nullish(),\n      segments: z\n        .array(\n          z.object({\n            id: z.number(),\n            seek: z.number(),\n            start: z.number(),\n            end: z.number(),\n            text: z.string(),\n            tokens: z.array(z.number()),\n            temperature: z.number(),\n            avg_logprob: z.number(),\n            compression_ratio: z.number(),\n            no_speech_prob: z.number(),\n          }),\n        )\n        .nullish(),\n    }),\n  ),\n);\n","import { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type OpenAITranscriptionModelId =\n  | 'whisper-1'\n  | 'gpt-4o-mini-transcribe'\n  | 'gpt-4o-mini-transcribe-2025-03-20'\n  | 'gpt-4o-mini-transcribe-2025-12-15'\n  | 'gpt-4o-transcribe'\n  | 'gpt-4o-transcribe-diarize'\n  | (string & {});\n\n// https://platform.openai.com/docs/api-reference/audio/createTranscription\nexport const openAITranscriptionModelOptions = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * Additional information to include in the transcription response.\n       */\n\n      include: z.array(z.string()).optional(),\n\n      /**\n       * The language of the input audio in ISO-639-1 format.\n       */\n      language: z.string().optional(),\n\n      /**\n       * An optional text to guide the model's style or continue a previous audio segment.\n       */\n      prompt: z.string().optional(),\n\n      /**\n       * The sampling temperature, between 0 and 1.\n       * @default 0\n       */\n      temperature: z.number().min(0).max(1).default(0).optional(),\n\n      /**\n       * The timestamp granularities to populate for this transcription.\n       * @default ['segment']\n       */\n      timestampGranularities: z\n        .array(z.enum(['word', 'segment']))\n        .default(['segment'])\n        .optional(),\n    }),\n  ),\n);\n\nexport type OpenAITranscriptionModelOptions = InferSchema<\n  typeof openAITranscriptionModelOptions\n>;\n","import {\n  TranscriptionModelV3,\n  TranscriptionModelV3CallOptions,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertBase64ToUint8Array,\n  createJsonResponseHandler,\n  mediaTypeToExtension,\n  parseProviderOptions,\n  postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIConfig } from '../openai-config';\nimport { openaiFailedResponseHandler } from '../openai-error';\nimport { openaiTranscriptionResponseSchema } from './openai-transcription-api';\nimport {\n  OpenAITranscriptionModelId,\n  openAITranscriptionModelOptions,\n  OpenAITranscriptionModelOptions,\n} from './openai-transcription-options';\n\nexport type OpenAITranscriptionCallOptions = Omit<\n  TranscriptionModelV3CallOptions,\n  'providerOptions'\n> & {\n  providerOptions?: {\n    openai?: OpenAITranscriptionModelOptions;\n  };\n};\n\ninterface OpenAITranscriptionModelConfig extends OpenAIConfig {\n  _internal?: {\n    currentDate?: () => Date;\n  };\n}\n\n// https://platform.openai.com/docs/guides/speech-to-text#supported-languages\nconst languageMap = {\n  afrikaans: 'af',\n  arabic: 'ar',\n  armenian: 'hy',\n  azerbaijani: 'az',\n  belarusian: 'be',\n  bosnian: 'bs',\n  bulgarian: 'bg',\n  catalan: 'ca',\n  chinese: 'zh',\n  croatian: 'hr',\n  czech: 'cs',\n  danish: 'da',\n  dutch: 'nl',\n  english: 'en',\n  estonian: 'et',\n  finnish: 'fi',\n  french: 'fr',\n  galician: 'gl',\n  german: 'de',\n  greek: 'el',\n  hebrew: 'he',\n  hindi: 'hi',\n  hungarian: 'hu',\n  icelandic: 'is',\n  indonesian: 'id',\n  italian: 'it',\n  japanese: 'ja',\n  kannada: 'kn',\n  kazakh: 'kk',\n  korean: 'ko',\n  latvian: 'lv',\n  lithuanian: 'lt',\n  macedonian: 'mk',\n  malay: 'ms',\n  marathi: 'mr',\n  maori: 'mi',\n  nepali: 'ne',\n  norwegian: 'no',\n  persian: 'fa',\n  polish: 'pl',\n  portuguese: 'pt',\n  romanian: 'ro',\n  russian: 'ru',\n  serbian: 'sr',\n  slovak: 'sk',\n  slovenian: 'sl',\n  spanish: 'es',\n  swahili: 'sw',\n  swedish: 'sv',\n  tagalog: 'tl',\n  tamil: 'ta',\n  thai: 'th',\n  turkish: 'tr',\n  ukrainian: 'uk',\n  urdu: 'ur',\n  vietnamese: 'vi',\n  welsh: 'cy',\n};\n\nexport class OpenAITranscriptionModel implements TranscriptionModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  constructor(\n    readonly modelId: OpenAITranscriptionModelId,\n    private readonly config: OpenAITranscriptionModelConfig,\n  ) {}\n\n  private async getArgs({\n    audio,\n    mediaType,\n    providerOptions,\n  }: OpenAITranscriptionCallOptions) {\n    const warnings: SharedV3Warning[] = [];\n\n    // Parse provider options\n    const openAIOptions = await parseProviderOptions({\n      provider: 'openai',\n      providerOptions,\n      schema: openAITranscriptionModelOptions,\n    });\n\n    // Create form data with base fields\n    const formData = new FormData();\n    const blob =\n      audio instanceof Uint8Array\n        ? new Blob([audio])\n        : new Blob([convertBase64ToUint8Array(audio)]);\n\n    formData.append('model', this.modelId);\n    const fileExtension = mediaTypeToExtension(mediaType);\n    formData.append(\n      'file',\n      new File([blob], 'audio', { type: mediaType }),\n      `audio.${fileExtension}`,\n    );\n\n    // Add provider-specific options\n    if (openAIOptions) {\n      const transcriptionModelOptions = {\n        include: openAIOptions.include,\n        language: openAIOptions.language,\n        prompt: openAIOptions.prompt,\n        // https://platform.openai.com/docs/api-reference/audio/createTranscription#audio_createtranscription-response_format\n        // prefer verbose_json to get segments for models that support it\n        response_format: [\n          'gpt-4o-transcribe',\n          'gpt-4o-mini-transcribe',\n        ].includes(this.modelId)\n          ? 'json'\n          : 'verbose_json',\n        temperature: openAIOptions.temperature,\n        timestamp_granularities: openAIOptions.timestampGranularities,\n      };\n\n      for (const [key, value] of Object.entries(transcriptionModelOptions)) {\n        if (value != null) {\n          if (Array.isArray(value)) {\n            for (const item of value) {\n              formData.append(`${key}[]`, String(item));\n            }\n          } else {\n            formData.append(key, String(value));\n          }\n        }\n      }\n    }\n\n    return {\n      formData,\n      warnings,\n    };\n  }\n\n  async doGenerate(\n    options: OpenAITranscriptionCallOptions,\n  ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const { formData, warnings } = await this.getArgs(options);\n\n    const {\n      value: response,\n      responseHeaders,\n      rawValue: rawResponse,\n    } = await postFormDataToApi({\n      url: this.config.url({\n        path: '/audio/transcriptions',\n        modelId: this.modelId,\n      }),\n      headers: combineHeaders(this.config.headers(), options.headers),\n      formData,\n      failedResponseHandler: openaiFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        openaiTranscriptionResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const language =\n      response.language != null && response.language in languageMap\n        ? languageMap[response.language as keyof typeof languageMap]\n        : undefined;\n\n    return {\n      text: response.text,\n      segments:\n        response.segments?.map(segment => ({\n          text: segment.text,\n          startSecond: segment.start,\n          endSecond: segment.end,\n        })) ??\n        response.words?.map(word => ({\n          text: word.word,\n          startSecond: word.start,\n          endSecond: word.end,\n        })) ??\n        [],\n      language,\n      durationInSeconds: response.duration ?? undefined,\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import {\n  EmbeddingModelV3,\n  ImageModelV3,\n  LanguageModelV3,\n  ProviderV3,\n  SpeechModelV3,\n  TranscriptionModelV3,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  loadApiKey,\n  loadOptionalSetting,\n  withoutTrailingSlash,\n  withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { OpenAIChatLanguageModel } from './chat/openai-chat-language-model';\nimport { OpenAIChatModelId } from './chat/openai-chat-options';\nimport { OpenAICompletionLanguageModel } from './completion/openai-completion-language-model';\nimport { OpenAICompletionModelId } from './completion/openai-completion-options';\nimport { OpenAIEmbeddingModel } from './embedding/openai-embedding-model';\nimport { OpenAIEmbeddingModelId } from './embedding/openai-embedding-options';\nimport { OpenAIImageModel } from './image/openai-image-model';\nimport { OpenAIImageModelId } from './image/openai-image-options';\nimport { openaiTools } from './openai-tools';\nimport { OpenAIResponsesLanguageModel } from './responses/openai-responses-language-model';\nimport { OpenAIResponsesModelId } from './responses/openai-responses-options';\nimport { OpenAISpeechModel } from './speech/openai-speech-model';\nimport { OpenAISpeechModelId } from './speech/openai-speech-options';\nimport { OpenAITranscriptionModel } from './transcription/openai-transcription-model';\nimport { OpenAITranscriptionModelId } from './transcription/openai-transcription-options';\nimport { VERSION } from './version';\n\nexport interface OpenAIProvider extends ProviderV3 {\n  (modelId: OpenAIResponsesModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI model for text generation.\n   */\n  languageModel(modelId: OpenAIResponsesModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI chat model for text generation.\n   */\n  chat(modelId: OpenAIChatModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI responses API model for text generation.\n   */\n  responses(modelId: OpenAIResponsesModelId): LanguageModelV3;\n\n  /**\n   * Creates an OpenAI completion model for text generation.\n   */\n  completion(modelId: OpenAICompletionModelId): LanguageModelV3;\n\n  /**\n   * Creates a model for text embeddings.\n   */\n  embedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * Creates a model for text embeddings.\n   */\n  embeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embedding` instead.\n   */\n  textEmbedding(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(modelId: OpenAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * Creates a model for image generation.\n   */\n  image(modelId: OpenAIImageModelId): ImageModelV3;\n\n  /**\n   * Creates a model for image generation.\n   */\n  imageModel(modelId: OpenAIImageModelId): ImageModelV3;\n\n  /**\n   * Creates a model for transcription.\n   */\n  transcription(modelId: OpenAITranscriptionModelId): TranscriptionModelV3;\n\n  /**\n   * Creates a model for speech generation.\n   */\n  speech(modelId: OpenAISpeechModelId): SpeechModelV3;\n\n  /**\n   * OpenAI-specific tools.\n   */\n  tools: typeof openaiTools;\n}\n\nexport interface OpenAIProviderSettings {\n  /**\n   * Base URL for the OpenAI API calls.\n   */\n  baseURL?: string;\n\n  /**\n   * API key for authenticating requests.\n   */\n  apiKey?: string;\n\n  /**\n   * OpenAI Organization.\n   */\n  organization?: string;\n\n  /**\n   * OpenAI project.\n   */\n  project?: string;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Record<string, string>;\n\n  /**\n   * Provider name. Overrides the `openai` default name for 3rd party providers.\n   */\n  name?: string;\n\n  /**\n   * Custom fetch implementation. You can use it as a middleware to intercept requests,\n   * or to provide a custom fetch implementation for e.g. testing.\n   */\n  fetch?: FetchFunction;\n}\n\n/**\n * Create an OpenAI provider instance.\n */\nexport function createOpenAI(\n  options: OpenAIProviderSettings = {},\n): OpenAIProvider {\n  const baseURL =\n    withoutTrailingSlash(\n      loadOptionalSetting({\n        settingValue: options.baseURL,\n        environmentVariableName: 'OPENAI_BASE_URL',\n      }),\n    ) ?? 'https://api.openai.com/v1';\n\n  const providerName = options.name ?? 'openai';\n\n  const getHeaders = () =>\n    withUserAgentSuffix(\n      {\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      `ai-sdk/openai/${VERSION}`,\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      fileIdPrefixes: ['file-'],\n    });\n  };\n\n  const provider = function (modelId: OpenAIResponsesModelId) {\n    return createLanguageModel(modelId);\n  };\n\n  provider.specificationVersion = 'v3' as const;\n  provider.languageModel = createLanguageModel;\n  provider.chat = createChatModel;\n  provider.completion = createCompletionModel;\n  provider.responses = createResponsesModel;\n  provider.embedding = createEmbeddingModel;\n  provider.embeddingModel = 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/**\n * Default OpenAI provider instance.\n */\nexport const openai = createOpenAI();\n","/**\n * Base class for model gateway providers\n * Gateways fetch provider configurations and build URLs for model access\n */\n\nimport type { LanguageModelV2 } from '@ai-sdk/provider-v5';\nimport type { LanguageModelV3 } from '@ai-sdk/provider-v6';\n\nexport interface ProviderConfig {\n  url?: string;\n  apiKeyHeader?: string;\n  apiKeyEnvVar: string | string[];\n  name: string;\n  models: string[];\n  docUrl?: string; // Optional documentation URL\n  gateway: string;\n  npm?: string; // NPM package name from models.dev (e.g., \"@ai-sdk/anthropic\")\n}\n\n/**\n * Union type for language models that can be returned by gateways.\n * Supports both AI SDK v5 (LanguageModelV2) and v6 (LanguageModelV3).\n */\nexport type GatewayLanguageModel = LanguageModelV2 | LanguageModelV3;\n\nexport abstract class MastraModelGateway {\n  /**\n   * Unique identifier for the gateway\n   * This ID is used as the prefix for all providers from this gateway (e.g., \"netlify/anthropic\")\n   * Exception: models.dev is a provider registry and doesn't use a prefix\n   */\n  abstract readonly id: string;\n\n  /**\n   * Name of the gateway provider\n   */\n  abstract readonly name: string;\n\n  /**\n   * Get the gateway ID\n   */\n  getId(): string {\n    return this.id;\n  }\n\n  /**\n   * Whether this gateway should be enabled for the current runtime.\n   * Disabled gateways are skipped when syncing and filtered out when reading cached registry data.\n   */\n  shouldEnable(): boolean {\n    return true;\n  }\n\n  /**\n   * Fetch provider configurations from the gateway\n   * Should return providers in the standard format\n   */\n  abstract fetchProviders(): Promise<Record<string, ProviderConfig>>;\n\n  /**\n   * Build the URL for a specific model/provider combination\n   * @param modelId Full model ID (e.g., \"openai/gpt-4o\" or \"netlify/openai/gpt-4o\")\n   * @param envVars Environment variables available\n   * @returns URL string if this gateway can handle the model, false otherwise\n   */\n  abstract buildUrl(modelId: string, envVars: Record<string, string>): string | undefined | Promise<string | undefined>;\n\n  abstract getApiKey(modelId: string): Promise<string>;\n\n  /**\n   * Resolve a language model from the gateway.\n   * Supports returning either LanguageModelV2 (AI SDK v5) or LanguageModelV3 (AI SDK v6).\n   */\n  abstract resolveLanguageModel(args: {\n    modelId: string;\n    providerId: string;\n    apiKey: string;\n    headers?: Record<string, string>;\n  }): Promise<GatewayLanguageModel> | GatewayLanguageModel;\n}\n","declare const __MASTRA_VERSION__: string;\n\nexport const MASTRA_USER_AGENT = typeof __MASTRA_VERSION__ !== 'undefined' ? `mastra/${__MASTRA_VERSION__}` : 'mastra';\n\n// anything in this list will use the corresponding ai sdk package instead of using openai-compat endpoints\nexport const PROVIDERS_WITH_INSTALLED_PACKAGES = [\n  'anthropic',\n  'cerebras',\n  'deepinfra',\n  'deepseek',\n  'google',\n  'groq',\n  'mistral',\n  'openai',\n  'openrouter',\n  'perplexity',\n  'togetherai',\n  'vercel',\n  'xai',\n];\n\n// anything here doesn't show up in model router. for now that's just copilot which requires a special oauth flow\nexport const EXCLUDED_PROVIDERS = ['github-copilot'];\n\n// Header used to pass gateway API key when Authorization is occupied by an OAuth token\nexport const GATEWAY_AUTH_HEADER = 'X-Memory-Gateway-Authorization';\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import {\n  createJsonErrorResponseHandler,\n  InferSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const anthropicErrorDataSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      type: z.literal('error'),\n      error: z.object({\n        type: z.string(),\n        message: z.string(),\n      }),\n    }),\n  ),\n);\n\nexport type AnthropicErrorData = InferSchema<typeof anthropicErrorDataSchema>;\n\nexport const anthropicFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: anthropicErrorDataSchema,\n  errorToMessage: data => data.error.message,\n});\n","import { JSONSchema7 } from '@ai-sdk/provider';\nimport { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type AnthropicMessagesPrompt = {\n  system: Array<AnthropicTextContent> | undefined;\n  messages: AnthropicMessage[];\n};\n\nexport type AnthropicMessage = AnthropicUserMessage | AnthropicAssistantMessage;\n\nexport type AnthropicCacheControl = {\n  type: 'ephemeral';\n  ttl?: '5m' | '1h';\n};\n\nexport interface AnthropicUserMessage {\n  role: 'user';\n  content: Array<\n    | AnthropicTextContent\n    | AnthropicImageContent\n    | AnthropicDocumentContent\n    | AnthropicToolResultContent\n  >;\n}\n\nexport interface AnthropicAssistantMessage {\n  role: 'assistant';\n  content: Array<\n    | AnthropicTextContent\n    | AnthropicThinkingContent\n    | AnthropicRedactedThinkingContent\n    | AnthropicToolCallContent\n    | AnthropicServerToolUseContent\n    | AnthropicCodeExecutionToolResultContent\n    | AnthropicWebFetchToolResultContent\n    | AnthropicWebSearchToolResultContent\n    | AnthropicToolSearchToolResultContent\n    | AnthropicBashCodeExecutionToolResultContent\n    | AnthropicTextEditorCodeExecutionToolResultContent\n    | AnthropicMcpToolUseContent\n    | AnthropicMcpToolResultContent\n    | AnthropicCompactionContent\n  >;\n}\n\nexport interface AnthropicCompactionContent {\n  type: 'compaction';\n  content: string;\n  cache_control?: AnthropicCacheControl;\n}\n\nexport interface AnthropicTextContent {\n  type: 'text';\n  text: string;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicThinkingContent {\n  type: 'thinking';\n  thinking: string;\n  signature: string;\n  // Note: thinking blocks cannot be directly cached with cache_control.\n  // They are cached implicitly when appearing in previous assistant turns.\n  cache_control?: never;\n}\n\nexport interface AnthropicRedactedThinkingContent {\n  type: 'redacted_thinking';\n  data: string;\n  // Note: redacted thinking blocks cannot be directly cached with cache_control.\n  // They are cached implicitly when appearing in previous assistant turns.\n  cache_control?: never;\n}\n\ntype AnthropicContentSource =\n  | {\n      type: 'base64';\n      media_type: string;\n      data: string;\n    }\n  | {\n      type: 'url';\n      url: string;\n    }\n  | {\n      type: 'text';\n      media_type: 'text/plain';\n      data: string;\n    };\n\nexport interface AnthropicImageContent {\n  type: 'image';\n  source: AnthropicContentSource;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicDocumentContent {\n  type: 'document';\n  source: AnthropicContentSource;\n  title?: string;\n  context?: string;\n  citations?: { enabled: boolean };\n  cache_control: AnthropicCacheControl | undefined;\n}\n\n/**\n * The caller information for programmatic tool calling.\n * Present when a tool is called from within code execution.\n */\nexport type AnthropicToolCallCaller =\n  | {\n      type: 'code_execution_20250825';\n      tool_id: string;\n    }\n  | {\n      type: 'code_execution_20260120';\n      tool_id: string;\n    }\n  | {\n      type: 'direct';\n    };\n\nexport interface AnthropicToolCallContent {\n  type: 'tool_use';\n  id: string;\n  name: string;\n  input: unknown;\n  /**\n   * Present when this tool call was triggered by a server-executed tool\n   * (e.g., code execution calling a user-defined tool programmatically).\n   */\n  caller?: AnthropicToolCallCaller;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicServerToolUseContent {\n  type: 'server_tool_use';\n  id: string;\n  name:\n    | 'web_fetch'\n    | 'web_search'\n    // code execution 20250522:\n    | 'code_execution'\n    // code execution 20250825:\n    | 'bash_code_execution'\n    | 'text_editor_code_execution'\n    // tool search:\n    | 'tool_search_tool_regex'\n    | 'tool_search_tool_bm25';\n  input: unknown;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\n// Nested content types for tool results (without cache_control)\n// Sub-content blocks cannot be cached directly according to Anthropic docs\ntype AnthropicNestedTextContent = Omit<\n  AnthropicTextContent,\n  'cache_control'\n> & {\n  cache_control?: never;\n};\n\ntype AnthropicNestedImageContent = Omit<\n  AnthropicImageContent,\n  'cache_control'\n> & {\n  cache_control?: never;\n};\n\ntype AnthropicNestedDocumentContent = Omit<\n  AnthropicDocumentContent,\n  'cache_control'\n> & {\n  cache_control?: never;\n};\n\nexport interface AnthropicToolReferenceContent {\n  type: 'tool_reference';\n  tool_name: string;\n}\n\nexport interface AnthropicToolResultContent {\n  type: 'tool_result';\n  tool_use_id: string;\n  content:\n    | string\n    | Array<\n        | AnthropicNestedTextContent\n        | AnthropicNestedImageContent\n        | AnthropicNestedDocumentContent\n        | AnthropicToolReferenceContent\n      >;\n  is_error: boolean | undefined;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicWebSearchToolResultContent {\n  type: 'web_search_tool_result';\n  tool_use_id: string;\n  content: Array<{\n    url: string;\n    title: string | null;\n    page_age: string | null;\n    encrypted_content: string;\n    type: string;\n  }>;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicToolSearchToolResultContent {\n  type: 'tool_search_tool_result';\n  tool_use_id: string;\n  content:\n    | {\n        type: 'tool_search_tool_search_result';\n        tool_references: Array<{\n          type: 'tool_reference';\n          tool_name: string;\n        }>;\n      }\n    | {\n        type: 'tool_search_tool_result_error';\n        error_code: string;\n      };\n  cache_control: AnthropicCacheControl | undefined;\n}\n\n// code execution results for code_execution_20250522 tool:\nexport interface AnthropicCodeExecutionToolResultContent {\n  type: 'code_execution_tool_result';\n  tool_use_id: string;\n  content:\n    | {\n        type: 'code_execution_result';\n        stdout: string;\n        stderr: string;\n        return_code: number;\n        content: Array<{ type: 'code_execution_output'; file_id: string }>;\n      }\n    | {\n        type: 'encrypted_code_execution_result';\n        encrypted_stdout: string;\n        stderr: string;\n        return_code: number;\n        content: Array<{ type: 'code_execution_output'; file_id: string }>;\n      }\n    | {\n        type: 'code_execution_tool_result_error';\n        error_code: string;\n      };\n  cache_control: AnthropicCacheControl | undefined;\n}\n\n// text editor code execution results for code_execution_20250825 tool:\nexport interface AnthropicTextEditorCodeExecutionToolResultContent {\n  type: 'text_editor_code_execution_tool_result';\n  tool_use_id: string;\n  content:\n    | {\n        type: 'text_editor_code_execution_tool_result_error';\n        error_code: string;\n      }\n    | {\n        type: 'text_editor_code_execution_create_result';\n        is_file_update: boolean;\n      }\n    | {\n        type: 'text_editor_code_execution_view_result';\n        content: string;\n        file_type: string;\n        num_lines: number | null;\n        start_line: number | null;\n        total_lines: number | null;\n      }\n    | {\n        type: 'text_editor_code_execution_str_replace_result';\n        lines: string[] | null;\n        new_lines: number | null;\n        new_start: number | null;\n        old_lines: number | null;\n        old_start: number | null;\n      };\n  cache_control: AnthropicCacheControl | undefined;\n}\n\n// bash code execution results for code_execution_20250825 tool:\nexport interface AnthropicBashCodeExecutionToolResultContent {\n  type: 'bash_code_execution_tool_result';\n  tool_use_id: string;\n  content:\n    | {\n        type: 'bash_code_execution_result';\n        stdout: string;\n        stderr: string;\n        return_code: number;\n        content: {\n          type: 'bash_code_execution_output';\n          file_id: string;\n        }[];\n      }\n    | {\n        type: 'bash_code_execution_tool_result_error';\n        error_code: string;\n      };\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicWebFetchToolResultContent {\n  type: 'web_fetch_tool_result';\n  tool_use_id: string;\n  content:\n    | {\n        type: 'web_fetch_result';\n        url: string;\n        retrieved_at: string | null;\n        content: {\n          type: 'document';\n          title: string | null;\n          citations?: { enabled: boolean };\n          source:\n            | { type: 'base64'; media_type: 'application/pdf'; data: string }\n            | { type: 'text'; media_type: 'text/plain'; data: string };\n        };\n      }\n    | {\n        type: 'web_fetch_tool_result_error';\n        error_code: string;\n      };\n  cache_control: AnthropicCacheControl | undefined;\n}\nexport interface AnthropicMcpToolUseContent {\n  type: 'mcp_tool_use';\n  id: string;\n  name: string;\n  server_name: string;\n  input: unknown;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport interface AnthropicMcpToolResultContent {\n  type: 'mcp_tool_result';\n  tool_use_id: string;\n  is_error: boolean;\n  content: string | Array<{ type: 'text'; text: string }>;\n  cache_control: AnthropicCacheControl | undefined;\n}\n\nexport type AnthropicTool =\n  | {\n      name: string;\n      description: string | undefined;\n      input_schema: JSONSchema7;\n      cache_control: AnthropicCacheControl | undefined;\n      eager_input_streaming?: boolean;\n      strict?: boolean;\n      /**\n       * When true, this tool is deferred and will only be loaded when\n       * discovered via the tool search tool.\n       */\n      defer_loading?: boolean;\n      /**\n       * Programmatic tool calling: specifies which server-executed tools\n       * are allowed to call this tool. When set, only the specified callers\n       * can invoke this tool programmatically.\n       *\n       * @example ['code_execution_20250825']\n       */\n      allowed_callers?: Array<\n        'direct' | 'code_execution_20250825' | 'code_execution_20260120'\n      >;\n    }\n  | {\n      type: 'code_execution_20250522';\n      name: string;\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      type: 'code_execution_20250825';\n      name: string;\n    }\n  | {\n      type: 'code_execution_20260120';\n      name: string;\n    }\n  | {\n      name: string;\n      type: 'computer_20250124' | 'computer_20241022';\n      display_width_px: number;\n      display_height_px: number;\n      display_number: number;\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      name: string;\n      type: 'computer_20251124';\n      display_width_px: number;\n      display_height_px: number;\n      display_number: number;\n      enable_zoom?: boolean;\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      name: string;\n      type:\n        | 'text_editor_20250124'\n        | 'text_editor_20241022'\n        | 'text_editor_20250429';\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      name: string;\n      type: 'text_editor_20250728';\n      max_characters?: number;\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      name: string;\n      type: 'bash_20250124' | 'bash_20241022';\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      name: string;\n      type: 'memory_20250818';\n    }\n  | {\n      type: 'web_fetch_20250910' | 'web_fetch_20260209';\n      name: string;\n      max_uses?: number;\n      allowed_domains?: string[];\n      blocked_domains?: string[];\n      citations?: { enabled: boolean };\n      max_content_tokens?: number;\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      type: 'web_search_20250305' | 'web_search_20260209';\n      name: string;\n      max_uses?: number;\n      allowed_domains?: string[];\n      blocked_domains?: string[];\n      user_location?: {\n        type: 'approximate';\n        city?: string;\n        region?: string;\n        country?: string;\n        timezone?: string;\n      };\n      cache_control: AnthropicCacheControl | undefined;\n    }\n  | {\n      type: 'tool_search_tool_regex_20251119';\n      name: string;\n    }\n  | {\n      type: 'tool_search_tool_bm25_20251119';\n      name: string;\n    };\n\nexport type AnthropicSpeed = 'fast' | 'standard';\n\nexport type AnthropicToolChoice =\n  | { type: 'auto' | 'any'; disable_parallel_tool_use?: boolean }\n  | { type: 'tool'; name: string; disable_parallel_tool_use?: boolean };\n\nexport type AnthropicContainer = {\n  id?: string | null;\n  skills?: Array<{\n    type: 'anthropic' | 'custom';\n    skill_id: string;\n    version?: string;\n  }> | null;\n};\n\nexport type AnthropicInputTokensTrigger = {\n  type: 'input_tokens';\n  value: number;\n};\n\nexport type AnthropicToolUsesTrigger = {\n  type: 'tool_uses';\n  value: number;\n};\n\nexport type AnthropicContextManagementTrigger =\n  | AnthropicInputTokensTrigger\n  | AnthropicToolUsesTrigger;\n\nexport type AnthropicClearToolUsesEdit = {\n  type: 'clear_tool_uses_20250919';\n  trigger?: AnthropicContextManagementTrigger;\n  keep?: {\n    type: 'tool_uses';\n    value: number;\n  };\n  clear_at_least?: {\n    type: 'input_tokens';\n    value: number;\n  };\n  clear_tool_inputs?: boolean;\n  exclude_tools?: string[];\n};\n\nexport type AnthropicClearThinkingBlockEdit = {\n  type: 'clear_thinking_20251015';\n  keep?: 'all' | { type: 'thinking_turns'; value: number };\n};\n\nexport type AnthropicCompactEdit = {\n  type: 'compact_20260112';\n  trigger?: AnthropicInputTokensTrigger;\n  pause_after_compaction?: boolean;\n  instructions?: string;\n};\n\nexport type AnthropicContextManagementEdit =\n  | AnthropicClearToolUsesEdit\n  | AnthropicClearThinkingBlockEdit\n  | AnthropicCompactEdit;\n\nexport type AnthropicContextManagementConfig = {\n  edits: AnthropicContextManagementEdit[];\n};\n\nexport type AnthropicResponseClearToolUsesEdit = {\n  type: 'clear_tool_uses_20250919';\n  cleared_tool_uses: number;\n  cleared_input_tokens: number;\n};\n\nexport type AnthropicResponseClearThinkingBlockEdit = {\n  type: 'clear_thinking_20251015';\n  cleared_thinking_turns: number;\n  cleared_input_tokens: number;\n};\n\nexport type AnthropicResponseCompactEdit = {\n  type: 'compact_20260112';\n};\n\nexport type AnthropicResponseContextManagementEdit =\n  | AnthropicResponseClearToolUsesEdit\n  | AnthropicResponseClearThinkingBlockEdit\n  | AnthropicResponseCompactEdit;\n\nexport type AnthropicResponseContextManagement = {\n  applied_edits: AnthropicResponseContextManagementEdit[];\n};\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nexport const anthropicMessagesResponseSchema = lazySchema(() =>\n  zodSchema(\n    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\n              .array(\n                z.discriminatedUnion('type', [\n                  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                  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                  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              )\n              .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('compaction'),\n            content: 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            // Programmatic tool calling: caller info when triggered from code execution\n            caller: z\n              .union([\n                z.object({\n                  type: z.literal('code_execution_20250825'),\n                  tool_id: z.string(),\n                }),\n                z.object({\n                  type: z.literal('code_execution_20260120'),\n                  tool_id: z.string(),\n                }),\n                z.object({\n                  type: z.literal('direct'),\n                }),\n              ])\n              .optional(),\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            caller: z\n              .union([\n                z.object({\n                  type: z.literal('code_execution_20260120'),\n                  tool_id: z.string(),\n                }),\n                z.object({\n                  type: z.literal('direct'),\n                }),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('mcp_tool_use'),\n            id: z.string(),\n            name: z.string(),\n            input: z.unknown(),\n            server_name: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_tool_result'),\n            tool_use_id: z.string(),\n            is_error: z.boolean(),\n            content: z.array(\n              z.union([\n                z.string(),\n                z.object({ type: z.literal('text'), text: z.string() }),\n              ]),\n            ),\n          }),\n          z.object({\n            type: z.literal('web_fetch_tool_result'),\n            tool_use_id: z.string(),\n            content: z.union([\n              z.object({\n                type: z.literal('web_fetch_result'),\n                url: z.string(),\n                retrieved_at: z.string(),\n                content: z.object({\n                  type: z.literal('document'),\n                  title: z.string().nullable(),\n                  citations: z.object({ enabled: z.boolean() }).optional(),\n                  source: z.union([\n                    z.object({\n                      type: z.literal('base64'),\n                      media_type: z.literal('application/pdf'),\n                      data: z.string(),\n                    }),\n                    z.object({\n                      type: z.literal('text'),\n                      media_type: z.literal('text/plain'),\n                      data: z.string(),\n                    }),\n                  ]),\n                }),\n              }),\n              z.object({\n                type: z.literal('web_fetch_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\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          // code execution results for code_execution_20250522 tool:\n          z.object({\n            type: z.literal('code_execution_tool_result'),\n            tool_use_id: z.string(),\n            content: z.union([\n              z.object({\n                type: z.literal('code_execution_result'),\n                stdout: z.string(),\n                stderr: z.string(),\n                return_code: z.number(),\n                content: z\n                  .array(\n                    z.object({\n                      type: z.literal('code_execution_output'),\n                      file_id: z.string(),\n                    }),\n                  )\n                  .optional()\n                  .default([]),\n              }),\n              z.object({\n                type: z.literal('encrypted_code_execution_result'),\n                encrypted_stdout: z.string(),\n                stderr: z.string(),\n                return_code: z.number(),\n                content: z\n                  .array(\n                    z.object({\n                      type: z.literal('code_execution_output'),\n                      file_id: z.string(),\n                    }),\n                  )\n                  .optional()\n                  .default([]),\n              }),\n              z.object({\n                type: z.literal('code_execution_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\n          }),\n          // bash code execution results for code_execution_20250825 tool:\n          z.object({\n            type: z.literal('bash_code_execution_tool_result'),\n            tool_use_id: z.string(),\n            content: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('bash_code_execution_result'),\n                content: z.array(\n                  z.object({\n                    type: z.literal('bash_code_execution_output'),\n                    file_id: z.string(),\n                  }),\n                ),\n                stdout: z.string(),\n                stderr: z.string(),\n                return_code: z.number(),\n              }),\n              z.object({\n                type: z.literal('bash_code_execution_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\n          }),\n          // text editor code execution results for code_execution_20250825 tool:\n          z.object({\n            type: z.literal('text_editor_code_execution_tool_result'),\n            tool_use_id: z.string(),\n            content: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('text_editor_code_execution_tool_result_error'),\n                error_code: z.string(),\n              }),\n              z.object({\n                type: z.literal('text_editor_code_execution_view_result'),\n                content: z.string(),\n                file_type: z.string(),\n                num_lines: z.number().nullable(),\n                start_line: z.number().nullable(),\n                total_lines: z.number().nullable(),\n              }),\n              z.object({\n                type: z.literal('text_editor_code_execution_create_result'),\n                is_file_update: z.boolean(),\n              }),\n              z.object({\n                type: z.literal(\n                  'text_editor_code_execution_str_replace_result',\n                ),\n                lines: z.array(z.string()).nullable(),\n                new_lines: z.number().nullable(),\n                new_start: z.number().nullable(),\n                old_lines: z.number().nullable(),\n                old_start: z.number().nullable(),\n              }),\n            ]),\n          }),\n          // tool search tool results for tool_search_tool_regex_20251119 and tool_search_tool_bm25_20251119:\n          z.object({\n            type: z.literal('tool_search_tool_result'),\n            tool_use_id: z.string(),\n            content: z.union([\n              z.object({\n                type: z.literal('tool_search_tool_search_result'),\n                tool_references: z.array(\n                  z.object({\n                    type: z.literal('tool_reference'),\n                    tool_name: z.string(),\n                  }),\n                ),\n              }),\n              z.object({\n                type: z.literal('tool_search_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\n          }),\n        ]),\n      ),\n      stop_reason: z.string().nullish(),\n      stop_sequence: 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        iterations: z\n          .array(\n            z.object({\n              type: z.union([z.literal('compaction'), z.literal('message')]),\n              input_tokens: z.number(),\n              output_tokens: z.number(),\n            }),\n          )\n          .nullish(),\n      }),\n      container: z\n        .object({\n          expires_at: z.string(),\n          id: z.string(),\n          skills: z\n            .array(\n              z.object({\n                type: z.union([z.literal('anthropic'), z.literal('custom')]),\n                skill_id: z.string(),\n                version: z.string(),\n              }),\n            )\n            .nullish(),\n        })\n        .nullish(),\n      context_management: z\n        .object({\n          applied_edits: z.array(\n            z.union([\n              z.object({\n                type: z.literal('clear_tool_uses_20250919'),\n                cleared_tool_uses: z.number(),\n                cleared_input_tokens: z.number(),\n              }),\n              z.object({\n                type: z.literal('clear_thinking_20251015'),\n                cleared_thinking_turns: z.number(),\n                cleared_input_tokens: z.number(),\n              }),\n              z.object({\n                type: z.literal('compact_20260112'),\n              }),\n            ]),\n          ),\n        })\n        .nullish(),\n    }),\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\nexport const anthropicMessagesChunkSchema = lazySchema(() =>\n  zodSchema(\n    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          role: z.string().nullish(),\n          usage: z.looseObject({\n            input_tokens: z.number(),\n            cache_creation_input_tokens: z.number().nullish(),\n            cache_read_input_tokens: z.number().nullish(),\n          }),\n          // Programmatic tool calling: content may be pre-populated for deferred tool calls\n          content: z\n            .array(\n              z.discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('tool_use'),\n                  id: z.string(),\n                  name: z.string(),\n                  input: z.unknown(),\n                  caller: z\n                    .union([\n                      z.object({\n                        type: z.literal('code_execution_20250825'),\n                        tool_id: z.string(),\n                      }),\n                      z.object({\n                        type: z.literal('code_execution_20260120'),\n                        tool_id: z.string(),\n                      }),\n                      z.object({\n                        type: z.literal('direct'),\n                      }),\n                    ])\n                    .optional(),\n                }),\n              ]),\n            )\n            .nullish(),\n          stop_reason: z.string().nullish(),\n          container: z\n            .object({\n              expires_at: z.string(),\n              id: z.string(),\n            })\n            .nullish(),\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            // Programmatic tool calling: input may be present directly for deferred tool calls\n            input: z.record(z.string(), z.unknown()).optional(),\n            // Programmatic tool calling: caller info when triggered from code execution\n            caller: z\n              .union([\n                z.object({\n                  type: z.literal('code_execution_20250825'),\n                  tool_id: z.string(),\n                }),\n                z.object({\n                  type: z.literal('code_execution_20260120'),\n                  tool_id: z.string(),\n                }),\n                z.object({\n                  type: z.literal('direct'),\n                }),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('redacted_thinking'),\n            data: z.string(),\n          }),\n          z.object({\n            type: z.literal('compaction'),\n            content: z.string().nullish(),\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            caller: z\n              .union([\n                z.object({\n                  type: z.literal('code_execution_20260120'),\n                  tool_id: z.string(),\n                }),\n                z.object({\n                  type: z.literal('direct'),\n                }),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('mcp_tool_use'),\n            id: z.string(),\n            name: z.string(),\n            input: z.unknown(),\n            server_name: z.string(),\n          }),\n          z.object({\n            type: z.literal('mcp_tool_result'),\n            tool_use_id: z.string(),\n            is_error: z.boolean(),\n            content: z.array(\n              z.union([\n                z.string(),\n                z.object({ type: z.literal('text'), text: z.string() }),\n              ]),\n            ),\n          }),\n          z.object({\n            type: z.literal('web_fetch_tool_result'),\n            tool_use_id: z.string(),\n            content: z.union([\n              z.object({\n                type: z.literal('web_fetch_result'),\n                url: z.string(),\n                retrieved_at: z.string(),\n                content: z.object({\n                  type: z.literal('document'),\n                  title: z.string().nullable(),\n                  citations: z.object({ enabled: z.boolean() }).optional(),\n                  source: z.union([\n                    z.object({\n                      type: z.literal('base64'),\n                      media_type: z.literal('application/pdf'),\n                      data: z.string(),\n                    }),\n                    z.object({\n                      type: z.literal('text'),\n                      media_type: z.literal('text/plain'),\n                      data: z.string(),\n                    }),\n                  ]),\n                }),\n              }),\n              z.object({\n                type: z.literal('web_fetch_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\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          // code execution results for code_execution_20250522 tool:\n          z.object({\n            type: z.literal('code_execution_tool_result'),\n            tool_use_id: z.string(),\n            content: z.union([\n              z.object({\n                type: z.literal('code_execution_result'),\n                stdout: z.string(),\n                stderr: z.string(),\n                return_code: z.number(),\n                content: z\n                  .array(\n                    z.object({\n                      type: z.literal('code_execution_output'),\n                      file_id: z.string(),\n                    }),\n                  )\n                  .optional()\n                  .default([]),\n              }),\n              z.object({\n                type: z.literal('encrypted_code_execution_result'),\n                encrypted_stdout: z.string(),\n                stderr: z.string(),\n                return_code: z.number(),\n                content: z\n                  .array(\n                    z.object({\n                      type: z.literal('code_execution_output'),\n                      file_id: z.string(),\n                    }),\n                  )\n                  .optional()\n                  .default([]),\n              }),\n              z.object({\n                type: z.literal('code_execution_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\n          }),\n          // bash code execution results for code_execution_20250825 tool:\n          z.object({\n            type: z.literal('bash_code_execution_tool_result'),\n            tool_use_id: z.string(),\n            content: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('bash_code_execution_result'),\n                content: z.array(\n                  z.object({\n                    type: z.literal('bash_code_execution_output'),\n                    file_id: z.string(),\n                  }),\n                ),\n                stdout: z.string(),\n                stderr: z.string(),\n                return_code: z.number(),\n              }),\n              z.object({\n                type: z.literal('bash_code_execution_tool_result_error'),\n                error_code: z.string(),\n              }),\n            ]),\n          }),\n          // text editor code execution results for code_execution_20250825 tool:\n          z.object({\n            type: z.literal('text_editor_code_execution_tool_result'),\n            tool_use_id: z.string(),\n            content: z.discriminatedUnion('type', [\n              z.object({\n                type: z.literal('text_editor_code_execution_tool_result_error'),\n                error_code: z.string(),\n              }),\n              z.object({\n                type: z.literal('text_editor_code_execution_view_result'),\n                content: z.string(),\n                file_type: z.string(),\n                num_lines: z.number().nullable(),\n                start_line: z.number().nullable(),\n                total_lines: z.number().nullable(),\n              }),\n              z.object({\n                type: z.literal('text_editor_code_execution_create_result'),\n                is_file_update: z.boolean(),\n              }),\n              z.object({\n                type: z.literal(\n                  'text_editor_code_execution_str_replace_result',\n                ),\n                lines: z.array(z.string()).nullable(),\n                new_lines: z.number().nullable(),\n                new_start: z.number().nullable(),\n                old_lines: z.number().nullable(),\n                old_start: z.number().nullable(),\n              }),\n            ]),\n          }),\n          // tool search tool results for tool_search_tool_regex_20251119 and tool_search_tool_bm25_20251119:\n          z.object({\n            type: z.literal('tool_search_tool_result'),\n            tool_use_id: z.string(),\n            content: z.union([\n              z.object({\n                type: z.literal('tool_search_tool_search_result'),\n                tool_references: z.array(\n                  z.object({\n                    type: z.literal('tool_reference'),\n                    tool_name: z.string(),\n                  }),\n                ),\n              }),\n              z.object({\n                type: z.literal('tool_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('compaction_delta'),\n            content: z.string().nullish(),\n          }),\n          z.object({\n            type: z.literal('citations_delta'),\n            citation: z.discriminatedUnion('type', [\n              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              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              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          }),\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({\n          stop_reason: z.string().nullish(),\n          stop_sequence: z.string().nullish(),\n          container: z\n            .object({\n              expires_at: z.string(),\n              id: z.string(),\n              skills: z\n                .array(\n                  z.object({\n                    type: z.union([\n                      z.literal('anthropic'),\n                      z.literal('custom'),\n                    ]),\n                    skill_id: z.string(),\n                    version: z.string(),\n                  }),\n                )\n                .nullish(),\n            })\n            .nullish(),\n        }),\n        usage: z.looseObject({\n          input_tokens: z.number().nullish(),\n          output_tokens: z.number(),\n          cache_creation_input_tokens: z.number().nullish(),\n          cache_read_input_tokens: z.number().nullish(),\n          iterations: z\n            .array(\n              z.object({\n                type: z.union([z.literal('compaction'), z.literal('message')]),\n                input_tokens: z.number(),\n                output_tokens: z.number(),\n              }),\n            )\n            .nullish(),\n        }),\n        context_management: z\n          .object({\n            applied_edits: z.array(\n              z.union([\n                z.object({\n                  type: z.literal('clear_tool_uses_20250919'),\n                  cleared_tool_uses: z.number(),\n                  cleared_input_tokens: z.number(),\n                }),\n                z.object({\n                  type: z.literal('clear_thinking_20251015'),\n                  cleared_thinking_turns: z.number(),\n                  cleared_input_tokens: z.number(),\n                }),\n                z.object({\n                  type: z.literal('compact_20260112'),\n                }),\n              ]),\n            ),\n          })\n          .nullish(),\n      }),\n      z.object({\n        type: z.literal('message_stop'),\n      }),\n      z.object({\n        type: z.literal('ping'),\n      }),\n    ]),\n  ),\n);\n\nexport const anthropicReasoningMetadataSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      signature: z.string().optional(),\n      redactedData: z.string().optional(),\n    }),\n  ),\n);\n\nexport type AnthropicReasoningMetadata = InferSchema<\n  typeof anthropicReasoningMetadataSchema\n>;\n\nexport type Citation = NonNullable<\n  (InferSchema<typeof anthropicMessagesResponseSchema>['content'][number] & {\n    type: 'text';\n  })['citations']\n>[number];\n","import { z } from 'zod/v4';\n\n// https://docs.claude.com/en/docs/about-claude/models/overview\nexport type AnthropicMessagesModelId =\n  | 'claude-3-haiku-20240307'\n  | 'claude-haiku-4-5-20251001'\n  | 'claude-haiku-4-5'\n  | 'claude-opus-4-0'\n  | 'claude-opus-4-20250514'\n  | 'claude-opus-4-1-20250805'\n  | 'claude-opus-4-1'\n  | 'claude-opus-4-5'\n  | 'claude-opus-4-5-20251101'\n  | 'claude-sonnet-4-0'\n  | 'claude-sonnet-4-20250514'\n  | 'claude-sonnet-4-5-20250929'\n  | 'claude-sonnet-4-5'\n  | 'claude-sonnet-4-6'\n  | 'claude-opus-4-6'\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 anthropicLanguageModelOptions = z.object({\n  /**\n   * Whether to send reasoning to the model.\n   *\n   * This allows you to deactivate reasoning inputs for models that do not support them.\n   */\n  sendReasoning: z.boolean().optional(),\n\n  /**\n   * Determines how structured outputs are generated.\n   *\n   * - `outputFormat`: Use the `output_config.format` parameter to specify the structured output format.\n   * - `jsonTool`: Use a special 'json' tool to specify the structured output format.\n   * - `auto`: Use 'outputFormat' when supported, otherwise use 'jsonTool' (default).\n   */\n  structuredOutputMode: z.enum(['outputFormat', 'jsonTool', 'auto']).optional(),\n\n  /**\n   * Configuration for enabling Claude's extended thinking.\n   *\n   * When enabled, responses include thinking content blocks showing Claude's thinking process before the final answer.\n   * Requires a minimum budget of 1,024 tokens and counts towards the `max_tokens` limit.\n   */\n  thinking: z\n    .discriminatedUnion('type', [\n      z.object({\n        /** for Sonnet 4.6, Opus 4.6, and newer models */\n        type: z.literal('adaptive'),\n      }),\n      z.object({\n        /** for models before Opus 4.6, except Sonnet 4.6 still supports it */\n        type: z.literal('enabled'),\n        budgetTokens: z.number().optional(),\n      }),\n      z.object({\n        type: z.literal('disabled'),\n      }),\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  /**\n   * Cache control settings for this message.\n   * See https://docs.anthropic.com/en/docs/build-with-claude/prompt-caching\n   */\n  cacheControl: z\n    .object({\n      type: z.literal('ephemeral'),\n      ttl: z.union([z.literal('5m'), z.literal('1h')]).optional(),\n    })\n    .optional(),\n\n  /**\n   * Metadata to include with the request.\n   *\n   * See https://platform.claude.com/docs/en/api/messages/create for details.\n   */\n  metadata: z\n    .object({\n      /**\n       * An external identifier for the user associated with the request.\n       *\n       * Should be a UUID, hash value, or other opaque identifier.\n       * Must not contain PII (name, email, phone number, etc.).\n       */\n      userId: z.string().optional(),\n    })\n    .optional(),\n\n  /**\n   * MCP servers to be utilized in this request.\n   */\n  mcpServers: z\n    .array(\n      z.object({\n        type: z.literal('url'),\n        name: z.string(),\n        url: z.string(),\n        authorizationToken: z.string().nullish(),\n        toolConfiguration: z\n          .object({\n            enabled: z.boolean().nullish(),\n            allowedTools: z.array(z.string()).nullish(),\n          })\n          .nullish(),\n      }),\n    )\n    .optional(),\n\n  /**\n   * Agent Skills configuration. Skills enable Claude to perform specialized tasks\n   * like document processing (PPTX, DOCX, PDF, XLSX) and data analysis.\n   * Requires code execution tool to be enabled.\n   */\n  container: z\n    .object({\n      id: z.string().optional(),\n      skills: z\n        .array(\n          z.object({\n            type: z.union([z.literal('anthropic'), z.literal('custom')]),\n            skillId: z.string(),\n            version: z.string().optional(),\n          }),\n        )\n        .optional(),\n    })\n    .optional(),\n\n  /**\n   * Whether to enable tool streaming (and structured output streaming).\n   *\n   * When set to false, the model will return all tool calls and results\n   * at once after a delay.\n   *\n   * @default true\n   */\n  toolStreaming: z.boolean().optional(),\n\n  /**\n   * @default 'high'\n   */\n  effort: z.enum(['low', 'medium', 'high', 'max']).optional(),\n\n  /**\n   * Enable fast mode for faster inference (2.5x faster output token speeds).\n   * Only supported with claude-opus-4-6.\n   */\n  speed: z.enum(['fast', 'standard']).optional(),\n\n  /**\n   * Controls where model inference runs for this request.\n   *\n   * - `\"global\"`: Inference may run in any available geography (default).\n   * - `\"us\"`: Inference runs only in US-based infrastructure.\n   *\n   * See https://platform.claude.com/docs/en/build-with-claude/data-residency\n   */\n  inferenceGeo: z.enum(['us', 'global']).optional(),\n\n  /**\n   * A set of beta features to enable.\n   * Allow a provider to receive the full `betas` set if it needs it.\n   */\n  anthropicBeta: z.array(z.string()).optional(),\n\n  contextManagement: z\n    .object({\n      edits: z.array(\n        z.discriminatedUnion('type', [\n          z.object({\n            type: z.literal('clear_tool_uses_20250919'),\n            trigger: z\n              .discriminatedUnion('type', [\n                z.object({\n                  type: z.literal('input_tokens'),\n                  value: z.number(),\n                }),\n                z.object({\n                  type: z.literal('tool_uses'),\n                  value: z.number(),\n                }),\n              ])\n              .optional(),\n            keep: z\n              .object({\n                type: z.literal('tool_uses'),\n                value: z.number(),\n              })\n              .optional(),\n            clearAtLeast: z\n              .object({\n                type: z.literal('input_tokens'),\n                value: z.number(),\n              })\n              .optional(),\n            clearToolInputs: z.boolean().optional(),\n            excludeTools: z.array(z.string()).optional(),\n          }),\n          z.object({\n            type: z.literal('clear_thinking_20251015'),\n            keep: z\n              .union([\n                z.literal('all'),\n                z.object({\n                  type: z.literal('thinking_turns'),\n                  value: z.number(),\n                }),\n              ])\n              .optional(),\n          }),\n          z.object({\n            type: z.literal('compact_20260112'),\n            trigger: z\n              .object({\n                type: z.literal('input_tokens'),\n                value: z.number(),\n              })\n              .optional(),\n            pauseAfterCompaction: z.boolean().optional(),\n            instructions: z.string().optional(),\n          }),\n        ]),\n      ),\n    })\n    .optional(),\n});\n\nexport type AnthropicLanguageModelOptions = z.infer<\n  typeof anthropicLanguageModelOptions\n>;\n","import { SharedV3Warning, SharedV3ProviderMetadata } from '@ai-sdk/provider';\nimport { AnthropicCacheControl } from './anthropic-messages-api';\n\n// Anthropic allows a maximum of 4 cache breakpoints per request\nconst MAX_CACHE_BREAKPOINTS = 4;\n\n// Helper function to extract cache_control from provider metadata\n// Allows both cacheControl and cache_control for flexibility\nfunction getCacheControl(\n  providerMetadata: SharedV3ProviderMetadata | 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\nexport class CacheControlValidator {\n  private breakpointCount = 0;\n  private warnings: SharedV3Warning[] = [];\n\n  getCacheControl(\n    providerMetadata: SharedV3ProviderMetadata | undefined,\n    context: { type: string; canCache: boolean },\n  ): AnthropicCacheControl | undefined {\n    const cacheControlValue = getCacheControl(providerMetadata);\n\n    if (!cacheControlValue) {\n      return undefined;\n    }\n\n    // Validate that cache_control is allowed in this context\n    if (!context.canCache) {\n      this.warnings.push({\n        type: 'unsupported',\n        feature: 'cache_control on non-cacheable context',\n        details: `cache_control cannot be set on ${context.type}. It will be ignored.`,\n      });\n      return undefined;\n    }\n\n    // Validate cache breakpoint limit\n    this.breakpointCount++;\n    if (this.breakpointCount > MAX_CACHE_BREAKPOINTS) {\n      this.warnings.push({\n        type: 'unsupported',\n        feature: 'cacheControl breakpoint limit',\n        details: `Maximum ${MAX_CACHE_BREAKPOINTS} cache breakpoints exceeded (found ${this.breakpointCount}). This breakpoint will be ignored.`,\n      });\n      return undefined;\n    }\n\n    return cacheControlValue;\n  }\n\n  getWarnings(): SharedV3Warning[] {\n    return this.warnings;\n  }\n}\n","import { createProviderToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\n\nexport const textEditor_20250728ArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      maxCharacters: z.number().optional(),\n    }),\n  ),\n);\n\nconst textEditor_20250728InputSchema = lazySchema(() =>\n  zodSchema(\n    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      insert_text: z.string().optional(),\n      old_str: z.string().optional(),\n      view_range: z.array(z.number().int()).optional(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactory<\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).\n     */\n    new_str?: string;\n\n    /**\n     * Required parameter of `insert` command containing the text to insert.\n     */\n    insert_text?: 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     * Optional parameter to control truncation when viewing large files. Only compatible with text_editor_20250728 and later versions.\n     */\n    maxCharacters?: number;\n  }\n>({\n  id: 'anthropic.text_editor_20250728',\n  inputSchema: textEditor_20250728InputSchema,\n});\n\nexport const textEditor_20250728 = (\n  args: Parameters<typeof factory>[0] = {}, // default\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearch_20260209ArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      maxUses: z.number().optional(),\n      allowedDomains: z.array(z.string()).optional(),\n      blockedDomains: z.array(z.string()).optional(),\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  ),\n);\n\nexport const webSearch_20260209OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.array(\n      z.object({\n        url: z.string(),\n        title: z.string().nullable(),\n        pageAge: z.string().nullable(),\n        encryptedContent: z.string(),\n        type: z.literal('web_search_result'),\n      }),\n    ),\n  ),\n);\n\nconst webSearch_20260209InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      query: z.string(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The search query to execute.\n     */\n    query: string;\n  },\n  Array<{\n    type: 'web_search_result';\n\n    /**\n     * The URL of the source page.\n     */\n    url: string;\n\n    /**\n     * The title of the source page.\n     */\n    title: string | null;\n\n    /**\n     * When the site was last updated\n     */\n    pageAge: string | null;\n\n    /**\n     * Encrypted content that must be passed back in multi-turn conversations for citations\n     */\n    encryptedContent: 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      /**\n       * The type of location (must be approximate)\n       */\n      type: 'approximate';\n\n      /**\n       * The city name\n       */\n      city?: string;\n\n      /**\n       * The region or state\n       */\n      region?: string;\n\n      /**\n       * The country\n       */\n      country?: string;\n\n      /**\n       * The IANA timezone ID.\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'anthropic.web_search_20260209',\n  inputSchema: webSearch_20260209InputSchema,\n  outputSchema: webSearch_20260209OutputSchema,\n  supportsDeferredResults: true,\n});\n\nexport const webSearch_20260209 = (\n  args: Parameters<typeof factory>[0] = {}, // default\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearch_20250305ArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      maxUses: z.number().optional(),\n      allowedDomains: z.array(z.string()).optional(),\n      blockedDomains: z.array(z.string()).optional(),\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  ),\n);\n\nexport const webSearch_20250305OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.array(\n      z.object({\n        url: z.string(),\n        title: z.string().nullable(),\n        pageAge: z.string().nullable(),\n        encryptedContent: z.string(),\n        type: z.literal('web_search_result'),\n      }),\n    ),\n  ),\n);\n\nconst webSearch_20250305InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      query: z.string(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The search query to execute.\n     */\n    query: string;\n  },\n  Array<{\n    type: 'web_search_result';\n\n    /**\n     * The URL of the source page.\n     */\n    url: string;\n\n    /**\n     * The title of the source page.\n     */\n    title: string | null;\n\n    /**\n     * When the site was last updated\n     */\n    pageAge: string | null;\n\n    /**\n     * Encrypted content that must be passed back in multi-turn conversations for citations\n     */\n    encryptedContent: 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      /**\n       * The type of location (must be approximate)\n       */\n      type: 'approximate';\n\n      /**\n       * The city name\n       */\n      city?: string;\n\n      /**\n       * The region or state\n       */\n      region?: string;\n\n      /**\n       * The country\n       */\n      country?: string;\n\n      /**\n       * The IANA timezone ID.\n       */\n      timezone?: string;\n    };\n  }\n>({\n  id: 'anthropic.web_search_20250305',\n  inputSchema: webSearch_20250305InputSchema,\n  outputSchema: webSearch_20250305OutputSchema,\n  supportsDeferredResults: true,\n});\n\nexport const webSearch_20250305 = (\n  args: Parameters<typeof factory>[0] = {}, // default\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webFetch_20260209ArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      maxUses: z.number().optional(),\n      allowedDomains: z.array(z.string()).optional(),\n      blockedDomains: z.array(z.string()).optional(),\n      citations: z.object({ enabled: z.boolean() }).optional(),\n      maxContentTokens: z.number().optional(),\n    }),\n  ),\n);\n\nexport const webFetch_20260209OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      type: z.literal('web_fetch_result'),\n      url: z.string(),\n      content: z.object({\n        type: z.literal('document'),\n        title: z.string().nullable(),\n        citations: z.object({ enabled: z.boolean() }).optional(),\n        source: z.union([\n          z.object({\n            type: z.literal('base64'),\n            mediaType: z.literal('application/pdf'),\n            data: z.string(),\n          }),\n          z.object({\n            type: z.literal('text'),\n            mediaType: z.literal('text/plain'),\n            data: z.string(),\n          }),\n        ]),\n      }),\n      retrievedAt: z.string().nullable(),\n    }),\n  ),\n);\n\nconst webFetch_20260209InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      url: z.string(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The URL to fetch.\n     */\n    url: string;\n  },\n  {\n    type: 'web_fetch_result';\n\n    /**\n     * Fetched content URL\n     */\n    url: string;\n\n    /**\n     * Fetched content.\n     */\n    content: {\n      type: 'document';\n\n      /**\n       * Title of the document\n       */\n      title: string | null;\n\n      /**\n       * Citation configuration for the document\n       */\n      citations?: { enabled: boolean };\n\n      source:\n        | {\n            type: 'base64';\n            mediaType: 'application/pdf';\n            data: string;\n          }\n        | {\n            type: 'text';\n            mediaType: 'text/plain';\n            data: string;\n          };\n    };\n\n    /**\n     * ISO 8601 timestamp when the content was retrieved\n     */\n    retrievedAt: string | null;\n  },\n  {\n    /**\n     * The maxUses parameter limits the number of web fetches performed\n     */\n    maxUses?: number;\n\n    /**\n     * Only fetch from these domains\n     */\n    allowedDomains?: string[];\n\n    /**\n     * Never fetch from these domains\n     */\n    blockedDomains?: string[];\n\n    /**\n     * Unlike web search where citations are always enabled, citations are optional for\n     * web fetch. Set \"citations\": {\"enabled\": true} to enable Claude to cite specific passages\n     * from fetched documents.\n     */\n    citations?: {\n      enabled: boolean;\n    };\n\n    /**\n     * The maxContentTokens parameter limits the amount of content that will be included in the context.\n     */\n    maxContentTokens?: number;\n  }\n>({\n  id: 'anthropic.web_fetch_20260209',\n  inputSchema: webFetch_20260209InputSchema,\n  outputSchema: webFetch_20260209OutputSchema,\n  supportsDeferredResults: true,\n});\n\nexport const webFetch_20260209 = (\n  args: Parameters<typeof factory>[0] = {}, // default\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webFetch_20250910ArgsSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      maxUses: z.number().optional(),\n      allowedDomains: z.array(z.string()).optional(),\n      blockedDomains: z.array(z.string()).optional(),\n      citations: z.object({ enabled: z.boolean() }).optional(),\n      maxContentTokens: z.number().optional(),\n    }),\n  ),\n);\n\nexport const webFetch_20250910OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      type: z.literal('web_fetch_result'),\n      url: z.string(),\n      content: z.object({\n        type: z.literal('document'),\n        title: z.string().nullable(),\n        citations: z.object({ enabled: z.boolean() }).optional(),\n        source: z.union([\n          z.object({\n            type: z.literal('base64'),\n            mediaType: z.literal('application/pdf'),\n            data: z.string(),\n          }),\n          z.object({\n            type: z.literal('text'),\n            mediaType: z.literal('text/plain'),\n            data: z.string(),\n          }),\n        ]),\n      }),\n      retrievedAt: z.string().nullable(),\n    }),\n  ),\n);\n\nconst webFetch_20250910InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      url: z.string(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The URL to fetch.\n     */\n    url: string;\n  },\n  {\n    type: 'web_fetch_result';\n\n    /**\n     * Fetched content URL\n     */\n    url: string;\n\n    /**\n     * Fetched content.\n     */\n    content: {\n      type: 'document';\n\n      /**\n       * Title of the document\n       */\n      title: string | null;\n\n      /**\n       * Citation configuration for the document\n       */\n      citations?: { enabled: boolean };\n\n      source:\n        | {\n            type: 'base64';\n            mediaType: 'application/pdf';\n            data: string;\n          }\n        | {\n            type: 'text';\n            mediaType: 'text/plain';\n            data: string;\n          };\n    };\n\n    /**\n     * ISO 8601 timestamp when the content was retrieved\n     */\n    retrievedAt: string | null;\n  },\n  {\n    /**\n     * The maxUses parameter limits the number of web fetches performed\n     */\n    maxUses?: number;\n\n    /**\n     * Only fetch from these domains\n     */\n    allowedDomains?: string[];\n\n    /**\n     * Never fetch from these domains\n     */\n    blockedDomains?: string[];\n\n    /**\n     * Unlike web search where citations are always enabled, citations are optional for\n     * web fetch. Set \"citations\": {\"enabled\": true} to enable Claude to cite specific passages\n     * from fetched documents.\n     */\n    citations?: {\n      enabled: boolean;\n    };\n\n    /**\n     * The maxContentTokens parameter limits the amount of content that will be included in the context.\n     */\n    maxContentTokens?: number;\n  }\n>({\n  id: 'anthropic.web_fetch_20250910',\n  inputSchema: webFetch_20250910InputSchema,\n  outputSchema: webFetch_20250910OutputSchema,\n  supportsDeferredResults: true,\n});\n\nexport const webFetch_20250910 = (\n  args: Parameters<typeof factory>[0] = {}, // default\n) => {\n  return factory(args);\n};\n","import {\n  LanguageModelV3CallOptions,\n  SharedV3Warning,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { AnthropicTool, AnthropicToolChoice } from './anthropic-messages-api';\nimport { CacheControlValidator } from './get-cache-control';\nimport { textEditor_20250728ArgsSchema } from './tool/text-editor_20250728';\nimport { webSearch_20260209ArgsSchema } from './tool/web-search_20260209';\nimport { webSearch_20250305ArgsSchema } from './tool/web-search_20250305';\nimport { webFetch_20260209ArgsSchema } from './tool/web-fetch-20260209';\nimport { webFetch_20250910ArgsSchema } from './tool/web-fetch-20250910';\nimport { validateTypes } from '@ai-sdk/provider-utils';\n\nexport interface AnthropicToolOptions {\n  deferLoading?: boolean;\n  allowedCallers?: Array<\n    'direct' | 'code_execution_20250825' | 'code_execution_20260120'\n  >;\n  eagerInputStreaming?: boolean;\n}\n\nexport async function prepareTools({\n  tools,\n  toolChoice,\n  disableParallelToolUse,\n  cacheControlValidator,\n  supportsStructuredOutput,\n  supportsStrictTools,\n}: {\n  tools: LanguageModelV3CallOptions['tools'];\n  toolChoice: LanguageModelV3CallOptions['toolChoice'] | undefined;\n  disableParallelToolUse?: boolean;\n  cacheControlValidator?: CacheControlValidator;\n\n  /**\n   * Whether the model supports native structured output response format.\n   */\n  supportsStructuredOutput: boolean;\n\n  /**\n   * Whether the model supports strict mode on tool definitions.\n   */\n  supportsStrictTools: boolean;\n}): Promise<{\n  tools: Array<AnthropicTool> | undefined;\n  toolChoice: AnthropicToolChoice | undefined;\n  toolWarnings: SharedV3Warning[];\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: SharedV3Warning[] = [];\n  const betas = new Set<string>();\n  const validator = cacheControlValidator || new CacheControlValidator();\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    switch (tool.type) {\n      case 'function': {\n        const cacheControl = validator.getCacheControl(tool.providerOptions, {\n          type: 'tool definition',\n          canCache: true,\n        });\n\n        // Read Anthropic-specific provider options\n        const anthropicOptions = tool.providerOptions?.anthropic as\n          | AnthropicToolOptions\n          | undefined;\n        // eager_input_streaming is only supported on custom (function) tools\n        const eagerInputStreaming = anthropicOptions?.eagerInputStreaming;\n        const deferLoading = anthropicOptions?.deferLoading;\n        const allowedCallers = anthropicOptions?.allowedCallers;\n\n        if (!supportsStrictTools && tool.strict != null) {\n          toolWarnings.push({\n            type: 'unsupported',\n            feature: 'strict',\n            details: `Tool '${tool.name}' has strict: ${tool.strict}, but strict mode is not supported by this provider. The strict property will be ignored.`,\n          });\n        }\n\n        anthropicTools.push({\n          name: tool.name,\n          description: tool.description,\n          input_schema: tool.inputSchema,\n          cache_control: cacheControl,\n          ...(eagerInputStreaming ? { eager_input_streaming: true } : {}),\n          ...(supportsStrictTools === true && tool.strict != null\n            ? { strict: tool.strict }\n            : {}),\n          ...(deferLoading != null ? { defer_loading: deferLoading } : {}),\n          ...(allowedCallers != null\n            ? { allowed_callers: allowedCallers }\n            : {}),\n          ...(tool.inputExamples != null\n            ? {\n                input_examples: tool.inputExamples.map(\n                  example => example.input,\n                ),\n              }\n            : {}),\n        });\n\n        if (supportsStructuredOutput === true) {\n          betas.add('structured-outputs-2025-11-13');\n        }\n\n        if (tool.inputExamples != null || allowedCallers != null) {\n          betas.add('advanced-tool-use-2025-11-20');\n        }\n\n        break;\n      }\n\n      case 'provider': {\n        // Note: Provider-defined tools don't currently support providerOptions in the SDK,\n        // so cache_control cannot be set on them. The Anthropic API supports caching all tools,\n        // but the SDK would need to be updated to expose providerOptions on provider-defined tools.\n        switch (tool.id) {\n          case 'anthropic.code_execution_20250522': {\n            betas.add('code-execution-2025-05-22');\n            anthropicTools.push({\n              type: 'code_execution_20250522',\n              name: 'code_execution',\n              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.code_execution_20250825': {\n            betas.add('code-execution-2025-08-25');\n            anthropicTools.push({\n              type: 'code_execution_20250825',\n              name: 'code_execution',\n            });\n            break;\n          }\n          case 'anthropic.code_execution_20260120': {\n            anthropicTools.push({\n              type: 'code_execution_20260120',\n              name: 'code_execution',\n            });\n            break;\n          }\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              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.computer_20251124': {\n            betas.add('computer-use-2025-11-24');\n            anthropicTools.push({\n              name: 'computer',\n              type: 'computer_20251124',\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              enable_zoom: tool.args.enableZoom as boolean,\n              cache_control: undefined,\n            });\n            break;\n          }\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              cache_control: undefined,\n            });\n            break;\n          }\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              cache_control: undefined,\n            });\n            break;\n          }\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              cache_control: undefined,\n            });\n            break;\n          }\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              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.text_editor_20250728': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: textEditor_20250728ArgsSchema,\n            });\n            anthropicTools.push({\n              name: 'str_replace_based_edit_tool',\n              type: 'text_editor_20250728',\n              max_characters: args.maxCharacters,\n              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.bash_20250124': {\n            betas.add('computer-use-2025-01-24');\n            anthropicTools.push({\n              name: 'bash',\n              type: 'bash_20250124',\n              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.bash_20241022': {\n            betas.add('computer-use-2024-10-22');\n            anthropicTools.push({\n              name: 'bash',\n              type: 'bash_20241022',\n              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.memory_20250818': {\n            betas.add('context-management-2025-06-27');\n            anthropicTools.push({\n              name: 'memory',\n              type: 'memory_20250818',\n            });\n            break;\n          }\n          case 'anthropic.web_fetch_20250910': {\n            betas.add('web-fetch-2025-09-10');\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webFetch_20250910ArgsSchema,\n            });\n            anthropicTools.push({\n              type: 'web_fetch_20250910',\n              name: 'web_fetch',\n              max_uses: args.maxUses,\n              allowed_domains: args.allowedDomains,\n              blocked_domains: args.blockedDomains,\n              citations: args.citations,\n              max_content_tokens: args.maxContentTokens,\n              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.web_fetch_20260209': {\n            betas.add('code-execution-web-tools-2026-02-09');\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webFetch_20260209ArgsSchema,\n            });\n            anthropicTools.push({\n              type: 'web_fetch_20260209',\n              name: 'web_fetch',\n              max_uses: args.maxUses,\n              allowed_domains: args.allowedDomains,\n              blocked_domains: args.blockedDomains,\n              citations: args.citations,\n              max_content_tokens: args.maxContentTokens,\n              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.web_search_20250305': {\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearch_20250305ArgsSchema,\n            });\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              cache_control: undefined,\n            });\n            break;\n          }\n          case 'anthropic.web_search_20260209': {\n            betas.add('code-execution-web-tools-2026-02-09');\n            const args = await validateTypes({\n              value: tool.args,\n              schema: webSearch_20260209ArgsSchema,\n            });\n            anthropicTools.push({\n              type: 'web_search_20260209',\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              cache_control: undefined,\n            });\n            break;\n          }\n\n          case 'anthropic.tool_search_regex_20251119': {\n            anthropicTools.push({\n              type: 'tool_search_tool_regex_20251119',\n              name: 'tool_search_tool_regex',\n            });\n            break;\n          }\n\n          case 'anthropic.tool_search_bm25_20251119': {\n            anthropicTools.push({\n              type: 'tool_search_tool_bm25_20251119',\n              name: 'tool_search_tool_bm25',\n            });\n            break;\n          }\n\n          default: {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n            });\n            break;\n          }\n        }\n        break;\n      }\n\n      default: {\n        toolWarnings.push({\n          type: 'unsupported',\n          feature: `tool ${tool}`,\n        });\n        break;\n      }\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 { JSONObject, LanguageModelV3Usage } from '@ai-sdk/provider';\n\n/**\n * Represents a single iteration in the usage breakdown.\n * When compaction occurs, the API returns an iterations array showing\n * usage for each sampling iteration (compaction + message).\n */\nexport type AnthropicUsageIteration = {\n  type: 'compaction' | 'message';\n  input_tokens: number;\n  output_tokens: number;\n};\n\nexport type AnthropicMessagesUsage = {\n  input_tokens: number;\n  output_tokens: number;\n  cache_creation_input_tokens?: number | null;\n  cache_read_input_tokens?: number | null;\n  /**\n   * When compaction is triggered, this array contains usage for each\n   * sampling iteration. The top-level input_tokens and output_tokens\n   * do NOT include compaction iteration usage - to get total tokens\n   * consumed and billed, sum across all entries in this array.\n   */\n  iterations?: AnthropicUsageIteration[] | null;\n};\n\nexport function convertAnthropicMessagesUsage({\n  usage,\n  rawUsage,\n}: {\n  usage: AnthropicMessagesUsage;\n  rawUsage?: JSONObject;\n}): LanguageModelV3Usage {\n  const cacheCreationTokens = usage.cache_creation_input_tokens ?? 0;\n  const cacheReadTokens = usage.cache_read_input_tokens ?? 0;\n\n  // When iterations is present (compaction occurred), sum across all iterations\n  // to get the true total tokens consumed/billed. The top-level input_tokens\n  // and output_tokens exclude compaction iteration usage.\n  let inputTokens: number;\n  let outputTokens: number;\n\n  if (usage.iterations && usage.iterations.length > 0) {\n    const totals = usage.iterations.reduce(\n      (acc, iter) => ({\n        input: acc.input + iter.input_tokens,\n        output: acc.output + iter.output_tokens,\n      }),\n      { input: 0, output: 0 },\n    );\n    inputTokens = totals.input;\n    outputTokens = totals.output;\n  } else {\n    inputTokens = usage.input_tokens;\n    outputTokens = usage.output_tokens;\n  }\n\n  return {\n    inputTokens: {\n      total: inputTokens + cacheCreationTokens + cacheReadTokens,\n      noCache: inputTokens,\n      cacheRead: cacheReadTokens,\n      cacheWrite: cacheCreationTokens,\n    },\n    outputTokens: {\n      total: outputTokens,\n      text: undefined,\n      reasoning: undefined,\n    },\n    raw: rawUsage ?? usage,\n  };\n}\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeExecution_20250522OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      type: z.literal('code_execution_result'),\n      stdout: z.string(),\n      stderr: z.string(),\n      return_code: z.number(),\n      content: z\n        .array(\n          z.object({\n            type: z.literal('code_execution_output'),\n            file_id: z.string(),\n          }),\n        )\n        .optional()\n        .default([]),\n    }),\n  ),\n);\n\nconst codeExecution_20250522InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      code: z.string(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * The Python code to execute.\n     */\n    code: string;\n  },\n  {\n    type: 'code_execution_result';\n    stdout: string;\n    stderr: string;\n    return_code: number;\n    content: Array<{ type: 'code_execution_output'; file_id: string }>;\n  },\n  {}\n>({\n  id: 'anthropic.code_execution_20250522',\n  inputSchema: codeExecution_20250522InputSchema,\n  outputSchema: codeExecution_20250522OutputSchema,\n});\n\nexport const codeExecution_20250522 = (\n  args: Parameters<typeof factory>[0] = {},\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeExecution_20250825OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.discriminatedUnion('type', [\n      z.object({\n        type: z.literal('code_execution_result'),\n        stdout: z.string(),\n        stderr: z.string(),\n        return_code: z.number(),\n        content: z\n          .array(\n            z.object({\n              type: z.literal('code_execution_output'),\n              file_id: z.string(),\n            }),\n          )\n          .optional()\n          .default([]),\n      }),\n      z.object({\n        type: z.literal('bash_code_execution_result'),\n        content: z.array(\n          z.object({\n            type: z.literal('bash_code_execution_output'),\n            file_id: z.string(),\n          }),\n        ),\n        stdout: z.string(),\n        stderr: z.string(),\n        return_code: z.number(),\n      }),\n      z.object({\n        type: z.literal('bash_code_execution_tool_result_error'),\n        error_code: z.string(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_tool_result_error'),\n        error_code: z.string(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_view_result'),\n        content: z.string(),\n        file_type: z.string(),\n        num_lines: z.number().nullable(),\n        start_line: z.number().nullable(),\n        total_lines: z.number().nullable(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_create_result'),\n        is_file_update: z.boolean(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_str_replace_result'),\n        lines: z.array(z.string()).nullable(),\n        new_lines: z.number().nullable(),\n        new_start: z.number().nullable(),\n        old_lines: z.number().nullable(),\n        old_start: z.number().nullable(),\n      }),\n    ]),\n  ),\n);\n\nexport const codeExecution_20250825InputSchema = lazySchema(() =>\n  zodSchema(\n    z.discriminatedUnion('type', [\n      // Programmatic tool calling format (mapped from { code } by AI SDK)\n      z.object({\n        type: z.literal('programmatic-tool-call'),\n        code: z.string(),\n      }),\n      z.object({\n        type: z.literal('bash_code_execution'),\n        command: z.string(),\n      }),\n      z.discriminatedUnion('command', [\n        z.object({\n          type: z.literal('text_editor_code_execution'),\n          command: z.literal('view'),\n          path: z.string(),\n        }),\n        z.object({\n          type: z.literal('text_editor_code_execution'),\n          command: z.literal('create'),\n          path: z.string(),\n          file_text: z.string().nullish(),\n        }),\n        z.object({\n          type: z.literal('text_editor_code_execution'),\n          command: z.literal('str_replace'),\n          path: z.string(),\n          old_str: z.string(),\n          new_str: z.string(),\n        }),\n      ]),\n    ]),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  | {\n      type: 'programmatic-tool-call';\n      /**\n       * Programmatic tool calling: Python code to execute when code_execution\n       * is used with allowedCallers to trigger client-executed tools.\n       */\n      code: string;\n    }\n  | {\n      type: 'bash_code_execution';\n\n      /**\n       * Shell command to execute.\n       */\n      command: string;\n    }\n  | {\n      type: 'text_editor_code_execution';\n      command: 'view';\n\n      /**\n       * The path to the file to view.\n       */\n      path: string;\n    }\n  | {\n      type: 'text_editor_code_execution';\n      command: 'create';\n\n      /**\n       * The path to the file to edit.\n       */\n      path: string;\n\n      /**\n       * The text of the file to edit.\n       */\n      file_text?: string | null;\n    }\n  | {\n      type: 'text_editor_code_execution';\n      command: 'str_replace';\n\n      /**\n       * The path to the file to edit.\n       */\n      path: string;\n\n      /**\n       * The string to replace.\n       */\n      old_str: string;\n\n      /**\n       * The new string to replace the old string with.\n       */\n      new_str: string;\n    },\n  | {\n      /**\n       * Programmatic tool calling result: returned when code_execution runs code\n       * that calls client-executed tools via allowedCallers.\n       */\n      type: 'code_execution_result';\n\n      /**\n       * Output from successful execution\n       */\n      stdout: string;\n\n      /**\n       * Error messages if execution fails\n       */\n      stderr: string;\n\n      /**\n       * 0 for success, non-zero for failure\n       */\n      return_code: number;\n\n      /**\n       * Output file Id list\n       */\n      content: Array<{ type: 'code_execution_output'; file_id: string }>;\n    }\n  | {\n      type: 'bash_code_execution_result';\n\n      /**\n       * Output file Id list\n       */\n      content: Array<{\n        type: 'bash_code_execution_output';\n        file_id: string;\n      }>;\n\n      /**\n       * Output from successful execution\n       */\n      stdout: string;\n\n      /**\n       * Error messages if execution fails\n       */\n      stderr: string;\n\n      /**\n       * 0 for success, non-zero for failure\n       */\n      return_code: number;\n    }\n  | {\n      type: 'bash_code_execution_tool_result_error';\n\n      /**\n       * Available options: invalid_tool_input, unavailable, too_many_requests,\n       * execution_time_exceeded, output_file_too_large.\n       */\n      error_code: string;\n    }\n  | {\n      type: 'text_editor_code_execution_tool_result_error';\n\n      /**\n       * Available options: invalid_tool_input, unavailable, too_many_requests,\n       * execution_time_exceeded, file_not_found.\n       */\n      error_code: string;\n    }\n  | {\n      type: 'text_editor_code_execution_view_result';\n\n      content: string;\n\n      /**\n       * The type of the file. Available options: text, image, pdf.\n       */\n      file_type: string;\n\n      num_lines: number | null;\n      start_line: number | null;\n      total_lines: number | null;\n    }\n  | {\n      type: 'text_editor_code_execution_create_result';\n\n      is_file_update: boolean;\n    }\n  | {\n      type: 'text_editor_code_execution_str_replace_result';\n\n      lines: string[] | null;\n      new_lines: number | null;\n      new_start: number | null;\n      old_lines: number | null;\n      old_start: number | null;\n    },\n  {\n    // no arguments\n  }\n>({\n  id: 'anthropic.code_execution_20250825',\n  inputSchema: codeExecution_20250825InputSchema,\n  outputSchema: codeExecution_20250825OutputSchema,\n  // Programmatic tool calling: tool results may be deferred to a later turn\n  // when code execution triggers a client-executed tool that needs to be\n  // resolved before the code execution result can be returned.\n  supportsDeferredResults: true,\n});\n\nexport const codeExecution_20250825 = (\n  args: Parameters<typeof factory>[0] = {},\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const codeExecution_20260120OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.discriminatedUnion('type', [\n      z.object({\n        type: z.literal('code_execution_result'),\n        stdout: z.string(),\n        stderr: z.string(),\n        return_code: z.number(),\n        content: z\n          .array(\n            z.object({\n              type: z.literal('code_execution_output'),\n              file_id: z.string(),\n            }),\n          )\n          .optional()\n          .default([]),\n      }),\n      z.object({\n        type: z.literal('encrypted_code_execution_result'),\n        encrypted_stdout: z.string(),\n        stderr: z.string(),\n        return_code: z.number(),\n        content: z\n          .array(\n            z.object({\n              type: z.literal('code_execution_output'),\n              file_id: z.string(),\n            }),\n          )\n          .optional()\n          .default([]),\n      }),\n      z.object({\n        type: z.literal('bash_code_execution_result'),\n        content: z.array(\n          z.object({\n            type: z.literal('bash_code_execution_output'),\n            file_id: z.string(),\n          }),\n        ),\n        stdout: z.string(),\n        stderr: z.string(),\n        return_code: z.number(),\n      }),\n      z.object({\n        type: z.literal('bash_code_execution_tool_result_error'),\n        error_code: z.string(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_tool_result_error'),\n        error_code: z.string(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_view_result'),\n        content: z.string(),\n        file_type: z.string(),\n        num_lines: z.number().nullable(),\n        start_line: z.number().nullable(),\n        total_lines: z.number().nullable(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_create_result'),\n        is_file_update: z.boolean(),\n      }),\n      z.object({\n        type: z.literal('text_editor_code_execution_str_replace_result'),\n        lines: z.array(z.string()).nullable(),\n        new_lines: z.number().nullable(),\n        new_start: z.number().nullable(),\n        old_lines: z.number().nullable(),\n        old_start: z.number().nullable(),\n      }),\n    ]),\n  ),\n);\n\nexport const codeExecution_20260120InputSchema = lazySchema(() =>\n  zodSchema(\n    z.discriminatedUnion('type', [\n      z.object({\n        type: z.literal('programmatic-tool-call'),\n        code: z.string(),\n      }),\n      z.object({\n        type: z.literal('bash_code_execution'),\n        command: z.string(),\n      }),\n      z.discriminatedUnion('command', [\n        z.object({\n          type: z.literal('text_editor_code_execution'),\n          command: z.literal('view'),\n          path: z.string(),\n        }),\n        z.object({\n          type: z.literal('text_editor_code_execution'),\n          command: z.literal('create'),\n          path: z.string(),\n          file_text: z.string().nullish(),\n        }),\n        z.object({\n          type: z.literal('text_editor_code_execution'),\n          command: z.literal('str_replace'),\n          path: z.string(),\n          old_str: z.string(),\n          new_str: z.string(),\n        }),\n      ]),\n    ]),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  | {\n      type: 'programmatic-tool-call';\n      /**\n       * Programmatic tool calling: Python code to execute when code_execution\n       * is used with allowedCallers to trigger client-executed tools.\n       */\n      code: string;\n    }\n  | {\n      type: 'bash_code_execution';\n\n      /**\n       * Shell command to execute.\n       */\n      command: string;\n    }\n  | {\n      type: 'text_editor_code_execution';\n      command: 'view';\n\n      /**\n       * The path to the file to view.\n       */\n      path: string;\n    }\n  | {\n      type: 'text_editor_code_execution';\n      command: 'create';\n\n      /**\n       * The path to the file to edit.\n       */\n      path: string;\n\n      /**\n       * The text of the file to edit.\n       */\n      file_text?: string | null;\n    }\n  | {\n      type: 'text_editor_code_execution';\n      command: 'str_replace';\n\n      /**\n       * The path to the file to edit.\n       */\n      path: string;\n\n      /**\n       * The string to replace.\n       */\n      old_str: string;\n\n      /**\n       * The new string to replace the old string with.\n       */\n      new_str: string;\n    },\n  | {\n      /**\n       * Programmatic tool calling result: returned when code_execution runs code\n       * that calls client-executed tools via allowedCallers.\n       */\n      type: 'code_execution_result';\n\n      /**\n       * Output from successful execution\n       */\n      stdout: string;\n\n      /**\n       * Error messages if execution fails\n       */\n      stderr: string;\n\n      /**\n       * 0 for success, non-zero for failure\n       */\n      return_code: number;\n\n      /**\n       * Output file Id list\n       */\n      content: Array<{ type: 'code_execution_output'; file_id: string }>;\n    }\n  | {\n      type: 'encrypted_code_execution_result';\n\n      /**\n       * Encrypted output from successful execution\n       */\n      encrypted_stdout: string;\n\n      /**\n       * Error messages if execution fails\n       */\n      stderr: string;\n\n      /**\n       * 0 for success, non-zero for failure\n       */\n      return_code: number;\n\n      /**\n       * Output file Id list\n       */\n      content: Array<{ type: 'code_execution_output'; file_id: string }>;\n    }\n  | {\n      type: 'bash_code_execution_result';\n\n      /**\n       * Output file Id list\n       */\n      content: Array<{\n        type: 'bash_code_execution_output';\n        file_id: string;\n      }>;\n\n      /**\n       * Output from successful execution\n       */\n      stdout: string;\n\n      /**\n       * Error messages if execution fails\n       */\n      stderr: string;\n\n      /**\n       * 0 for success, non-zero for failure\n       */\n      return_code: number;\n    }\n  | {\n      type: 'bash_code_execution_tool_result_error';\n\n      /**\n       * Available options: invalid_tool_input, unavailable, too_many_requests,\n       * execution_time_exceeded, output_file_too_large.\n       */\n      error_code: string;\n    }\n  | {\n      type: 'text_editor_code_execution_tool_result_error';\n\n      /**\n       * Available options: invalid_tool_input, unavailable, too_many_requests,\n       * execution_time_exceeded, file_not_found.\n       */\n      error_code: string;\n    }\n  | {\n      type: 'text_editor_code_execution_view_result';\n\n      content: string;\n\n      /**\n       * The type of the file. Available options: text, image, pdf.\n       */\n      file_type: string;\n\n      num_lines: number | null;\n      start_line: number | null;\n      total_lines: number | null;\n    }\n  | {\n      type: 'text_editor_code_execution_create_result';\n\n      is_file_update: boolean;\n    }\n  | {\n      type: 'text_editor_code_execution_str_replace_result';\n\n      lines: string[] | null;\n      new_lines: number | null;\n      new_start: number | null;\n      old_lines: number | null;\n      old_start: number | null;\n    },\n  {\n    // no arguments\n  }\n>({\n  id: 'anthropic.code_execution_20260120',\n  inputSchema: codeExecution_20260120InputSchema,\n  outputSchema: codeExecution_20260120OutputSchema,\n  supportsDeferredResults: true,\n});\n\nexport const codeExecution_20260120 = (\n  args: Parameters<typeof factory>[0] = {},\n) => {\n  return factory(args);\n};\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Output schema for tool search results - returns tool references\n * that are automatically expanded into full tool definitions by the API.\n */\nexport const toolSearchRegex_20251119OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.array(\n      z.object({\n        type: z.literal('tool_reference'),\n        toolName: z.string(),\n      }),\n    ),\n  ),\n);\n\n/**\n * Input schema for regex-based tool search.\n * Claude constructs regex patterns using Python's re.search() syntax.\n */\nconst toolSearchRegex_20251119InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * A regex pattern to search for tools.\n       * Uses Python re.search() syntax. Maximum 200 characters.\n       *\n       * Examples:\n       * - \"weather\" - matches tool names/descriptions containing \"weather\"\n       * - \"get_.*_data\" - matches tools like get_user_data, get_weather_data\n       * - \"database.*query|query.*database\" - OR patterns for flexibility\n       * - \"(?i)slack\" - case-insensitive search\n       */\n      pattern: z.string(),\n      /**\n       * Maximum number of tools to return. Optional.\n       */\n      limit: z.number().optional(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * A regex pattern to search for tools.\n     * Uses Python re.search() syntax. Maximum 200 characters.\n     *\n     * Examples:\n     * - \"weather\" - matches tool names/descriptions containing \"weather\"\n     * - \"get_.*_data\" - matches tools like get_user_data, get_weather_data\n     * - \"database.*query|query.*database\" - OR patterns for flexibility\n     * - \"(?i)slack\" - case-insensitive search\n     */\n    pattern: string;\n    /**\n     * Maximum number of tools to return. Optional.\n     */\n    limit?: number;\n  },\n  Array<{\n    type: 'tool_reference';\n    /**\n     * The name of the discovered tool.\n     */\n    toolName: string;\n  }>,\n  {}\n>({\n  id: 'anthropic.tool_search_regex_20251119',\n  inputSchema: toolSearchRegex_20251119InputSchema,\n  outputSchema: toolSearchRegex_20251119OutputSchema,\n  supportsDeferredResults: true,\n});\n\n/**\n * Creates a tool search tool that uses regex patterns to find tools.\n *\n * The tool search tool enables Claude to work with hundreds or thousands of tools\n * by dynamically discovering and loading them on-demand. Instead of loading all\n * tool definitions into the context window upfront, Claude searches your tool\n * catalog and loads only the tools it needs.\n *\n * When Claude uses this tool, it constructs regex patterns using Python's\n * re.search() syntax (NOT natural language queries).\n *\n * **Important**: This tool should never have `deferLoading: true` in providerOptions.\n *\n * @example\n * ```ts\n * import { anthropicTools } from '@ai-sdk/anthropic';\n *\n * const tools = {\n *   toolSearch: anthropicTools.toolSearchRegex_20251119(),\n *   // Other tools with deferLoading...\n * };\n * ```\n *\n * @see https://docs.anthropic.com/en/docs/agents-and-tools/tool-search-tool\n */\nexport const toolSearchRegex_20251119 = (\n  args: Parameters<typeof factory>[0] = {},\n) => {\n  return factory(args);\n};\n","import {\n  SharedV3Warning,\n  LanguageModelV3DataContent,\n  LanguageModelV3Message,\n  LanguageModelV3Prompt,\n  SharedV3ProviderMetadata,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n  convertBase64ToUint8Array,\n  convertToBase64,\n  parseProviderOptions,\n  validateTypes,\n  isNonNullable,\n  ToolNameMapping,\n} from '@ai-sdk/provider-utils';\nimport {\n  AnthropicAssistantMessage,\n  AnthropicMessagesPrompt,\n  anthropicReasoningMetadataSchema,\n  AnthropicToolResultContent,\n  AnthropicUserMessage,\n  AnthropicWebFetchToolResultContent,\n} from './anthropic-messages-api';\nimport { anthropicFilePartProviderOptions } from './anthropic-messages-options';\nimport { CacheControlValidator } from './get-cache-control';\nimport { codeExecution_20250522OutputSchema } from './tool/code-execution_20250522';\nimport { codeExecution_20250825OutputSchema } from './tool/code-execution_20250825';\nimport { codeExecution_20260120OutputSchema } from './tool/code-execution_20260120';\nimport { toolSearchRegex_20251119OutputSchema as toolSearchOutputSchema } from './tool/tool-search-regex_20251119';\nimport { webFetch_20250910OutputSchema } from './tool/web-fetch-20250910';\nimport { webSearch_20250305OutputSchema } from './tool/web-search_20250305';\n\nfunction convertToString(data: LanguageModelV3DataContent): string {\n  if (typeof data === 'string') {\n    return new TextDecoder().decode(convertBase64ToUint8Array(data));\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\n/**\n * Checks if data is a URL (either a URL object or a URL string).\n */\nfunction isUrlData(\n  data: LanguageModelV3DataContent,\n): data is URL | (string & { __brand: 'url-string' }) {\n  return data instanceof URL || isUrlString(data);\n}\n\nfunction isUrlString(data: LanguageModelV3DataContent): boolean {\n  return typeof data === 'string' && /^https?:\\/\\//i.test(data);\n}\n\nfunction getUrlString(data: LanguageModelV3DataContent): string {\n  return data instanceof URL ? data.toString() : (data as string);\n}\n\nexport async function convertToAnthropicMessagesPrompt({\n  prompt,\n  sendReasoning,\n  warnings,\n  cacheControlValidator,\n  toolNameMapping,\n}: {\n  prompt: LanguageModelV3Prompt;\n  sendReasoning: boolean;\n  warnings: SharedV3Warning[];\n  cacheControlValidator?: CacheControlValidator;\n  toolNameMapping: ToolNameMapping;\n}): Promise<{\n  prompt: AnthropicMessagesPrompt;\n  betas: Set<string>;\n}> {\n  const betas = new Set<string>();\n  const blocks = groupIntoBlocks(prompt);\n  const validator = cacheControlValidator || new CacheControlValidator();\n\n  let system: AnthropicMessagesPrompt['system'] = undefined;\n  const messages: AnthropicMessagesPrompt['messages'] = [];\n\n  async function shouldEnableCitations(\n    providerMetadata: SharedV3ProviderMetadata | 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: SharedV3ProviderMetadata | 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: validator.getCacheControl(providerOptions, {\n            type: 'system message',\n            canCache: true,\n          }),\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                  validator.getCacheControl(part.providerOptions, {\n                    type: 'user message part',\n                    canCache: true,\n                  }) ??\n                  (isLastPart\n                    ? validator.getCacheControl(message.providerOptions, {\n                        type: 'user message',\n                        canCache: true,\n                      })\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: isUrlData(part.data)\n                          ? {\n                              type: 'url',\n                              url: getUrlString(part.data),\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: isUrlData(part.data)\n                          ? {\n                              type: 'url',\n                              url: getUrlString(part.data),\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: isUrlData(part.data)\n                          ? {\n                              type: 'url',\n                              url: getUrlString(part.data),\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                if (part.type === 'tool-approval-response') {\n                  continue;\n                }\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                  validator.getCacheControl(part.providerOptions, {\n                    type: 'tool result part',\n                    canCache: true,\n                  }) ??\n                  (isLastPart\n                    ? validator.getCacheControl(message.providerOptions, {\n                        type: 'tool result message',\n                        canCache: true,\n                      })\n                    : undefined);\n\n                const output = part.output;\n                let contentValue: AnthropicToolResultContent['content'];\n                switch (output.type) {\n                  case 'content':\n                    contentValue = output.value\n                      .map(contentPart => {\n                        switch (contentPart.type) {\n                          case 'text':\n                            return {\n                              type: 'text' as const,\n                              text: contentPart.text,\n                            };\n                          case 'image-data': {\n                            return {\n                              type: 'image' as const,\n                              source: {\n                                type: 'base64' as const,\n                                media_type: contentPart.mediaType,\n                                data: contentPart.data,\n                              },\n                            };\n                          }\n                          case 'image-url': {\n                            return {\n                              type: 'image' as const,\n                              source: {\n                                type: 'url' as const,\n                                url: contentPart.url,\n                              },\n                            };\n                          }\n                          case 'file-url': {\n                            return {\n                              type: 'document' as const,\n                              source: {\n                                type: 'url' as const,\n                                url: contentPart.url,\n                              },\n                            };\n                          }\n                          case 'file-data': {\n                            if (contentPart.mediaType === 'application/pdf') {\n                              betas.add('pdfs-2024-09-25');\n                              return {\n                                type: 'document' as const,\n                                source: {\n                                  type: 'base64' as const,\n                                  media_type: contentPart.mediaType,\n                                  data: contentPart.data,\n                                },\n                              };\n                            }\n\n                            warnings.push({\n                              type: 'other',\n                              message: `unsupported tool content part type: ${contentPart.type} with media type: ${contentPart.mediaType}`,\n                            });\n\n                            return undefined;\n                          }\n                          case 'custom': {\n                            const anthropicOptions = contentPart.providerOptions\n                              ?.anthropic as\n                              | { type: string; toolName?: string }\n                              | undefined;\n                            if (anthropicOptions?.type === 'tool-reference') {\n                              return {\n                                type: 'tool_reference' as const,\n                                tool_name: anthropicOptions.toolName!,\n                              };\n                            }\n                            warnings.push({\n                              type: 'other',\n                              message: `unsupported custom tool content part`,\n                            });\n                            return undefined;\n                          }\n                          default: {\n                            warnings.push({\n                              type: 'other',\n                              message: `unsupported tool content part type: ${contentPart.type}`,\n                            });\n\n                            return undefined;\n                          }\n                        }\n                      })\n                      .filter(isNonNullable);\n                    break;\n                  case 'text':\n                  case 'error-text':\n                    contentValue = output.value;\n                    break;\n                  case 'execution-denied':\n                    contentValue = output.reason ?? 'Tool execution denied.';\n                    break;\n                  case 'json':\n                  case 'error-json':\n                  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        const mcpToolUseIds = new Set<string>();\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              validator.getCacheControl(part.providerOptions, {\n                type: 'assistant message part',\n                canCache: true,\n              }) ??\n              (isLastContentPart\n                ? validator.getCacheControl(message.providerOptions, {\n                    type: 'assistant message',\n                    canCache: true,\n                  })\n                : undefined);\n\n            switch (part.type) {\n              case 'text': {\n                // Check if this is a compaction block (via providerMetadata)\n                const textMetadata = part.providerOptions?.anthropic as\n                  | { type?: string }\n                  | undefined;\n\n                if (textMetadata?.type === 'compaction') {\n                  anthropicContent.push({\n                    type: 'compaction',\n                    content: part.text,\n                    cache_control: cacheControl,\n                  });\n                } else {\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                }\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                      // Note: thinking blocks cannot have cache_control directly\n                      // They are cached implicitly when in previous assistant turns\n                      // Validate to provide helpful error message\n                      validator.getCacheControl(part.providerOptions, {\n                        type: 'thinking block',\n                        canCache: false,\n                      });\n                      anthropicContent.push({\n                        type: 'thinking',\n                        thinking: part.text,\n                        signature: reasoningMetadata.signature,\n                      });\n                    } else if (reasoningMetadata.redactedData != null) {\n                      // Note: redacted thinking blocks cannot have cache_control directly\n                      // They are cached implicitly when in previous assistant turns\n                      // Validate to provide helpful error message\n                      validator.getCacheControl(part.providerOptions, {\n                        type: 'redacted thinking block',\n                        canCache: false,\n                      });\n                      anthropicContent.push({\n                        type: 'redacted_thinking',\n                        data: reasoningMetadata.redactedData,\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                  const providerToolName = toolNameMapping.toProviderToolName(\n                    part.toolName,\n                  );\n                  const isMcpToolUse =\n                    part.providerOptions?.anthropic?.type === 'mcp-tool-use';\n\n                  if (isMcpToolUse) {\n                    mcpToolUseIds.add(part.toolCallId);\n\n                    const serverName =\n                      part.providerOptions?.anthropic?.serverName;\n\n                    if (serverName == null || typeof serverName !== 'string') {\n                      warnings.push({\n                        type: 'other',\n                        message:\n                          'mcp tool use server name is required and must be a string',\n                      });\n                      break;\n                    }\n\n                    anthropicContent.push({\n                      type: 'mcp_tool_use',\n                      id: part.toolCallId,\n                      name: part.toolName,\n                      input: part.input,\n                      server_name: serverName,\n                      cache_control: cacheControl,\n                    });\n                  } else if (\n                    // code execution 20250825:\n                    providerToolName === 'code_execution' &&\n                    part.input != null &&\n                    typeof part.input === 'object' &&\n                    'type' in part.input &&\n                    typeof part.input.type === 'string' &&\n                    (part.input.type === 'bash_code_execution' ||\n                      part.input.type === 'text_editor_code_execution')\n                  ) {\n                    anthropicContent.push({\n                      type: 'server_tool_use',\n                      id: part.toolCallId,\n                      name: part.input.type, // map back to subtool name\n                      input: part.input,\n                      cache_control: cacheControl,\n                    });\n                  } else if (\n                    // code execution 20250825 programmatic tool calling:\n                    // Strip the fake 'programmatic-tool-call' type before sending to Anthropic\n                    providerToolName === 'code_execution' &&\n                    part.input != null &&\n                    typeof part.input === 'object' &&\n                    'type' in part.input &&\n                    part.input.type === 'programmatic-tool-call'\n                  ) {\n                    const { type: _, ...inputWithoutType } = part.input as {\n                      type: string;\n                      code: string;\n                    };\n                    anthropicContent.push({\n                      type: 'server_tool_use',\n                      id: part.toolCallId,\n                      name: 'code_execution',\n                      input: inputWithoutType,\n                      cache_control: cacheControl,\n                    });\n                  } else {\n                    if (\n                      providerToolName === 'code_execution' || // code execution 20250522\n                      providerToolName === 'web_fetch' ||\n                      providerToolName === 'web_search'\n                    ) {\n                      anthropicContent.push({\n                        type: 'server_tool_use',\n                        id: part.toolCallId,\n                        name: providerToolName,\n                        input: part.input,\n                        cache_control: cacheControl,\n                      });\n                    } else if (\n                      providerToolName === 'tool_search_tool_regex' ||\n                      providerToolName === 'tool_search_tool_bm25'\n                    ) {\n                      anthropicContent.push({\n                        type: 'server_tool_use',\n                        id: part.toolCallId,\n                        name: providerToolName,\n                        input: part.input,\n                        cache_control: cacheControl,\n                      });\n                    } else {\n                      warnings.push({\n                        type: 'other',\n                        message: `provider executed tool call for tool ${part.toolName} is not supported`,\n                      });\n                    }\n                  }\n\n                  break;\n                }\n\n                // Extract caller info from provider options for programmatic tool calling\n                const callerOptions = part.providerOptions?.anthropic as\n                  | { caller?: { type: string; toolId?: string } }\n                  | undefined;\n                const caller = callerOptions?.caller\n                  ? (callerOptions.caller.type === 'code_execution_20250825' ||\n                      callerOptions.caller.type ===\n                        'code_execution_20260120') &&\n                    callerOptions.caller.toolId\n                    ? {\n                        type: callerOptions.caller.type as\n                          | 'code_execution_20250825'\n                          | 'code_execution_20260120',\n                        tool_id: callerOptions.caller.toolId,\n                      }\n                    : callerOptions.caller.type === 'direct'\n                      ? { type: 'direct' as const }\n                      : undefined\n                  : undefined;\n\n                anthropicContent.push({\n                  type: 'tool_use',\n                  id: part.toolCallId,\n                  name: part.toolName,\n                  input: part.input,\n                  ...(caller && { caller }),\n                  cache_control: cacheControl,\n                });\n                break;\n              }\n\n              case 'tool-result': {\n                const providerToolName = toolNameMapping.toProviderToolName(\n                  part.toolName,\n                );\n\n                if (mcpToolUseIds.has(part.toolCallId)) {\n                  const output = part.output;\n\n                  if (output.type !== 'json' && output.type !== 'error-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                  anthropicContent.push({\n                    type: 'mcp_tool_result',\n                    tool_use_id: part.toolCallId,\n                    is_error: output.type === 'error-json',\n                    content: output.value as unknown as\n                      | string\n                      | Array<{ type: 'text'; text: string }>,\n                    cache_control: cacheControl,\n                  });\n                } else if (providerToolName === 'code_execution') {\n                  const output = part.output;\n\n                  // Handle error types for code_execution tools (e.g., from programmatic tool calling)\n                  if (\n                    output.type === 'error-text' ||\n                    output.type === 'error-json'\n                  ) {\n                    let errorInfo: { type?: string; errorCode?: string } = {};\n                    try {\n                      if (typeof output.value === 'string') {\n                        errorInfo = JSON.parse(output.value);\n                      } else if (\n                        typeof output.value === 'object' &&\n                        output.value !== null\n                      ) {\n                        errorInfo = output.value as typeof errorInfo;\n                      }\n                    } catch {}\n\n                    if (errorInfo.type === 'code_execution_tool_result_error') {\n                      anthropicContent.push({\n                        type: 'code_execution_tool_result',\n                        tool_use_id: part.toolCallId,\n                        content: {\n                          type: 'code_execution_tool_result_error' as const,\n                          error_code: errorInfo.errorCode ?? 'unknown',\n                        },\n                        cache_control: cacheControl,\n                      });\n                    } else {\n                      anthropicContent.push({\n                        type: 'bash_code_execution_tool_result',\n                        tool_use_id: part.toolCallId,\n                        cache_control: cacheControl,\n                        content: {\n                          type: 'bash_code_execution_tool_result_error' as const,\n                          error_code: errorInfo.errorCode ?? 'unknown',\n                        },\n                      });\n                    }\n                    break;\n                  }\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                  if (\n                    output.value == null ||\n                    typeof output.value !== 'object' ||\n                    !('type' in output.value) ||\n                    typeof output.value.type !== 'string'\n                  ) {\n                    warnings.push({\n                      type: 'other',\n                      message: `provider executed tool result output value is not a valid code execution result for tool ${part.toolName}`,\n                    });\n                    break;\n                  }\n\n                  // to distinguish between code execution 20250522, 20250825,\n                  // and encrypted results (from web_fetch_20260209/web_search_20260209 injection),\n                  // we check the type property in output.value\n                  if (output.value.type === 'code_execution_result') {\n                    // code execution 20250522\n                    const codeExecutionOutput = await validateTypes({\n                      value: output.value,\n                      schema: codeExecution_20250522OutputSchema,\n                    });\n\n                    anthropicContent.push({\n                      type: 'code_execution_tool_result',\n                      tool_use_id: part.toolCallId,\n                      content: {\n                        type: codeExecutionOutput.type,\n                        stdout: codeExecutionOutput.stdout,\n                        stderr: codeExecutionOutput.stderr,\n                        return_code: codeExecutionOutput.return_code,\n                        content: codeExecutionOutput.content ?? [],\n                      },\n                      cache_control: cacheControl,\n                    });\n                  } else if (\n                    output.value.type === 'encrypted_code_execution_result'\n                  ) {\n                    // code execution 20260120 encrypted result\n                    const codeExecutionOutput = await validateTypes({\n                      value: output.value,\n                      schema: codeExecution_20260120OutputSchema,\n                    });\n\n                    if (\n                      codeExecutionOutput.type ===\n                      'encrypted_code_execution_result'\n                    ) {\n                      anthropicContent.push({\n                        type: 'code_execution_tool_result',\n                        tool_use_id: part.toolCallId,\n                        content: {\n                          type: codeExecutionOutput.type,\n                          encrypted_stdout:\n                            codeExecutionOutput.encrypted_stdout,\n                          stderr: codeExecutionOutput.stderr,\n                          return_code: codeExecutionOutput.return_code,\n                          content: codeExecutionOutput.content ?? [],\n                        },\n                        cache_control: cacheControl,\n                      });\n                    }\n                  } else {\n                    // code execution 20250825\n                    const codeExecutionOutput = await validateTypes({\n                      value: output.value,\n                      schema: codeExecution_20250825OutputSchema,\n                    });\n\n                    if (codeExecutionOutput.type === 'code_execution_result') {\n                      anthropicContent.push({\n                        type: 'code_execution_tool_result',\n                        tool_use_id: part.toolCallId,\n                        content: {\n                          type: codeExecutionOutput.type,\n                          stdout: codeExecutionOutput.stdout,\n                          stderr: codeExecutionOutput.stderr,\n                          return_code: codeExecutionOutput.return_code,\n                          content: codeExecutionOutput.content ?? [],\n                        },\n                        cache_control: cacheControl,\n                      });\n                    } else if (\n                      codeExecutionOutput.type ===\n                        'bash_code_execution_result' ||\n                      codeExecutionOutput.type ===\n                        'bash_code_execution_tool_result_error'\n                    ) {\n                      anthropicContent.push({\n                        type: 'bash_code_execution_tool_result',\n                        tool_use_id: part.toolCallId,\n                        cache_control: cacheControl,\n                        content: codeExecutionOutput,\n                      });\n                    } else {\n                      anthropicContent.push({\n                        type: 'text_editor_code_execution_tool_result',\n                        tool_use_id: part.toolCallId,\n                        cache_control: cacheControl,\n                        content: codeExecutionOutput,\n                      });\n                    }\n                  }\n                  break;\n                }\n\n                if (providerToolName === 'web_fetch') {\n                  const output = part.output;\n\n                  if (output.type === 'error-json') {\n                    let errorValue: { errorCode?: string } = {};\n                    try {\n                      if (typeof output.value === 'string') {\n                        errorValue = JSON.parse(output.value);\n                      } else if (\n                        typeof output.value === 'object' &&\n                        output.value !== null\n                      ) {\n                        errorValue = output.value as typeof errorValue;\n                      }\n                    } catch {\n                      // If parsing fails, treat the value as-is\n                      const extractedErrorCode = (\n                        output.value as Record<string, unknown>\n                      )?.errorCode;\n                      errorValue = {\n                        errorCode:\n                          typeof extractedErrorCode === 'string'\n                            ? extractedErrorCode\n                            : 'unavailable',\n                      };\n                    }\n\n                    anthropicContent.push({\n                      type: 'web_fetch_tool_result',\n                      tool_use_id: part.toolCallId,\n                      content: {\n                        type: 'web_fetch_tool_result_error',\n                        error_code: errorValue.errorCode ?? 'unavailable',\n                      },\n                      cache_control: cacheControl,\n                    });\n\n                    break;\n                  }\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                  // ideally we'd switch schema based on the tool version (e.g.\n                  // web_fetch_20260209 vs web_fetch_20250910), but since both\n                  // versions share an identical output schema, we use one here.\n                  const webFetchOutput = await validateTypes({\n                    value: output.value,\n                    schema: webFetch_20250910OutputSchema,\n                  });\n\n                  anthropicContent.push({\n                    type: 'web_fetch_tool_result',\n                    tool_use_id: part.toolCallId,\n                    content: {\n                      type: 'web_fetch_result',\n                      url: webFetchOutput.url,\n                      retrieved_at: webFetchOutput.retrievedAt,\n                      content: {\n                        type: 'document',\n                        title: webFetchOutput.content.title,\n                        citations: webFetchOutput.content.citations,\n                        source: {\n                          type: webFetchOutput.content.source.type,\n                          media_type: webFetchOutput.content.source.mediaType,\n                          data: webFetchOutput.content.source.data,\n                        } as Extract<\n                          AnthropicWebFetchToolResultContent['content'],\n                          { type: 'web_fetch_result' }\n                        >['content']['source'],\n                      },\n                    },\n                    cache_control: cacheControl,\n                  });\n\n                  break;\n                }\n\n                if (providerToolName === '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                  // ideally we'd switch schema based on the tool version (e.g.\n                  // web_search_20260209 vs web_search_20250305), but since both\n                  // versions share an identical output schema, we use one here.\n                  const webSearchOutput = await validateTypes({\n                    value: output.value,\n                    schema: webSearch_20250305OutputSchema,\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                if (\n                  providerToolName === 'tool_search_tool_regex' ||\n                  providerToolName === 'tool_search_tool_bm25'\n                ) {\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 toolSearchOutput = await validateTypes({\n                    value: output.value,\n                    schema: toolSearchOutputSchema,\n                  });\n\n                  // Convert tool references back to API format\n                  const toolReferences = toolSearchOutput.map(ref => ({\n                    type: 'tool_reference' as const,\n                    tool_name: ref.toolName,\n                  }));\n\n                  anthropicContent.push({\n                    type: 'tool_search_tool_result',\n                    tool_use_id: part.toolCallId,\n                    content: {\n                      type: 'tool_search_tool_search_result',\n                      tool_references: toolReferences,\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<LanguageModelV3Message & { role: 'system' }>;\n};\ntype AssistantBlock = {\n  type: 'assistant';\n  messages: Array<LanguageModelV3Message & { role: 'assistant' }>;\n};\ntype UserBlock = {\n  type: 'user';\n  messages: Array<LanguageModelV3Message & { role: 'user' | 'tool' }>;\n};\n\nfunction groupIntoBlocks(\n  prompt: LanguageModelV3Prompt,\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 { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\n/**\n * @see https://docs.anthropic.com/en/api/messages#response-stop-reason\n */\nexport function mapAnthropicStopReason({\n  finishReason,\n  isJsonResponseFromTool,\n}: {\n  finishReason: string | null | undefined;\n  isJsonResponseFromTool?: boolean;\n}): LanguageModelV3FinishReason['unified'] {\n  switch (finishReason) {\n    case 'pause_turn':\n    case 'end_turn':\n    case 'stop_sequence':\n      return 'stop';\n    case 'refusal':\n      return 'content-filter';\n    case 'tool_use':\n      return isJsonResponseFromTool ? 'stop' : 'tool-calls';\n    case 'max_tokens':\n    case 'model_context_window_exceeded':\n      return 'length';\n    case 'compaction':\n      return 'other';\n    default:\n      return 'other';\n  }\n}\n","import {\n  APICallError,\n  JSONObject,\n  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3FunctionTool,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3Prompt,\n  LanguageModelV3Source,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n  LanguageModelV3ToolCall,\n  SharedV3ProviderMetadata,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  createToolNameMapping,\n  FetchFunction,\n  generateId,\n  InferSchema,\n  parseProviderOptions,\n  ParseResult,\n  postJsonToApi,\n  Resolvable,\n  resolve,\n} from '@ai-sdk/provider-utils';\nimport { anthropicFailedResponseHandler } from './anthropic-error';\nimport { AnthropicMessageMetadata } from './anthropic-message-metadata';\nimport {\n  AnthropicContainer,\n  anthropicMessagesChunkSchema,\n  anthropicMessagesResponseSchema,\n  AnthropicReasoningMetadata,\n  AnthropicResponseContextManagement,\n  AnthropicTool,\n  Citation,\n} from './anthropic-messages-api';\nimport {\n  AnthropicMessagesModelId,\n  anthropicLanguageModelOptions,\n} from './anthropic-messages-options';\nimport { prepareTools } from './anthropic-prepare-tools';\nimport {\n  AnthropicMessagesUsage,\n  convertAnthropicMessagesUsage,\n} from './convert-anthropic-messages-usage';\nimport { convertToAnthropicMessagesPrompt } from './convert-to-anthropic-messages-prompt';\nimport { CacheControlValidator } from './get-cache-control';\nimport { mapAnthropicStopReason } from './map-anthropic-stop-reason';\n\nfunction createCitationSource(\n  citation: Citation,\n  citationDocuments: Array<{\n    title: string;\n    filename?: string;\n    mediaType: string;\n  }>,\n  generateId: () => string,\n): LanguageModelV3Source | undefined {\n  if (citation.type === 'web_search_result_location') {\n    return {\n      type: 'source' as const,\n      sourceType: 'url' as const,\n      id: generateId(),\n      url: citation.url,\n      title: citation.title,\n      providerMetadata: {\n        anthropic: {\n          citedText: citation.cited_text,\n          encryptedIndex: citation.encrypted_index,\n        },\n      } satisfies SharedV3ProviderMetadata,\n    };\n  }\n\n  if (citation.type !== 'page_location' && citation.type !== 'char_location') {\n    return;\n  }\n\n  const documentInfo = citationDocuments[citation.document_index];\n\n  if (!documentInfo) {\n    return;\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:\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    } satisfies SharedV3ProviderMetadata,\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?: (\n    args: Record<string, any>,\n    betas: Set<string>,\n  ) => Record<string, any>;\n  supportedUrls?: () => LanguageModelV3['supportedUrls'];\n  generateId?: () => string;\n\n  /**\n   * When false, the model will use JSON tool fallback for structured outputs.\n   */\n  supportsNativeStructuredOutput?: boolean;\n\n  /**\n   * When false, `strict` on tool definitions will be ignored and a warning emitted.\n   * Defaults to true.\n   */\n  supportsStrictTools?: boolean;\n};\n\nexport class AnthropicMessagesLanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\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  /**\n   * Extracts the dynamic provider name from the config.provider string.\n   * e.g., 'my-custom-anthropic.messages' -> 'my-custom-anthropic'\n   */\n  private get providerOptionsName(): string {\n    const provider = this.config.provider;\n    const dotIndex = provider.indexOf('.');\n    return dotIndex === -1 ? provider : provider.substring(0, dotIndex);\n  }\n\n  get supportedUrls() {\n    return this.config.supportedUrls?.() ?? {};\n  }\n\n  private async getArgs({\n    userSuppliedBetas,\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    stream,\n  }: LanguageModelV3CallOptions & {\n    stream: boolean;\n    userSuppliedBetas: Set<string>;\n  }) {\n    const warnings: SharedV3Warning[] = [];\n\n    if (frequencyPenalty != null) {\n      warnings.push({ type: 'unsupported', feature: 'frequencyPenalty' });\n    }\n\n    if (presencePenalty != null) {\n      warnings.push({ type: 'unsupported', feature: 'presencePenalty' });\n    }\n\n    if (seed != null) {\n      warnings.push({ type: 'unsupported', feature: 'seed' });\n    }\n\n    if (temperature != null && temperature > 1) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'temperature',\n        details: `${temperature} exceeds anthropic maximum of 1.0. clamped to 1.0`,\n      });\n      temperature = 1;\n    } else if (temperature != null && temperature < 0) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'temperature',\n        details: `${temperature} is below anthropic minimum of 0. clamped to 0`,\n      });\n      temperature = 0;\n    }\n\n    if (responseFormat?.type === 'json') {\n      if (responseFormat.schema == null) {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'responseFormat',\n          details:\n            'JSON response format requires a schema. ' +\n            'The response format is ignored.',\n        });\n      }\n    }\n\n    const providerOptionsName = this.providerOptionsName;\n\n    // Parse provider options from both canonical 'anthropic' key and custom key\n    const canonicalOptions = await parseProviderOptions({\n      provider: 'anthropic',\n      providerOptions,\n      schema: anthropicLanguageModelOptions,\n    });\n\n    const customProviderOptions =\n      providerOptionsName !== 'anthropic'\n        ? await parseProviderOptions({\n            provider: providerOptionsName,\n            providerOptions,\n            schema: anthropicLanguageModelOptions,\n          })\n        : null;\n\n    // Track if custom key was explicitly used\n    const usedCustomProviderKey = customProviderOptions != null;\n\n    // Merge options\n    const anthropicOptions = Object.assign(\n      {},\n      canonicalOptions ?? {},\n      customProviderOptions ?? {},\n    );\n\n    const {\n      maxOutputTokens: maxOutputTokensForModel,\n      supportsStructuredOutput: modelSupportsStructuredOutput,\n      isKnownModel,\n    } = getModelCapabilities(this.modelId);\n\n    const isAnthropicModel = isKnownModel || this.modelId.startsWith('claude-');\n\n    const supportsStructuredOutput =\n      (this.config.supportsNativeStructuredOutput ?? true) &&\n      modelSupportsStructuredOutput;\n\n    const supportsStrictTools =\n      (this.config.supportsStrictTools ?? true) &&\n      modelSupportsStructuredOutput;\n\n    const structureOutputMode =\n      anthropicOptions?.structuredOutputMode ?? 'auto';\n    const useStructuredOutput =\n      structureOutputMode === 'outputFormat' ||\n      (structureOutputMode === 'auto' && supportsStructuredOutput);\n\n    const jsonResponseTool: LanguageModelV3FunctionTool | undefined =\n      responseFormat?.type === 'json' &&\n      responseFormat.schema != null &&\n      !useStructuredOutput\n        ? {\n            type: 'function',\n            name: 'json',\n            description: 'Respond with a JSON object.',\n            inputSchema: responseFormat.schema,\n          }\n        : undefined;\n\n    const contextManagement = anthropicOptions?.contextManagement;\n\n    // Create a shared cache control validator to track breakpoints across tools and messages\n    const cacheControlValidator = new CacheControlValidator();\n\n    const toolNameMapping = createToolNameMapping({\n      tools,\n      providerToolNames: {\n        'anthropic.code_execution_20250522': 'code_execution',\n        'anthropic.code_execution_20250825': 'code_execution',\n        'anthropic.code_execution_20260120': 'code_execution',\n        'anthropic.computer_20241022': 'computer',\n        'anthropic.computer_20250124': 'computer',\n        'anthropic.text_editor_20241022': 'str_replace_editor',\n        'anthropic.text_editor_20250124': 'str_replace_editor',\n        'anthropic.text_editor_20250429': 'str_replace_based_edit_tool',\n        'anthropic.text_editor_20250728': 'str_replace_based_edit_tool',\n        'anthropic.bash_20241022': 'bash',\n        'anthropic.bash_20250124': 'bash',\n        'anthropic.memory_20250818': 'memory',\n        'anthropic.web_search_20250305': 'web_search',\n        'anthropic.web_search_20260209': 'web_search',\n        'anthropic.web_fetch_20250910': 'web_fetch',\n        'anthropic.web_fetch_20260209': 'web_fetch',\n        'anthropic.tool_search_regex_20251119': 'tool_search_tool_regex',\n        'anthropic.tool_search_bm25_20251119': 'tool_search_tool_bm25',\n      },\n    });\n\n    const { prompt: messagesPrompt, betas } =\n      await convertToAnthropicMessagesPrompt({\n        prompt,\n        sendReasoning: anthropicOptions?.sendReasoning ?? true,\n        warnings,\n        cacheControlValidator,\n        toolNameMapping,\n      });\n\n    const thinkingType = anthropicOptions?.thinking?.type;\n    const isThinking =\n      thinkingType === 'enabled' || thinkingType === 'adaptive';\n    let thinkingBudget =\n      thinkingType === 'enabled'\n        ? anthropicOptions?.thinking?.budgetTokens\n        : undefined;\n\n    const maxTokens = maxOutputTokens ?? maxOutputTokensForModel;\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: {\n          type: thinkingType,\n          ...(thinkingBudget != null && { budget_tokens: thinkingBudget }),\n        },\n      }),\n      ...((anthropicOptions?.effort ||\n        (useStructuredOutput &&\n          responseFormat?.type === 'json' &&\n          responseFormat.schema != null)) && {\n        output_config: {\n          ...(anthropicOptions?.effort && {\n            effort: anthropicOptions.effort,\n          }),\n          ...(useStructuredOutput &&\n            responseFormat?.type === 'json' &&\n            responseFormat.schema != null && {\n              format: {\n                type: 'json_schema',\n                schema: responseFormat.schema,\n              },\n            }),\n        },\n      }),\n      ...(anthropicOptions?.speed && {\n        speed: anthropicOptions.speed,\n      }),\n      ...(anthropicOptions?.inferenceGeo && {\n        inference_geo: anthropicOptions.inferenceGeo,\n      }),\n      ...(anthropicOptions?.cacheControl && {\n        cache_control: anthropicOptions.cacheControl,\n      }),\n      ...(anthropicOptions?.metadata?.userId != null && {\n        metadata: { user_id: anthropicOptions.metadata.userId },\n      }),\n\n      // mcp servers:\n      ...(anthropicOptions?.mcpServers &&\n        anthropicOptions.mcpServers.length > 0 && {\n          mcp_servers: anthropicOptions.mcpServers.map(server => ({\n            type: server.type,\n            name: server.name,\n            url: server.url,\n            authorization_token: server.authorizationToken,\n            tool_configuration: server.toolConfiguration\n              ? {\n                  allowed_tools: server.toolConfiguration.allowedTools,\n                  enabled: server.toolConfiguration.enabled,\n                }\n              : undefined,\n          })),\n        }),\n\n      // container: For programmatic tool calling (just an ID string) or agent skills (object with id and skills)\n      ...(anthropicOptions?.container && {\n        container:\n          anthropicOptions.container.skills &&\n          anthropicOptions.container.skills.length > 0\n            ? // Object format when skills are provided (agent skills feature)\n              ({\n                id: anthropicOptions.container.id,\n                skills: anthropicOptions.container.skills.map(skill => ({\n                  type: skill.type,\n                  skill_id: skill.skillId,\n                  version: skill.version,\n                })),\n              } satisfies AnthropicContainer)\n            : // String format for container ID only (programmatic tool calling)\n              anthropicOptions.container.id,\n      }),\n\n      // prompt:\n      system: messagesPrompt.system,\n      messages: messagesPrompt.messages,\n\n      ...(contextManagement && {\n        context_management: {\n          edits: contextManagement.edits\n            .map(edit => {\n              const strategy = edit.type;\n              switch (strategy) {\n                case 'clear_tool_uses_20250919':\n                  return {\n                    type: edit.type,\n                    ...(edit.trigger !== undefined && {\n                      trigger: edit.trigger,\n                    }),\n                    ...(edit.keep !== undefined && { keep: edit.keep }),\n                    ...(edit.clearAtLeast !== undefined && {\n                      clear_at_least: edit.clearAtLeast,\n                    }),\n                    ...(edit.clearToolInputs !== undefined && {\n                      clear_tool_inputs: edit.clearToolInputs,\n                    }),\n                    ...(edit.excludeTools !== undefined && {\n                      exclude_tools: edit.excludeTools,\n                    }),\n                  };\n\n                case 'clear_thinking_20251015':\n                  return {\n                    type: edit.type,\n                    ...(edit.keep !== undefined && { keep: edit.keep }),\n                  };\n\n                case 'compact_20260112':\n                  return {\n                    type: edit.type,\n                    ...(edit.trigger !== undefined && {\n                      trigger: edit.trigger,\n                    }),\n                    ...(edit.pauseAfterCompaction !== undefined && {\n                      pause_after_compaction: edit.pauseAfterCompaction,\n                    }),\n                    ...(edit.instructions !== undefined && {\n                      instructions: edit.instructions,\n                    }),\n                  };\n\n                default:\n                  warnings.push({\n                    type: 'other',\n                    message: `Unknown context management strategy: ${strategy}`,\n                  });\n                  return undefined;\n              }\n            })\n            .filter(edit => edit !== undefined),\n        },\n      }),\n    };\n\n    if (isThinking) {\n      if (thinkingType === 'enabled' && thinkingBudget == null) {\n        warnings.push({\n          type: 'compatibility',\n          feature: 'extended thinking',\n          details:\n            'thinking budget is required when thinking is enabled. using default budget of 1024 tokens.',\n        });\n\n        baseArgs.thinking = {\n          type: 'enabled',\n          budget_tokens: 1024,\n        };\n\n        thinkingBudget = 1024;\n      }\n\n      if (baseArgs.temperature != null) {\n        baseArgs.temperature = undefined;\n        warnings.push({\n          type: 'unsupported',\n          feature: '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',\n          feature: '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',\n          feature: '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 ?? 0);\n    } else {\n      // Only check temperature/topP mutual exclusivity for known Anthropic models\n      // when thinking is not enabled. Non-Anthropic models using the Anthropic-compatible\n      // API (e.g. Minimax) may require both parameters to be set.\n      if (isAnthropicModel && topP != null && temperature != null) {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'topP',\n          details: `topP is not supported when temperature is set. topP is ignored.`,\n        });\n        baseArgs.top_p = undefined;\n      }\n    }\n\n    // limit to max output tokens for known models to enable model switching without breaking it:\n    if (isKnownModel && baseArgs.max_tokens > maxOutputTokensForModel) {\n      // only warn if max output tokens is provided as input:\n      if (maxOutputTokens != null) {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'maxOutputTokens',\n          details:\n            `${baseArgs.max_tokens} (maxOutputTokens + thinkingBudget) is greater than ${this.modelId} ${maxOutputTokensForModel} max output tokens. ` +\n            `The max output tokens have been limited to ${maxOutputTokensForModel}.`,\n        });\n      }\n      baseArgs.max_tokens = maxOutputTokensForModel;\n    }\n\n    if (\n      anthropicOptions?.mcpServers &&\n      anthropicOptions.mcpServers.length > 0\n    ) {\n      betas.add('mcp-client-2025-04-04');\n    }\n\n    if (contextManagement) {\n      betas.add('context-management-2025-06-27');\n\n      // Add compaction beta if compact edit is present\n      if (contextManagement.edits.some(e => e.type === 'compact_20260112')) {\n        betas.add('compact-2026-01-12');\n      }\n    }\n\n    if (\n      anthropicOptions?.container &&\n      anthropicOptions.container.skills &&\n      anthropicOptions.container.skills.length > 0\n    ) {\n      betas.add('code-execution-2025-08-25');\n      betas.add('skills-2025-10-02');\n      betas.add('files-api-2025-04-14');\n\n      if (\n        !tools?.some(\n          tool =>\n            tool.type === 'provider' &&\n            (tool.id === 'anthropic.code_execution_20250825' ||\n              tool.id === 'anthropic.code_execution_20260120'),\n        )\n      ) {\n        warnings.push({\n          type: 'other',\n          message: 'code execution tool is required when using skills',\n        });\n      }\n    }\n\n    if (anthropicOptions?.effort) {\n      betas.add('effort-2025-11-24');\n    }\n\n    if (anthropicOptions?.speed === 'fast') {\n      betas.add('fast-mode-2026-02-01');\n    }\n\n    // only when streaming: enable fine-grained tool streaming\n    if (stream && (anthropicOptions?.toolStreaming ?? true)) {\n      betas.add('fine-grained-tool-streaming-2025-05-14');\n    }\n\n    const {\n      tools: anthropicTools,\n      toolChoice: anthropicToolChoice,\n      toolWarnings,\n      betas: toolsBetas,\n    } = await prepareTools(\n      jsonResponseTool != null\n        ? {\n            tools: [...(tools ?? []), jsonResponseTool],\n            toolChoice: { type: 'required' },\n            disableParallelToolUse: true,\n            cacheControlValidator,\n            supportsStructuredOutput: false,\n            supportsStrictTools,\n          }\n        : {\n            tools: tools ?? [],\n            toolChoice,\n            disableParallelToolUse: anthropicOptions?.disableParallelToolUse,\n            cacheControlValidator,\n            supportsStructuredOutput,\n            supportsStrictTools,\n          },\n    );\n\n    // Extract cache control warnings once at the end\n    const cacheWarnings = cacheControlValidator.getWarnings();\n\n    return {\n      args: {\n        ...baseArgs,\n        tools: anthropicTools,\n        tool_choice: anthropicToolChoice,\n        stream: stream === true ? true : undefined, // do not send when not streaming\n      },\n      warnings: [...warnings, ...toolWarnings, ...cacheWarnings],\n      betas: new Set([\n        ...betas,\n        ...toolsBetas,\n        ...userSuppliedBetas,\n        ...(anthropicOptions?.anthropicBeta ?? []),\n      ]),\n      usesJsonResponseTool: jsonResponseTool != null,\n      toolNameMapping,\n      providerOptionsName,\n      usedCustomProviderKey,\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      headers,\n      betas.size > 0 ? { 'anthropic-beta': Array.from(betas).join(',') } : {},\n    );\n  }\n\n  private async getBetasFromHeaders(\n    requestHeaders: Record<string, string | undefined> | undefined,\n  ) {\n    const configHeaders = await resolve(this.config.headers);\n\n    const configBetaHeader = configHeaders['anthropic-beta'] ?? '';\n    const requestBetaHeader = requestHeaders?.['anthropic-beta'] ?? '';\n\n    return new Set(\n      [\n        ...configBetaHeader.toLowerCase().split(','),\n        ...requestBetaHeader.toLowerCase().split(','),\n      ]\n        .map(beta => beta.trim())\n        .filter(beta => beta !== ''),\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(\n    args: Record<string, any>,\n    betas: Set<string>,\n  ): Record<string, any> {\n    return this.config.transformRequestBody?.(args, betas) ?? args;\n  }\n\n  private extractCitationDocuments(prompt: LanguageModelV3Prompt): 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: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const {\n      args,\n      warnings,\n      betas,\n      usesJsonResponseTool,\n      toolNameMapping,\n      providerOptionsName,\n      usedCustomProviderKey,\n    } = await this.getArgs({\n      ...options,\n      stream: false,\n      userSuppliedBetas: await this.getBetasFromHeaders(options.headers),\n    });\n\n    // Extract citation documents for response processing\n    const citationDocuments = [\n      ...this.extractCitationDocuments(options.prompt),\n    ];\n\n    const markCodeExecutionDynamic = hasWebTool20260209WithoutCodeExecution(\n      args.tools,\n    );\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, betas),\n      failedResponseHandler: anthropicFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        anthropicMessagesResponseSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const content: Array<LanguageModelV3Content> = [];\n    const mcpToolCalls: Record<string, LanguageModelV3ToolCall> = {};\n    const serverToolCalls: Record<string, string> = {}; // tool_use_id -> provider tool name\n    let isJsonResponseFromTool = false;\n\n    // map response content to content array\n    for (const part of response.content) {\n      switch (part.type) {\n        case 'text': {\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                const source = createCitationSource(\n                  citation,\n                  citationDocuments,\n                  this.generateId,\n                );\n\n                if (source) {\n                  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 'compaction': {\n          content.push({\n            type: 'text',\n            text: part.content,\n            providerMetadata: {\n              anthropic: {\n                type: 'compaction',\n              },\n            },\n          });\n          break;\n        }\n        case 'tool_use': {\n          const isJsonResponseTool =\n            usesJsonResponseTool && part.name === 'json';\n\n          if (isJsonResponseTool) {\n            isJsonResponseFromTool = true;\n\n            // when a json response tool is used, the tool call becomes the text:\n            content.push({\n              type: 'text',\n              text: JSON.stringify(part.input),\n            });\n          } else {\n            const caller = part.caller;\n            const callerInfo = caller\n              ? {\n                  type: caller.type,\n                  toolId: 'tool_id' in caller ? caller.tool_id : undefined,\n                }\n              : undefined;\n\n            content.push({\n              type: 'tool-call',\n              toolCallId: part.id,\n              toolName: part.name,\n              input: JSON.stringify(part.input),\n              ...(callerInfo && {\n                providerMetadata: {\n                  anthropic: {\n                    caller: callerInfo,\n                  },\n                },\n              }),\n            });\n          }\n\n          break;\n        }\n        case 'server_tool_use': {\n          // code execution 20250825 needs mapping:\n          if (\n            part.name === 'text_editor_code_execution' ||\n            part.name === 'bash_code_execution'\n          ) {\n            content.push({\n              type: 'tool-call',\n              toolCallId: part.id,\n              toolName: toolNameMapping.toCustomToolName('code_execution'),\n              input: JSON.stringify({ type: part.name, ...part.input }),\n              providerExecuted: true,\n            });\n          } else if (\n            part.name === 'web_search' ||\n            part.name === 'code_execution' ||\n            part.name === 'web_fetch'\n          ) {\n            // For code_execution, inject 'programmatic-tool-call' type when input has { code } format\n            const inputToSerialize =\n              part.name === 'code_execution' &&\n              part.input != null &&\n              typeof part.input === 'object' &&\n              'code' in part.input &&\n              !('type' in part.input)\n                ? { type: 'programmatic-tool-call', ...part.input }\n                : part.input;\n\n            content.push({\n              type: 'tool-call',\n              toolCallId: part.id,\n              toolName: toolNameMapping.toCustomToolName(part.name),\n              input: JSON.stringify(inputToSerialize),\n              providerExecuted: true,\n              // We want this 'code_execution' tool call to be allowed even if the tool is not explicitly provided.\n              // Since the validation generally bypasses dynamic tools, we mark this specific tool as dynamic.\n              ...(markCodeExecutionDynamic && part.name === 'code_execution'\n                ? { dynamic: true }\n                : {}),\n            });\n          } else if (\n            part.name === 'tool_search_tool_regex' ||\n            part.name === 'tool_search_tool_bm25'\n          ) {\n            serverToolCalls[part.id] = part.name;\n            content.push({\n              type: 'tool-call',\n              toolCallId: part.id,\n              toolName: toolNameMapping.toCustomToolName(part.name),\n              input: JSON.stringify(part.input),\n              providerExecuted: true,\n            });\n          }\n\n          break;\n        }\n        case 'mcp_tool_use': {\n          mcpToolCalls[part.id] = {\n            type: 'tool-call',\n            toolCallId: part.id,\n            toolName: part.name,\n            input: JSON.stringify(part.input),\n            providerExecuted: true,\n            dynamic: true,\n            providerMetadata: {\n              anthropic: {\n                type: 'mcp-tool-use',\n                serverName: part.server_name,\n              },\n            },\n          };\n          content.push(mcpToolCalls[part.id]);\n          break;\n        }\n        case 'mcp_tool_result': {\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.tool_use_id,\n            toolName: mcpToolCalls[part.tool_use_id].toolName,\n            isError: part.is_error,\n            result: part.content,\n            dynamic: true,\n            providerMetadata: mcpToolCalls[part.tool_use_id].providerMetadata,\n          });\n          break;\n        }\n        case 'web_fetch_tool_result': {\n          if (part.content.type === 'web_fetch_result') {\n            citationDocuments.push({\n              title: part.content.content.title ?? part.content.url,\n              mediaType: part.content.content.source.media_type,\n            });\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName('web_fetch'),\n              result: {\n                type: 'web_fetch_result',\n                url: part.content.url,\n                retrievedAt: part.content.retrieved_at,\n                content: {\n                  type: part.content.content.type,\n                  title: part.content.content.title,\n                  citations: part.content.content.citations,\n                  source: {\n                    type: part.content.content.source.type,\n                    mediaType: part.content.content.source.media_type,\n                    data: part.content.content.source.data,\n                  },\n                },\n              },\n            });\n          } else if (part.content.type === 'web_fetch_tool_result_error') {\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName('web_fetch'),\n              isError: true,\n              result: {\n                type: 'web_fetch_tool_result_error',\n                errorCode: part.content.error_code,\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: toolNameMapping.toCustomToolName('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            });\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: toolNameMapping.toCustomToolName('web_search'),\n              isError: true,\n              result: {\n                type: 'web_search_tool_result_error',\n                errorCode: part.content.error_code,\n              },\n            });\n          }\n          break;\n        }\n\n        // code execution 20250522:\n        case 'code_execution_tool_result': {\n          if (part.content.type === 'code_execution_result') {\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName('code_execution'),\n              result: {\n                type: part.content.type,\n                stdout: part.content.stdout,\n                stderr: part.content.stderr,\n                return_code: part.content.return_code,\n                content: part.content.content ?? [],\n              },\n            });\n          } else if (part.content.type === 'encrypted_code_execution_result') {\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName('code_execution'),\n              result: {\n                type: part.content.type,\n                encrypted_stdout: part.content.encrypted_stdout,\n                stderr: part.content.stderr,\n                return_code: part.content.return_code,\n                content: part.content.content ?? [],\n              },\n            });\n          } else if (part.content.type === 'code_execution_tool_result_error') {\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName('code_execution'),\n              isError: true,\n              result: {\n                type: 'code_execution_tool_result_error',\n                errorCode: part.content.error_code,\n              },\n            });\n          }\n          break;\n        }\n\n        // code execution 20250825:\n        case 'bash_code_execution_tool_result':\n        case 'text_editor_code_execution_tool_result': {\n          content.push({\n            type: 'tool-result',\n            toolCallId: part.tool_use_id,\n            toolName: toolNameMapping.toCustomToolName('code_execution'),\n            result: part.content,\n          });\n          break;\n        }\n\n        // tool search tool results:\n        case 'tool_search_tool_result': {\n          let providerToolName = serverToolCalls[part.tool_use_id];\n\n          if (providerToolName == null) {\n            const bm25CustomName = toolNameMapping.toCustomToolName(\n              'tool_search_tool_bm25',\n            );\n            const regexCustomName = toolNameMapping.toCustomToolName(\n              'tool_search_tool_regex',\n            );\n\n            if (bm25CustomName !== 'tool_search_tool_bm25') {\n              providerToolName = 'tool_search_tool_bm25';\n            } else if (regexCustomName !== 'tool_search_tool_regex') {\n              providerToolName = 'tool_search_tool_regex';\n            } else {\n              providerToolName = 'tool_search_tool_regex';\n            }\n          }\n\n          if (part.content.type === 'tool_search_tool_search_result') {\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName(providerToolName),\n              result: part.content.tool_references.map(ref => ({\n                type: ref.type,\n                toolName: ref.tool_name,\n              })),\n            });\n          } else {\n            content.push({\n              type: 'tool-result',\n              toolCallId: part.tool_use_id,\n              toolName: toolNameMapping.toCustomToolName(providerToolName),\n              isError: true,\n              result: {\n                type: 'tool_search_tool_result_error',\n                errorCode: part.content.error_code,\n              },\n            });\n          }\n          break;\n        }\n      }\n    }\n\n    return {\n      content,\n      finishReason: {\n        unified: mapAnthropicStopReason({\n          finishReason: response.stop_reason,\n          isJsonResponseFromTool,\n        }),\n        raw: response.stop_reason ?? undefined,\n      },\n      usage: convertAnthropicMessagesUsage({ usage: response.usage }),\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        const anthropicMetadata = {\n          usage: response.usage as JSONObject,\n          cacheCreationInputTokens:\n            response.usage.cache_creation_input_tokens ?? null,\n          stopSequence: response.stop_sequence ?? null,\n\n          iterations: response.usage.iterations\n            ? response.usage.iterations.map(iter => ({\n                type: iter.type,\n                inputTokens: iter.input_tokens,\n                outputTokens: iter.output_tokens,\n              }))\n            : null,\n          container: response.container\n            ? {\n                expiresAt: response.container.expires_at,\n                id: response.container.id,\n                skills:\n                  response.container.skills?.map(skill => ({\n                    type: skill.type,\n                    skillId: skill.skill_id,\n                    version: skill.version,\n                  })) ?? null,\n              }\n            : null,\n          contextManagement:\n            mapAnthropicResponseContextManagement(\n              response.context_management,\n            ) ?? null,\n        } satisfies AnthropicMessageMetadata;\n\n        const providerMetadata: SharedV3ProviderMetadata = {\n          anthropic: anthropicMetadata,\n        };\n\n        if (usedCustomProviderKey && providerOptionsName !== 'anthropic') {\n          providerMetadata[providerOptionsName] = anthropicMetadata;\n        }\n\n        return providerMetadata;\n      })(),\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const {\n      args: body,\n      warnings,\n      betas,\n      usesJsonResponseTool,\n      toolNameMapping,\n      providerOptionsName,\n      usedCustomProviderKey,\n    } = await this.getArgs({\n      ...options,\n      stream: true,\n      userSuppliedBetas: await this.getBetasFromHeaders(options.headers),\n    });\n\n    // Extract citation documents for response processing\n    const citationDocuments = [\n      ...this.extractCitationDocuments(options.prompt),\n    ];\n\n    const markCodeExecutionDynamic = hasWebTool20260209WithoutCodeExecution(\n      body.tools,\n    );\n\n    const url = this.buildRequestUrl(true);\n    const { responseHeaders, value: response } = await postJsonToApi({\n      url,\n      headers: await this.getHeaders({ betas, headers: options.headers }),\n      body: this.transformRequestBody(body, betas),\n      failedResponseHandler: anthropicFailedResponseHandler,\n      successfulResponseHandler: createEventSourceResponseHandler(\n        anthropicMessagesChunkSchema,\n      ),\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    let finishReason: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    const usage: AnthropicMessagesUsage = {\n      input_tokens: 0,\n      output_tokens: 0,\n      cache_creation_input_tokens: 0,\n      cache_read_input_tokens: 0,\n      iterations: null,\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          firstDelta: boolean;\n          providerToolName?: string;\n          caller?: {\n            type:\n              | 'code_execution_20250825'\n              | 'code_execution_20260120'\n              | 'direct';\n            toolId?: string;\n          };\n        }\n      | { type: 'text' | 'reasoning' }\n    > = {};\n    const mcpToolCalls: Record<string, LanguageModelV3ToolCall> = {};\n    const serverToolCalls: Record<string, string> = {}; // tool_use_id -> provider tool name\n\n    let contextManagement:\n      | AnthropicMessageMetadata['contextManagement']\n      | null = null;\n    let rawUsage: JSONObject | undefined = undefined;\n    let cacheCreationInputTokens: number | null = null;\n    let stopSequence: string | null = null;\n    let container: AnthropicMessageMetadata['container'] | null = null;\n    let isJsonResponseFromTool = false;\n\n    let blockType:\n      | 'text'\n      | 'thinking'\n      | 'tool_use'\n      | 'redacted_thinking'\n      | 'server_tool_use'\n      | 'web_fetch_tool_result'\n      | 'web_search_tool_result'\n      | 'code_execution_tool_result'\n      | 'text_editor_code_execution_tool_result'\n      | 'bash_code_execution_tool_result'\n      | 'tool_search_tool_result'\n      | 'mcp_tool_use'\n      | 'mcp_tool_result'\n      | 'compaction'\n      | undefined = undefined;\n\n    const generateId = this.generateId;\n\n    const transformedStream = response.pipeThrough(\n      new TransformStream<\n        ParseResult<InferSchema<typeof anthropicMessagesChunkSchema>>,\n        LanguageModelV3StreamPart\n      >({\n        start(controller) {\n          controller.enqueue({ type: 'stream-start', warnings });\n        },\n\n        transform(chunk, controller) {\n          if (options.includeRawChunks) {\n            controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n          }\n\n          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 part = value.content_block;\n              const contentBlockType = part.type;\n              blockType = contentBlockType;\n\n              switch (contentBlockType) {\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                    return;\n                  }\n\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: part.data,\n                      } satisfies AnthropicReasoningMetadata,\n                    },\n                  });\n                  return;\n                }\n\n                case 'compaction': {\n                  contentBlocks[value.index] = { type: 'text' };\n                  controller.enqueue({\n                    type: 'text-start',\n                    id: String(value.index),\n                    providerMetadata: {\n                      anthropic: {\n                        type: 'compaction',\n                      },\n                    },\n                  });\n                  return;\n                }\n\n                case 'tool_use': {\n                  const isJsonResponseTool =\n                    usesJsonResponseTool && part.name === 'json';\n\n                  if (isJsonResponseTool) {\n                    isJsonResponseFromTool = true;\n\n                    contentBlocks[value.index] = { type: 'text' };\n\n                    controller.enqueue({\n                      type: 'text-start',\n                      id: String(value.index),\n                    });\n                  } else {\n                    // Extract caller info for type-safe access\n                    const caller = part.caller;\n                    const callerInfo = caller\n                      ? {\n                          type: caller.type,\n                          toolId:\n                            'tool_id' in caller ? caller.tool_id : undefined,\n                        }\n                      : undefined;\n\n                    // Programmatic tool calling: for deferred tool calls from code_execution,\n                    // input may be present directly in content_block_start.\n                    // Only use if non-empty (empty {} means input comes via deltas)\n                    const hasNonEmptyInput =\n                      part.input && Object.keys(part.input).length > 0;\n                    const initialInput = hasNonEmptyInput\n                      ? JSON.stringify(part.input)\n                      : '';\n\n                    contentBlocks[value.index] = {\n                      type: 'tool-call',\n                      toolCallId: part.id,\n                      toolName: part.name,\n                      input: initialInput,\n                      firstDelta: initialInput.length === 0,\n                      ...(callerInfo && { caller: callerInfo }),\n                    };\n\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: part.id,\n                      toolName: part.name,\n                    });\n                  }\n                  return;\n                }\n\n                case 'server_tool_use': {\n                  if (\n                    [\n                      'web_fetch',\n                      'web_search',\n                      // code execution 20250825:\n                      'code_execution',\n                      // code execution 20250825 text editor:\n                      'text_editor_code_execution',\n                      // code execution 20250825 bash:\n                      'bash_code_execution',\n                    ].includes(part.name)\n                  ) {\n                    // map tool names for the code execution 20250825 tool:\n                    const providerToolName =\n                      part.name === 'text_editor_code_execution' ||\n                      part.name === 'bash_code_execution'\n                        ? 'code_execution'\n                        : part.name;\n\n                    const customToolName =\n                      toolNameMapping.toCustomToolName(providerToolName);\n\n                    // Tools like 'web_fetch_20260209' provide input data here.\n                    // Other tools like 'code_execution_20260120' provide input data via deltas.\n                    // So we only use this if it's non-empty to avoid conflicts.\n                    const finalInput =\n                      part.input != null &&\n                      typeof part.input === 'object' &&\n                      Object.keys(part.input).length > 0\n                        ? JSON.stringify(part.input)\n                        : '';\n\n                    contentBlocks[value.index] = {\n                      type: 'tool-call',\n                      toolCallId: part.id,\n                      toolName: customToolName,\n                      input: finalInput,\n                      providerExecuted: true,\n                      ...(markCodeExecutionDynamic &&\n                      providerToolName === 'code_execution'\n                        ? { dynamic: true }\n                        : {}),\n                      firstDelta: true,\n                      providerToolName: part.name,\n                    };\n\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: part.id,\n                      toolName: customToolName,\n                      providerExecuted: true,\n                      ...(markCodeExecutionDynamic &&\n                      providerToolName === 'code_execution'\n                        ? { dynamic: true }\n                        : {}),\n                    });\n                  } else if (\n                    part.name === 'tool_search_tool_regex' ||\n                    part.name === 'tool_search_tool_bm25'\n                  ) {\n                    serverToolCalls[part.id] = part.name;\n                    const customToolName = toolNameMapping.toCustomToolName(\n                      part.name,\n                    );\n\n                    contentBlocks[value.index] = {\n                      type: 'tool-call',\n                      toolCallId: part.id,\n                      toolName: customToolName,\n                      input: '',\n                      providerExecuted: true,\n                      firstDelta: true,\n                      providerToolName: part.name,\n                    };\n\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: part.id,\n                      toolName: customToolName,\n                      providerExecuted: true,\n                    });\n                  }\n\n                  return;\n                }\n\n                case 'web_fetch_tool_result': {\n                  if (part.content.type === 'web_fetch_result') {\n                    citationDocuments.push({\n                      title: part.content.content.title ?? part.content.url,\n                      mediaType: part.content.content.source.media_type,\n                    });\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName: toolNameMapping.toCustomToolName('web_fetch'),\n                      result: {\n                        type: 'web_fetch_result',\n                        url: part.content.url,\n                        retrievedAt: part.content.retrieved_at,\n                        content: {\n                          type: part.content.content.type,\n                          title: part.content.content.title,\n                          citations: part.content.content.citations,\n                          source: {\n                            type: part.content.content.source.type,\n                            mediaType: part.content.content.source.media_type,\n                            data: part.content.content.source.data,\n                          },\n                        },\n                      },\n                    });\n                  } else if (\n                    part.content.type === 'web_fetch_tool_result_error'\n                  ) {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName: toolNameMapping.toCustomToolName('web_fetch'),\n                      isError: true,\n                      result: {\n                        type: 'web_fetch_tool_result_error',\n                        errorCode: part.content.error_code,\n                      },\n                    });\n                  }\n\n                  return;\n                }\n\n                case 'web_search_tool_result': {\n                  if (Array.isArray(part.content)) {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName: toolNameMapping.toCustomToolName('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                    });\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: toolNameMapping.toCustomToolName('web_search'),\n                      isError: true,\n                      result: {\n                        type: 'web_search_tool_result_error',\n                        errorCode: part.content.error_code,\n                      },\n                    });\n                  }\n                  return;\n                }\n\n                // code execution 20250522:\n                case 'code_execution_tool_result': {\n                  if (part.content.type === 'code_execution_result') {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName:\n                        toolNameMapping.toCustomToolName('code_execution'),\n                      result: {\n                        type: part.content.type,\n                        stdout: part.content.stdout,\n                        stderr: part.content.stderr,\n                        return_code: part.content.return_code,\n                        content: part.content.content ?? [],\n                      },\n                    });\n                  } else if (\n                    part.content.type === 'encrypted_code_execution_result'\n                  ) {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName:\n                        toolNameMapping.toCustomToolName('code_execution'),\n                      result: {\n                        type: part.content.type,\n                        encrypted_stdout: part.content.encrypted_stdout,\n                        stderr: part.content.stderr,\n                        return_code: part.content.return_code,\n                        content: part.content.content ?? [],\n                      },\n                    });\n                  } else if (\n                    part.content.type === 'code_execution_tool_result_error'\n                  ) {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName:\n                        toolNameMapping.toCustomToolName('code_execution'),\n                      isError: true,\n                      result: {\n                        type: 'code_execution_tool_result_error',\n                        errorCode: part.content.error_code,\n                      },\n                    });\n                  }\n\n                  return;\n                }\n\n                // code execution 20250825:\n                case 'bash_code_execution_tool_result':\n                case 'text_editor_code_execution_tool_result': {\n                  controller.enqueue({\n                    type: 'tool-result',\n                    toolCallId: part.tool_use_id,\n                    toolName:\n                      toolNameMapping.toCustomToolName('code_execution'),\n                    result: part.content,\n                  });\n                  return;\n                }\n\n                // tool search tool results:\n                case 'tool_search_tool_result': {\n                  let providerToolName = serverToolCalls[part.tool_use_id];\n\n                  if (providerToolName == null) {\n                    const bm25CustomName = toolNameMapping.toCustomToolName(\n                      'tool_search_tool_bm25',\n                    );\n                    const regexCustomName = toolNameMapping.toCustomToolName(\n                      'tool_search_tool_regex',\n                    );\n\n                    if (bm25CustomName !== 'tool_search_tool_bm25') {\n                      providerToolName = 'tool_search_tool_bm25';\n                    } else if (regexCustomName !== 'tool_search_tool_regex') {\n                      providerToolName = 'tool_search_tool_regex';\n                    } else {\n                      providerToolName = 'tool_search_tool_regex';\n                    }\n                  }\n\n                  if (part.content.type === 'tool_search_tool_search_result') {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName:\n                        toolNameMapping.toCustomToolName(providerToolName),\n                      result: part.content.tool_references.map(ref => ({\n                        type: ref.type,\n                        toolName: ref.tool_name,\n                      })),\n                    });\n                  } else {\n                    controller.enqueue({\n                      type: 'tool-result',\n                      toolCallId: part.tool_use_id,\n                      toolName:\n                        toolNameMapping.toCustomToolName(providerToolName),\n                      isError: true,\n                      result: {\n                        type: 'tool_search_tool_result_error',\n                        errorCode: part.content.error_code,\n                      },\n                    });\n                  }\n                  return;\n                }\n\n                case 'mcp_tool_use': {\n                  mcpToolCalls[part.id] = {\n                    type: 'tool-call',\n                    toolCallId: part.id,\n                    toolName: part.name,\n                    input: JSON.stringify(part.input),\n                    providerExecuted: true,\n                    dynamic: true,\n                    providerMetadata: {\n                      anthropic: {\n                        type: 'mcp-tool-use',\n                        serverName: part.server_name,\n                      },\n                    },\n                  };\n                  controller.enqueue(mcpToolCalls[part.id]);\n                  return;\n                }\n\n                case 'mcp_tool_result': {\n                  controller.enqueue({\n                    type: 'tool-result',\n                    toolCallId: part.tool_use_id,\n                    toolName: mcpToolCalls[part.tool_use_id].toolName,\n                    isError: part.is_error,\n                    result: part.content,\n                    dynamic: true,\n                    providerMetadata:\n                      mcpToolCalls[part.tool_use_id].providerMetadata,\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                    const isJsonResponseTool =\n                      usesJsonResponseTool && contentBlock.toolName === 'json';\n\n                    if (!isJsonResponseTool) {\n                      controller.enqueue({\n                        type: 'tool-input-end',\n                        id: contentBlock.toolCallId,\n                      });\n\n                      // For code_execution, inject 'programmatic-tool-call' type\n                      // when input has { code } format (programmatic tool calling)\n                      let finalInput =\n                        contentBlock.input === '' ? '{}' : contentBlock.input;\n                      if (contentBlock.providerToolName === 'code_execution') {\n                        try {\n                          const parsed = JSON.parse(finalInput);\n                          if (\n                            parsed != null &&\n                            typeof parsed === 'object' &&\n                            'code' in parsed &&\n                            !('type' in parsed)\n                          ) {\n                            finalInput = JSON.stringify({\n                              type: 'programmatic-tool-call',\n                              ...parsed,\n                            });\n                          }\n                        } catch {\n                          // ignore parse errors, use original input\n                        }\n                      }\n\n                      controller.enqueue({\n                        type: 'tool-call',\n                        toolCallId: contentBlock.toolCallId,\n                        toolName: contentBlock.toolName,\n                        input: finalInput,\n                        providerExecuted: contentBlock.providerExecuted,\n                        ...(markCodeExecutionDynamic &&\n                        contentBlock.providerToolName === 'code_execution'\n                          ? { dynamic: true }\n                          : {}),\n                        ...(contentBlock.caller && {\n                          providerMetadata: {\n                            anthropic: {\n                              caller: contentBlock.caller,\n                            },\n                          },\n                        }),\n                      });\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\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; // excluding the text-start will also exclude the text-end\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 'compaction_delta': {\n                  if (value.delta.content != null) {\n                    controller.enqueue({\n                      type: 'text-delta',\n                      id: String(value.index),\n                      delta: value.delta.content,\n                    });\n                  }\n\n                  return;\n                }\n\n                case 'input_json_delta': {\n                  const contentBlock = contentBlocks[value.index];\n                  let delta = value.delta.partial_json;\n\n                  // skip empty deltas to enable replacing the first character\n                  // in the code execution 20250825 tool.\n                  if (delta.length === 0) {\n                    return;\n                  }\n\n                  if (isJsonResponseFromTool) {\n                    if (contentBlock?.type !== 'text') {\n                      return; // exclude reasoning\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                    // for the code execution 20250825, we need to add\n                    // the type to the delta and change the tool name.\n                    if (\n                      contentBlock.firstDelta &&\n                      (contentBlock.providerToolName ===\n                        'bash_code_execution' ||\n                        contentBlock.providerToolName ===\n                          'text_editor_code_execution')\n                    ) {\n                      delta = `{\"type\": \"${contentBlock.providerToolName}\",${delta.substring(1)}`;\n                    }\n\n                    controller.enqueue({\n                      type: 'tool-input-delta',\n                      id: contentBlock.toolCallId,\n                      delta,\n                    });\n\n                    contentBlock.input += delta;\n                    contentBlock.firstDelta = false;\n                  }\n\n                  return;\n                }\n\n                case 'citations_delta': {\n                  const citation = value.delta.citation;\n                  const source = createCitationSource(\n                    citation,\n                    citationDocuments,\n                    generateId,\n                  );\n\n                  if (source) {\n                    controller.enqueue(source);\n                  }\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.input_tokens = value.message.usage.input_tokens;\n              usage.cache_read_input_tokens =\n                value.message.usage.cache_read_input_tokens ?? 0;\n              usage.cache_creation_input_tokens =\n                value.message.usage.cache_creation_input_tokens ?? 0;\n\n              rawUsage = {\n                ...(value.message.usage as JSONObject),\n              };\n\n              cacheCreationInputTokens =\n                value.message.usage.cache_creation_input_tokens ?? null;\n\n              if (value.message.container != null) {\n                container = {\n                  expiresAt: value.message.container.expires_at,\n                  id: value.message.container.id,\n                  skills: null,\n                };\n              }\n\n              if (value.message.stop_reason != null) {\n                finishReason = {\n                  unified: mapAnthropicStopReason({\n                    finishReason: value.message.stop_reason,\n                    isJsonResponseFromTool,\n                  }),\n                  raw: value.message.stop_reason,\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              // Programmatic tool calling: process pre-populated content blocks\n              // (for deferred tool calls, content may be in message_start)\n              if (value.message.content != null) {\n                for (\n                  let contentIndex = 0;\n                  contentIndex < value.message.content.length;\n                  contentIndex++\n                ) {\n                  const part = value.message.content[contentIndex];\n                  if (part.type === 'tool_use') {\n                    const caller = part.caller;\n                    const callerInfo = caller\n                      ? {\n                          type: caller.type,\n                          toolId:\n                            'tool_id' in caller ? caller.tool_id : undefined,\n                        }\n                      : undefined;\n\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: part.id,\n                      toolName: part.name,\n                    });\n\n                    const inputStr = JSON.stringify(part.input ?? {});\n                    controller.enqueue({\n                      type: 'tool-input-delta',\n                      id: part.id,\n                      delta: inputStr,\n                    });\n\n                    controller.enqueue({\n                      type: 'tool-input-end',\n                      id: part.id,\n                    });\n\n                    controller.enqueue({\n                      type: 'tool-call',\n                      toolCallId: part.id,\n                      toolName: part.name,\n                      input: inputStr,\n                      ...(callerInfo && {\n                        providerMetadata: {\n                          anthropic: {\n                            caller: callerInfo,\n                          },\n                        },\n                      }),\n                    });\n                  }\n                }\n              }\n\n              return;\n            }\n\n            case 'message_delta': {\n              if (\n                value.usage.input_tokens != null &&\n                usage.input_tokens !== value.usage.input_tokens\n              ) {\n                usage.input_tokens = value.usage.input_tokens;\n              }\n              usage.output_tokens = value.usage.output_tokens;\n\n              if (value.usage.cache_read_input_tokens != null) {\n                usage.cache_read_input_tokens =\n                  value.usage.cache_read_input_tokens;\n              }\n              if (value.usage.cache_creation_input_tokens != null) {\n                usage.cache_creation_input_tokens =\n                  value.usage.cache_creation_input_tokens;\n                cacheCreationInputTokens =\n                  value.usage.cache_creation_input_tokens;\n              }\n              if (value.usage.iterations != null) {\n                usage.iterations = value.usage.iterations;\n              }\n\n              finishReason = {\n                unified: mapAnthropicStopReason({\n                  finishReason: value.delta.stop_reason,\n                  isJsonResponseFromTool,\n                }),\n                raw: value.delta.stop_reason ?? undefined,\n              };\n\n              stopSequence = value.delta.stop_sequence ?? null;\n              container =\n                value.delta.container != null\n                  ? {\n                      expiresAt: value.delta.container.expires_at,\n                      id: value.delta.container.id,\n                      skills:\n                        value.delta.container.skills?.map(skill => ({\n                          type: skill.type,\n                          skillId: skill.skill_id,\n                          version: skill.version,\n                        })) ?? null,\n                    }\n                  : null;\n\n              if (value.context_management) {\n                contextManagement = mapAnthropicResponseContextManagement(\n                  value.context_management,\n                );\n              }\n\n              rawUsage = {\n                ...rawUsage,\n                ...(value.usage as JSONObject),\n              };\n\n              return;\n            }\n\n            case 'message_stop': {\n              const anthropicMetadata = {\n                usage: (rawUsage as JSONObject) ?? null,\n                cacheCreationInputTokens,\n                stopSequence,\n                iterations: usage.iterations\n                  ? usage.iterations.map(iter => ({\n                      type: iter.type,\n                      inputTokens: iter.input_tokens,\n                      outputTokens: iter.output_tokens,\n                    }))\n                  : null,\n                container,\n                contextManagement,\n              } satisfies AnthropicMessageMetadata;\n\n              const providerMetadata: SharedV3ProviderMetadata = {\n                anthropic: anthropicMetadata,\n              };\n\n              if (\n                usedCustomProviderKey &&\n                providerOptionsName !== 'anthropic'\n              ) {\n                providerMetadata[providerOptionsName] = anthropicMetadata;\n              }\n\n              controller.enqueue({\n                type: 'finish',\n                finishReason,\n                usage: convertAnthropicMessagesUsage({ usage, rawUsage }),\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\n    // The first chunk needs to be pulled immediately to check if it is an error\n    const [streamForFirstChunk, streamForConsumer] = transformedStream.tee();\n\n    const firstChunkReader = streamForFirstChunk.getReader();\n    try {\n      await firstChunkReader.read(); // streamStart comes first, ignored\n\n      let result = await firstChunkReader.read();\n\n      // when raw chunks are enabled, the first chunk is a raw chunk, so we need to read the next chunk\n      if (result.value?.type === 'raw') {\n        result = await firstChunkReader.read();\n      }\n\n      // The Anthropic API returns 200 responses when there are overloaded errors.\n      // We handle the case where the first chunk is an error here and transform\n      // it into an APICallError.\n      if (result.value?.type === 'error') {\n        const error = result.value.error as { message: string; type: string };\n\n        throw new APICallError({\n          message: error.message,\n          url,\n          requestBodyValues: body,\n          statusCode: error.type === 'overloaded_error' ? 529 : 500,\n          responseHeaders,\n          responseBody: JSON.stringify(error),\n          isRetryable: error.type === 'overloaded_error',\n        });\n      }\n    } finally {\n      firstChunkReader.cancel().catch(() => {});\n      firstChunkReader.releaseLock();\n    }\n\n    return {\n      stream: streamForConsumer,\n      request: { body },\n      response: { headers: responseHeaders },\n    };\n  }\n}\n\n/**\n * Returns the capabilities of a Claude model that are used for defaults and feature selection.\n *\n * @see https://docs.claude.com/en/docs/about-claude/models/overview#model-comparison-table\n * @see https://platform.claude.com/docs/en/build-with-claude/structured-outputs\n */\nfunction getModelCapabilities(modelId: string): {\n  maxOutputTokens: number;\n  supportsStructuredOutput: boolean;\n  isKnownModel: boolean;\n} {\n  if (\n    modelId.includes('claude-sonnet-4-6') ||\n    modelId.includes('claude-opus-4-6')\n  ) {\n    return {\n      maxOutputTokens: 128000,\n      supportsStructuredOutput: true,\n      isKnownModel: true,\n    };\n  } else if (\n    modelId.includes('claude-sonnet-4-5') ||\n    modelId.includes('claude-opus-4-5') ||\n    modelId.includes('claude-haiku-4-5')\n  ) {\n    return {\n      maxOutputTokens: 64000,\n      supportsStructuredOutput: true,\n      isKnownModel: true,\n    };\n  } else if (modelId.includes('claude-opus-4-1')) {\n    return {\n      maxOutputTokens: 32000,\n      supportsStructuredOutput: true,\n      isKnownModel: true,\n    };\n  } else if (modelId.includes('claude-sonnet-4-')) {\n    return {\n      maxOutputTokens: 64000,\n      supportsStructuredOutput: false,\n      isKnownModel: true,\n    };\n  } else if (modelId.includes('claude-opus-4-')) {\n    return {\n      maxOutputTokens: 32000,\n      supportsStructuredOutput: false,\n      isKnownModel: true,\n    };\n  } else if (modelId.includes('claude-3-haiku')) {\n    return {\n      maxOutputTokens: 4096,\n      supportsStructuredOutput: false,\n      isKnownModel: true,\n    };\n  } else {\n    return {\n      maxOutputTokens: 4096,\n      supportsStructuredOutput: false,\n      isKnownModel: false,\n    };\n  }\n}\n\nfunction hasWebTool20260209WithoutCodeExecution(\n  tools: AnthropicTool[] | undefined,\n): boolean {\n  if (!tools) {\n    return false;\n  }\n  let hasWebTool20260209 = false;\n  let hasCodeExecutionTool = false;\n  for (const tool of tools) {\n    if (\n      'type' in tool &&\n      (tool.type === 'web_fetch_20260209' ||\n        tool.type === 'web_search_20260209')\n    ) {\n      hasWebTool20260209 = true;\n      continue;\n    }\n    if (tool.name === 'code_execution') {\n      hasCodeExecutionTool = true;\n      break;\n    }\n  }\n  return hasWebTool20260209 && !hasCodeExecutionTool;\n}\n\nfunction mapAnthropicResponseContextManagement(\n  contextManagement: AnthropicResponseContextManagement | null | undefined,\n): AnthropicMessageMetadata['contextManagement'] | null {\n  return contextManagement\n    ? {\n        appliedEdits: contextManagement.applied_edits\n          .map(edit => {\n            const strategy = edit.type;\n\n            switch (strategy) {\n              case 'clear_tool_uses_20250919':\n                return {\n                  type: edit.type,\n                  clearedToolUses: edit.cleared_tool_uses,\n                  clearedInputTokens: edit.cleared_input_tokens,\n                };\n\n              case 'clear_thinking_20251015':\n                return {\n                  type: edit.type,\n                  clearedThinkingTurns: edit.cleared_thinking_turns,\n                  clearedInputTokens: edit.cleared_input_tokens,\n                };\n\n              case 'compact_20260112':\n                return {\n                  type: edit.type,\n                };\n            }\n          })\n          .filter(edit => edit !== undefined),\n      }\n    : null;\n}\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst bash_20241022InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      command: z.string(),\n      restart: z.boolean().optional(),\n    }),\n  ),\n);\n\nexport const bash_20241022 = createProviderToolFactory<\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  inputSchema: bash_20241022InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst bash_20250124InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      command: z.string(),\n      restart: z.boolean().optional(),\n    }),\n  ),\n);\n\nexport const bash_20250124 = createProviderToolFactory<\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  inputSchema: bash_20250124InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst computer_20241022InputSchema = lazySchema(() =>\n  zodSchema(\n    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\nexport const computer_20241022 = createProviderToolFactory<\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  inputSchema: computer_20241022InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst computer_20250124InputSchema = lazySchema(() =>\n  zodSchema(\n    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\n        .tuple([z.number().int(), z.number().int()])\n        .optional(),\n      text: z.string().optional(),\n    }),\n  ),\n);\n\nexport const computer_20250124 = createProviderToolFactory<\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  inputSchema: computer_20250124InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst computer_20251124InputSchema = lazySchema(() =>\n  zodSchema(\n    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        'zoom',\n      ]),\n      coordinate: z.tuple([z.number().int(), z.number().int()]).optional(),\n      duration: z.number().optional(),\n      region: z\n        .tuple([\n          z.number().int(),\n          z.number().int(),\n          z.number().int(),\n          z.number().int(),\n        ])\n        .optional(),\n      scroll_amount: z.number().optional(),\n      scroll_direction: z.enum(['up', 'down', 'left', 'right']).optional(),\n      start_coordinate: z\n        .tuple([z.number().int(), z.number().int()])\n        .optional(),\n      text: z.string().optional(),\n    }),\n  ),\n);\n\nexport const computer_20251124 = createProviderToolFactory<\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     * - `zoom`: View a specific region of the screen at full resolution. Requires `enableZoom: true` in tool definition. Takes a `region` parameter with coordinates `[x1, y1, x2, y2]` defining top-left and bottom-right corners of the area to inspect.\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      | 'zoom';\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     * [x1, y1, x2, y2]: The coordinates defining the region to zoom into. x1, y1 is the top-left corner and x2, y2 is the bottom-right corner. Required only by `action=zoom`.\n     */\n    region?: [number, number, number, 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     * Enable zoom action. Set to true to allow Claude to zoom into specific screen regions. Default: false.\n     */\n    enableZoom?: boolean;\n  }\n>({\n  id: 'anthropic.computer_20251124',\n  inputSchema: computer_20251124InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst memory_20250818InputSchema = lazySchema(() =>\n  zodSchema(\n    z.discriminatedUnion('command', [\n      z.object({\n        command: z.literal('view'),\n        path: z.string(),\n        view_range: z.tuple([z.number(), z.number()]).optional(),\n      }),\n      z.object({\n        command: z.literal('create'),\n        path: z.string(),\n        file_text: z.string(),\n      }),\n      z.object({\n        command: z.literal('str_replace'),\n        path: z.string(),\n        old_str: z.string(),\n        new_str: z.string(),\n      }),\n      z.object({\n        command: z.literal('insert'),\n        path: z.string(),\n        insert_line: z.number(),\n        insert_text: z.string(),\n      }),\n      z.object({\n        command: z.literal('delete'),\n        path: z.string(),\n      }),\n      z.object({\n        command: z.literal('rename'),\n        old_path: z.string(),\n        new_path: z.string(),\n      }),\n    ]),\n  ),\n);\n\nexport const memory_20250818 = createProviderToolFactory<\n  | { command: 'view'; path: string; view_range?: [number, number] }\n  | { command: 'create'; path: string; file_text: string }\n  | { command: 'str_replace'; path: string; old_str: string; new_str: string }\n  | {\n      command: 'insert';\n      path: string;\n      insert_line: number;\n      insert_text: string;\n    }\n  | { command: 'delete'; path: string }\n  | { command: 'rename'; old_path: string; new_path: string },\n  {}\n>({\n  id: 'anthropic.memory_20250818',\n  inputSchema: memory_20250818InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst textEditor_20241022InputSchema = lazySchema(() =>\n  zodSchema(\n    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      insert_text: z.string().optional(),\n      old_str: z.string().optional(),\n      view_range: z.array(z.number().int()).optional(),\n    }),\n  ),\n);\n\nexport const textEditor_20241022 = createProviderToolFactory<\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).\n     */\n    new_str?: string;\n\n    /**\n     * Required parameter of `insert` command containing the text to insert.\n     */\n    insert_text?: 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  inputSchema: textEditor_20241022InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst textEditor_20250124InputSchema = lazySchema(() =>\n  zodSchema(\n    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      insert_text: z.string().optional(),\n      old_str: z.string().optional(),\n      view_range: z.array(z.number().int()).optional(),\n    }),\n  ),\n);\n\nexport const textEditor_20250124 = createProviderToolFactory<\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).\n     */\n    new_str?: string;\n\n    /**\n     * Required parameter of `insert` command containing the text to insert.\n     */\n    insert_text?: 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  inputSchema: textEditor_20250124InputSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst textEditor_20250429InputSchema = lazySchema(() =>\n  zodSchema(\n    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      insert_text: z.string().optional(),\n      old_str: z.string().optional(),\n      view_range: z.array(z.number().int()).optional(),\n    }),\n  ),\n);\n\nexport const textEditor_20250429 = createProviderToolFactory<\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).\n     */\n    new_str?: string;\n\n    /**\n     * Required parameter of `insert` command containing the text to insert.\n     */\n    insert_text?: 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  inputSchema: textEditor_20250429InputSchema,\n});\n","import {\n  createProviderToolFactoryWithOutputSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Output schema for tool search results - returns tool references\n * that are automatically expanded into full tool definitions by the API.\n */\nexport const toolSearchBm25_20251119OutputSchema = lazySchema(() =>\n  zodSchema(\n    z.array(\n      z.object({\n        type: z.literal('tool_reference'),\n        toolName: z.string(),\n      }),\n    ),\n  ),\n);\n\n/**\n * Input schema for BM25-based tool search.\n * Claude uses natural language queries to search for tools.\n */\nconst toolSearchBm25_20251119InputSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      /**\n       * A natural language query to search for tools.\n       * Claude will use BM25 text search to find relevant tools.\n       */\n      query: z.string(),\n      /**\n       * Maximum number of tools to return. Optional.\n       */\n      limit: z.number().optional(),\n    }),\n  ),\n);\n\nconst factory = createProviderToolFactoryWithOutputSchema<\n  {\n    /**\n     * A natural language query to search for tools.\n     * Claude will use BM25 text search to find relevant tools.\n     */\n    query: string;\n    /**\n     * Maximum number of tools to return. Optional.\n     */\n    limit?: number;\n  },\n  Array<{\n    type: 'tool_reference';\n    /**\n     * The name of the discovered tool.\n     */\n    toolName: string;\n  }>,\n  {}\n>({\n  id: 'anthropic.tool_search_bm25_20251119',\n  inputSchema: toolSearchBm25_20251119InputSchema,\n  outputSchema: toolSearchBm25_20251119OutputSchema,\n  supportsDeferredResults: true,\n});\n\n/**\n * Creates a tool search tool that uses BM25 (natural language) to find tools.\n *\n * The tool search tool enables Claude to work with hundreds or thousands of tools\n * by dynamically discovering and loading them on-demand. Instead of loading all\n * tool definitions into the context window upfront, Claude searches your tool\n * catalog and loads only the tools it needs.\n *\n * When Claude uses this tool, it uses natural language queries (NOT regex patterns)\n * to search for tools using BM25 text search.\n *\n * **Important**: This tool should never have `deferLoading: true` in providerOptions.\n *\n * @example\n * ```ts\n * import { anthropicTools } from '@ai-sdk/anthropic';\n *\n * const tools = {\n *   toolSearch: anthropicTools.toolSearchBm25_20251119(),\n *   // Other tools with deferLoading...\n * };\n * ```\n *\n * @see https://docs.anthropic.com/en/docs/agents-and-tools/tool-search-tool\n */\nexport const toolSearchBm25_20251119 = (\n  args: Parameters<typeof factory>[0] = {},\n) => {\n  return factory(args);\n};\n","import { bash_20241022 } from './tool/bash_20241022';\nimport { bash_20250124 } from './tool/bash_20250124';\nimport { codeExecution_20250522 } from './tool/code-execution_20250522';\nimport { codeExecution_20250825 } from './tool/code-execution_20250825';\nimport { codeExecution_20260120 } from './tool/code-execution_20260120';\nimport { computer_20241022 } from './tool/computer_20241022';\nimport { computer_20250124 } from './tool/computer_20250124';\nimport { computer_20251124 } from './tool/computer_20251124';\nimport { memory_20250818 } from './tool/memory_20250818';\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 { textEditor_20250728 } from './tool/text-editor_20250728';\nimport { toolSearchBm25_20251119 } from './tool/tool-search-bm25_20251119';\nimport { toolSearchRegex_20251119 } from './tool/tool-search-regex_20251119';\nimport { webFetch_20260209 } from './tool/web-fetch-20260209';\nimport { webFetch_20250910 } from './tool/web-fetch-20250910';\nimport { webSearch_20260209 } from './tool/web-search_20260209';\nimport { webSearch_20250305 } from './tool/web-search_20250305';\n\nexport const anthropicTools = {\n  /**\n   * The bash tool enables Claude to execute shell commands in a persistent bash session,\n   * allowing system operations, script execution, and command-line automation.\n   *\n   * Image results are supported.\n   */\n  bash_20241022,\n\n  /**\n   * The bash tool enables Claude to execute shell commands in a persistent bash session,\n   * allowing system operations, script execution, and command-line automation.\n   *\n   * Image results are supported.\n   */\n  bash_20250124,\n\n  /**\n   * Claude can analyze data, create visualizations, perform complex calculations,\n   * run system commands, create and edit files, and process uploaded files directly within\n   * the API conversation.\n   *\n   * The code execution tool allows Claude to run Bash commands and manipulate files,\n   * including writing code, in a secure, sandboxed environment.\n   */\n  codeExecution_20250522,\n\n  /**\n   * Claude can analyze data, create visualizations, perform complex calculations,\n   * run system commands, create and edit files, and process uploaded files directly within\n   * the API conversation.\n   *\n   * The code execution tool allows Claude to run both Python and Bash commands and manipulate files,\n   * including writing code, in a secure, sandboxed environment.\n   *\n   * This is the latest version with enhanced Bash support and file operations.\n   */\n  codeExecution_20250825,\n\n  /**\n   * Claude can analyze data, create visualizations, perform complex calculations,\n   * run system commands, create and edit files, and process uploaded files directly within\n   * the API conversation.\n   *\n   * The code execution tool allows Claude to run both Python and Bash commands and manipulate files,\n   * including writing code, in a secure, sandboxed environment.\n   *\n   * This is the recommended version. Does not require a beta header.\n   *\n   * Supported models: Claude Opus 4.6, Sonnet 4.6, Sonnet 4.5, Opus 4.5\n   */\n  codeExecution_20260120,\n\n  /**\n   * Claude can interact with computer environments through the computer use tool, which\n   * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction.\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   * Claude can interact with computer environments through the computer use tool, which\n   * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction.\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_20250124,\n\n  /**\n   * Claude can interact with computer environments through the computer use tool, which\n   * provides screenshot capabilities and mouse/keyboard control for autonomous desktop interaction.\n   *\n   * This version adds the zoom action for detailed screen region inspection.\n   *\n   * Image results are supported.\n   *\n   * Supported models: Claude Opus 4.5\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 enableZoom - Enable zoom action. Set to true to allow Claude to zoom into specific screen regions. Default: false.\n   */\n  computer_20251124,\n\n  /**\n   * The memory tool enables Claude to store and retrieve information across conversations through a memory file directory.\n   * Claude can create, read, update, and delete files that persist between sessions,\n   * allowing it to build knowledge over time without keeping everything in the context window.\n   * The memory tool operates client-side—you control where and how the data is stored through your own infrastructure.\n   *\n   * Supported models: Claude Sonnet 4.5, Claude Sonnet 4, Claude Opus 4.1, Claude Opus 4.\n   */\n  memory_20250818,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files,\n   * helping you debug, fix, and improve your code or other text documents. This allows Claude\n   * to directly interact with your files, providing hands-on assistance rather than just suggesting changes.\n   *\n   * Supported models: Claude Sonnet 3.5\n   */\n  textEditor_20241022,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files,\n   * helping you debug, fix, and improve your code or other text documents. This allows Claude\n   * to directly interact with your files, providing hands-on assistance rather than just suggesting changes.\n   *\n   * Supported models: Claude Sonnet 3.7\n   */\n  textEditor_20250124,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files,\n   * helping you debug, fix, and improve your code or other text documents. This allows Claude\n   * to directly interact with your files, providing hands-on assistance rather than just suggesting changes.\n   *\n   * Note: This version does not support the \"undo_edit\" command.\n   *\n   * @deprecated Use textEditor_20250728 instead\n   */\n  textEditor_20250429,\n\n  /**\n   * Claude can use an Anthropic-defined text editor tool to view and modify text files,\n   * helping you debug, fix, and improve your code or other text documents. This allows Claude\n   * to directly interact with your files, providing hands-on assistance rather than just suggesting changes.\n   *\n   * Note: This version does not support the \"undo_edit\" command and adds optional max_characters parameter.\n   *\n   * Supported models: Claude Sonnet 4, Opus 4, and Opus 4.1\n   *\n   * @param maxCharacters - Optional maximum number of characters to view in the file\n   */\n  textEditor_20250728,\n\n  /**\n   * Creates a web fetch tool that gives Claude direct access to real-time web content.\n   *\n   * @param maxUses - The max_uses parameter limits the number of web fetches performed\n   * @param allowedDomains - Only fetch from these domains\n   * @param blockedDomains - Never fetch from these domains\n   * @param citations - Unlike web search where citations are always enabled, citations are optional for web fetch. Set \"citations\": {\"enabled\": true} to enable Claude to cite specific passages from fetched documents.\n   * @param maxContentTokens - The max_content_tokens parameter limits the amount of content that will be included in the context.\n   */\n  webFetch_20250910,\n\n  /**\n   * Creates a web fetch tool that gives Claude direct access to real-time web content.\n   *\n   * @param maxUses - The max_uses parameter limits the number of web fetches performed\n   * @param allowedDomains - Only fetch from these domains\n   * @param blockedDomains - Never fetch from these domains\n   * @param citations - Unlike web search where citations are always enabled, citations are optional for web fetch. Set \"citations\": {\"enabled\": true} to enable Claude to cite specific passages from fetched documents.\n   * @param maxContentTokens - The max_content_tokens parameter limits the amount of content that will be included in the context.\n   */\n  webFetch_20260209,\n\n  /**\n   * Creates a web search tool that gives Claude direct access to real-time web content.\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  /**\n   * Creates a web search tool that gives Claude direct access to real-time web content.\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_20260209,\n\n  /**\n   * Creates a tool search tool that uses regex patterns to find tools.\n   *\n   * The tool search tool enables Claude to work with hundreds or thousands of tools\n   * by dynamically discovering and loading them on-demand. Instead of loading all\n   * tool definitions into the context window upfront, Claude searches your tool\n   * catalog and loads only the tools it needs.\n   *\n   * Use `providerOptions: { anthropic: { deferLoading: true } }` on other tools\n   * to mark them for deferred loading.\n   *\n   * Supported models: Claude Opus 4.5, Claude Sonnet 4.5\n   */\n  toolSearchRegex_20251119,\n\n  /**\n   * Creates a tool search tool that uses BM25 (natural language) to find tools.\n   *\n   * The tool search tool enables Claude to work with hundreds or thousands of tools\n   * by dynamically discovering and loading them on-demand. Instead of loading all\n   * tool definitions into the context window upfront, Claude searches your tool\n   * catalog and loads only the tools it needs.\n   *\n   * Use `providerOptions: { anthropic: { deferLoading: true } }` on other tools\n   * to mark them for deferred loading.\n   *\n   * Supported models: Claude Opus 4.5, Claude Sonnet 4.5\n   */\n  toolSearchBm25_20251119,\n};\n","import {\n  InvalidArgumentError,\n  LanguageModelV3,\n  NoSuchModelError,\n  ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  generateId,\n  loadApiKey,\n  loadOptionalSetting,\n  withoutTrailingSlash,\n  withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\nimport { AnthropicMessagesLanguageModel } from './anthropic-messages-language-model';\nimport { AnthropicMessagesModelId } from './anthropic-messages-options';\nimport { anthropicTools } from './anthropic-tools';\n\nexport interface AnthropicProvider extends ProviderV3 {\n  /**\n   * Creates a model for text generation.\n   */\n  (modelId: AnthropicMessagesModelId): LanguageModelV3;\n\n  /**\n   * Creates a model for text generation.\n   */\n  languageModel(modelId: AnthropicMessagesModelId): LanguageModelV3;\n\n  chat(modelId: AnthropicMessagesModelId): LanguageModelV3;\n\n  messages(modelId: AnthropicMessagesModelId): LanguageModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(modelId: string): never;\n\n  /**\n   * Anthropic-specific computer use tool.\n   */\n  tools: typeof anthropicTools;\n}\n\nexport interface AnthropicProviderSettings {\n  /**\n   * Use a different URL prefix for API calls, e.g. to use proxy servers.\n   * The default prefix is `https://api.anthropic.com/v1`.\n   */\n  baseURL?: string;\n\n  /**\n   * API key that is being send using the `x-api-key` header.\n   * It defaults to the `ANTHROPIC_API_KEY` environment variable.\n   * Only one of `apiKey` or `authToken` is required.\n   */\n  apiKey?: string;\n\n  /**\n   * Auth token that is being sent using the `Authorization: Bearer` header.\n   * It defaults to the `ANTHROPIC_AUTH_TOKEN` environment variable.\n   * Only one of `apiKey` or `authToken` is required.\n   */\n  authToken?: string;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Record<string, string>;\n\n  /**\n   * Custom fetch implementation. You can use it as a middleware to intercept requests,\n   * or to provide a custom fetch implementation for e.g. testing.\n   */\n  fetch?: FetchFunction;\n\n  generateId?: () => string;\n\n  /**\n   * Custom provider name\n   * Defaults to 'anthropic.messages'.\n   */\n  name?: string;\n}\n\n/**\n * Create an Anthropic provider instance.\n */\nexport function createAnthropic(\n  options: AnthropicProviderSettings = {},\n): AnthropicProvider {\n  const baseURL =\n    withoutTrailingSlash(\n      loadOptionalSetting({\n        settingValue: options.baseURL,\n        environmentVariableName: 'ANTHROPIC_BASE_URL',\n      }),\n    ) ?? 'https://api.anthropic.com/v1';\n\n  const providerName = options.name ?? 'anthropic.messages';\n\n  // Only error if both are explicitly provided in options\n  if (options.apiKey && options.authToken) {\n    throw new InvalidArgumentError({\n      argument: 'apiKey/authToken',\n      message:\n        'Both apiKey and authToken were provided. Please use only one authentication method.',\n    });\n  }\n\n  const getHeaders = () => {\n    const authHeaders: Record<string, string> = options.authToken\n      ? { Authorization: `Bearer ${options.authToken}` }\n      : {\n          'x-api-key': loadApiKey({\n            apiKey: options.apiKey,\n            environmentVariableName: 'ANTHROPIC_API_KEY',\n            description: 'Anthropic',\n          }),\n        };\n\n    return withUserAgentSuffix(\n      {\n        'anthropic-version': '2023-06-01',\n        ...authHeaders,\n        ...options.headers,\n      },\n      `ai-sdk/anthropic/${VERSION}`,\n    );\n  };\n\n  const createChatModel = (modelId: AnthropicMessagesModelId) =>\n    new AnthropicMessagesLanguageModel(modelId, {\n      provider: providerName,\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n      generateId: options.generateId ?? generateId,\n      supportedUrls: () => ({\n        'image/*': [/^https?:\\/\\/.*$/],\n        'application/pdf': [/^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.specificationVersion = 'v3' as const;\n  provider.languageModel = createChatModel;\n  provider.chat = createChatModel;\n  provider.messages = createChatModel;\n\n  provider.embeddingModel = (modelId: string) => {\n    throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n  };\n  provider.textEmbeddingModel = provider.embeddingModel;\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/**\n * Default Anthropic provider instance.\n */\nexport const anthropic = createAnthropic();\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n  typeof __PACKAGE_VERSION__ !== 'undefined'\n    ? __PACKAGE_VERSION__\n    : '0.0.0-test';\n","import {\n  createJsonErrorResponseHandler,\n  type InferSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst googleErrorDataSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      error: z.object({\n        code: z.number().nullable(),\n        message: z.string(),\n        status: z.string(),\n      }),\n    }),\n  ),\n);\n\nexport type GoogleErrorData = InferSchema<typeof googleErrorDataSchema>;\n\nexport const googleFailedResponseHandler = createJsonErrorResponseHandler({\n  errorSchema: googleErrorDataSchema,\n  errorToMessage: data => data.error.message,\n});\n","import {\n  type InferSchema,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type GoogleGenerativeAIEmbeddingModelId =\n  | 'gemini-embedding-001'\n  | 'gemini-embedding-2-preview'\n  | (string & {});\n\nconst googleEmbeddingContentPartSchema = z.union([\n  z.object({ text: z.string() }),\n  z.object({\n    inlineData: z.object({\n      mimeType: z.string(),\n      data: z.string(),\n    }),\n  }),\n]);\n\nexport const googleEmbeddingModelOptions = lazySchema(() =>\n  zodSchema(\n    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      /**\n       * Optional. Per-value multimodal content parts for embedding non-text\n       * content (images, video, PDF, audio). Each entry corresponds to the\n       * embedding value at the same index and its parts are merged with the\n       * text value in the request. Use `null` for entries that are text-only.\n       *\n       * The array length must match the number of values being embedded. In\n       * the case of a single embedding, the array length must be 1.\n       */\n      content: z\n        .array(z.array(googleEmbeddingContentPartSchema).min(1).nullable())\n        .optional(),\n    }),\n  ),\n);\n\nexport type GoogleEmbeddingModelOptions = InferSchema<\n  typeof googleEmbeddingModelOptions\n>;\n","import {\n  EmbeddingModelV3,\n  TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createJsonResponseHandler,\n  FetchFunction,\n  lazySchema,\n  parseProviderOptions,\n  postJsonToApi,\n  resolve,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleFailedResponseHandler } from './google-error';\nimport {\n  GoogleGenerativeAIEmbeddingModelId,\n  googleEmbeddingModelOptions,\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 implements EmbeddingModelV3 {\n  readonly specificationVersion = 'v3';\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<EmbeddingModelV3['doEmbed']>[0]): Promise<\n    Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n  > {\n    // Parse provider options\n    const googleOptions = await parseProviderOptions({\n      provider: 'google',\n      providerOptions,\n      schema: googleEmbeddingModelOptions,\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    const multimodalContent = googleOptions?.content;\n\n    if (\n      multimodalContent != null &&\n      multimodalContent.length !== values.length\n    ) {\n      throw new Error(\n        `The number of multimodal content entries (${multimodalContent.length}) must match the number of values (${values.length}).`,\n      );\n    }\n\n    // For single embeddings, use the single endpoint\n    if (values.length === 1) {\n      const valueParts = multimodalContent?.[0];\n      const textPart = values[0] ? [{ text: values[0] }] : [];\n      const parts =\n        valueParts != null\n          ? [...textPart, ...valueParts]\n          : [{ text: values[0] }];\n\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,\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        warnings: [],\n        embeddings: [response.embedding.values],\n        usage: undefined,\n        response: { headers: responseHeaders, body: rawValue },\n      };\n    }\n\n    // For multiple values, use the batch endpoint\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, index) => {\n          const valueParts = multimodalContent?.[index];\n          const textPart = value ? [{ text: value }] : [];\n          return {\n            model: `models/${this.modelId}`,\n            content: {\n              role: 'user',\n              parts:\n                valueParts != null\n                  ? [...textPart, ...valueParts]\n                  : [{ text: value }],\n            },\n            outputDimensionality: googleOptions?.outputDimensionality,\n            taskType: googleOptions?.taskType,\n          };\n        }),\n      },\n      failedResponseHandler: googleFailedResponseHandler,\n      successfulResponseHandler: createJsonResponseHandler(\n        googleGenerativeAITextEmbeddingResponseSchema,\n      ),\n      abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    return {\n      warnings: [],\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 = lazySchema(() =>\n  zodSchema(\n    z.object({\n      embeddings: z.array(z.object({ values: z.array(z.number()) })),\n    }),\n  ),\n);\n\n// Schema for single embedding response\nconst googleGenerativeAISingleEmbeddingResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      embedding: z.object({ values: z.array(z.number()) }),\n    }),\n  ),\n);\n","import { LanguageModelV3Usage } from '@ai-sdk/provider';\n\nexport type GoogleGenerativeAITokenDetail = {\n  modality: string;\n  tokenCount: number;\n};\n\nexport type GoogleGenerativeAIUsageMetadata = {\n  promptTokenCount?: number | null;\n  candidatesTokenCount?: number | null;\n  totalTokenCount?: number | null;\n  cachedContentTokenCount?: number | null;\n  thoughtsTokenCount?: number | null;\n  trafficType?: string | null;\n  promptTokensDetails?: GoogleGenerativeAITokenDetail[] | null;\n  candidatesTokensDetails?: GoogleGenerativeAITokenDetail[] | null;\n};\n\nexport function convertGoogleGenerativeAIUsage(\n  usage: GoogleGenerativeAIUsageMetadata | undefined | null,\n): LanguageModelV3Usage {\n  if (usage == null) {\n    return {\n      inputTokens: {\n        total: undefined,\n        noCache: undefined,\n        cacheRead: undefined,\n        cacheWrite: undefined,\n      },\n      outputTokens: {\n        total: undefined,\n        text: undefined,\n        reasoning: undefined,\n      },\n      raw: undefined,\n    };\n  }\n\n  const promptTokens = usage.promptTokenCount ?? 0;\n  const candidatesTokens = usage.candidatesTokenCount ?? 0;\n  const cachedContentTokens = usage.cachedContentTokenCount ?? 0;\n  const thoughtsTokens = usage.thoughtsTokenCount ?? 0;\n\n  return {\n    inputTokens: {\n      total: promptTokens,\n      noCache: promptTokens - cachedContentTokens,\n      cacheRead: cachedContentTokens,\n      cacheWrite: undefined,\n    },\n    outputTokens: {\n      total: candidatesTokens + thoughtsTokens,\n      text: candidatesTokens,\n      reasoning: thoughtsTokens,\n    },\n    raw: usage,\n  };\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  isRoot = true,\n): unknown {\n  // Handle empty object schemas: undefined at root, preserved when nested\n  if (jsonSchema == null) {\n    return undefined;\n  }\n\n  if (isEmptyObjectSchema(jsonSchema)) {\n    if (isRoot) {\n      return undefined;\n    }\n\n    if (typeof jsonSchema === 'object' && jsonSchema.description) {\n      return { type: 'object', description: jsonSchema.description };\n    }\n    return { type: 'object' };\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      const hasNull = type.includes('null');\n      const nonNullTypes = type.filter(t => t !== 'null');\n\n      if (nonNullTypes.length === 0) {\n        // Only null type\n        result.type = 'null';\n      } else {\n        // One or more non-null types: always use anyOf\n        result.anyOf = nonNullTypes.map(t => ({ type: t }));\n        if (hasNull) {\n          result.nullable = true;\n        }\n      }\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, false);\n        return acc;\n      },\n      {} as Record<string, unknown>,\n    );\n  }\n\n  if (items) {\n    result.items = Array.isArray(items)\n      ? items.map(item => convertJSONSchemaToOpenAPISchema(item, false))\n      : convertJSONSchemaToOpenAPISchema(items, false);\n  }\n\n  if (allOf) {\n    result.allOf = allOf.map(item =>\n      convertJSONSchemaToOpenAPISchema(item, false),\n    );\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(\n          nonNullSchemas[0],\n          false,\n        );\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(item =>\n          convertJSONSchemaToOpenAPISchema(item, false),\n        );\n        result.nullable = true;\n      }\n    } else {\n      result.anyOf = anyOf.map(item =>\n        convertJSONSchemaToOpenAPISchema(item, false),\n      );\n    }\n  }\n  if (oneOf) {\n    result.oneOf = oneOf.map(item =>\n      convertJSONSchemaToOpenAPISchema(item, false),\n    );\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  LanguageModelV3Prompt,\n  UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport {\n  GoogleGenerativeAIContent,\n  GoogleGenerativeAIContentPart,\n  GoogleGenerativeAIFunctionResponsePart,\n  GoogleGenerativeAIPrompt,\n} from './google-generative-ai-prompt';\n\nconst dataUrlRegex = /^data:([^;,]+);base64,(.+)$/s;\n\nfunction parseBase64DataUrl(\n  value: string,\n): { mediaType: string; data: string } | undefined {\n  const match = dataUrlRegex.exec(value);\n  if (match == null) {\n    return undefined;\n  }\n\n  return {\n    mediaType: match[1],\n    data: match[2],\n  };\n}\n\nfunction convertUrlToolResultPart(\n  url: string,\n): GoogleGenerativeAIFunctionResponsePart | undefined {\n  // Per https://ai.google.dev/api/caching#FunctionResponsePart, only inline data is supported.\n  // https://docs.cloud.google.com/vertex-ai/generative-ai/docs/model-reference/function-calling#functionresponsepart suggests that this\n  // may be different for Vertex, but this needs to be confirmed and further tested for both APIs.\n  const parsedDataUrl = parseBase64DataUrl(url);\n  if (parsedDataUrl == null) {\n    return undefined;\n  }\n\n  return {\n    inlineData: {\n      mimeType: parsedDataUrl.mediaType,\n      data: parsedDataUrl.data,\n    },\n  };\n}\n\n/*\n * Appends tool result content parts to the message using the functionResponse\n * format with support for multimodal parts (e.g. inline images/files alongside\n * text). This format is supported by Gemini 3+ models.\n */\nfunction appendToolResultParts(\n  parts: GoogleGenerativeAIContentPart[],\n  toolName: string,\n  outputValue: Array<{\n    type: string;\n    [key: string]: unknown;\n  }>,\n): void {\n  const functionResponseParts: GoogleGenerativeAIFunctionResponsePart[] = [];\n  const responseTextParts: string[] = [];\n\n  for (const contentPart of outputValue) {\n    switch (contentPart.type) {\n      case 'text': {\n        responseTextParts.push(contentPart.text as string);\n        break;\n      }\n      case 'image-data':\n      case 'file-data': {\n        functionResponseParts.push({\n          inlineData: {\n            mimeType: contentPart.mediaType as string,\n            data: contentPart.data as string,\n          },\n        });\n        break;\n      }\n      case 'image-url':\n      case 'file-url': {\n        const functionResponsePart = convertUrlToolResultPart(\n          contentPart.url as string,\n        );\n\n        if (functionResponsePart != null) {\n          functionResponseParts.push(functionResponsePart);\n        } else {\n          responseTextParts.push(JSON.stringify(contentPart));\n        }\n        break;\n      }\n      default: {\n        responseTextParts.push(JSON.stringify(contentPart));\n        break;\n      }\n    }\n  }\n\n  parts.push({\n    functionResponse: {\n      name: toolName,\n      response: {\n        name: toolName,\n        content:\n          responseTextParts.length > 0\n            ? responseTextParts.join('\\n')\n            : 'Tool executed successfully.',\n      },\n      ...(functionResponseParts.length > 0\n        ? { parts: functionResponseParts }\n        : {}),\n    },\n  });\n}\n\n/*\n * Appends tool result content parts using a legacy format for pre-Gemini 3\n * models that do not support multimodal parts within functionResponse. Instead,\n * non-text content like images is sent as separate top-level inlineData parts.\n */\nfunction appendLegacyToolResultParts(\n  parts: GoogleGenerativeAIContentPart[],\n  toolName: string,\n  outputValue: Array<{\n    type: string;\n    [key: string]: unknown;\n  }>,\n): void {\n  for (const contentPart of outputValue) {\n    switch (contentPart.type) {\n      case 'text':\n        parts.push({\n          functionResponse: {\n            name: toolName,\n            response: {\n              name: toolName,\n              content: contentPart.text,\n            },\n          },\n        });\n        break;\n      case 'image-data':\n        parts.push(\n          {\n            inlineData: {\n              mimeType: String(contentPart.mediaType),\n              data: String(contentPart.data),\n            },\n          },\n          {\n            text: 'Tool executed successfully and returned this image as a response',\n          },\n        );\n        break;\n      default:\n        parts.push({ text: JSON.stringify(contentPart) });\n        break;\n    }\n  }\n}\n\nexport function convertToGoogleGenerativeAIMessages(\n  prompt: LanguageModelV3Prompt,\n  options?: {\n    isGemmaModel?: boolean;\n    providerOptionsName?: string;\n    supportsFunctionResponseParts?: boolean;\n  },\n): GoogleGenerativeAIPrompt {\n  const systemInstructionParts: Array<{ text: string }> = [];\n  const contents: Array<GoogleGenerativeAIContent> = [];\n  let systemMessagesAllowed = true;\n  const isGemmaModel = options?.isGemmaModel ?? false;\n  const providerOptionsName = options?.providerOptionsName ?? 'google';\n  const supportsFunctionResponseParts =\n    options?.supportsFunctionResponseParts ?? 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 '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              const providerOpts =\n                part.providerOptions?.[providerOptionsName] ??\n                (providerOptionsName !== 'google'\n                  ? part.providerOptions?.google\n                  : part.providerOptions?.vertex);\n              const thoughtSignature =\n                providerOpts?.thoughtSignature != null\n                  ? String(providerOpts.thoughtSignature)\n                  : undefined;\n\n              switch (part.type) {\n                case 'text': {\n                  return part.text.length === 0\n                    ? undefined\n                    : {\n                        text: part.text,\n                        thoughtSignature,\n                      };\n                }\n\n                case 'reasoning': {\n                  return part.text.length === 0\n                    ? undefined\n                    : {\n                        text: part.text,\n                        thought: true,\n                        thoughtSignature,\n                      };\n                }\n\n                case 'file': {\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                    ...(providerOpts?.thought === true\n                      ? { thought: true }\n                      : {}),\n                    thoughtSignature,\n                  };\n                }\n\n                case 'tool-call': {\n                  const serverToolCallId =\n                    providerOpts?.serverToolCallId != null\n                      ? String(providerOpts.serverToolCallId)\n                      : undefined;\n                  const serverToolType =\n                    providerOpts?.serverToolType != null\n                      ? String(providerOpts.serverToolType)\n                      : undefined;\n\n                  if (serverToolCallId && serverToolType) {\n                    return {\n                      toolCall: {\n                        toolType: serverToolType,\n                        args:\n                          typeof part.input === 'string'\n                            ? JSON.parse(part.input)\n                            : part.input,\n                        id: serverToolCallId,\n                      },\n                      thoughtSignature,\n                    };\n                  }\n\n                  return {\n                    functionCall: {\n                      name: part.toolName,\n                      args: part.input,\n                    },\n                    thoughtSignature,\n                  };\n                }\n\n                case 'tool-result': {\n                  const serverToolCallId =\n                    providerOpts?.serverToolCallId != null\n                      ? String(providerOpts.serverToolCallId)\n                      : undefined;\n                  const serverToolType =\n                    providerOpts?.serverToolType != null\n                      ? String(providerOpts.serverToolType)\n                      : undefined;\n\n                  if (serverToolCallId && serverToolType) {\n                    return {\n                      toolResponse: {\n                        toolType: serverToolType,\n                        response:\n                          part.output.type === 'json' ? part.output.value : {},\n                        id: serverToolCallId,\n                      },\n                      thoughtSignature,\n                    };\n                  }\n\n                  return undefined;\n                }\n              }\n            })\n            .filter(part => part !== undefined),\n        });\n\n        break;\n      }\n\n      case 'tool': {\n        systemMessagesAllowed = false;\n\n        const parts: GoogleGenerativeAIContentPart[] = [];\n\n        for (const part of content) {\n          if (part.type === 'tool-approval-response') {\n            continue;\n          }\n\n          const partProviderOpts =\n            part.providerOptions?.[providerOptionsName] ??\n            (providerOptionsName !== 'google'\n              ? part.providerOptions?.google\n              : part.providerOptions?.vertex);\n          const serverToolCallId =\n            partProviderOpts?.serverToolCallId != null\n              ? String(partProviderOpts.serverToolCallId)\n              : undefined;\n          const serverToolType =\n            partProviderOpts?.serverToolType != null\n              ? String(partProviderOpts.serverToolType)\n              : undefined;\n\n          if (serverToolCallId && serverToolType) {\n            const serverThoughtSignature =\n              partProviderOpts?.thoughtSignature != null\n                ? String(partProviderOpts.thoughtSignature)\n                : undefined;\n\n            if (contents.length > 0) {\n              const lastContent = contents[contents.length - 1];\n              if (lastContent.role === 'model') {\n                lastContent.parts.push({\n                  toolResponse: {\n                    toolType: serverToolType,\n                    response:\n                      part.output.type === 'json' ? part.output.value : {},\n                    id: serverToolCallId,\n                  },\n                  thoughtSignature: serverThoughtSignature,\n                });\n                continue;\n              }\n            }\n          }\n\n          const output = part.output;\n\n          if (output.type === 'content') {\n            if (supportsFunctionResponseParts) {\n              appendToolResultParts(parts, part.toolName, output.value);\n            } else {\n              appendLegacyToolResultParts(parts, part.toolName, output.value);\n            }\n          } else {\n            parts.push({\n              functionResponse: {\n                name: part.toolName,\n                response: {\n                  name: part.toolName,\n                  content:\n                    output.type === 'execution-denied'\n                      ? (output.reason ?? 'Tool execution denied.')\n                      : output.value,\n                },\n              },\n            });\n          }\n        }\n\n        contents.push({\n          role: 'user',\n          parts,\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 { InferSchema, lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type GoogleGenerativeAIModelId =\n  // Stable models\n  // https://ai.google.dev/gemini-api/docs/models/gemini\n  | 'gemini-2.0-flash'\n  | 'gemini-2.0-flash-001'\n  | 'gemini-2.0-flash-lite'\n  | 'gemini-2.0-flash-lite-001'\n  | 'gemini-2.5-pro'\n  | 'gemini-2.5-flash'\n  | 'gemini-2.5-flash-image'\n  | 'gemini-2.5-flash-lite'\n  | 'gemini-2.5-flash-lite-preview-09-2025'\n  | 'gemini-2.5-flash-preview-tts'\n  | 'gemini-2.5-pro-preview-tts'\n  | 'gemini-2.5-flash-native-audio-latest'\n  | 'gemini-2.5-flash-native-audio-preview-09-2025'\n  | 'gemini-2.5-flash-native-audio-preview-12-2025'\n  | 'gemini-2.5-computer-use-preview-10-2025'\n  | 'gemini-3-pro-preview'\n  | 'gemini-3-pro-image-preview'\n  | 'gemini-3-flash-preview'\n  | 'gemini-3.1-pro-preview'\n  | 'gemini-3.1-pro-preview-customtools'\n  | 'gemini-3.1-flash-image-preview'\n  | 'gemini-3.1-flash-lite-preview'\n  // latest version\n  // https://ai.google.dev/gemini-api/docs/models#latest\n  | 'gemini-pro-latest'\n  | 'gemini-flash-latest'\n  | 'gemini-flash-lite-latest'\n  | 'deep-research-pro-preview-12-2025'\n  | 'nano-banana-pro-preview'\n  | 'aqa'\n  // Experimental models\n  // https://ai.google.dev/gemini-api/docs/models/experimental-models\n  | 'gemini-robotics-er-1.5-preview'\n  | 'gemma-3-1b-it'\n  | 'gemma-3-4b-it'\n  | 'gemma-3n-e4b-it'\n  | 'gemma-3n-e2b-it'\n  | 'gemma-3-12b-it'\n  | 'gemma-3-27b-it'\n  | (string & {});\n\nexport const googleLanguageModelOptions = lazySchema(() =>\n  zodSchema(\n    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          // https://ai.google.dev/gemini-api/docs/gemini-3?thinking=high#thinking_level\n          thinkingLevel: z\n            .enum(['minimal', 'low', 'medium', 'high'])\n            .optional(),\n        })\n        .optional(),\n\n      /**\n       * Optional.\n       * The name of the cached content used as context to serve the prediction.\n       * Format: 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      /**\n       * Optional. 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      /**\n       * Optional. Defines labels used in billing reports. Available on Vertex AI only.\n       *\n       * https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/add-labels-to-api-calls\n       */\n      labels: z.record(z.string(), z.string()).optional(),\n\n      /**\n       * Optional. If specified, the media resolution specified will be used.\n       *\n       * https://ai.google.dev/api/generate-content#MediaResolution\n       */\n      mediaResolution: z\n        .enum([\n          'MEDIA_RESOLUTION_UNSPECIFIED',\n          'MEDIA_RESOLUTION_LOW',\n          'MEDIA_RESOLUTION_MEDIUM',\n          'MEDIA_RESOLUTION_HIGH',\n        ])\n        .optional(),\n\n      /**\n       * Optional. Configures the image generation aspect ratio for Gemini models.\n       *\n       * https://ai.google.dev/gemini-api/docs/image-generation#aspect_ratios\n       */\n      imageConfig: z\n        .object({\n          aspectRatio: z\n            .enum([\n              '1:1',\n              '2:3',\n              '3:2',\n              '3:4',\n              '4:3',\n              '4:5',\n              '5:4',\n              '9:16',\n              '16:9',\n              '21:9',\n              '1:8',\n              '8:1',\n              '1:4',\n              '4:1',\n            ])\n            .optional(),\n          imageSize: z.enum(['1K', '2K', '4K', '512']).optional(),\n        })\n        .optional(),\n\n      /**\n       * Optional. Configuration for grounding retrieval.\n       * Used to provide location context for Google Maps and Google Search grounding.\n       *\n       * https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-maps\n       */\n      retrievalConfig: z\n        .object({\n          latLng: z\n            .object({\n              latitude: z.number(),\n              longitude: z.number(),\n            })\n            .optional(),\n        })\n        .optional(),\n\n      /**\n       * Optional. When set to true, function call arguments will be streamed\n       * incrementally via partialArgs in streaming responses. Only supported\n       * on the Vertex AI API (not the Gemini API) and only for Gemini 3+\n       * models.\n       *\n       * @default false\n       *\n       * https://docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#streaming-fc\n       */\n      streamFunctionCallArguments: z.boolean().optional(),\n\n      /**\n       * Optional. The service tier to use for the request.\n       */\n      serviceTier: z.enum(['standard', 'flex', 'priority']).optional(),\n    }),\n  ),\n);\n\nexport type GoogleLanguageModelOptions = InferSchema<\n  typeof googleLanguageModelOptions\n>;\n\n// Vertex API requires another service tier format.\nexport const VertexServiceTierMap = {\n  standard: 'SERVICE_TIER_STANDARD',\n  flex: 'SERVICE_TIER_FLEX',\n  priority: 'SERVICE_TIER_PRIORITY',\n} as const;\n","import {\n  LanguageModelV3CallOptions,\n  SharedV3Warning,\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: LanguageModelV3CallOptions['tools'];\n  toolChoice?: LanguageModelV3CallOptions['toolChoice'];\n  modelId: GoogleGenerativeAIModelId;\n}): {\n  tools:\n    | Array<\n        | {\n            functionDeclarations: Array<{\n              name: string;\n              description: string;\n              parameters: unknown;\n            }>;\n          }\n        | Record<string, any>\n      >\n    | undefined;\n  toolConfig:\n    | undefined\n    | {\n        functionCallingConfig?: {\n          mode: 'AUTO' | 'NONE' | 'ANY' | 'VALIDATED';\n          allowedFunctionNames?: string[];\n          streamFunctionCallArguments?: boolean;\n        };\n        includeServerSideToolInvocations?: boolean;\n      };\n  toolWarnings: SharedV3Warning[];\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: SharedV3Warning[] = [];\n\n  const isLatest = (\n    [\n      'gemini-flash-latest',\n      'gemini-flash-lite-latest',\n      'gemini-pro-latest',\n    ] as const satisfies GoogleGenerativeAIModelId[]\n  ).some(id => id === modelId);\n  const isGemini2orNewer =\n    modelId.includes('gemini-2') ||\n    modelId.includes('gemini-3') ||\n    modelId.includes('nano-banana') ||\n    isLatest;\n  const isGemini3orNewer = modelId.includes('gemini-3');\n  const supportsFileSearch =\n    modelId.includes('gemini-2.5') || modelId.includes('gemini-3');\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 hasProviderTools = tools.some(tool => tool.type === 'provider');\n\n  if (hasFunctionTools && hasProviderTools && !isGemini3orNewer) {\n    toolWarnings.push({\n      type: 'unsupported',\n      feature: `combination of function and provider-defined tools`,\n    });\n  }\n\n  if (hasProviderTools) {\n    const googleTools: any[] = [];\n\n    const ProviderTools = tools.filter(tool => tool.type === 'provider');\n    ProviderTools.forEach(tool => {\n      switch (tool.id) {\n        case 'google.google_search':\n          if (isGemini2orNewer) {\n            googleTools.push({ googleSearch: { ...tool.args } });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n              details: 'Google Search requires Gemini 2.0 or newer.',\n            });\n          }\n          break;\n        case 'google.enterprise_web_search':\n          if (isGemini2orNewer) {\n            googleTools.push({ enterpriseWebSearch: {} });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n              details: 'Enterprise Web Search requires Gemini 2.0 or newer.',\n            });\n          }\n          break;\n        case 'google.url_context':\n          if (isGemini2orNewer) {\n            googleTools.push({ urlContext: {} });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\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 (isGemini2orNewer) {\n            googleTools.push({ codeExecution: {} });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n              details:\n                'The code execution tool is not supported with other Gemini models than Gemini 2.',\n            });\n          }\n          break;\n        case 'google.file_search':\n          if (supportsFileSearch) {\n            googleTools.push({ fileSearch: { ...tool.args } });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n              details:\n                'The file search tool is only supported with Gemini 2.5 models and Gemini 3 models.',\n            });\n          }\n          break;\n        case 'google.vertex_rag_store':\n          if (isGemini2orNewer) {\n            googleTools.push({\n              retrieval: {\n                vertex_rag_store: {\n                  rag_resources: {\n                    rag_corpus: tool.args.ragCorpus,\n                  },\n                  similarity_top_k: tool.args.topK as number | undefined,\n                },\n              },\n            });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n              details:\n                'The RAG store tool is not supported with other Gemini models than Gemini 2.',\n            });\n          }\n          break;\n        case 'google.google_maps':\n          if (isGemini2orNewer) {\n            googleTools.push({ googleMaps: {} });\n          } else {\n            toolWarnings.push({\n              type: 'unsupported',\n              feature: `provider-defined tool ${tool.id}`,\n              details:\n                'The Google Maps grounding tool is not supported with Gemini models other than Gemini 2 or newer.',\n            });\n          }\n          break;\n        default:\n          toolWarnings.push({\n            type: 'unsupported',\n            feature: `provider-defined tool ${tool.id}`,\n          });\n          break;\n      }\n    });\n\n    if (hasFunctionTools && isGemini3orNewer && googleTools.length > 0) {\n      const functionDeclarations: Array<{\n        name: string;\n        description: string;\n        parameters: unknown;\n      }> = [];\n      for (const tool of tools) {\n        if (tool.type === 'function') {\n          functionDeclarations.push({\n            name: tool.name,\n            description: tool.description ?? '',\n            parameters: convertJSONSchemaToOpenAPISchema(tool.inputSchema),\n          });\n        }\n      }\n\n      const combinedToolConfig: {\n        functionCallingConfig: {\n          mode: 'VALIDATED' | 'ANY' | 'NONE';\n          allowedFunctionNames?: string[];\n        };\n        includeServerSideToolInvocations: true;\n      } = {\n        functionCallingConfig: { mode: 'VALIDATED' },\n        includeServerSideToolInvocations: true,\n      };\n\n      if (toolChoice != null) {\n        switch (toolChoice.type) {\n          case 'auto':\n            break;\n          case 'none':\n            combinedToolConfig.functionCallingConfig = { mode: 'NONE' };\n            break;\n          case 'required':\n            combinedToolConfig.functionCallingConfig = { mode: 'ANY' };\n            break;\n          case 'tool':\n            combinedToolConfig.functionCallingConfig = {\n              mode: 'ANY',\n              allowedFunctionNames: [toolChoice.toolName],\n            };\n            break;\n        }\n      }\n\n      return {\n        tools: [...googleTools, { functionDeclarations }],\n        toolConfig: combinedToolConfig,\n        toolWarnings,\n      };\n    }\n\n    return {\n      tools: googleTools.length > 0 ? googleTools : undefined,\n      toolConfig: undefined,\n      toolWarnings,\n    };\n  }\n\n  const functionDeclarations = [];\n  let hasStrictTools = false;\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        if (tool.strict === true) {\n          hasStrictTools = true;\n        }\n        break;\n      default:\n        toolWarnings.push({\n          type: 'unsupported',\n          feature: `function tool ${tool.name}`,\n        });\n        break;\n    }\n  }\n\n  if (toolChoice == null) {\n    return {\n      tools: [{ functionDeclarations }],\n      toolConfig: hasStrictTools\n        ? { functionCallingConfig: { mode: 'VALIDATED' } }\n        : 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: {\n          functionCallingConfig: {\n            mode: hasStrictTools ? 'VALIDATED' : 'AUTO',\n          },\n        },\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: {\n          functionCallingConfig: {\n            mode: hasStrictTools ? 'VALIDATED' : 'ANY',\n          },\n        },\n        toolWarnings,\n      };\n    case 'tool':\n      return {\n        tools: [{ functionDeclarations }],\n        toolConfig: {\n          functionCallingConfig: {\n            mode: hasStrictTools ? 'VALIDATED' : '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","export type PartialArg = {\n  jsonPath: string;\n  stringValue?: string | null;\n  numberValue?: number | null;\n  boolValue?: boolean | null;\n  nullValue?: unknown;\n  willContinue?: boolean | null;\n};\n\ntype PathSegment = string | number;\n\ntype StackEntry = {\n  segment: PathSegment;\n  isArray: boolean;\n  childCount: number;\n};\n\n/**\n * Incrementally builds a JSON object from Google's streaming `partialArgs`\n * chunks emitted during tool-call function calling. Tracks both the structured\n * object and a running JSON text representation so callers can emit text deltas\n * that, when concatenated, form valid nested JSON matching JSON.stringify output.\n *\n * Input: [{jsonPath:\"$.location\",stringValue:\"Boston\"}]\n * Output: '{\"location\":\"Boston\"', then finalize() → closingDelta='}'\n */\nexport class GoogleJSONAccumulator {\n  private accumulatedArgs: Record<string, unknown> = {};\n  private jsonText = '';\n\n  /**\n   * Stack representing the currently \"open\" containers in the JSON output.\n   * Entry 0 is always the root `{` object once the first value is written.\n   */\n  private pathStack: StackEntry[] = [];\n\n  /**\n   * Whether a string value is currently \"open\" (willContinue was true),\n   * meaning the closing quote has not yet been emitted.\n   */\n  private stringOpen = false;\n\n  /**\n   * Input: [{jsonPath:\"$.brightness\",numberValue:50}]\n   * Output: { currentJSON:{brightness:50}, textDelta:'{\"brightness\":50' }\n   */\n  processPartialArgs(partialArgs: PartialArg[]): {\n    currentJSON: Record<string, unknown>;\n    textDelta: string;\n  } {\n    let delta = '';\n\n    for (const arg of partialArgs) {\n      const rawPath = arg.jsonPath.replace(/^\\$\\./, '');\n      if (!rawPath) continue;\n\n      const segments = parsePath(rawPath);\n\n      const existingValue = getNestedValue(this.accumulatedArgs, segments);\n      const isStringContinuation =\n        arg.stringValue != null && existingValue !== undefined;\n\n      if (isStringContinuation) {\n        const escaped = JSON.stringify(arg.stringValue).slice(1, -1);\n        setNestedValue(\n          this.accumulatedArgs,\n          segments,\n          (existingValue as string) + arg.stringValue,\n        );\n        delta += escaped;\n        continue;\n      }\n\n      const resolved = resolvePartialArgValue(arg);\n      if (resolved == null) continue;\n\n      setNestedValue(this.accumulatedArgs, segments, resolved.value);\n      delta += this.emitNavigationTo(segments, arg, resolved.json);\n    }\n\n    this.jsonText += delta;\n\n    return {\n      currentJSON: this.accumulatedArgs,\n      textDelta: delta,\n    };\n  }\n\n  /**\n   * Input: jsonText='{\"brightness\":50', accumulatedArgs={brightness:50}\n   * Output: { finalJSON:'{\"brightness\":50}', closingDelta:'}' }\n   */\n  finalize(): { finalJSON: string; closingDelta: string } {\n    const finalArgs = JSON.stringify(this.accumulatedArgs);\n    const closingDelta = finalArgs.slice(this.jsonText.length);\n    return { finalJSON: finalArgs, closingDelta };\n  }\n\n  /**\n   * Input: pathStack=[] (first call) or pathStack=[root,...] (subsequent calls)\n   * Output: '{' (first call) or '' (subsequent calls)\n   */\n  private ensureRoot(): string {\n    if (this.pathStack.length === 0) {\n      this.pathStack.push({ segment: '', isArray: false, childCount: 0 });\n      return '{';\n    }\n    return '';\n  }\n\n  /**\n   * Emits the JSON text fragment needed to navigate from the current open\n   * path to the new leaf at `targetSegments`, then writes the value.\n   *\n   * Input: targetSegments=[\"recipe\",\"name\"], arg={jsonPath:\"$.recipe.name\",stringValue:\"Lasagna\"}, valueJson='\"Lasagna\"'\n   * Output: '{\"recipe\":{\"name\":\"Lasagna\"'\n   */\n  private emitNavigationTo(\n    targetSegments: PathSegment[],\n    arg: PartialArg,\n    valueJson: string,\n  ): string {\n    let fragment = '';\n\n    if (this.stringOpen) {\n      fragment += '\"';\n      this.stringOpen = false;\n    }\n\n    fragment += this.ensureRoot();\n\n    const targetContainerSegments = targetSegments.slice(0, -1);\n    const leafSegment = targetSegments[targetSegments.length - 1];\n\n    const commonDepth = this.findCommonStackDepth(targetContainerSegments);\n\n    fragment += this.closeDownTo(commonDepth);\n    fragment += this.openDownTo(targetContainerSegments, leafSegment);\n    fragment += this.emitLeaf(leafSegment, arg, valueJson);\n\n    return fragment;\n  }\n\n  /**\n   * Returns the stack depth to preserve when navigating to a new target\n   * container path. Always >= 1 (the root is never popped).\n   *\n   * Input: stack=[root,\"recipe\",\"ingredients\",0], target=[\"recipe\",\"ingredients\",1]\n   * Output: 3 (keep root+\"recipe\"+\"ingredients\")\n   */\n  private findCommonStackDepth(targetContainer: PathSegment[]): number {\n    const maxDepth = Math.min(\n      this.pathStack.length - 1,\n      targetContainer.length,\n    );\n    let common = 0;\n    for (let i = 0; i < maxDepth; i++) {\n      if (this.pathStack[i + 1].segment === targetContainer[i]) {\n        common++;\n      } else {\n        break;\n      }\n    }\n    return common + 1;\n  }\n\n  /**\n   * Closes containers from the current stack depth back down to `targetDepth`.\n   *\n   * Input: this.pathStack=[root,\"recipe\",\"ingredients\",0], targetDepth=3\n   * Output: '}'\n   */\n  private closeDownTo(targetDepth: number): string {\n    let fragment = '';\n    while (this.pathStack.length > targetDepth) {\n      const entry = this.pathStack.pop()!;\n      fragment += entry.isArray ? ']' : '}';\n    }\n    return fragment;\n  }\n\n  /**\n   * Opens containers from the current stack depth down to the full target\n   * container path, emitting opening `{`, `[`, keys, and commas as needed.\n   * `leafSegment` is used to determine if the innermost container is an array.\n   *\n   * Input: this.pathStack=[root], targetContainer=[\"recipe\",\"ingredients\"], leafSegment=0\n   * Output: '\"recipe\":{\"ingredients\":['\n   */\n  private openDownTo(\n    targetContainer: PathSegment[],\n    leafSegment: PathSegment,\n  ): string {\n    let fragment = '';\n\n    const startIdx = this.pathStack.length - 1;\n\n    for (let i = startIdx; i < targetContainer.length; i++) {\n      const seg = targetContainer[i];\n      const parentEntry = this.pathStack[this.pathStack.length - 1];\n\n      if (parentEntry.childCount > 0) {\n        fragment += ',';\n      }\n      parentEntry.childCount++;\n\n      if (typeof seg === 'string') {\n        fragment += `${JSON.stringify(seg)}:`;\n      }\n\n      const childSeg =\n        i + 1 < targetContainer.length ? targetContainer[i + 1] : leafSegment;\n      const isArray = typeof childSeg === 'number';\n\n      fragment += isArray ? '[' : '{';\n\n      this.pathStack.push({ segment: seg, isArray, childCount: 0 });\n    }\n\n    return fragment;\n  }\n\n  /**\n   * Emits the comma, key, and value for a leaf entry in the current container.\n   *\n   * Input: leafSegment=\"name\", arg={stringValue:\"Lasagna\"}, valueJson='\"Lasagna\"'\n   * Output: '\"name\":\"Lasagna\"' (or ',\"name\":\"Lasagna\"' if container.childCount > 0)\n   */\n  private emitLeaf(\n    leafSegment: PathSegment,\n    arg: PartialArg,\n    valueJson: string,\n  ): string {\n    let fragment = '';\n    const container = this.pathStack[this.pathStack.length - 1];\n\n    if (container.childCount > 0) {\n      fragment += ',';\n    }\n    container.childCount++;\n\n    if (typeof leafSegment === 'string') {\n      fragment += `${JSON.stringify(leafSegment)}:`;\n    }\n\n    if (arg.stringValue != null && arg.willContinue) {\n      fragment += valueJson.slice(0, -1);\n      this.stringOpen = true;\n    } else {\n      fragment += valueJson;\n    }\n\n    return fragment;\n  }\n}\n\n/**\n * Splits a dotted/bracketed JSON path like `recipe.ingredients[0].name` into segments.\n *\n * Input: \"recipe.ingredients[0].name\"\n * Output: [\"recipe\", \"ingredients\", 0, \"name\"]\n */\nfunction parsePath(rawPath: string): Array<string | number> {\n  const segments: Array<string | number> = [];\n  for (const part of rawPath.split('.')) {\n    const bracketIdx = part.indexOf('[');\n    if (bracketIdx === -1) {\n      segments.push(part);\n    } else {\n      if (bracketIdx > 0) segments.push(part.slice(0, bracketIdx));\n      for (const m of part.matchAll(/\\[(\\d+)\\]/g)) {\n        segments.push(parseInt(m[1], 10));\n      }\n    }\n  }\n  return segments;\n}\n\n/**\n * Traverses a nested object along the given path segments and returns the leaf value.\n *\n * Input: ({recipe:{name:\"Lasagna\"}}, [\"recipe\",\"name\"])\n * Output: \"Lasagna\"\n */\nfunction getNestedValue(\n  obj: Record<string, unknown>,\n  segments: Array<string | number>,\n): unknown {\n  let current: unknown = obj;\n  for (const seg of segments) {\n    if (current == null || typeof current !== 'object') return undefined;\n    current = (current as Record<string | number, unknown>)[seg];\n  }\n  return current;\n}\n\n/**\n * Sets a value at a nested path, creating intermediate objects or arrays as needed.\n *\n * Input: obj={}, segments=[\"recipe\",\"ingredients\",0,\"name\"], value=\"Noodles\"\n * Output: {recipe:{ingredients:[{name:\"Noodles\"}]}}\n */\nfunction setNestedValue(\n  obj: Record<string, unknown>,\n  segments: Array<string | number>,\n  value: unknown,\n): void {\n  let current: Record<string | number, unknown> = obj;\n  for (let i = 0; i < segments.length - 1; i++) {\n    const seg = segments[i];\n    const nextSeg = segments[i + 1];\n    if (current[seg] == null) {\n      current[seg] = typeof nextSeg === 'number' ? [] : {};\n    }\n    current = current[seg] as Record<string | number, unknown>;\n  }\n  current[segments[segments.length - 1]] = value;\n}\n\n/**\n * Extracts the first non-null typed value from a partial arg and returns it with its JSON representation.\n *\n * Input: arg={stringValue:\"Boston\"} or arg={numberValue:50}\n * Output: {value:\"Boston\", json:'\"Boston\"'} or {value:50, json:'50'}\n */\nfunction resolvePartialArgValue(arg: {\n  stringValue?: string | null;\n  numberValue?: number | null;\n  boolValue?: boolean | null;\n  nullValue?: unknown;\n}): { value: unknown; json: string } | undefined {\n  const value = arg.stringValue ?? arg.numberValue ?? arg.boolValue;\n  if (value != null) return { value, json: JSON.stringify(value) };\n  if ('nullValue' in arg) return { value: null, json: 'null' };\n  return undefined;\n}\n","import { LanguageModelV3FinishReason } from '@ai-sdk/provider';\n\nexport function mapGoogleGenerativeAIFinishReason({\n  finishReason,\n  hasToolCalls,\n}: {\n  finishReason: string | null | undefined;\n  hasToolCalls: boolean;\n}): LanguageModelV3FinishReason['unified'] {\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 'MALFORMED_FUNCTION_CALL':\n      return 'error';\n    case 'FINISH_REASON_UNSPECIFIED':\n    case 'OTHER':\n    default:\n      return 'other';\n  }\n}\n","import {\n  LanguageModelV3,\n  LanguageModelV3CallOptions,\n  LanguageModelV3Content,\n  LanguageModelV3FinishReason,\n  LanguageModelV3GenerateResult,\n  LanguageModelV3Source,\n  LanguageModelV3StreamPart,\n  LanguageModelV3StreamResult,\n  JSONObject,\n  SharedV3ProviderMetadata,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  createEventSourceResponseHandler,\n  createJsonResponseHandler,\n  FetchFunction,\n  generateId,\n  InferSchema,\n  lazySchema,\n  parseProviderOptions,\n  ParseResult,\n  postJsonToApi,\n  Resolvable,\n  resolve,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport {\n  convertGoogleGenerativeAIUsage,\n  GoogleGenerativeAIUsageMetadata,\n} from './convert-google-generative-ai-usage';\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 {\n  GoogleGenerativeAIModelId,\n  googleLanguageModelOptions,\n  VertexServiceTierMap,\n} from './google-generative-ai-options';\nimport {\n  GoogleGenerativeAIContentPart,\n  GoogleGenerativeAIProviderMetadata,\n} from './google-generative-ai-prompt';\nimport { prepareTools } from './google-prepare-tools';\nimport { GoogleJSONAccumulator, PartialArg } from './google-json-accumulator';\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\n  /**\n   * The supported URLs for the model.\n   */\n  supportedUrls?: () => LanguageModelV3['supportedUrls'];\n};\n\nexport class GoogleGenerativeAILanguageModel implements LanguageModelV3 {\n  readonly specificationVersion = 'v3';\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    {\n      prompt,\n      maxOutputTokens,\n      temperature,\n      topP,\n      topK,\n      frequencyPenalty,\n      presencePenalty,\n      stopSequences,\n      responseFormat,\n      seed,\n      tools,\n      toolChoice,\n      providerOptions,\n    }: LanguageModelV3CallOptions,\n    { isStreaming = false }: { isStreaming?: boolean } = {},\n  ) {\n    const warnings: SharedV3Warning[] = [];\n\n    const providerOptionsName = this.config.provider.includes('vertex')\n      ? 'vertex'\n      : 'google';\n    let googleOptions = await parseProviderOptions({\n      provider: providerOptionsName,\n      providerOptions,\n      schema: googleLanguageModelOptions,\n    });\n\n    if (googleOptions == null && providerOptionsName !== 'google') {\n      googleOptions = await parseProviderOptions({\n        provider: 'google',\n        providerOptions,\n        schema: googleLanguageModelOptions,\n      });\n    }\n\n    // Add warning if Vertex rag tools are used with a non-Vertex Google provider\n    const isVertexProvider = this.config.provider.startsWith('google.vertex.');\n\n    if (\n      tools?.some(\n        tool =>\n          tool.type === 'provider' && tool.id === 'google.vertex_rag_store',\n      ) &&\n      !isVertexProvider\n    ) {\n      warnings.push({\n        type: 'other',\n        message:\n          \"The 'vertex_rag_store' tool 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    if (googleOptions?.streamFunctionCallArguments && !isVertexProvider) {\n      warnings.push({\n        type: 'other',\n        message:\n          \"'streamFunctionCallArguments' is only supported on the Vertex AI API \" +\n          'and will be ignored with the current Google provider ' +\n          `(${this.config.provider}). See https://docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#streaming-fc`,\n      });\n    }\n\n    // Vertex API requires another service tier format.\n    let sanitizedServiceTier: string | undefined = googleOptions?.serviceTier;\n    if (googleOptions?.serviceTier && isVertexProvider) {\n      sanitizedServiceTier = VertexServiceTierMap[googleOptions.serviceTier];\n    }\n\n    const isGemmaModel = this.modelId.toLowerCase().startsWith('gemma-');\n    const supportsFunctionResponseParts = this.modelId.startsWith('gemini-3');\n\n    const { contents, systemInstruction } = convertToGoogleGenerativeAIMessages(\n      prompt,\n      {\n        isGemmaModel,\n        providerOptionsName,\n        supportsFunctionResponseParts,\n      },\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    const streamFunctionCallArguments =\n      isStreaming && isVertexProvider\n        ? (googleOptions?.streamFunctionCallArguments ?? false)\n        : undefined;\n\n    const toolConfig =\n      googleToolConfig ||\n      streamFunctionCallArguments ||\n      googleOptions?.retrievalConfig\n        ? {\n            ...googleToolConfig,\n            ...(streamFunctionCallArguments && {\n              functionCallingConfig: {\n                ...googleToolConfig?.functionCallingConfig,\n                streamFunctionCallArguments: true as const,\n              },\n            }),\n            ...(googleOptions?.retrievalConfig && {\n              retrievalConfig: googleOptions.retrievalConfig,\n            }),\n          }\n        : undefined;\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          ...(googleOptions?.mediaResolution && {\n            mediaResolution: googleOptions.mediaResolution,\n          }),\n          ...(googleOptions?.imageConfig && {\n            imageConfig: googleOptions.imageConfig,\n          }),\n        },\n        contents,\n        systemInstruction: isGemmaModel ? undefined : systemInstruction,\n        safetySettings: googleOptions?.safetySettings,\n        tools: googleTools,\n        toolConfig,\n        cachedContent: googleOptions?.cachedContent,\n        labels: googleOptions?.labels,\n        serviceTier: sanitizedServiceTier,\n      },\n      warnings: [...warnings, ...toolWarnings],\n      providerOptionsName,\n    };\n  }\n\n  async doGenerate(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3GenerateResult> {\n    const { args, warnings, providerOptionsName } = await this.getArgs(options);\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<LanguageModelV3Content> = [];\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    // Associates a server-side tool response with its preceding call (tool combination).\n    let lastServerToolCallId: 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        });\n        // Clear the ID after use to avoid accidental reuse.\n        lastCodeExecutionToolCallId = undefined;\n      } else if ('text' in part && part.text != null) {\n        const thoughtSignatureMetadata = part.thoughtSignature\n          ? {\n              [providerOptionsName]: {\n                thoughtSignature: part.thoughtSignature,\n              },\n            }\n          : undefined;\n\n        if (part.text.length === 0) {\n          if (thoughtSignatureMetadata != null && content.length > 0) {\n            const lastContent = content[content.length - 1];\n            lastContent.providerMetadata = thoughtSignatureMetadata;\n          }\n        } else {\n          content.push({\n            type: part.thought === true ? 'reasoning' : 'text',\n            text: part.text,\n            providerMetadata: thoughtSignatureMetadata,\n          });\n        }\n      } else if (\n        'functionCall' in part &&\n        part.functionCall.name != null &&\n        part.functionCall.args != null\n      ) {\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          providerMetadata: part.thoughtSignature\n            ? {\n                [providerOptionsName]: {\n                  thoughtSignature: part.thoughtSignature,\n                },\n              }\n            : undefined,\n        });\n      } else if ('inlineData' in part) {\n        const hasThought = part.thought === true;\n        const hasThoughtSignature = !!part.thoughtSignature;\n        content.push({\n          type: 'file' as const,\n          data: part.inlineData.data,\n          mediaType: part.inlineData.mimeType,\n          providerMetadata:\n            hasThought || hasThoughtSignature\n              ? {\n                  [providerOptionsName]: {\n                    ...(hasThought ? { thought: true } : {}),\n                    ...(hasThoughtSignature\n                      ? { thoughtSignature: part.thoughtSignature }\n                      : {}),\n                  },\n                }\n              : undefined,\n        });\n      } else if ('toolCall' in part && part.toolCall) {\n        const toolCallId = part.toolCall.id ?? this.config.generateId();\n        lastServerToolCallId = toolCallId;\n        content.push({\n          type: 'tool-call',\n          toolCallId,\n          toolName: `server:${part.toolCall.toolType}`,\n          input: JSON.stringify(part.toolCall.args ?? {}),\n          providerExecuted: true,\n          dynamic: true,\n          providerMetadata: part.thoughtSignature\n            ? {\n                [providerOptionsName]: {\n                  thoughtSignature: part.thoughtSignature,\n                  serverToolCallId: toolCallId,\n                  serverToolType: part.toolCall.toolType,\n                },\n              }\n            : {\n                [providerOptionsName]: {\n                  serverToolCallId: toolCallId,\n                  serverToolType: part.toolCall.toolType,\n                },\n              },\n        });\n      } else if ('toolResponse' in part && part.toolResponse) {\n        const responseToolCallId =\n          lastServerToolCallId ??\n          part.toolResponse.id ??\n          this.config.generateId();\n        content.push({\n          type: 'tool-result',\n          toolCallId: responseToolCallId,\n          toolName: `server:${part.toolResponse.toolType}`,\n          result: (part.toolResponse.response ?? {}) as JSONObject,\n          providerMetadata: part.thoughtSignature\n            ? {\n                [providerOptionsName]: {\n                  thoughtSignature: part.thoughtSignature,\n                  serverToolCallId: responseToolCallId,\n                  serverToolType: part.toolResponse.toolType,\n                },\n              }\n            : {\n                [providerOptionsName]: {\n                  serverToolCallId: responseToolCallId,\n                  serverToolType: part.toolResponse.toolType,\n                },\n              },\n        });\n        lastServerToolCallId = undefined;\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: {\n        unified: mapGoogleGenerativeAIFinishReason({\n          finishReason: candidate.finishReason,\n          // Only count client-executed tool calls for finish reason determination.\n          hasToolCalls: content.some(\n            part => part.type === 'tool-call' && !part.providerExecuted,\n          ),\n        }),\n        raw: candidate.finishReason ?? undefined,\n      },\n      usage: convertGoogleGenerativeAIUsage(usageMetadata),\n      warnings,\n      providerMetadata: {\n        [providerOptionsName]: {\n          promptFeedback: response.promptFeedback ?? null,\n          groundingMetadata: candidate.groundingMetadata ?? null,\n          urlContextMetadata: candidate.urlContextMetadata ?? null,\n          safetyRatings: candidate.safetyRatings ?? null,\n          usageMetadata: usageMetadata ?? null,\n          finishMessage: candidate.finishMessage ?? null,\n          serviceTier: response.serviceTier ?? null,\n        } satisfies GoogleGenerativeAIProviderMetadata,\n      },\n      request: { body: args },\n      response: {\n        // TODO timestamp, model id, id\n        headers: responseHeaders,\n        body: rawResponse,\n      },\n    };\n  }\n\n  async doStream(\n    options: LanguageModelV3CallOptions,\n  ): Promise<LanguageModelV3StreamResult> {\n    const { args, warnings, providerOptionsName } = await this.getArgs(\n      options,\n      { isStreaming: true },\n    );\n\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: LanguageModelV3FinishReason = {\n      unified: 'other',\n      raw: undefined,\n    };\n    let usage: GoogleGenerativeAIUsageMetadata | undefined = undefined;\n    let providerMetadata: SharedV3ProviderMetadata | undefined = undefined;\n    let lastGroundingMetadata: GroundingMetadataSchema | null = null;\n    let lastUrlContextMetadata: UrlContextMetadataSchema | null = null;\n    let serviceTier: string | null = null;\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    // Associates a server-side tool response with its preceding call (tool combination).\n    let lastServerToolCallId: string | undefined;\n\n    const activeStreamingToolCalls: Array<{\n      toolCallId: string;\n      toolName: string;\n      accumulator: GoogleJSONAccumulator;\n      providerMetadata?: SharedV3ProviderMetadata;\n    }> = [];\n\n    return {\n      stream: response.pipeThrough(\n        new TransformStream<\n          ParseResult<ChunkSchema>,\n          LanguageModelV3StreamPart\n        >({\n          start(controller) {\n            controller.enqueue({ type: 'stream-start', warnings });\n          },\n\n          transform(chunk, controller) {\n            if (options.includeRawChunks) {\n              controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n            }\n\n            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 = usageMetadata;\n            }\n\n            if (value.serviceTier != null) {\n              serviceTier = value.serviceTier;\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            if (candidate.groundingMetadata != null) {\n              lastGroundingMetadata = candidate.groundingMetadata;\n            }\n            if (candidate.urlContextMetadata != null) {\n              lastUrlContextMetadata = candidate.urlContextMetadata;\n            }\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 all parts in a single loop to preserve original order\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                } 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                    });\n                    // Clear the ID after use.\n                    lastCodeExecutionToolCallId = undefined;\n                  }\n                } else if ('text' in part && part.text != null) {\n                  const thoughtSignatureMetadata = part.thoughtSignature\n                    ? {\n                        [providerOptionsName]: {\n                          thoughtSignature: part.thoughtSignature,\n                        },\n                      }\n                    : undefined;\n\n                  if (part.text.length === 0) {\n                    if (\n                      thoughtSignatureMetadata != null &&\n                      currentTextBlockId !== null\n                    ) {\n                      controller.enqueue({\n                        type: 'text-delta',\n                        id: currentTextBlockId,\n                        delta: '',\n                        providerMetadata: thoughtSignatureMetadata,\n                      });\n                    }\n                  } else 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                        providerMetadata: thoughtSignatureMetadata,\n                      });\n                    }\n\n                    controller.enqueue({\n                      type: 'reasoning-delta',\n                      id: currentReasoningBlockId,\n                      delta: part.text,\n                      providerMetadata: thoughtSignatureMetadata,\n                    });\n                  } else {\n                    if (currentReasoningBlockId !== null) {\n                      controller.enqueue({\n                        type: 'reasoning-end',\n                        id: currentReasoningBlockId,\n                      });\n                      currentReasoningBlockId = null;\n                    }\n\n                    if (currentTextBlockId === null) {\n                      currentTextBlockId = String(blockCounter++);\n                      controller.enqueue({\n                        type: 'text-start',\n                        id: currentTextBlockId,\n                        providerMetadata: thoughtSignatureMetadata,\n                      });\n                    }\n\n                    controller.enqueue({\n                      type: 'text-delta',\n                      id: currentTextBlockId,\n                      delta: part.text,\n                      providerMetadata: thoughtSignatureMetadata,\n                    });\n                  }\n                } else if ('inlineData' in part) {\n                  // End any active text or reasoning block before starting file output.\n                  // Relevant for multimodal output models.\n                  if (currentTextBlockId !== null) {\n                    controller.enqueue({\n                      type: 'text-end',\n                      id: currentTextBlockId,\n                    });\n                    currentTextBlockId = null;\n                  }\n                  if (currentReasoningBlockId !== null) {\n                    controller.enqueue({\n                      type: 'reasoning-end',\n                      id: currentReasoningBlockId,\n                    });\n                    currentReasoningBlockId = null;\n                  }\n\n                  const hasThought = part.thought === true;\n                  const hasThoughtSignature = !!part.thoughtSignature;\n                  const fileMeta =\n                    hasThought || hasThoughtSignature\n                      ? {\n                          [providerOptionsName]: {\n                            ...(hasThought ? { thought: true } : {}),\n                            ...(hasThoughtSignature\n                              ? { thoughtSignature: part.thoughtSignature }\n                              : {}),\n                          },\n                        }\n                      : undefined;\n                  controller.enqueue({\n                    type: 'file',\n                    mediaType: part.inlineData.mimeType,\n                    data: part.inlineData.data,\n                    providerMetadata: fileMeta,\n                  });\n                } else if ('toolCall' in part && part.toolCall) {\n                  const toolCallId = part.toolCall.id ?? generateId();\n                  lastServerToolCallId = toolCallId;\n                  const serverMeta = {\n                    [providerOptionsName]: {\n                      ...(part.thoughtSignature\n                        ? { thoughtSignature: part.thoughtSignature }\n                        : {}),\n                      serverToolCallId: toolCallId,\n                      serverToolType: part.toolCall.toolType,\n                    },\n                  };\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId,\n                    toolName: `server:${part.toolCall.toolType}`,\n                    input: JSON.stringify(part.toolCall.args ?? {}),\n                    providerExecuted: true,\n                    dynamic: true,\n                    providerMetadata: serverMeta,\n                  });\n                } else if ('toolResponse' in part && part.toolResponse) {\n                  const responseToolCallId =\n                    lastServerToolCallId ??\n                    part.toolResponse.id ??\n                    generateId();\n                  const serverMeta = {\n                    [providerOptionsName]: {\n                      ...(part.thoughtSignature\n                        ? { thoughtSignature: part.thoughtSignature }\n                        : {}),\n                      serverToolCallId: responseToolCallId,\n                      serverToolType: part.toolResponse.toolType,\n                    },\n                  };\n\n                  controller.enqueue({\n                    type: 'tool-result',\n                    toolCallId: responseToolCallId,\n                    toolName: `server:${part.toolResponse.toolType}`,\n                    result: (part.toolResponse.response ?? {}) as JSONObject,\n                    providerMetadata: serverMeta,\n                  });\n                  lastServerToolCallId = undefined;\n                }\n              }\n\n              // Handle streaming and complete function calls\n              for (const part of parts) {\n                if (!('functionCall' in part)) continue;\n\n                const providerMeta = part.thoughtSignature\n                  ? {\n                      [providerOptionsName]: {\n                        thoughtSignature: part.thoughtSignature,\n                      },\n                    }\n                  : undefined;\n\n                const isStreamingChunk =\n                  part.functionCall.partialArgs != null ||\n                  (part.functionCall.name != null &&\n                    part.functionCall.willContinue === true);\n                const isTerminalChunk =\n                  part.functionCall.name == null &&\n                  part.functionCall.args == null &&\n                  part.functionCall.partialArgs == null &&\n                  part.functionCall.willContinue == null;\n                const isCompleteCall =\n                  part.functionCall.name != null &&\n                  part.functionCall.args != null &&\n                  part.functionCall.partialArgs == null;\n\n                if (isStreamingChunk) {\n                  if (\n                    part.functionCall.name != null &&\n                    part.functionCall.willContinue === true\n                  ) {\n                    const toolCallId = generateId();\n                    const accumulator = new GoogleJSONAccumulator();\n                    activeStreamingToolCalls.push({\n                      toolCallId,\n                      toolName: part.functionCall.name,\n                      accumulator,\n                      providerMetadata: providerMeta,\n                    });\n\n                    controller.enqueue({\n                      type: 'tool-input-start',\n                      id: toolCallId,\n                      toolName: part.functionCall.name,\n                      providerMetadata: providerMeta,\n                    });\n\n                    if (part.functionCall.partialArgs != null) {\n                      const { textDelta } = accumulator.processPartialArgs(\n                        part.functionCall.partialArgs as PartialArg[],\n                      );\n                      if (textDelta.length > 0) {\n                        controller.enqueue({\n                          type: 'tool-input-delta',\n                          id: toolCallId,\n                          delta: textDelta,\n                          providerMetadata: providerMeta,\n                        });\n                      }\n                    }\n                  } else if (\n                    part.functionCall.partialArgs != null &&\n                    activeStreamingToolCalls.length > 0\n                  ) {\n                    const active =\n                      activeStreamingToolCalls[\n                        activeStreamingToolCalls.length - 1\n                      ];\n                    const { textDelta } = active.accumulator.processPartialArgs(\n                      part.functionCall.partialArgs as PartialArg[],\n                    );\n                    if (textDelta.length > 0) {\n                      controller.enqueue({\n                        type: 'tool-input-delta',\n                        id: active.toolCallId,\n                        delta: textDelta,\n                        providerMetadata: providerMeta,\n                      });\n                    }\n                  }\n                } else if (\n                  isTerminalChunk &&\n                  activeStreamingToolCalls.length > 0\n                ) {\n                  const active = activeStreamingToolCalls.pop()!;\n                  const { finalJSON, closingDelta } =\n                    active.accumulator.finalize();\n\n                  if (closingDelta.length > 0) {\n                    controller.enqueue({\n                      type: 'tool-input-delta',\n                      id: active.toolCallId,\n                      delta: closingDelta,\n                      providerMetadata: active.providerMetadata,\n                    });\n                  }\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: active.toolCallId,\n                    providerMetadata: active.providerMetadata,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId: active.toolCallId,\n                    toolName: active.toolName,\n                    input: finalJSON,\n                    providerMetadata: active.providerMetadata,\n                  });\n\n                  hasToolCalls = true;\n                } else if (isCompleteCall) {\n                  const toolCallId = generateId();\n                  const toolName = part.functionCall.name!;\n                  const args =\n                    typeof part.functionCall.args === 'string'\n                      ? part.functionCall.args\n                      : JSON.stringify(part.functionCall.args ?? {});\n\n                  controller.enqueue({\n                    type: 'tool-input-start',\n                    id: toolCallId,\n                    toolName,\n                    providerMetadata: providerMeta,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-input-delta',\n                    id: toolCallId,\n                    delta: args,\n                    providerMetadata: providerMeta,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-input-end',\n                    id: toolCallId,\n                    providerMetadata: providerMeta,\n                  });\n\n                  controller.enqueue({\n                    type: 'tool-call',\n                    toolCallId,\n                    toolName,\n                    input: args,\n                    providerMetadata: providerMeta,\n                  });\n\n                  hasToolCalls = true;\n                }\n              }\n            }\n\n            if (candidate.finishReason != null) {\n              finishReason = {\n                unified: mapGoogleGenerativeAIFinishReason({\n                  finishReason: candidate.finishReason,\n                  hasToolCalls,\n                }),\n                raw: candidate.finishReason,\n              };\n\n              providerMetadata = {\n                [providerOptionsName]: {\n                  promptFeedback: value.promptFeedback ?? null,\n                  groundingMetadata: lastGroundingMetadata,\n                  urlContextMetadata: lastUrlContextMetadata,\n                  safetyRatings: candidate.safetyRatings ?? null,\n                  usageMetadata: usageMetadata ?? null,\n                  finishMessage: candidate.finishMessage ?? null,\n                  serviceTier,\n                } satisfies GoogleGenerativeAIProviderMetadata,\n              };\n            }\n          },\n\n          flush(controller) {\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: convertGoogleGenerativeAIUsage(usage),\n              providerMetadata,\n            });\n          },\n        }),\n      ),\n      response: { headers: responseHeaders },\n      request: { body: args },\n    };\n  }\n}\n\nfunction getToolCallsFromParts({\n  parts,\n  generateId,\n  providerOptionsName,\n}: {\n  parts: ContentSchema['parts'];\n  generateId: () => string;\n  providerOptionsName: string;\n}) {\n  const functionCallParts = parts?.filter(\n    part => 'functionCall' in part,\n  ) as Array<\n    GoogleGenerativeAIContentPart & {\n      functionCall: { name: string; args: unknown };\n      thoughtSignature?: string | null;\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        providerMetadata: part.thoughtSignature\n          ? {\n              [providerOptionsName]: {\n                thoughtSignature: part.thoughtSignature,\n              },\n            }\n          : undefined,\n      }));\n}\n\nfunction extractSources({\n  groundingMetadata,\n  generateId,\n}: {\n  groundingMetadata: GroundingMetadataSchema | undefined | null;\n  generateId: () => string;\n}): undefined | LanguageModelV3Source[] {\n  if (!groundingMetadata?.groundingChunks) {\n    return undefined;\n  }\n\n  const sources: LanguageModelV3Source[] = [];\n\n  for (const chunk of groundingMetadata.groundingChunks) {\n    if (chunk.web != null) {\n      // Handle web chunks as URL sources\n      sources.push({\n        type: 'source',\n        sourceType: 'url',\n        id: generateId(),\n        url: chunk.web.uri,\n        title: chunk.web.title ?? undefined,\n      });\n    } else if (chunk.image != null) {\n      // Handle image chunks as image sources\n      sources.push({\n        type: 'source',\n        sourceType: 'url',\n        id: generateId(),\n        // Google requires attribution to the source URI, not the actual image URI.\n        // TODO: add another type in v7 to allow both the image and source URL to be included separately\n        url: chunk.image.sourceUri,\n        title: chunk.image.title ?? undefined,\n      });\n    } else if (chunk.retrievedContext != null) {\n      // Handle retrievedContext chunks from RAG operations\n      const uri = chunk.retrievedContext.uri;\n      const fileSearchStore = chunk.retrievedContext.fileSearchStore;\n\n      if (uri && (uri.startsWith('http://') || uri.startsWith('https://'))) {\n        // Old format: Google Search with HTTP/HTTPS URL\n        sources.push({\n          type: 'source',\n          sourceType: 'url',\n          id: generateId(),\n          url: uri,\n          title: chunk.retrievedContext.title ?? undefined,\n        });\n      } else if (uri) {\n        // Old format: Document with file path (gs://, etc.)\n        const title = chunk.retrievedContext.title ?? 'Unknown Document';\n        let mediaType = 'application/octet-stream';\n        let filename: string | undefined = undefined;\n\n        if (uri.endsWith('.pdf')) {\n          mediaType = 'application/pdf';\n          filename = uri.split('/').pop();\n        } else if (uri.endsWith('.txt')) {\n          mediaType = 'text/plain';\n          filename = uri.split('/').pop();\n        } else if (uri.endsWith('.docx')) {\n          mediaType =\n            'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n          filename = uri.split('/').pop();\n        } else if (uri.endsWith('.doc')) {\n          mediaType = 'application/msword';\n          filename = uri.split('/').pop();\n        } else if (uri.match(/\\.(md|markdown)$/)) {\n          mediaType = 'text/markdown';\n          filename = uri.split('/').pop();\n        } else {\n          filename = uri.split('/').pop();\n        }\n\n        sources.push({\n          type: 'source',\n          sourceType: 'document',\n          id: generateId(),\n          mediaType,\n          title,\n          filename,\n        });\n      } else if (fileSearchStore) {\n        // New format: File Search with fileSearchStore (no uri)\n        const title = chunk.retrievedContext.title ?? 'Unknown Document';\n        sources.push({\n          type: 'source',\n          sourceType: 'document',\n          id: generateId(),\n          mediaType: 'application/octet-stream',\n          title,\n          filename: fileSearchStore.split('/').pop(),\n        });\n      }\n    } else if (chunk.maps != null) {\n      if (chunk.maps.uri) {\n        sources.push({\n          type: 'source',\n          sourceType: 'url',\n          id: generateId(),\n          url: chunk.maps.uri,\n          title: chunk.maps.title ?? undefined,\n        });\n      }\n    }\n  }\n\n  return sources.length > 0 ? sources : undefined;\n}\n\nexport const getGroundingMetadataSchema = () =>\n  z.object({\n    webSearchQueries: z.array(z.string()).nullish(),\n    imageSearchQueries: z.array(z.string()).nullish(),\n    retrievalQueries: z.array(z.string()).nullish(),\n    searchEntryPoint: z.object({ renderedContent: z.string() }).nullish(),\n    groundingChunks: z\n      .array(\n        z.object({\n          web: z\n            .object({ uri: z.string(), title: z.string().nullish() })\n            .nullish(),\n          image: z\n            .object({\n              sourceUri: z.string(),\n              imageUri: z.string(),\n              title: z.string().nullish(),\n              domain: z.string().nullish(),\n            })\n            .nullish(),\n          retrievedContext: z\n            .object({\n              uri: z.string().nullish(),\n              title: z.string().nullish(),\n              text: z.string().nullish(),\n              fileSearchStore: z.string().nullish(),\n            })\n            .nullish(),\n          maps: z\n            .object({\n              uri: z.string().nullish(),\n              title: z.string().nullish(),\n              text: z.string().nullish(),\n              placeId: z.string().nullish(),\n            })\n            .nullish(),\n        }),\n      )\n      .nullish(),\n    groundingSupports: z\n      .array(\n        z.object({\n          segment: z\n            .object({\n              startIndex: z.number().nullish(),\n              endIndex: z.number().nullish(),\n              text: z.string().nullish(),\n            })\n            .nullish(),\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\nconst partialArgSchema = z.object({\n  jsonPath: z.string(),\n  stringValue: z.string().nullish(),\n  numberValue: z.number().nullish(),\n  boolValue: z.boolean().nullish(),\n  nullValue: z.unknown().nullish(),\n  willContinue: z.boolean().nullish(),\n});\n\nconst getContentSchema = () =>\n  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().nullish(),\n              args: z.unknown().nullish(),\n              partialArgs: z.array(partialArgSchema).nullish(),\n              willContinue: z.boolean().nullish(),\n            }),\n            thoughtSignature: z.string().nullish(),\n          }),\n          z.object({\n            inlineData: z.object({\n              mimeType: z.string(),\n              data: z.string(),\n            }),\n            thought: z.boolean().nullish(),\n            thoughtSignature: z.string().nullish(),\n          }),\n          z.object({\n            toolCall: z.object({\n              toolType: z.string(),\n              args: z.unknown().nullish(),\n              id: z.string(),\n            }),\n            thoughtSignature: z.string().nullish(),\n          }),\n          z.object({\n            toolResponse: z.object({\n              toolType: z.string(),\n              response: z.unknown().nullish(),\n              id: z.string(),\n            }),\n            thoughtSignature: z.string().nullish(),\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().nullish(),\n              })\n              .nullish(),\n            text: z.string().nullish(),\n            thought: z.boolean().nullish(),\n            thoughtSignature: z.string().nullish(),\n          }),\n        ]),\n      )\n      .nullish(),\n  });\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/multimodal/configure-safety-filters\nconst getSafetyRatingSchema = () =>\n  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 tokenDetailsSchema = z\n  .array(\n    z.object({\n      modality: z.string(),\n      tokenCount: z.number(),\n    }),\n  )\n  .nullish();\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  // https://cloud.google.com/vertex-ai/generative-ai/docs/reference/rest/v1/GenerateContentResponse#TrafficType\n  trafficType: z.string().nullish(),\n  // https://ai.google.dev/api/generate-content#Modality\n  promptTokensDetails: tokenDetailsSchema,\n  candidatesTokensDetails: tokenDetailsSchema,\n});\n\n// https://ai.google.dev/api/generate-content#UrlRetrievalMetadata\nexport const getUrlContextMetadataSchema = () =>\n  z.object({\n    urlMetadata: z\n      .array(\n        z.object({\n          retrievedUrl: z.string(),\n          urlRetrievalStatus: z.string(),\n        }),\n      )\n      .nullish(),\n  });\n\nconst responseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      candidates: z.array(\n        z.object({\n          content: getContentSchema().nullish().or(z.object({}).strict()),\n          finishReason: z.string().nullish(),\n          finishMessage: z.string().nullish(),\n          safetyRatings: z.array(getSafetyRatingSchema()).nullish(),\n          groundingMetadata: getGroundingMetadataSchema().nullish(),\n          urlContextMetadata: getUrlContextMetadataSchema().nullish(),\n        }),\n      ),\n      usageMetadata: usageSchema.nullish(),\n      promptFeedback: z\n        .object({\n          blockReason: z.string().nullish(),\n          safetyRatings: z.array(getSafetyRatingSchema()).nullish(),\n        })\n        .nullish(),\n      serviceTier: z.string().nullish(),\n    }),\n  ),\n);\n\ntype ContentSchema = NonNullable<\n  InferSchema<typeof responseSchema>['candidates'][number]['content']\n>;\nexport type GroundingMetadataSchema = NonNullable<\n  InferSchema<typeof responseSchema>['candidates'][number]['groundingMetadata']\n>;\n\ntype GroundingChunkSchema = NonNullable<\n  GroundingMetadataSchema['groundingChunks']\n>[number];\n\nexport type UrlContextMetadataSchema = NonNullable<\n  InferSchema<typeof responseSchema>['candidates'][number]['urlContextMetadata']\n>;\n\nexport type SafetyRatingSchema = NonNullable<\n  InferSchema<typeof responseSchema>['candidates'][number]['safetyRatings']\n>[number];\n\nexport type PromptFeedbackSchema = NonNullable<\n  InferSchema<typeof responseSchema>['promptFeedback']\n>;\n\nexport type UsageMetadataSchema = NonNullable<\n  InferSchema<typeof responseSchema>['usageMetadata']\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 = lazySchema(() =>\n  zodSchema(\n    z.object({\n      candidates: z\n        .array(\n          z.object({\n            content: getContentSchema().nullish(),\n            finishReason: z.string().nullish(),\n            finishMessage: z.string().nullish(),\n            safetyRatings: z.array(getSafetyRatingSchema()).nullish(),\n            groundingMetadata: getGroundingMetadataSchema().nullish(),\n            urlContextMetadata: getUrlContextMetadataSchema().nullish(),\n          }),\n        )\n        .nullish(),\n      usageMetadata: usageSchema.nullish(),\n      promptFeedback: z\n        .object({\n          blockReason: z.string().nullish(),\n          safetyRatings: z.array(getSafetyRatingSchema()).nullish(),\n        })\n        .nullish(),\n      serviceTier: z.string().nullish(),\n    }),\n  ),\n);\n\ntype ChunkSchema = InferSchema<typeof chunkSchema>;\n","import { createProviderToolFactoryWithOutputSchema } 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 = createProviderToolFactoryWithOutputSchema<\n  {\n    language: string;\n    code: string;\n  },\n  {\n    outcome: string;\n    output: string;\n  },\n  {}\n>({\n  id: 'google.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 {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/web-grounding-enterprise\n\nexport const enterpriseWebSearch = createProviderToolFactory<\n  {\n    // Enterprise Web Search does not have any input schema\n  },\n  {}\n>({\n  id: 'google.enterprise_web_search',\n  inputSchema: lazySchema(() => zodSchema(z.object({}))),\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/** Tool to retrieve knowledge from the File Search Stores. */\nconst fileSearchArgsBaseSchema = z\n  .object({\n    /** The names of the file_search_stores to retrieve from.\n     *  Example: `fileSearchStores/my-file-search-store-123`\n     */\n    fileSearchStoreNames: z\n      .array(z.string())\n      .describe(\n        'The names of the file_search_stores to retrieve from. Example: `fileSearchStores/my-file-search-store-123`',\n      ),\n    /** The number of file search retrieval chunks to retrieve. */\n    topK: z\n      .number()\n      .int()\n      .positive()\n      .describe('The number of file search retrieval chunks to retrieve.')\n      .optional(),\n\n    /** Metadata filter to apply to the file search retrieval documents.\n     *  See https://google.aip.dev/160 for the syntax of the filter expression.\n     */\n    metadataFilter: z\n      .string()\n      .describe(\n        'Metadata filter to apply to the file search retrieval documents. See https://google.aip.dev/160 for the syntax of the filter expression.',\n      )\n      .optional(),\n  })\n  .passthrough();\n\nexport type GoogleFileSearchToolArgs = z.infer<typeof fileSearchArgsBaseSchema>;\n\nconst fileSearchArgsSchema = lazySchema(() =>\n  zodSchema(fileSearchArgsBaseSchema),\n);\n\nexport const fileSearch = createProviderToolFactory<\n  {},\n  GoogleFileSearchToolArgs\n>({\n  id: 'google.file_search',\n  inputSchema: fileSearchArgsSchema,\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://ai.google.dev/gemini-api/docs/maps-grounding\n// https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-maps\n\nexport const googleMaps = createProviderToolFactory<{}, {}>({\n  id: 'google.google_maps',\n  inputSchema: lazySchema(() => zodSchema(z.object({}))),\n});\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} 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\nconst googleSearchToolArgsBaseSchema = z\n  .object({\n    searchTypes: z\n      .object({\n        webSearch: z.object({}).optional(),\n        imageSearch: z.object({}).optional(),\n      })\n      .optional(),\n\n    timeRangeFilter: z\n      .object({\n        startTime: z.string(),\n        endTime: z.string(),\n      })\n      .optional(),\n  })\n  .passthrough();\n\nexport type GoogleSearchToolArgs = z.infer<\n  typeof googleSearchToolArgsBaseSchema\n>;\n\nconst googleSearchToolArgsSchema = lazySchema(() =>\n  zodSchema(googleSearchToolArgsBaseSchema),\n);\n\nexport const googleSearch = createProviderToolFactory<{}, GoogleSearchToolArgs>(\n  {\n    id: 'google.google_search',\n    inputSchema: googleSearchToolArgsSchema,\n  },\n);\n","import {\n  createProviderToolFactory,\n  lazySchema,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const urlContext = createProviderToolFactory<\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  inputSchema: lazySchema(() => zodSchema(z.object({}))),\n});\n","import { createProviderToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// https://cloud.google.com/vertex-ai/generative-ai/docs/rag-engine/use-vertexai-search#generate-content-using-gemini-api\n// https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/rag-output-explained\n\n/**\n * A tool that enables the model to perform RAG searches against a Vertex RAG Store.\n *\n * @note Only works with Vertex Gemini models.\n */\nexport const vertexRagStore = createProviderToolFactory<\n  {},\n  {\n    /**\n     * RagCorpus resource names, eg: projects/{project}/locations/{location}/ragCorpora/{rag_corpus}\n     */\n    ragCorpus: string;\n\n    /**\n     * The number of top contexts to retrieve.\n     */\n    topK?: number;\n  }\n>({\n  id: 'google.vertex_rag_store',\n  inputSchema: z.object({\n    ragCorpus: z.string(),\n    topK: z.number().optional(),\n  }),\n});\n","import { codeExecution } from './tool/code-execution';\nimport { enterpriseWebSearch } from './tool/enterprise-web-search';\nimport { fileSearch } from './tool/file-search';\nimport { googleMaps } from './tool/google-maps';\nimport { googleSearch } from './tool/google-search';\nimport { urlContext } from './tool/url-context';\nimport { vertexRagStore } from './tool/vertex-rag-store';\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 an Enterprise Web Search tool for grounding responses using a compliance-focused web index.\n   * Designed for highly-regulated industries (finance, healthcare, public sector).\n   * Does not log customer data and supports VPC service controls.\n   * Must have name \"enterprise_web_search\".\n   *\n   * @note Only available on Vertex AI. Requires Gemini 2.0 or newer.\n   *\n   * @see https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/web-grounding-enterprise\n   */\n  enterpriseWebSearch,\n\n  /**\n   * Creates a Google Maps grounding tool that gives the model access to Google Maps data.\n   * Must have name \"google_maps\".\n   *\n   * @see https://ai.google.dev/gemini-api/docs/maps-grounding\n   * @see https://cloud.google.com/vertex-ai/generative-ai/docs/grounding/grounding-with-google-maps\n   */\n  googleMaps,\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  /**\n   * Enables Retrieval Augmented Generation (RAG) via the Gemini File Search tool.\n   * Must have name \"file_search\".\n   *\n   * @param fileSearchStoreNames - Fully-qualified File Search store resource names.\n   * @param metadataFilter - Optional filter expression to restrict the files that can be retrieved.\n   * @param topK - Optional result limit for the number of chunks returned from File Search.\n   *\n   * @see https://ai.google.dev/gemini-api/docs/file-search\n   */\n  fileSearch,\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  /**\n   * Creates a Vertex RAG Store tool that enables the model to perform RAG searches against a Vertex RAG Store.\n   * Must have name \"vertex_rag_store\".\n   */\n  vertexRagStore,\n};\n","import {\n  ImageModelV3,\n  LanguageModelV3Prompt,\n  SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertToBase64,\n  createJsonResponseHandler,\n  FetchFunction,\n  generateId as defaultGenerateId,\n  type InferSchema,\n  lazySchema,\n  parseProviderOptions,\n  postJsonToApi,\n  Resolvable,\n  resolve,\n  zodSchema,\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 { GoogleGenerativeAILanguageModel } from './google-generative-ai-language-model';\nimport type { GoogleLanguageModelOptions } from './google-generative-ai-options';\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 ImageModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get maxImagesPerCall(): number {\n    if (this.settings.maxImagesPerCall != null) {\n      return this.settings.maxImagesPerCall;\n    }\n    // https://docs.cloud.google.com/vertex-ai/generative-ai/docs/models/gemini/2-5-flash-image\n    if (isGeminiModel(this.modelId)) {\n      return 10;\n    }\n    // https://ai.google.dev/gemini-api/docs/imagen#imagen-model\n    return 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<ImageModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>> {\n    // Gemini image models use the language model API internally\n    if (isGeminiModel(this.modelId)) {\n      return this.doGenerateGemini(options);\n    }\n    return this.doGenerateImagen(options);\n  }\n\n  private async doGenerateImagen(\n    options: Parameters<ImageModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>> {\n    const {\n      prompt,\n      n = 1,\n      size,\n      aspectRatio = '1:1',\n      seed,\n      providerOptions,\n      headers,\n      abortSignal,\n      files,\n      mask,\n    } = options;\n    const warnings: Array<SharedV3Warning> = [];\n\n    // Imagen API endpoints do not support image editing\n    if (files != null && files.length > 0) {\n      throw new Error(\n        'Google Generative AI does not support image editing with Imagen models. ' +\n          'Use Google Vertex AI (@ai-sdk/google-vertex) for image editing capabilities.',\n      );\n    }\n\n    if (mask != null) {\n      throw new Error(\n        'Google Generative AI does not support image editing with masks. ' +\n          'Use Google Vertex AI (@ai-sdk/google-vertex) for image editing capabilities.',\n      );\n    }\n\n    if (size != null) {\n      warnings.push({\n        type: 'unsupported',\n        feature: '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',\n        feature: '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: googleImageModelOptionsSchema,\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,\n      providerMetadata: {\n        google: {\n          images: response.predictions.map(() => ({\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  private async doGenerateGemini(\n    options: Parameters<ImageModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<ImageModelV3['doGenerate']>>> {\n    const {\n      prompt,\n      n,\n      size,\n      aspectRatio,\n      seed,\n      providerOptions,\n      headers,\n      abortSignal,\n      files,\n      mask,\n    } = options;\n    const warnings: Array<SharedV3Warning> = [];\n\n    // Gemini does not support mask-based inpainting\n    if (mask != null) {\n      throw new Error(\n        'Gemini image models do not support mask-based image editing.',\n      );\n    }\n\n    // Gemini does not support generating multiple images per call via n parameter\n    if (n != null && n > 1) {\n      throw new Error(\n        'Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.',\n      );\n    }\n\n    if (size != null) {\n      warnings.push({\n        type: 'unsupported',\n        feature: 'size',\n        details:\n          'This model does not support the `size` option. Use `aspectRatio` instead.',\n      });\n    }\n\n    // Build user message content for language model\n    const userContent: Array<\n      | { type: 'text'; text: string }\n      | { type: 'file'; data: string | Uint8Array | URL; mediaType: string }\n    > = [];\n\n    // Add text prompt\n    if (prompt != null) {\n      userContent.push({ type: 'text', text: prompt });\n    }\n\n    // Add input images for editing\n    if (files != null && files.length > 0) {\n      for (const file of files) {\n        if (file.type === 'url') {\n          userContent.push({\n            type: 'file',\n            data: new URL(file.url),\n            mediaType: 'image/*',\n          });\n        } else {\n          userContent.push({\n            type: 'file',\n            data:\n              typeof file.data === 'string'\n                ? file.data\n                : new Uint8Array(file.data),\n            mediaType: file.mediaType,\n          });\n        }\n      }\n    }\n\n    const languageModelPrompt: LanguageModelV3Prompt = [\n      { role: 'user', content: userContent },\n    ];\n\n    // Instantiate language model\n    const languageModel = new GoogleGenerativeAILanguageModel(this.modelId, {\n      provider: this.config.provider,\n      baseURL: this.config.baseURL,\n      headers: this.config.headers ?? {},\n      fetch: this.config.fetch,\n      generateId: this.config.generateId ?? defaultGenerateId,\n    });\n\n    // Call language model with image-only response modality\n    const result = await languageModel.doGenerate({\n      prompt: languageModelPrompt,\n      seed,\n      providerOptions: {\n        google: {\n          responseModalities: ['IMAGE'],\n          imageConfig: aspectRatio\n            ? {\n                aspectRatio: aspectRatio as NonNullable<\n                  GoogleLanguageModelOptions['imageConfig']\n                >['aspectRatio'],\n              }\n            : undefined,\n          ...((providerOptions?.google as Omit<\n            GoogleLanguageModelOptions,\n            'responseModalities' | 'imageConfig'\n          >) ?? {}),\n        } satisfies GoogleLanguageModelOptions,\n      },\n      headers,\n      abortSignal,\n    });\n\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n\n    // Extract images from language model response\n    const images: string[] = [];\n    for (const part of result.content) {\n      if (part.type === 'file' && part.mediaType.startsWith('image/')) {\n        images.push(convertToBase64(part.data));\n      }\n    }\n\n    return {\n      images,\n      warnings,\n      providerMetadata: {\n        google: {\n          images: images.map(() => ({})),\n        },\n      },\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: result.response?.headers,\n      },\n      usage: result.usage\n        ? {\n            inputTokens: result.usage.inputTokens.total,\n            outputTokens: result.usage.outputTokens.total,\n            totalTokens:\n              (result.usage.inputTokens.total ?? 0) +\n              (result.usage.outputTokens.total ?? 0),\n          }\n        : undefined,\n    };\n  }\n}\n\nfunction isGeminiModel(modelId: string): boolean {\n  return modelId.startsWith('gemini-');\n}\n\n// minimal version of the schema\nconst googleImageResponseSchema = lazySchema(() =>\n  zodSchema(\n    z.object({\n      predictions: z\n        .array(z.object({ bytesBase64Encoded: z.string() }))\n        .default([]),\n    }),\n  ),\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 googleImageModelOptionsSchema = lazySchema(() =>\n  zodSchema(\n    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  ),\n);\n\nexport type GoogleImageModelOptions = InferSchema<\n  typeof googleImageModelOptionsSchema\n>;\n","import {\n  AISDKError,\n  type Experimental_VideoModelV3,\n  type SharedV3Warning,\n} from '@ai-sdk/provider';\nimport {\n  combineHeaders,\n  convertUint8ArrayToBase64,\n  createJsonResponseHandler,\n  delay,\n  type FetchFunction,\n  getFromApi,\n  lazySchema,\n  parseProviderOptions,\n  postJsonToApi,\n  type Resolvable,\n  resolve,\n  zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { googleFailedResponseHandler } from './google-error';\nimport type { GoogleGenerativeAIVideoModelId } from './google-generative-ai-video-settings';\n\nexport type GoogleVideoModelOptions = {\n  // Polling configuration\n  pollIntervalMs?: number | null;\n  pollTimeoutMs?: number | null;\n\n  // Video generation options\n  personGeneration?: 'dont_allow' | 'allow_adult' | 'allow_all' | null;\n  negativePrompt?: string | null;\n\n  // Reference images (for style/asset reference)\n  referenceImages?: Array<{\n    bytesBase64Encoded?: string;\n    gcsUri?: string;\n  }> | null;\n\n  [key: string]: unknown; // For passthrough\n};\n\ninterface GoogleGenerativeAIVideoModelConfig {\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 GoogleGenerativeAIVideoModel implements Experimental_VideoModelV3 {\n  readonly specificationVersion = 'v3';\n\n  get provider(): string {\n    return this.config.provider;\n  }\n\n  get maxVideosPerCall(): number {\n    // Google supports multiple videos via sampleCount\n    return 4;\n  }\n\n  constructor(\n    readonly modelId: GoogleGenerativeAIVideoModelId,\n    private readonly config: GoogleGenerativeAIVideoModelConfig,\n  ) {}\n\n  async doGenerate(\n    options: Parameters<Experimental_VideoModelV3['doGenerate']>[0],\n  ): Promise<Awaited<ReturnType<Experimental_VideoModelV3['doGenerate']>>> {\n    const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n    const warnings: SharedV3Warning[] = [];\n\n    const googleOptions = (await parseProviderOptions({\n      provider: 'google',\n      providerOptions: options.providerOptions,\n      schema: googleVideoModelOptionsSchema,\n    })) as GoogleVideoModelOptions | undefined;\n\n    const instances: Array<Record<string, unknown>> = [{}];\n    const instance = instances[0];\n\n    if (options.prompt != null) {\n      instance.prompt = options.prompt;\n    }\n\n    // Handle image-to-video: convert image to base64\n    if (options.image != null) {\n      if (options.image.type === 'url') {\n        warnings.push({\n          type: 'unsupported',\n          feature: 'URL-based image input',\n          details:\n            'Google Generative AI video models require base64-encoded images. URL will be ignored.',\n        });\n      } else {\n        const base64Data =\n          typeof options.image.data === 'string'\n            ? options.image.data\n            : convertUint8ArrayToBase64(options.image.data);\n\n        instance.image = {\n          inlineData: {\n            mimeType: options.image.mediaType || 'image/png',\n            data: base64Data,\n          },\n        };\n      }\n    }\n\n    if (googleOptions?.referenceImages != null) {\n      instance.referenceImages = googleOptions.referenceImages.map(refImg => {\n        if (refImg.bytesBase64Encoded) {\n          return {\n            inlineData: {\n              mimeType: 'image/png',\n              data: refImg.bytesBase64Encoded,\n            },\n          };\n        } else if (refImg.gcsUri) {\n          return {\n            gcsUri: refImg.gcsUri,\n          };\n        }\n        return refImg;\n      });\n    }\n\n    const parameters: Record<string, unknown> = {\n      sampleCount: options.n,\n    };\n\n    if (options.aspectRatio) {\n      parameters.aspectRatio = options.aspectRatio;\n    }\n\n    if (options.resolution) {\n      const resolutionMap: Record<string, string> = {\n        '1280x720': '720p',\n        '1920x1080': '1080p',\n        '3840x2160': '4k',\n      };\n      parameters.resolution =\n        resolutionMap[options.resolution] || options.resolution;\n    }\n\n    if (options.duration) {\n      parameters.durationSeconds = options.duration;\n    }\n\n    if (options.seed) {\n      parameters.seed = options.seed;\n    }\n\n    if (googleOptions != null) {\n      const opts = googleOptions as GoogleVideoModelOptions;\n\n      if (\n        opts.personGeneration !== undefined &&\n        opts.personGeneration !== null\n      ) {\n        parameters.personGeneration = opts.personGeneration;\n      }\n      if (opts.negativePrompt !== undefined && opts.negativePrompt !== null) {\n        parameters.negativePrompt = opts.negativePrompt;\n      }\n\n      for (const [key, value] of Object.entries(opts)) {\n        if (\n          ![\n            'pollIntervalMs',\n            'pollTimeoutMs',\n            'personGeneration',\n            'negativePrompt',\n            'referenceImages',\n          ].includes(key)\n        ) {\n          parameters[key] = value;\n        }\n      }\n    }\n\n    const { value: operation } = await postJsonToApi({\n      url: `${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,\n      headers: combineHeaders(\n        await resolve(this.config.headers),\n        options.headers,\n      ),\n      body: {\n        instances,\n        parameters,\n      },\n      successfulResponseHandler: createJsonResponseHandler(\n        googleOperationSchema,\n      ),\n      failedResponseHandler: googleFailedResponseHandler,\n      abortSignal: options.abortSignal,\n      fetch: this.config.fetch,\n    });\n\n    const operationName = operation.name;\n    if (!operationName) {\n      throw new AISDKError({\n        name: 'GOOGLE_VIDEO_GENERATION_ERROR',\n        message: 'No operation name returned from API',\n      });\n    }\n\n    const pollIntervalMs = googleOptions?.pollIntervalMs ?? 10000; // 10 seconds (per Google docs)\n    const pollTimeoutMs = googleOptions?.pollTimeoutMs ?? 600000; // 10 minutes\n\n    const startTime = Date.now();\n    let finalOperation = operation;\n    let responseHeaders: Record<string, string> | undefined;\n\n    while (!finalOperation.done) {\n      if (Date.now() - startTime > pollTimeoutMs) {\n        throw new AISDKError({\n          name: 'GOOGLE_VIDEO_GENERATION_TIMEOUT',\n          message: `Video generation timed out after ${pollTimeoutMs}ms`,\n        });\n      }\n\n      await delay(pollIntervalMs);\n\n      if (options.abortSignal?.aborted) {\n        throw new AISDKError({\n          name: 'GOOGLE_VIDEO_GENERATION_ABORTED',\n          message: 'Video generation request was aborted',\n        });\n      }\n\n      const { value: statusOperation, responseHeaders: pollHeaders } =\n        await getFromApi({\n          url: `${this.config.baseURL}/${operationName}`,\n          headers: combineHeaders(\n            await resolve(this.config.headers),\n            options.headers,\n          ),\n          successfulResponseHandler: createJsonResponseHandler(\n            googleOperationSchema,\n          ),\n          failedResponseHandler: googleFailedResponseHandler,\n          abortSignal: options.abortSignal,\n          fetch: this.config.fetch,\n        });\n\n      finalOperation = statusOperation;\n      responseHeaders = pollHeaders;\n    }\n\n    if (finalOperation.error) {\n      throw new AISDKError({\n        name: 'GOOGLE_VIDEO_GENERATION_FAILED',\n        message: `Video generation failed: ${finalOperation.error.message}`,\n      });\n    }\n\n    const response = finalOperation.response;\n    if (\n      !response?.generateVideoResponse?.generatedSamples ||\n      response.generateVideoResponse.generatedSamples.length === 0\n    ) {\n      throw new AISDKError({\n        name: 'GOOGLE_VIDEO_GENERATION_ERROR',\n        message: `No videos in response. Response: ${JSON.stringify(finalOperation)}`,\n      });\n    }\n\n    const videos: Array<{ type: 'url'; url: string; mediaType: string }> = [];\n    const videoMetadata: Array<{ uri: string }> = [];\n\n    // Get API key from headers to append to download URLs\n    const resolvedHeaders = await resolve(this.config.headers);\n    const apiKey = resolvedHeaders?.['x-goog-api-key'];\n\n    for (const generatedSample of response.generateVideoResponse\n      .generatedSamples) {\n      if (generatedSample.video?.uri) {\n        // Append API key to URL for authentication during download\n        const urlWithAuth = apiKey\n          ? `${generatedSample.video.uri}${generatedSample.video.uri.includes('?') ? '&' : '?'}key=${apiKey}`\n          : generatedSample.video.uri;\n\n        videos.push({\n          type: 'url',\n          url: urlWithAuth,\n          mediaType: 'video/mp4',\n        });\n        videoMetadata.push({\n          uri: generatedSample.video.uri,\n        });\n      }\n    }\n\n    if (videos.length === 0) {\n      throw new AISDKError({\n        name: 'GOOGLE_VIDEO_GENERATION_ERROR',\n        message: 'No valid videos in response',\n      });\n    }\n\n    return {\n      videos,\n      warnings,\n      response: {\n        timestamp: currentDate,\n        modelId: this.modelId,\n        headers: responseHeaders,\n      },\n      providerMetadata: {\n        google: {\n          videos: videoMetadata,\n        },\n      },\n    };\n  }\n}\n\nconst googleOperationSchema = z.object({\n  name: z.string().nullish(),\n  done: z.boolean().nullish(),\n  error: z\n    .object({\n      code: z.number().nullish(),\n      message: z.string(),\n      status: z.string().nullish(),\n    })\n    .nullish(),\n  response: z\n    .object({\n      generateVideoResponse: z\n        .object({\n          generatedSamples: z\n            .array(\n              z.object({\n                video: z\n                  .object({\n                    uri: z.string().nullish(),\n                  })\n                  .nullish(),\n              }),\n            )\n            .nullish(),\n        })\n        .nullish(),\n    })\n    .nullish(),\n});\n\nconst googleVideoModelOptionsSchema = lazySchema(() =>\n  zodSchema(\n    z\n      .object({\n        pollIntervalMs: z.number().positive().nullish(),\n        pollTimeoutMs: z.number().positive().nullish(),\n        personGeneration: z\n          .enum(['dont_allow', 'allow_adult', 'allow_all'])\n          .nullish(),\n        negativePrompt: z.string().nullish(),\n        referenceImages: z\n          .array(\n            z.object({\n              bytesBase64Encoded: z.string().nullish(),\n              gcsUri: z.string().nullish(),\n            }),\n          )\n          .nullish(),\n      })\n      .passthrough(),\n  ),\n);\n","import {\n  EmbeddingModelV3,\n  Experimental_VideoModelV3,\n  ImageModelV3,\n  LanguageModelV3,\n  ProviderV3,\n} from '@ai-sdk/provider';\nimport {\n  FetchFunction,\n  generateId,\n  loadApiKey,\n  withoutTrailingSlash,\n  withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { VERSION } from './version';\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';\nimport { GoogleGenerativeAIVideoModel } from './google-generative-ai-video-model';\nimport { GoogleGenerativeAIVideoModelId } from './google-generative-ai-video-settings';\n\nexport interface GoogleGenerativeAIProvider extends ProviderV3 {\n  (modelId: GoogleGenerativeAIModelId): LanguageModelV3;\n\n  languageModel(modelId: GoogleGenerativeAIModelId): LanguageModelV3;\n\n  chat(modelId: GoogleGenerativeAIModelId): LanguageModelV3;\n\n  /**\n   * Creates a model for image generation.\n   */\n  image(\n    modelId: GoogleGenerativeAIImageModelId,\n    settings?: GoogleGenerativeAIImageSettings,\n  ): ImageModelV3;\n\n  /**\n   * @deprecated Use `chat()` instead.\n   */\n  generativeAI(modelId: GoogleGenerativeAIModelId): LanguageModelV3;\n\n  /**\n   * Creates a model for text embeddings.\n   */\n  embedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * Creates a model for text embeddings.\n   */\n  embeddingModel(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embedding` instead.\n   */\n  textEmbedding(modelId: GoogleGenerativeAIEmbeddingModelId): EmbeddingModelV3;\n\n  /**\n   * @deprecated Use `embeddingModel` instead.\n   */\n  textEmbeddingModel(\n    modelId: GoogleGenerativeAIEmbeddingModelId,\n  ): EmbeddingModelV3;\n\n  /**\n   * Creates a model for video generation.\n   */\n  video(modelId: GoogleGenerativeAIVideoModelId): Experimental_VideoModelV3;\n\n  /**\n   * Creates a model for video generation.\n   */\n  videoModel(\n    modelId: GoogleGenerativeAIVideoModelId,\n  ): Experimental_VideoModelV3;\n\n  tools: typeof googleTools;\n}\n\nexport interface GoogleGenerativeAIProviderSettings {\n  /**\n   * Use a different URL prefix for API calls, e.g. to use proxy servers.\n   * The default prefix is `https://generativelanguage.googleapis.com/v1beta`.\n   */\n  baseURL?: string;\n\n  /**\n   * API key that is being send using the `x-goog-api-key` header.\n   * It defaults to the `GOOGLE_GENERATIVE_AI_API_KEY` environment variable.\n   */\n  apiKey?: string;\n\n  /**\n   * Custom headers to include in the requests.\n   */\n  headers?: Record<string, string | undefined>;\n\n  /**\n   * Custom fetch implementation. You can use it as a middleware to intercept requests,\n   * or to provide a custom fetch implementation for e.g. testing.\n   */\n  fetch?: FetchFunction;\n\n  /**\n   * Optional function to generate a unique ID for each request.\n   */\n  generateId?: () => string;\n\n  /**\n   * Custom provider name\n   * Defaults to 'google.generative-ai'.\n   */\n  name?: string;\n}\n\n/**\n * Create 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 providerName = options.name ?? 'google.generative-ai';\n\n  const getHeaders = () =>\n    withUserAgentSuffix(\n      {\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      `ai-sdk/google/${VERSION}`,\n    );\n\n  const createChatModel = (modelId: GoogleGenerativeAIModelId) =>\n    new GoogleGenerativeAILanguageModel(modelId, {\n      provider: providerName,\n      baseURL,\n      headers: getHeaders,\n      generateId: options.generateId ?? generateId,\n      supportedUrls: () => ({\n        '*': [\n          // Google Generative Language \"files\" endpoint\n          // e.g. https://generativelanguage.googleapis.com/v1beta/files/...\n          new RegExp(`^${baseURL}/files/.*$`),\n          // YouTube URLs (public or unlisted videos)\n          new RegExp(\n            `^https://(?:www\\\\.)?youtube\\\\.com/watch\\\\?v=[\\\\w-]+(?:&[\\\\w=&.-]*)?$`,\n          ),\n          new RegExp(`^https://youtu\\\\.be/[\\\\w-]+(?:\\\\?[\\\\w=&.-]*)?$`),\n        ],\n      }),\n      fetch: options.fetch,\n    });\n\n  const createEmbeddingModel = (modelId: GoogleGenerativeAIEmbeddingModelId) =>\n    new GoogleGenerativeAIEmbeddingModel(modelId, {\n      provider: providerName,\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: providerName,\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n    });\n\n  const createVideoModel = (modelId: GoogleGenerativeAIVideoModelId) =>\n    new GoogleGenerativeAIVideoModel(modelId, {\n      provider: providerName,\n      baseURL,\n      headers: getHeaders,\n      fetch: options.fetch,\n      generateId: options.generateId ?? generateId,\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.specificationVersion = 'v3' as const;\n  provider.languageModel = createChatModel;\n  provider.chat = createChatModel;\n  provider.generativeAI = createChatModel;\n  provider.embedding = createEmbeddingModel;\n  provider.embeddingModel = createEmbeddingModel;\n  provider.textEmbedding = createEmbeddingModel;\n  provider.textEmbeddingModel = createEmbeddingModel;\n  provider.image = createImageModel;\n  provider.imageModel = createImageModel;\n  provider.video = createVideoModel;\n  provider.videoModel = createVideoModel;\n  provider.tools = googleTools;\n\n  return provider as GoogleGenerativeAIProvider;\n}\n\n/**\n * Default Google Generative AI provider instance.\n */\nexport const google = createGoogleGenerativeAI();\n"]}