@mastra/core 1.9.0 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +202 -0
- package/dist/agent/agent.d.ts +22 -3
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/index.cjs +13 -13
- package/dist/agent/index.js +2 -2
- package/dist/agent/message-list/index.cjs +18 -18
- package/dist/agent/message-list/index.js +1 -1
- package/dist/agent/message-list/message-list.d.ts.map +1 -1
- package/dist/{chunk-IOY7Y5GV.js → chunk-3VVNJPTO.js} +602 -187
- package/dist/chunk-3VVNJPTO.js.map +1 -0
- package/dist/{chunk-VDKWYUGC.cjs → chunk-5WBEMKE2.cjs} +7 -3
- package/dist/chunk-5WBEMKE2.cjs.map +1 -0
- package/dist/{chunk-H5S4PS44.cjs → chunk-76Q75VI4.cjs} +602 -187
- package/dist/chunk-76Q75VI4.cjs.map +1 -0
- package/dist/{chunk-ZBESCKPX.cjs → chunk-7AHCLTZZ.cjs} +1572 -36
- package/dist/chunk-7AHCLTZZ.cjs.map +1 -0
- package/dist/{chunk-SEKQJ447.js → chunk-ACAILOJE.js} +166 -68
- package/dist/chunk-ACAILOJE.js.map +1 -0
- package/dist/{chunk-YIJZBU54.cjs → chunk-BCSVBOAN.cjs} +240 -463
- package/dist/chunk-BCSVBOAN.cjs.map +1 -0
- package/dist/{chunk-ZVWVQ6MG.js → chunk-CY4ZWL2X.js} +8 -3
- package/dist/chunk-CY4ZWL2X.js.map +1 -0
- package/dist/{chunk-ET7GXCHS.js → chunk-DIKRJVK6.js} +5 -5
- package/dist/{chunk-ET7GXCHS.js.map → chunk-DIKRJVK6.js.map} +1 -1
- package/dist/{chunk-P6ZX7OKT.cjs → chunk-E6I5LBDM.cjs} +7 -7
- package/dist/{chunk-P6ZX7OKT.cjs.map → chunk-E6I5LBDM.cjs.map} +1 -1
- package/dist/{chunk-BFV3GSGS.js → chunk-FT5Q6XTK.js} +1546 -22
- package/dist/chunk-FT5Q6XTK.js.map +1 -0
- package/dist/{chunk-K54LFB4P.js → chunk-FXOWXS4O.js} +3 -3
- package/dist/{chunk-K54LFB4P.js.map → chunk-FXOWXS4O.js.map} +1 -1
- package/dist/{chunk-QNXY3J6B.cjs → chunk-GCRPNAAR.cjs} +22 -19
- package/dist/chunk-GCRPNAAR.cjs.map +1 -0
- package/dist/{chunk-5M3RMO7U.js → chunk-GTA5BKXZ.js} +8 -8
- package/dist/{chunk-5M3RMO7U.js.map → chunk-GTA5BKXZ.js.map} +1 -1
- package/dist/{chunk-G5R2755Q.cjs → chunk-HAIQ57YB.cjs} +53 -20
- package/dist/chunk-HAIQ57YB.cjs.map +1 -0
- package/dist/{chunk-3ZBLD2Y4.cjs → chunk-HH76UOJL.cjs} +2 -2
- package/dist/{chunk-3ZBLD2Y4.cjs.map → chunk-HH76UOJL.cjs.map} +1 -1
- package/dist/{chunk-HAGCXIBX.cjs → chunk-HNYQITSV.cjs} +9 -9
- package/dist/{chunk-HAGCXIBX.cjs.map → chunk-HNYQITSV.cjs.map} +1 -1
- package/dist/{chunk-GJTLWOKJ.js → chunk-HQA3IBLZ.js} +51 -18
- package/dist/chunk-HQA3IBLZ.js.map +1 -0
- package/dist/{chunk-4BXXAZ75.js → chunk-HQTHWVAK.js} +15 -7
- package/dist/chunk-HQTHWVAK.js.map +1 -0
- package/dist/{chunk-CCLV5CAA.js → chunk-JGOH7RWL.js} +7 -3
- package/dist/chunk-JGOH7RWL.js.map +1 -0
- package/dist/{chunk-Y6TGIUGL.js → chunk-LSF5WJ6G.js} +2 -2
- package/dist/{chunk-Y6TGIUGL.js.map → chunk-LSF5WJ6G.js.map} +1 -1
- package/dist/{chunk-D6HO5QAM.cjs → chunk-M26GEN4C.cjs} +14 -9
- package/dist/chunk-M26GEN4C.cjs.map +1 -0
- package/dist/{chunk-4P35AVPE.cjs → chunk-MEMYFFOL.cjs} +256 -157
- package/dist/chunk-MEMYFFOL.cjs.map +1 -0
- package/dist/{chunk-BQ355Z3O.js → chunk-NUZWQA4J.js} +4 -4
- package/dist/{chunk-BQ355Z3O.js.map → chunk-NUZWQA4J.js.map} +1 -1
- package/dist/{chunk-JIRB5LX4.js → chunk-OHX36YXF.js} +5 -3
- package/dist/chunk-OHX36YXF.js.map +1 -0
- package/dist/{chunk-PKORY4ZZ.cjs → chunk-OOTLMVNN.cjs} +107 -7
- package/dist/chunk-OOTLMVNN.cjs.map +1 -0
- package/dist/{chunk-D4M6E4OQ.cjs → chunk-OWZ6QT24.cjs} +16 -8
- package/dist/chunk-OWZ6QT24.cjs.map +1 -0
- package/dist/{chunk-6OHS6ZQ3.js → chunk-PDJCIONR.js} +8 -8
- package/dist/{chunk-6OHS6ZQ3.js.map → chunk-PDJCIONR.js.map} +1 -1
- package/dist/{chunk-WU2P7XOU.cjs → chunk-PP4G2TZZ.cjs} +20 -20
- package/dist/{chunk-WU2P7XOU.cjs.map → chunk-PP4G2TZZ.cjs.map} +1 -1
- package/dist/{chunk-VWAK25TU.js → chunk-SBBWRNZA.js} +10 -7
- package/dist/chunk-SBBWRNZA.js.map +1 -0
- package/dist/{chunk-TU4YMXOQ.js → chunk-TJIFNVPX.js} +6 -6
- package/dist/{chunk-TU4YMXOQ.js.map → chunk-TJIFNVPX.js.map} +1 -1
- package/dist/{chunk-V5YNS2QO.cjs → chunk-XJNQHPBJ.cjs} +15 -15
- package/dist/{chunk-V5YNS2QO.cjs.map → chunk-XJNQHPBJ.cjs.map} +1 -1
- package/dist/{chunk-MVYP55NA.js → chunk-YC6Z75K2.js} +113 -336
- package/dist/chunk-YC6Z75K2.js.map +1 -0
- package/dist/{chunk-3ZF7IC6Q.cjs → chunk-YZMSJKAK.cjs} +5 -3
- package/dist/chunk-YZMSJKAK.cjs.map +1 -0
- package/dist/{chunk-L3WDI7HP.cjs → chunk-Z2X5VTYJ.cjs} +65 -65
- package/dist/{chunk-L3WDI7HP.cjs.map → chunk-Z2X5VTYJ.cjs.map} +1 -1
- package/dist/{chunk-BN5MV2QK.cjs → chunk-Z52OAJ73.cjs} +4 -4
- package/dist/{chunk-BN5MV2QK.cjs.map → chunk-Z52OAJ73.cjs.map} +1 -1
- package/dist/{chunk-WYPSC6CO.js → chunk-ZBU6P4JV.js} +104 -4
- package/dist/chunk-ZBU6P4JV.js.map +1 -0
- package/dist/datasets/experiment/index.d.ts.map +1 -1
- package/dist/datasets/experiment/scorer.d.ts.map +1 -1
- package/dist/datasets/index.cjs +17 -17
- package/dist/datasets/index.js +2 -2
- package/dist/di/index.cjs +4 -4
- package/dist/di/index.js +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +443 -384
- package/dist/docs/references/docs-agents-agent-approval.md +61 -31
- package/dist/docs/references/docs-agents-supervisor-agents.md +1 -1
- package/dist/docs/references/docs-memory-observational-memory.md +9 -0
- package/dist/docs/references/docs-memory-semantic-recall.md +17 -1
- package/dist/docs/references/docs-workspace-skills.md +7 -5
- package/dist/docs/references/reference-agents-agent.md +20 -20
- package/dist/docs/references/reference-agents-generate.md +200 -66
- package/dist/docs/references/reference-agents-generateLegacy.md +77 -35
- package/dist/docs/references/reference-agents-getDefaultGenerateOptions.md +4 -6
- package/dist/docs/references/reference-agents-getDefaultOptions.md +4 -6
- package/dist/docs/references/reference-agents-getDefaultStreamOptions.md +4 -6
- package/dist/docs/references/reference-agents-getDescription.md +1 -1
- package/dist/docs/references/reference-agents-getInstructions.md +4 -6
- package/dist/docs/references/reference-agents-getLLM.md +6 -8
- package/dist/docs/references/reference-agents-getMemory.md +4 -6
- package/dist/docs/references/reference-agents-getModel.md +4 -6
- package/dist/docs/references/reference-agents-getTools.md +5 -7
- package/dist/docs/references/reference-agents-getVoice.md +4 -6
- package/dist/docs/references/reference-agents-listAgents.md +4 -6
- package/dist/docs/references/reference-agents-listScorers.md +4 -6
- package/dist/docs/references/reference-agents-listTools.md +4 -6
- package/dist/docs/references/reference-agents-listWorkflows.md +4 -6
- package/dist/docs/references/reference-agents-network.md +69 -23
- package/dist/docs/references/reference-ai-sdk-chat-route.md +7 -7
- package/dist/docs/references/reference-ai-sdk-network-route.md +3 -3
- package/dist/docs/references/reference-ai-sdk-to-ai-sdk-stream.md +9 -9
- package/dist/docs/references/reference-ai-sdk-with-mastra.md +12 -12
- package/dist/docs/references/reference-ai-sdk-workflow-route.md +3 -3
- package/dist/docs/references/reference-auth-auth0.md +6 -6
- package/dist/docs/references/reference-auth-clerk.md +5 -5
- package/dist/docs/references/reference-auth-firebase.md +7 -7
- package/dist/docs/references/reference-auth-jwt.md +1 -1
- package/dist/docs/references/reference-auth-supabase.md +4 -4
- package/dist/docs/references/reference-auth-workos.md +6 -6
- package/dist/docs/references/reference-core-addGateway.md +2 -2
- package/dist/docs/references/reference-core-getAgent.md +2 -2
- package/dist/docs/references/reference-core-getAgentById.md +2 -2
- package/dist/docs/references/reference-core-getDeployer.md +1 -1
- package/dist/docs/references/reference-core-getGateway.md +2 -2
- package/dist/docs/references/reference-core-getGatewayById.md +2 -2
- package/dist/docs/references/reference-core-getLogger.md +1 -1
- package/dist/docs/references/reference-core-getMCPServer.md +2 -2
- package/dist/docs/references/reference-core-getMCPServerById.md +3 -3
- package/dist/docs/references/reference-core-getMemory.md +2 -2
- package/dist/docs/references/reference-core-getScorer.md +2 -2
- package/dist/docs/references/reference-core-getScorerById.md +2 -2
- package/dist/docs/references/reference-core-getServer.md +1 -1
- package/dist/docs/references/reference-core-getStorage.md +1 -1
- package/dist/docs/references/reference-core-getStoredAgentById.md +18 -20
- package/dist/docs/references/reference-core-getTelemetry.md +1 -1
- package/dist/docs/references/reference-core-getVector.md +2 -2
- package/dist/docs/references/reference-core-getWorkflow.md +3 -3
- package/dist/docs/references/reference-core-listAgents.md +1 -1
- package/dist/docs/references/reference-core-listGateways.md +1 -1
- package/dist/docs/references/reference-core-listLogs.md +9 -11
- package/dist/docs/references/reference-core-listLogsByRunId.md +9 -9
- package/dist/docs/references/reference-core-listMCPServers.md +1 -1
- package/dist/docs/references/reference-core-listMemory.md +1 -1
- package/dist/docs/references/reference-core-listScorers.md +1 -1
- package/dist/docs/references/reference-core-listStoredAgents.md +9 -11
- package/dist/docs/references/reference-core-listVectors.md +1 -1
- package/dist/docs/references/reference-core-listWorkflows.md +2 -2
- package/dist/docs/references/reference-core-mastra-class.md +17 -17
- package/dist/docs/references/reference-core-mastra-model-gateway.md +15 -15
- package/dist/docs/references/reference-core-setLogger.md +2 -4
- package/dist/docs/references/reference-core-setStorage.md +1 -1
- package/dist/docs/references/reference-datasets-addItem.md +20 -4
- package/dist/docs/references/reference-datasets-addItems.md +8 -2
- package/dist/docs/references/reference-datasets-compareExperiments.md +15 -3
- package/dist/docs/references/reference-datasets-create.md +6 -6
- package/dist/docs/references/reference-datasets-dataset.md +1 -1
- package/dist/docs/references/reference-datasets-delete.md +2 -2
- package/dist/docs/references/reference-datasets-deleteExperiment.md +2 -2
- package/dist/docs/references/reference-datasets-deleteItem.md +2 -2
- package/dist/docs/references/reference-datasets-deleteItems.md +2 -2
- package/dist/docs/references/reference-datasets-get.md +2 -2
- package/dist/docs/references/reference-datasets-getDetails.md +9 -9
- package/dist/docs/references/reference-datasets-getExperiment.md +2 -2
- package/dist/docs/references/reference-datasets-getItem.md +3 -3
- package/dist/docs/references/reference-datasets-getItemHistory.md +22 -2
- package/dist/docs/references/reference-datasets-list.md +7 -3
- package/dist/docs/references/reference-datasets-listExperimentResults.md +34 -4
- package/dist/docs/references/reference-datasets-listExperiments.md +41 -3
- package/dist/docs/references/reference-datasets-listItems.md +18 -6
- package/dist/docs/references/reference-datasets-listVersions.md +23 -3
- package/dist/docs/references/reference-datasets-startExperiment.md +62 -12
- package/dist/docs/references/reference-datasets-startExperimentAsync.md +5 -1
- package/dist/docs/references/reference-datasets-update.md +6 -6
- package/dist/docs/references/reference-datasets-updateItem.md +5 -5
- package/dist/docs/references/reference-evals-answer-relevancy.md +11 -11
- package/dist/docs/references/reference-evals-answer-similarity.md +17 -19
- package/dist/docs/references/reference-evals-bias.md +10 -10
- package/dist/docs/references/reference-evals-completeness.md +3 -3
- package/dist/docs/references/reference-evals-content-similarity.md +6 -6
- package/dist/docs/references/reference-evals-context-precision.md +4 -4
- package/dist/docs/references/reference-evals-create-scorer.md +47 -49
- package/dist/docs/references/reference-evals-faithfulness.md +11 -11
- package/dist/docs/references/reference-evals-hallucination.md +17 -21
- package/dist/docs/references/reference-evals-keyword-coverage.md +4 -4
- package/dist/docs/references/reference-evals-mastra-scorer.md +14 -14
- package/dist/docs/references/reference-evals-run-evals.md +16 -16
- package/dist/docs/references/reference-evals-scorer-utils.md +3 -3
- package/dist/docs/references/reference-evals-textual-difference.md +3 -3
- package/dist/docs/references/reference-evals-tone-consistency.md +3 -3
- package/dist/docs/references/reference-evals-toxicity.md +8 -8
- package/dist/docs/references/reference-harness-harness-class.md +34 -42
- package/dist/docs/references/reference-logging-pino-logger.md +5 -5
- package/dist/docs/references/reference-memory-deleteMessages.md +2 -2
- package/dist/docs/references/reference-memory-memory-class.md +12 -14
- package/dist/docs/references/reference-memory-observational-memory.md +102 -94
- package/dist/docs/references/reference-observability-tracing-configuration.md +27 -10
- package/dist/docs/references/reference-observability-tracing-exporters-console-exporter.md +4 -7
- package/dist/docs/references/reference-processors-batch-parts-processor.md +8 -10
- package/dist/docs/references/reference-processors-language-detector.md +14 -16
- package/dist/docs/references/reference-processors-message-history-processor.md +7 -9
- package/dist/docs/references/reference-processors-moderation-processor.md +13 -15
- package/dist/docs/references/reference-processors-pii-detector.md +14 -16
- package/dist/docs/references/reference-processors-processor-interface.md +62 -62
- package/dist/docs/references/reference-processors-prompt-injection-detector.md +11 -13
- package/dist/docs/references/reference-processors-semantic-recall-processor.md +14 -16
- package/dist/docs/references/reference-processors-system-prompt-scrubber.md +12 -14
- package/dist/docs/references/reference-processors-token-limiter-processor.md +11 -13
- package/dist/docs/references/reference-processors-tool-call-filter.md +5 -7
- package/dist/docs/references/reference-processors-tool-search-processor.md +9 -11
- package/dist/docs/references/reference-processors-unicode-normalizer.md +8 -10
- package/dist/docs/references/reference-processors-working-memory-processor.md +14 -18
- package/dist/docs/references/reference-rag-database-config.md +11 -7
- package/dist/docs/references/reference-rag-embeddings.md +12 -12
- package/dist/docs/references/reference-server-mastra-server.md +10 -10
- package/dist/docs/references/reference-server-register-api-route.md +13 -13
- package/dist/docs/references/reference-storage-cloudflare-d1.md +5 -5
- package/dist/docs/references/reference-storage-composite.md +9 -9
- package/dist/docs/references/reference-storage-lance.md +3 -3
- package/dist/docs/references/reference-storage-libsql.md +2 -2
- package/dist/docs/references/reference-storage-mongodb.md +5 -5
- package/dist/docs/references/reference-storage-mssql.md +2 -2
- package/dist/docs/references/reference-storage-postgresql.md +25 -25
- package/dist/docs/references/reference-storage-upstash.md +3 -3
- package/dist/docs/references/reference-streaming-ChunkType.md +251 -59
- package/dist/docs/references/reference-streaming-agents-MastraModelOutput.md +86 -16
- package/dist/docs/references/reference-streaming-agents-streamLegacy.md +79 -39
- package/dist/docs/references/reference-streaming-workflows-resumeStream.md +18 -8
- package/dist/docs/references/reference-streaming-workflows-stream.md +21 -9
- package/dist/docs/references/reference-streaming-workflows-timeTravelStream.md +4 -4
- package/dist/docs/references/reference-tools-create-tool.md +25 -21
- package/dist/docs/references/reference-tools-graph-rag-tool.md +16 -18
- package/dist/docs/references/reference-tools-mcp-client.md +38 -27
- package/dist/docs/references/reference-tools-mcp-server.md +45 -45
- package/dist/docs/references/reference-tools-vector-query-tool.md +34 -22
- package/dist/docs/references/reference-vectors-libsql.md +31 -31
- package/dist/docs/references/reference-vectors-mongodb.md +32 -32
- package/dist/docs/references/reference-vectors-pg.md +60 -44
- package/dist/docs/references/reference-vectors-upstash.md +25 -25
- package/dist/docs/references/reference-voice-composite-voice.md +10 -10
- package/dist/docs/references/reference-voice-mastra-voice.md +20 -20
- package/dist/docs/references/reference-voice-voice.addInstructions.md +1 -1
- package/dist/docs/references/reference-voice-voice.addTools.md +1 -1
- package/dist/docs/references/reference-voice-voice.connect.md +3 -3
- package/dist/docs/references/reference-voice-voice.events.md +11 -11
- package/dist/docs/references/reference-voice-voice.listen.md +9 -9
- package/dist/docs/references/reference-voice-voice.on.md +2 -2
- package/dist/docs/references/reference-voice-voice.speak.md +11 -11
- package/dist/docs/references/reference-workflows-run-methods-cancel.md +2 -2
- package/dist/docs/references/reference-workflows-run-methods-restart.md +17 -5
- package/dist/docs/references/reference-workflows-run-methods-resume.md +23 -9
- package/dist/docs/references/reference-workflows-run-methods-start.md +22 -8
- package/dist/docs/references/reference-workflows-run-methods-startAsync.md +12 -6
- package/dist/docs/references/reference-workflows-run-methods-timeTravel.md +29 -13
- package/dist/docs/references/reference-workflows-run.md +12 -12
- package/dist/docs/references/reference-workflows-step.md +24 -26
- package/dist/docs/references/reference-workflows-workflow-methods-branch.md +2 -2
- package/dist/docs/references/reference-workflows-workflow-methods-commit.md +1 -1
- package/dist/docs/references/reference-workflows-workflow-methods-create-run.md +4 -4
- package/dist/docs/references/reference-workflows-workflow-methods-dountil.md +3 -3
- package/dist/docs/references/reference-workflows-workflow-methods-dowhile.md +3 -3
- package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +9 -9
- package/dist/docs/references/reference-workflows-workflow-methods-map.md +2 -2
- package/dist/docs/references/reference-workflows-workflow-methods-parallel.md +2 -2
- package/dist/docs/references/reference-workflows-workflow-methods-sleep.md +2 -2
- package/dist/docs/references/reference-workflows-workflow-methods-sleepUntil.md +2 -2
- package/dist/docs/references/reference-workflows-workflow-methods-then.md +2 -2
- package/dist/docs/references/reference-workflows-workflow.md +40 -50
- package/dist/docs/references/reference-workspace-filesystem.md +22 -22
- package/dist/docs/references/reference-workspace-local-filesystem.md +35 -35
- package/dist/docs/references/reference-workspace-local-sandbox.md +26 -26
- package/dist/docs/references/reference-workspace-sandbox.md +8 -8
- package/dist/docs/references/reference-workspace-workspace-class.md +30 -34
- package/dist/editor/types.d.ts +1 -0
- package/dist/editor/types.d.ts.map +1 -1
- package/dist/evals/index.cjs +20 -20
- package/dist/evals/index.js +3 -3
- package/dist/evals/scoreTraces/index.cjs +5 -5
- package/dist/evals/scoreTraces/index.js +2 -2
- package/dist/harness/harness.d.ts.map +1 -1
- package/dist/harness/index.cjs +25 -21
- package/dist/harness/index.cjs.map +1 -1
- package/dist/harness/index.js +15 -11
- package/dist/harness/index.js.map +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/dist/integration/index.cjs +2 -2
- package/dist/integration/index.js +1 -1
- package/dist/llm/index.cjs +12 -12
- package/dist/llm/index.js +3 -3
- package/dist/llm/model/model.d.ts.map +1 -1
- package/dist/llm/model/model.loop.d.ts.map +1 -1
- package/dist/llm/model/provider-types.generated.d.ts +5 -1
- package/dist/loop/index.cjs +14 -14
- package/dist/loop/index.js +1 -1
- package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
- package/dist/mastra/index.cjs +2 -2
- package/dist/mastra/index.js +1 -1
- package/dist/memory/index.cjs +14 -14
- package/dist/memory/index.js +1 -1
- package/dist/models-dev-2FJK72J2.cjs +12 -0
- package/dist/{models-dev-UVWCKPA2.cjs.map → models-dev-2FJK72J2.cjs.map} +1 -1
- package/dist/models-dev-CMQG6EMO.js +3 -0
- package/dist/{models-dev-W3LXZTEB.js.map → models-dev-CMQG6EMO.js.map} +1 -1
- package/dist/processor-provider/index.cjs +10 -10
- package/dist/processor-provider/index.js +1 -1
- package/dist/processors/index.cjs +42 -42
- package/dist/processors/index.js +1 -1
- package/dist/processors/processors/skills.d.ts +9 -42
- package/dist/processors/processors/skills.d.ts.map +1 -1
- package/dist/provider-registry-EHOAWHFE.cjs +40 -0
- package/dist/{provider-registry-4HLP2JRR.cjs.map → provider-registry-EHOAWHFE.cjs.map} +1 -1
- package/dist/provider-registry-LVP6T63V.js +3 -0
- package/dist/{provider-registry-K3DWQSMH.js.map → provider-registry-LVP6T63V.js.map} +1 -1
- package/dist/provider-registry.json +12 -4
- package/dist/relevance/index.cjs +3 -3
- package/dist/relevance/index.js +1 -1
- package/dist/request-context/index.cjs +4 -4
- package/dist/request-context/index.d.ts.map +1 -1
- package/dist/request-context/index.js +1 -1
- package/dist/storage/base.d.ts +34 -1
- package/dist/storage/base.d.ts.map +1 -1
- package/dist/storage/constants.cjs +56 -56
- package/dist/storage/constants.js +1 -1
- package/dist/storage/domains/agents/filesystem.d.ts +28 -0
- package/dist/storage/domains/agents/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/agents/index.d.ts +1 -0
- package/dist/storage/domains/agents/index.d.ts.map +1 -1
- package/dist/storage/domains/experiments/inmemory.d.ts.map +1 -1
- package/dist/storage/domains/mcp-clients/filesystem.d.ts +28 -0
- package/dist/storage/domains/mcp-clients/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/mcp-clients/index.d.ts +1 -0
- package/dist/storage/domains/mcp-clients/index.d.ts.map +1 -1
- package/dist/storage/domains/mcp-servers/filesystem.d.ts +28 -0
- package/dist/storage/domains/mcp-servers/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/mcp-servers/index.d.ts +1 -0
- package/dist/storage/domains/mcp-servers/index.d.ts.map +1 -1
- package/dist/storage/domains/prompt-blocks/filesystem.d.ts +28 -0
- package/dist/storage/domains/prompt-blocks/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/prompt-blocks/index.d.ts +1 -0
- package/dist/storage/domains/prompt-blocks/index.d.ts.map +1 -1
- package/dist/storage/domains/scorer-definitions/filesystem.d.ts +28 -0
- package/dist/storage/domains/scorer-definitions/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/scorer-definitions/index.d.ts +1 -0
- package/dist/storage/domains/scorer-definitions/index.d.ts.map +1 -1
- package/dist/storage/domains/skills/filesystem.d.ts +28 -0
- package/dist/storage/domains/skills/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/skills/index.d.ts +1 -0
- package/dist/storage/domains/skills/index.d.ts.map +1 -1
- package/dist/storage/domains/workspaces/filesystem.d.ts +28 -0
- package/dist/storage/domains/workspaces/filesystem.d.ts.map +1 -0
- package/dist/storage/domains/workspaces/index.d.ts +1 -0
- package/dist/storage/domains/workspaces/index.d.ts.map +1 -1
- package/dist/storage/filesystem-db.d.ts +82 -0
- package/dist/storage/filesystem-db.d.ts.map +1 -0
- package/dist/storage/filesystem-versioned.d.ts +148 -0
- package/dist/storage/filesystem-versioned.d.ts.map +1 -0
- package/dist/storage/filesystem.d.ts +39 -0
- package/dist/storage/filesystem.d.ts.map +1 -0
- package/dist/storage/git-history.d.ts +68 -0
- package/dist/storage/git-history.d.ts.map +1 -0
- package/dist/storage/index.cjs +208 -160
- package/dist/storage/index.d.ts +4 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -2
- package/dist/storage/types.d.ts +1 -0
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/stream/RunOutput.d.ts +1 -1
- package/dist/stream/aisdk/v5/output-helpers.d.ts +6 -6
- package/dist/stream/base/output.d.ts +3 -3
- package/dist/stream/base/schema.d.ts +1 -1
- package/dist/stream/index.cjs +11 -11
- package/dist/stream/index.js +2 -2
- package/dist/test-utils/llm-mock.cjs +4 -4
- package/dist/test-utils/llm-mock.js +1 -1
- package/dist/tool-loop-agent/index.cjs +4 -4
- package/dist/tool-loop-agent/index.js +1 -1
- package/dist/tools/index.cjs +6 -6
- package/dist/tools/index.js +1 -1
- package/dist/tools/is-vercel-tool.cjs +2 -2
- package/dist/tools/is-vercel-tool.js +1 -1
- package/dist/tools/tool-builder/builder.d.ts.map +1 -1
- package/dist/tools/tool.d.ts +6 -0
- package/dist/tools/tool.d.ts.map +1 -1
- package/dist/tools/types.d.ts +27 -0
- package/dist/tools/types.d.ts.map +1 -1
- package/dist/utils.cjs +23 -23
- package/dist/utils.js +1 -1
- package/dist/vector/index.cjs +9 -9
- package/dist/vector/index.js +2 -2
- package/dist/workflows/evented/index.cjs +10 -10
- package/dist/workflows/evented/index.js +1 -1
- package/dist/workflows/index.cjs +25 -25
- package/dist/workflows/index.js +1 -1
- package/dist/workspace/index.cjs +70 -66
- package/dist/workspace/index.d.ts +1 -0
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +1 -1
- package/dist/workspace/sandbox/execa.d.ts +9 -0
- package/dist/workspace/sandbox/execa.d.ts.map +1 -0
- package/dist/workspace/sandbox/local-process-manager.d.ts.map +1 -1
- package/dist/workspace/skills/index.d.ts +1 -0
- package/dist/workspace/skills/index.d.ts.map +1 -1
- package/dist/workspace/skills/tools.d.ts +36 -0
- package/dist/workspace/skills/tools.d.ts.map +1 -0
- package/dist/workspace/tools/execute-command.d.ts.map +1 -1
- package/dist/workspace/tools/output-helpers.d.ts +4 -3
- package/dist/workspace/tools/output-helpers.d.ts.map +1 -1
- package/package.json +9 -9
- package/src/llm/model/provider-types.generated.d.ts +5 -1
- package/dist/chunk-3ZF7IC6Q.cjs.map +0 -1
- package/dist/chunk-4BXXAZ75.js.map +0 -1
- package/dist/chunk-4P35AVPE.cjs.map +0 -1
- package/dist/chunk-BFV3GSGS.js.map +0 -1
- package/dist/chunk-CCLV5CAA.js.map +0 -1
- package/dist/chunk-D4M6E4OQ.cjs.map +0 -1
- package/dist/chunk-D6HO5QAM.cjs.map +0 -1
- package/dist/chunk-G5R2755Q.cjs.map +0 -1
- package/dist/chunk-GJTLWOKJ.js.map +0 -1
- package/dist/chunk-H5S4PS44.cjs.map +0 -1
- package/dist/chunk-IOY7Y5GV.js.map +0 -1
- package/dist/chunk-JIRB5LX4.js.map +0 -1
- package/dist/chunk-MVYP55NA.js.map +0 -1
- package/dist/chunk-PKORY4ZZ.cjs.map +0 -1
- package/dist/chunk-QNXY3J6B.cjs.map +0 -1
- package/dist/chunk-SEKQJ447.js.map +0 -1
- package/dist/chunk-VDKWYUGC.cjs.map +0 -1
- package/dist/chunk-VWAK25TU.js.map +0 -1
- package/dist/chunk-WYPSC6CO.js.map +0 -1
- package/dist/chunk-YIJZBU54.cjs.map +0 -1
- package/dist/chunk-ZBESCKPX.cjs.map +0 -1
- package/dist/chunk-ZVWVQ6MG.js.map +0 -1
- package/dist/models-dev-UVWCKPA2.cjs +0 -12
- package/dist/models-dev-W3LXZTEB.js +0 -3
- package/dist/provider-registry-4HLP2JRR.cjs +0 -40
- package/dist/provider-registry-K3DWQSMH.js +0 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../node_modules/.pnpm/@ai-sdk+cerebras@1.0.36_zod@3.25.76/node_modules/@ai-sdk/cerebras/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+cerebras@1.0.36_zod@3.25.76/node_modules/@ai-sdk/cerebras/src/cerebras-provider.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/deepinfra-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/deepinfra-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/deepinfra-provider.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/convert-to-deepseek-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-chat-api-types.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/map-deepseek-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/deepseek-provider.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/convert-to-groq-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-error.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-browser-search-models.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/map-groq-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/tool/browser-search.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-tools.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-provider.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/convert-to-mistral-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/map-mistral-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-error.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-provider.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/convert-to-perplexity-messages.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/map-perplexity-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/perplexity-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/perplexity-provider.ts","../../../node_modules/.pnpm/@ai-sdk+togetherai@1.0.34_zod@3.25.76/node_modules/@ai-sdk/togetherai/src/togetherai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+togetherai@1.0.34_zod@3.25.76/node_modules/@ai-sdk/togetherai/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+togetherai@1.0.34_zod@3.25.76/node_modules/@ai-sdk/togetherai/src/togetherai-provider.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/convert-to-xai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/map-xai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-error.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/map-xai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/convert-to-xai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/x-search.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/code-execution.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/view-image.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/view-x-video.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/index.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-provider.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/no-content-generated-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/errors.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/parse.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/stream.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/type-guards.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/format.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/reasoning-details.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/error-response.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/provider-metadata.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/map-finish-reason.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/is-url.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/file-url-utils.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/convert-to-openrouter-chat-messages.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/get-tool-choice.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/image.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/schemas.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/index.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/completion/convert-to-openrouter-completion-prompt.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/completion/schemas.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/completion/index.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/remove-undefined.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/version.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.101_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/provider.ts","../src/llm/model/gateway-resolver.ts","../src/llm/model/gateways/constants.ts","../src/llm/model/gateways/models-dev.ts"],"names":["z","_a","withoutTrailingSlash","withUserAgentSuffix","loadApiKey","OpenAICompatibleChatLanguageModel","NoSuchModelError","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","VERSION","OpenAICompatibleCompletionLanguageModel","OpenAICompatibleEmbeddingModel","lazySchema","zodSchema","UnsupportedFunctionalityError","parseProviderOptions","generateId","createEventSourceResponseHandler","InvalidResponseDataError","toolCall","isParsableJson","convertToBase64","getResponseMetadata","prepareTools","groqTools","convertBase64ToUint8Array","mediaTypeToExtension","postFormDataToApi","createProviderDefinedToolFactory","injectJsonInstructionIntoMessages","TooManyEmbeddingValuesForCallError","convertUint8ArrayToBase64","xaiTools","APICallError","url","response","responseHeaders","extractResponseHeaders","safeParseJSON","createProviderDefinedToolFactoryWithOutputSchema","validateTypes","OpenAICompatibleImageModel","_AISDKError","name","marker","symbol","_TypeValidationError","TypeValidationError","validator","getOriginalFetch","fetch","errorToMessage","ReasoningFormat","d","openrouter","_b","_c","_d","_e","content","removeUndefinedEntries","MastraModelGateway","createOpenAI","createGoogleGenerativeAI","createAnthropic","createGatewayProvider","createOpenAICompatible"],"mappings":"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","file":"chunk-BN5MV2QK.cjs","sourcesContent":["// 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 { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { CerebrasChatModelId } from './cerebras-chat-options';\nimport { z } from 'zod/v4';\nimport { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport { VERSION } from './version';\n\n// Add error schema and structure\nconst cerebrasErrorSchema = z.object({\n message: z.string(),\n type: z.string(),\n param: z.string(),\n code: z.string(),\n});\n\nexport type CerebrasErrorData = z.infer<typeof cerebrasErrorSchema>;\n\nconst cerebrasErrorStructure: ProviderErrorStructure<CerebrasErrorData> = {\n errorSchema: cerebrasErrorSchema,\n errorToMessage: data => data.message,\n};\n\nexport interface CerebrasProviderSettings {\n /**\nCerebras API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface CerebrasProvider extends ProviderV2 {\n /**\nCreates a Cerebras model for text generation.\n*/\n (modelId: CerebrasChatModelId): LanguageModelV2;\n\n /**\nCreates a Cerebras model for text generation.\n*/\n languageModel(modelId: CerebrasChatModelId): LanguageModelV2;\n\n /**\nCreates a Cerebras chat model for text generation.\n*/\n chat(modelId: CerebrasChatModelId): LanguageModelV2;\n}\n\nexport function createCerebras(\n options: CerebrasProviderSettings = {},\n): CerebrasProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.cerebras.ai/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'CEREBRAS_API_KEY',\n description: 'Cerebras API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/cerebras/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: CerebrasChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `cerebras.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: cerebrasErrorStructure,\n supportsStructuredOutputs: true,\n });\n };\n\n const provider = (modelId: CerebrasChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const cerebras = createCerebras();\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { DeepInfraImageModelId } from './deepinfra-image-settings';\nimport { z } from 'zod/v4';\n\ninterface DeepInfraImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepInfraImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepInfraImageModelId,\n private config: DeepInfraImageModelConfig,\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 // Some deepinfra models support size while others support aspect ratio.\n // Allow passing either and leave it up to the server to validate.\n\n const splitSize = size?.split('x');\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/${this.modelId}`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n prompt,\n num_images: n,\n ...(aspectRatio && { aspect_ratio: aspectRatio }),\n ...(splitSize && { width: splitSize[0], height: splitSize[1] }),\n ...(seed != null && { seed }),\n ...(providerOptions.deepinfra ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: deepInfraErrorSchema,\n errorToMessage: error => error.detail.error,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n deepInfraImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.images.map(image =>\n image.replace(/^data:image\\/\\w+;base64,/, ''),\n ),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nexport const deepInfraErrorSchema = z.object({\n detail: z.object({\n error: z.string(),\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 deepInfraImageResponseSchema = z.object({\n images: z.array(z.string()),\n});\n","import { LanguageModelV2, LanguageModelV2Usage } from '@ai-sdk/provider';\nimport { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport { FetchFunction } from '@ai-sdk/provider-utils';\n\ntype DeepInfraChatConfig = {\n provider: string;\n url: (options: { path: string; modelId?: string }) => string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class DeepInfraChatLanguageModel extends OpenAICompatibleChatLanguageModel {\n constructor(modelId: string, config: DeepInfraChatConfig) {\n super(modelId, config);\n }\n\n private fixUsage(usage: LanguageModelV2Usage): LanguageModelV2Usage {\n const outputTokens = usage.outputTokens ?? 0;\n const reasoningTokens = usage.reasoningTokens ?? 0;\n\n if (reasoningTokens > outputTokens) {\n const correctedOutputTokens = outputTokens + reasoningTokens;\n return {\n ...usage,\n outputTokens: correctedOutputTokens,\n totalTokens:\n usage.totalTokens != null\n ? usage.totalTokens + reasoningTokens\n : undefined,\n };\n }\n\n return usage;\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const result = await super.doGenerate(options);\n return {\n ...result,\n usage: this.fixUsage(result.usage),\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const result = await super.doStream(options);\n const fixUsage = this.fixUsage.bind(this);\n\n const transformedStream = result.stream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk.type === 'finish') {\n controller.enqueue({\n ...chunk,\n usage: fixUsage(chunk.usage),\n });\n } else {\n controller.enqueue(chunk);\n }\n },\n }),\n );\n\n return {\n ...result,\n stream: transformedStream,\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 LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepInfraChatModelId } from './deepinfra-chat-options';\nimport { DeepInfraEmbeddingModelId } from './deepinfra-embedding-options';\nimport { DeepInfraCompletionModelId } from './deepinfra-completion-options';\nimport { DeepInfraImageModelId } from './deepinfra-image-settings';\nimport { DeepInfraImageModel } from './deepinfra-image-model';\nimport { DeepInfraChatLanguageModel } from './deepinfra-chat-language-model';\nimport { VERSION } from './version';\n\nexport interface DeepInfraProviderSettings {\n /**\nDeepInfra API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepInfraProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: DeepInfraChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: DeepInfraChatModelId): LanguageModelV2;\n\n /**\nCreates a model for image generation.\n */\n image(modelId: DeepInfraImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: DeepInfraImageModelId): ImageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: DeepInfraChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: DeepInfraCompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: DeepInfraEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n}\n\nexport function createDeepInfra(\n options: DeepInfraProviderSettings = {},\n): DeepInfraProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepinfra.com/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPINFRA_API_KEY',\n description: \"DeepInfra's API key\",\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepinfra/${VERSION}`,\n );\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 getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `deepinfra.${modelType}`,\n url: ({ path }) => `${baseURL}/openai${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: DeepInfraChatModelId) => {\n return new DeepInfraChatLanguageModel(\n modelId,\n getCommonModelConfig('chat'),\n );\n };\n\n const createCompletionModel = (modelId: DeepInfraCompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: DeepInfraEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (modelId: DeepInfraImageModelId) =>\n new DeepInfraImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL\n ? `${baseURL}/inference`\n : 'https://api.deepinfra.com/v1/inference',\n });\n\n const provider = (modelId: DeepInfraChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n return provider;\n}\n\nexport const deepinfra = createDeepInfra();\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n} from '@ai-sdk/provider';\nimport { DeepSeekChatPrompt } from './deepseek-chat-api-types';\n\nexport function convertToDeepSeekChatMessages({\n prompt,\n responseFormat,\n}: {\n prompt: LanguageModelV2Prompt;\n responseFormat: LanguageModelV2CallOptions['responseFormat'];\n}): {\n messages: DeepSeekChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: DeepSeekChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n // Inject system message if response format is JSON\n if (responseFormat?.type === 'json') {\n if (responseFormat.schema == null) {\n messages.push({\n role: 'system',\n content: 'Return JSON.',\n });\n } else {\n messages.push({\n role: 'system',\n content:\n 'Return JSON that conforms to the following schema: ' +\n JSON.stringify(responseFormat.schema),\n });\n }\n }\n\n // TODO use findLastIndex once we use ES2023\n let lastUserMessageIndex = -1;\n for (let i = prompt.length - 1; i >= 0; i--) {\n if (prompt[i].role === 'user') {\n lastUserMessageIndex = i;\n break;\n }\n }\n\n let index = -1;\n for (const { role, content } of prompt) {\n index++;\n\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n let userContent = '';\n for (const part of content) {\n if (part.type === 'text') {\n userContent += part.text;\n } else {\n warnings.push({\n type: 'other',\n message: `Unsupported user message part type: ${part.type}`,\n });\n }\n }\n\n messages.push({\n role: 'user',\n content: userContent,\n });\n\n break;\n }\n case 'assistant': {\n let text = '';\n let reasoning: string | undefined;\n\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 'reasoning': {\n if (index <= lastUserMessageIndex) {\n break;\n }\n\n if (reasoning == null) {\n reasoning = part.text;\n } else {\n reasoning += part.text;\n }\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n reasoning_content: reasoning,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n warnings.push({\n type: 'other',\n message: `Unsupported message role: ${role}`,\n });\n break;\n }\n }\n }\n\n return { messages, warnings };\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type DeepSeekChatPrompt = Array<DeepSeekMessage>;\n\nexport type DeepSeekMessage =\n | DeepSeekSystemMessage\n | DeepSeekUserMessage\n | DeepSeekAssistantMessage\n | DeepSeekToolMessage;\n\nexport interface DeepSeekSystemMessage {\n role: 'system';\n content: string;\n}\n\nexport interface DeepSeekUserMessage {\n role: 'user';\n content: string;\n}\n\nexport interface DeepSeekAssistantMessage {\n role: 'assistant';\n content?: string | null;\n reasoning_content?: string;\n tool_calls?: Array<DeepSeekMessageToolCall>;\n}\n\nexport interface DeepSeekMessageToolCall {\n type: 'function';\n id: string;\n function: {\n arguments: string;\n name: string;\n };\n}\n\nexport interface DeepSeekToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}\n\nconst tokenUsageSchema = z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish();\n\nexport type DeepSeekChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const deepSeekErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type DeepSeekErrorData = z.infer<typeof deepSeekErrorSchema>;\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 deepseekChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\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 deepseekChatChunkSchema = 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 reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\n }),\n deepSeekErrorSchema,\n ]),\n ),\n);\n","import { z } from 'zod/v4';\n\n// https://api-docs.deepseek.com/quick_start/pricing\nexport type DeepSeekChatModelId =\n | 'deepseek-chat'\n | 'deepseek-reasoner'\n | (string & {});\n\nexport const deepseekChatOptions = z.object({\n /**\n * Type of thinking to use. Defaults to `enabled`.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n })\n .optional(),\n});\n\nexport type DeepSeekChatOptions = z.infer<typeof deepseekChatOptions>;\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 deepseekTools: 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({\n type: 'unsupported-tool',\n tool,\n });\n } else {\n deepseekTools.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: deepseekTools, 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: deepseekTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: deepseekTools,\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","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 mapDeepSeekFinishReason(\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 'tool_calls':\n return 'tool-calls';\n case 'insufficient_system_resource':\n return 'error';\n default:\n return 'unknown';\n }\n}\n","import {\n APICallError,\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n generateId,\n InferSchema,\n isParsableJson,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToDeepSeekChatMessages } from './convert-to-deepseek-chat-messages';\nimport {\n deepseekChatChunkSchema,\n deepseekChatResponseSchema,\n DeepSeekChatTokenUsage,\n deepSeekErrorSchema,\n} from './deepseek-chat-api-types';\nimport {\n DeepSeekChatModelId,\n deepseekChatOptions,\n} from './deepseek-chat-options';\nimport { prepareTools } from './deepseek-prepare-tools';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapDeepSeekFinishReason } from './map-deepseek-finish-reason';\n\nexport type DeepSeekChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class DeepSeekChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: DeepSeekChatModelId;\n readonly supportedUrls = {};\n\n private readonly config: DeepSeekChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n constructor(modelId: DeepSeekChatModelId, config: DeepSeekChatConfig) {\n this.modelId = modelId;\n this.config = config;\n\n this.failedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepSeekErrorSchema,\n errorToMessage: (error: InferSchema<typeof deepSeekErrorSchema>) =>\n error.error.message,\n });\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n providerOptions,\n stopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const deepseekOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: deepseekChatOptions,\n })) ?? {};\n\n const { messages, warnings } = convertToDeepSeekChatMessages({\n prompt,\n responseFormat,\n });\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const {\n tools: deepseekTools,\n toolChoice: deepseekToolChoices,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n\n return {\n args: {\n model: this.modelId,\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' ? { type: 'json_object' } : undefined,\n stop: stopSequences,\n messages,\n tools: deepseekTools,\n tool_choice: deepseekToolChoices,\n thinking:\n deepseekOptions.thinking?.type != null\n ? { type: deepseekOptions.thinking.type }\n : undefined,\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 {\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 deepseekChatResponseSchema,\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 // reasoning content (before text):\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: 'reasoning',\n text: reasoning,\n });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n return {\n content,\n finishReason: mapDeepSeekFinishReason(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_cache_hit_tokens ?? undefined,\n },\n providerMetadata: {\n [this.providerOptionsName]: {\n promptCacheHitTokens:\n responseBody.usage?.prompt_cache_hit_tokens ?? null,\n promptCacheMissTokens:\n responseBody.usage?.prompt_cache_miss_tokens ?? null,\n },\n },\n request: { body: args },\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 stream_options: { include_usage: true },\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: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n deepseekChatChunkSchema,\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 let usage: DeepSeekChatTokenUsage | undefined = undefined;\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<InferSchema<typeof deepseekChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n 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.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 usage = value.usage;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapDeepSeekFinishReason(choice.finish_reason);\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;\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 // end reasoning when text starts:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\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 // end reasoning when tool calls start:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\n }\n\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 controller.enqueue({\n type: 'finish',\n finishReason,\n usage: {\n inputTokens: usage?.prompt_tokens ?? undefined,\n outputTokens: usage?.completion_tokens ?? undefined,\n totalTokens: usage?.total_tokens ?? undefined,\n reasoningTokens:\n usage?.completion_tokens_details?.reasoning_tokens ??\n undefined,\n cachedInputTokens: usage?.prompt_cache_hit_tokens ?? undefined,\n },\n providerMetadata: {\n [providerOptionsName]: {\n promptCacheHitTokens: usage?.prompt_cache_hit_tokens ?? null,\n promptCacheMissTokens:\n usage?.prompt_cache_miss_tokens ?? null,\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\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 LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './chat/deepseek-chat-options';\nimport { DeepSeekChatLanguageModel } from './chat/deepseek-chat-language-model';\nimport { VERSION } from './version';\n\nexport interface DeepSeekProviderSettings {\n /**\n * DeepSeek API key.\n */\n apiKey?: string;\n\n /**\n * Base URL for the API calls.\n */\n baseURL?: 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\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com',\n );\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepseek/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new DeepSeekChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { GroqChatPrompt } from './groq-api-types';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToGroqChatMessages(\n prompt: LanguageModelV2Prompt,\n): GroqChatPrompt {\n const messages: GroqChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (!part.mediaType.startsWith('image/')) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Non-image file content parts',\n });\n }\n\n const mediaType =\n part.mediaType === 'image/*' ? 'image/jpeg' : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n }\n }\n }),\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 switch (part.type) {\n // groq supports reasoning for tool-calls in multi-turn conversations\n // https://github.com/vercel/ai/issues/7860\n case 'reasoning': {\n reasoning += part.text;\n break;\n }\n\n case 'text': {\n text += part.text;\n break;\n }\n\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n ...(reasoning.length > 0 ? { reasoning } : null),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : null),\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { z } from 'zod/v4';\n\n// https://console.groq.com/docs/models\nexport type GroqChatModelId =\n // production models\n | 'gemma2-9b-it'\n | 'llama-3.1-8b-instant'\n | 'llama-3.3-70b-versatile'\n | 'meta-llama/llama-guard-4-12b'\n | 'openai/gpt-oss-120b'\n | 'openai/gpt-oss-20b'\n // preview models (selection)\n | 'deepseek-r1-distill-llama-70b'\n | 'meta-llama/llama-4-maverick-17b-128e-instruct'\n | 'meta-llama/llama-4-scout-17b-16e-instruct'\n | 'meta-llama/llama-prompt-guard-2-22m'\n | 'meta-llama/llama-prompt-guard-2-86m'\n | 'moonshotai/kimi-k2-instruct-0905'\n | 'qwen/qwen3-32b'\n | 'llama-guard-3-8b'\n | 'llama3-70b-8192'\n | 'llama3-8b-8192'\n | 'mixtral-8x7b-32768'\n | 'qwen-qwq-32b'\n | 'qwen-2.5-32b'\n | 'deepseek-r1-distill-qwen-32b'\n | (string & {});\n\nexport const groqProviderOptions = z.object({\n reasoningFormat: z.enum(['parsed', 'raw', 'hidden']).optional(),\n\n /**\n * Specifies the reasoning effort level for model inference.\n * @see https://console.groq.com/docs/reasoning#reasoning-effort\n */\n reasoningEffort: z\n .enum(['none', 'default', 'low', 'medium', 'high'])\n .optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'on_demand': Default tier with consistent performance and fairness\n * - 'flex': Higher throughput tier optimized for workloads that can handle occasional request failures\n * - 'auto': Uses on_demand rate limits, then falls back to flex tier if exceeded\n *\n * @default 'on_demand'\n */\n serviceTier: z.enum(['on_demand', 'flex', 'auto']).optional(),\n});\n\nexport type GroqProviderOptions = z.infer<typeof groqProviderOptions>;\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const groqErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string(),\n }),\n});\n\nexport type GroqErrorData = z.infer<typeof groqErrorDataSchema>;\n\nexport const groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { GroqChatModelId } from './groq-chat-options';\n\n/**\n * Models that support browser search functionality.\n * Based on: https://console.groq.com/docs/browser-search\n */\nexport const BROWSER_SEARCH_SUPPORTED_MODELS: readonly GroqChatModelId[] = [\n 'openai/gpt-oss-20b',\n 'openai/gpt-oss-120b',\n] as const;\n\n/**\n * Check if a model supports browser search functionality.\n */\nexport function isBrowserSearchSupportedModel(\n modelId: GroqChatModelId,\n): boolean {\n return BROWSER_SEARCH_SUPPORTED_MODELS.includes(modelId);\n}\n\n/**\n * Get a formatted list of supported models for error messages.\n */\nexport function getSupportedModelsString(): string {\n return BROWSER_SEARCH_SUPPORTED_MODELS.join(', ');\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n getSupportedModelsString,\n isBrowserSearchSupportedModel,\n} from './groq-browser-search-models';\nimport { GroqChatModelId } from './groq-chat-options';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n modelId: GroqChatModelId;\n}): {\n tools:\n | undefined\n | Array<\n | {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }\n | {\n type: 'browser_search';\n }\n >;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const groqTools: Array<\n | {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }\n | {\n type: 'browser_search';\n }\n > = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n if (tool.id === 'groq.browser_search') {\n if (!isBrowserSearchSupportedModel(modelId)) {\n toolWarnings.push({\n type: 'unsupported-tool',\n tool,\n details: `Browser search is only supported on the following models: ${getSupportedModelsString()}. Current model: ${modelId}`,\n });\n } else {\n groqTools.push({\n type: 'browser_search',\n });\n }\n } else {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n }\n } else {\n groqTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: groqTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: groqTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: groqTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapGroqFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToGroqChatMessages } from './convert-to-groq-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { GroqChatModelId, groqProviderOptions } from './groq-chat-options';\nimport { groqErrorDataSchema, groqFailedResponseHandler } from './groq-error';\nimport { prepareTools } from './groq-prepare-tools';\nimport { mapGroqFinishReason } from './map-groq-finish-reason';\n\ntype GroqChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class GroqChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: GroqChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: GroqChatConfig;\n\n constructor(modelId: GroqChatModelId, config: GroqChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n tools,\n toolChoice,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0] & {\n stream: boolean;\n }) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const groqOptions = await parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptions,\n });\n\n const structuredOutputs = groqOptions?.structuredOutputs ?? true;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const {\n tools: groqTools,\n toolChoice: groqToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: groqOptions?.user,\n parallel_tool_calls: groqOptions?.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // provider options:\n reasoning_format: groqOptions?.reasoningFormat,\n reasoning_effort: groqOptions?.reasoningEffort,\n service_tier: groqOptions?.serviceTier,\n\n // messages:\n messages: convertToGroqChatMessages(prompt),\n\n // tools:\n tools: groqTools,\n tool_choice: groqToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false,\n });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text: text });\n }\n\n // reasoning:\n const reasoning = choice.message.reasoning;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: 'reasoning',\n text: reasoning,\n });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n return {\n content,\n finishReason: mapGroqFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n cachedInputTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? undefined,\n },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n\n const body = JSON.stringify({ ...args, stream: true });\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n cachedInputTokens: undefined,\n };\n let isFirstChunk = true;\n let isActiveText = false;\n let isActiveReasoning = false;\n\n let providerMetadata: SharedV2ProviderMetadata | undefined;\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof groqChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\n if (value.x_groq?.usage != null) {\n usage.inputTokens = value.x_groq.usage.prompt_tokens ?? undefined;\n usage.outputTokens =\n value.x_groq.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.x_groq.usage.total_tokens ?? undefined;\n usage.cachedInputTokens =\n value.x_groq.usage.prompt_tokens_details?.cached_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapGroqFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-start',\n id: 'reasoning-0',\n });\n isActiveReasoning = true;\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: 'reasoning-0',\n delta: delta.reasoning,\n });\n }\n\n if (delta.content != null && delta.content.length > 0) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'txt-0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'txt-0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\n }\n\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'txt-0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst groqChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst groqChatChunkSchema = z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').optional(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number(),\n }),\n ),\n x_groq: z\n .object({\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n groqErrorDataSchema,\n]);\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { GroqConfig } from './groq-config';\nimport { groqFailedResponseHandler } from './groq-error';\nimport { GroqTranscriptionModelId } from './groq-transcription-options';\nimport { GroqTranscriptionAPITypes } from './groq-api-types';\n\n// https://console.groq.com/docs/speech-to-text\nconst groqProviderOptionsSchema = z.object({\n language: z.string().nullish(),\n prompt: z.string().nullish(),\n responseFormat: z.string().nullish(),\n temperature: z.number().min(0).max(1).nullish(),\n timestampGranularities: z.array(z.string()).nullish(),\n});\n\nexport type GroqTranscriptionCallOptions = z.infer<\n typeof groqProviderOptionsSchema\n>;\n\ninterface GroqTranscriptionModelConfig extends GroqConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GroqTranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GroqTranscriptionModelId,\n private readonly config: GroqTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV2['doGenerate']>[0]) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const groqOptions = await parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptionsSchema,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n 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 (groqOptions) {\n const transcriptionModelOptions: Omit<\n GroqTranscriptionAPITypes,\n 'model'\n > = {\n language: groqOptions.language ?? undefined,\n prompt: groqOptions.prompt ?? undefined,\n response_format: groqOptions.responseFormat ?? undefined,\n temperature: groqOptions.temperature ?? undefined,\n timestamp_granularities:\n groqOptions.timestampGranularities ?? undefined,\n };\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof Omit<GroqTranscriptionAPITypes, 'model'>\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ?? [],\n language: response.language ?? undefined,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst groqTranscriptionResponseSchema = z.object({\n text: z.string(),\n x_groq: z.object({\n id: z.string(),\n }),\n // additional properties are returned when `response_format: 'verbose_json'` is\n task: z.string().nullish(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Browser search tool for Groq models.\n *\n * Provides interactive browser search capabilities that go beyond traditional web search\n * by navigating websites interactively and providing more detailed results.\n *\n * Currently supported on:\n * - openai/gpt-oss-20b\n * - openai/gpt-oss-120b\n *\n * @see https://console.groq.com/docs/browser-search\n */\nexport const browserSearch = createProviderDefinedToolFactory<\n {\n // Browser search doesn't take input parameters - it's controlled by the prompt\n // The tool is activated automatically when included in the tools array\n },\n {\n // No configuration options needed - the tool works automatically\n // when included in the tools array for supported models\n }\n>({\n id: 'groq.browser_search',\n name: 'browser_search',\n inputSchema: z.object({}),\n});\n","import { browserSearch } from './tool/browser-search';\n\nexport const groqTools = {\n browserSearch,\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 LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { GroqChatLanguageModel } from './groq-chat-language-model';\nimport { GroqChatModelId } from './groq-chat-options';\nimport { GroqTranscriptionModelId } from './groq-transcription-options';\nimport { GroqTranscriptionModel } from './groq-transcription-model';\n\nimport { groqTools } from './groq-tools';\nimport { VERSION } from './version';\nexport interface GroqProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: GroqChatModelId): LanguageModelV2;\n\n /**\nCreates an Groq chat model for text generation.\n */\n languageModel(modelId: GroqChatModelId): LanguageModelV2;\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: GroqTranscriptionModelId): TranscriptionModelV2;\n\n /**\n * Tools provided by Groq.\n */\n tools: typeof groqTools;\n}\n\nexport interface GroqProviderSettings {\n /**\nBase URL for the Groq API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Groq provider instance.\n */\nexport function createGroq(options: GroqProviderSettings = {}): GroqProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.groq.com/openai/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'GROQ_API_KEY',\n description: 'Groq',\n })}`,\n ...options.headers,\n },\n `ai-sdk/groq/${VERSION}`,\n );\n\n const createChatModel = (modelId: GroqChatModelId) =>\n new GroqChatLanguageModel(modelId, {\n provider: 'groq.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (modelId: GroqChatModelId) => {\n if (new.target) {\n throw new Error(\n 'The Groq model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n const createTranscriptionModel = (modelId: GroqTranscriptionModelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: 'groq.transcription',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = function (modelId: GroqChatModelId) {\n return createLanguageModel(modelId);\n };\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.tools = groqTools;\n\n return provider;\n}\n\n/**\nDefault Groq provider instance.\n */\nexport const groq = createGroq();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { MistralPrompt } from './mistral-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToMistralChatMessages(\n prompt: LanguageModelV2Prompt,\n): MistralPrompt {\n const messages: MistralPrompt = [];\n\n for (let i = 0; i < prompt.length; i++) {\n const { role, content } = prompt[i];\n const isLastMessage = i === prompt.length - 1;\n\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n\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 part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n };\n } else if (part.mediaType === 'application/pdf') {\n return {\n type: 'document_url',\n document_url: part.data.toString(),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Only images and PDF file parts are supported',\n });\n }\n }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n case 'reasoning': {\n text += part.text;\n break;\n }\n default: {\n throw new Error(\n `Unsupported content type in assistant message: ${part.type}`,\n );\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n prefix: isLastMessage ? true : undefined,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n name: toolResponse.toolName,\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\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 mapMistralFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n case 'model_length':\n return 'length';\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://docs.mistral.ai/getting-started/models/models_overview/\nexport type MistralChatModelId =\n // premier\n | 'ministral-3b-latest'\n | 'ministral-8b-latest'\n | 'mistral-large-latest'\n | 'mistral-medium-latest'\n | 'mistral-medium-2508'\n | 'mistral-medium-2505'\n | 'mistral-small-latest'\n | 'pixtral-large-latest'\n // reasoning models\n | 'magistral-small-2507'\n | 'magistral-medium-2507'\n | 'magistral-small-2506'\n | 'magistral-medium-2506'\n // free\n | 'pixtral-12b-2409'\n // legacy\n | 'open-mistral-7b'\n | 'open-mixtral-8x7b'\n | 'open-mixtral-8x22b'\n | (string & {});\n\nexport const mistralLanguageModelOptions = z.object({\n /**\nWhether to inject a safety prompt before all conversations.\n\nDefaults to `false`.\n */\n safePrompt: z.boolean().optional(),\n\n documentImageLimit: z.number().optional(),\n documentPageLimit: z.number().optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When set to false, the model will use at most one tool per response.\n *\n * @default true\n */\n parallelToolCalls: z.boolean().optional(),\n});\n\nexport type MistralLanguageModelOptions = z.infer<\n typeof mistralLanguageModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst mistralErrorDataSchema = z.object({\n object: z.literal('error'),\n message: z.string(),\n type: z.string(),\n param: z.string().nullable(),\n code: z.string().nullable(),\n});\n\nexport type MistralErrorData = z.infer<typeof mistralErrorDataSchema>;\n\nexport const mistralFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: mistralErrorDataSchema,\n errorToMessage: data => data.message,\n});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { MistralToolChoice } from './mistral-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: MistralToolChoice | 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 mistralTools: 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 mistralTools.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: mistralTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: mistralTools, toolChoice: type, toolWarnings };\n case 'required':\n return { tools: mistralTools, toolChoice: 'any', toolWarnings };\n\n // mistral does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case 'tool':\n return {\n tools: mistralTools.filter(\n tool => tool.function.name === toolChoice.toolName,\n ),\n toolChoice: 'any',\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n generateId,\n injectJsonInstructionIntoMessages,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToMistralChatMessages } from './convert-to-mistral-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapMistralFinishReason } from './map-mistral-finish-reason';\nimport {\n MistralChatModelId,\n mistralLanguageModelOptions,\n} from './mistral-chat-options';\nimport { mistralFailedResponseHandler } from './mistral-error';\nimport { prepareTools } from './mistral-prepare-tools';\n\ntype MistralChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId?: () => string;\n};\n\nexport class MistralChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: MistralChatModelId;\n\n private readonly config: MistralChatConfig;\n private readonly generateId: () => string;\n\n constructor(modelId: MistralChatModelId, config: MistralChatConfig) {\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 readonly supportedUrls: Record<string, RegExp[]> = {\n 'application/pdf': [/^https:\\/\\/.*$/],\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 providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'mistral',\n providerOptions,\n schema: mistralLanguageModelOptions,\n })) ?? {};\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n const structuredOutputs = options.structuredOutputs ?? true;\n const strictJsonSchema = options.strictJsonSchema ?? false;\n\n // For Mistral we need to need to instruct the model to return a JSON object.\n // https://docs.mistral.ai/capabilities/structured-output/structured_output_overview/\n if (responseFormat?.type === 'json' && !responseFormat?.schema) {\n prompt = injectJsonInstructionIntoMessages({\n messages: prompt,\n schema: responseFormat.schema,\n });\n }\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n safe_prompt: options.safePrompt,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n random_seed: seed,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat?.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // mistral-specific provider options:\n document_image_limit: options.documentImageLimit,\n document_page_limit: options.documentPageLimit,\n\n // messages:\n messages: convertToMistralChatMessages(prompt),\n };\n\n const {\n tools: mistralTools,\n toolChoice: mistralToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: mistralTools,\n tool_choice: mistralToolChoice,\n ...(mistralTools != null && options.parallelToolCalls !== undefined\n ? { parallel_tool_calls: options.parallelToolCalls }\n : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n mistralChatResponseSchema,\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 // process content parts in order to preserve sequence\n if (\n choice.message.content != null &&\n Array.isArray(choice.message.content)\n ) {\n for (const part of choice.message.content) {\n if (part.type === 'thinking') {\n const reasoningText = extractReasoningContent(part.thinking);\n if (reasoningText.length > 0) {\n content.push({ type: 'reasoning', text: reasoningText });\n }\n } else if (part.type === 'text') {\n if (part.text.length > 0) {\n content.push({ type: 'text', text: part.text });\n }\n }\n }\n } else {\n // handle legacy string content\n const text = extractTextContent(choice.message.content);\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // when there is a trailing assistant message, mistral will send the\n // content of that message again. we skip this repeated content to\n // avoid duplication, e.g. in continuation mode.\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,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n return {\n content,\n finishReason: mapMistralFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n mistralChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n let isFirstChunk = true;\n let activeText = false;\n let activeReasoningId: string | null = null;\n\n const generateId = this.generateId;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof mistralChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n const delta = choice.delta;\n\n const textContent = extractTextContent(delta.content);\n\n if (delta.content != null && Array.isArray(delta.content)) {\n for (const part of delta.content) {\n if (part.type === 'thinking') {\n const reasoningDelta = extractReasoningContent(part.thinking);\n if (reasoningDelta.length > 0) {\n if (activeReasoningId == null) {\n // end any active text before starting reasoning\n if (activeText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n activeText = false;\n }\n\n activeReasoningId = generateId();\n controller.enqueue({\n type: 'reasoning-start',\n id: activeReasoningId,\n });\n }\n controller.enqueue({\n type: 'reasoning-delta',\n id: activeReasoningId,\n delta: reasoningDelta,\n });\n }\n }\n }\n }\n\n if (textContent != null && textContent.length > 0) {\n if (!activeText) {\n // if we were in reasoning mode, end it before starting text\n if (activeReasoningId != null) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningId,\n });\n activeReasoningId = null;\n }\n controller.enqueue({ type: 'text-start', id: '0' });\n activeText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: textContent,\n });\n }\n\n if (delta?.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n const toolCallId = toolCall.id;\n const toolName = toolCall.function.name;\n const input = toolCall.function.arguments;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: input,\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,\n input,\n });\n }\n }\n\n if (choice.finish_reason != null) {\n finishReason = mapMistralFinishReason(choice.finish_reason);\n }\n },\n\n flush(controller) {\n if (activeReasoningId != null) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningId,\n });\n }\n if (activeText) {\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\nfunction extractReasoningContent(\n thinking: Array<{ type: string; text: string }>,\n) {\n return thinking\n .filter(chunk => chunk.type === 'text')\n .map(chunk => chunk.text)\n .join('');\n}\n\nfunction extractTextContent(content: z.infer<typeof mistralContentSchema>) {\n if (typeof content === 'string') {\n return content;\n }\n\n if (content == null) {\n return undefined;\n }\n\n const textContent: string[] = [];\n\n for (const chunk of content) {\n const { type } = chunk;\n\n switch (type) {\n case 'text':\n textContent.push(chunk.text);\n break;\n case 'thinking':\n case 'image_url':\n case 'reference':\n // thinking, image content, and reference content are currently ignored\n break;\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return textContent.length ? textContent.join('') : undefined;\n}\n\nconst mistralContentSchema = z\n .union([\n z.string(),\n z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('image_url'),\n image_url: z.union([\n z.string(),\n z.object({\n url: z.string(),\n detail: z.string().nullable(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('reference'),\n reference_ids: z.array(z.number()),\n }),\n z.object({\n type: z.literal('thinking'),\n thinking: z.array(\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n ),\n ])\n .nullish();\n\nconst mistralUsageSchema = 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 mistralChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: mistralContentSchema,\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n function: z.object({ name: z.string(), arguments: z.string() }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: mistralUsageSchema,\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 mistralChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: mistralContentSchema,\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n function: z.object({ name: z.string(), arguments: z.string() }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: mistralUsageSchema.nullish(),\n});\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { MistralEmbeddingModelId } from './mistral-embedding-options';\nimport { mistralFailedResponseHandler } from './mistral-error';\n\ntype MistralEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class MistralEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: MistralEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 32;\n readonly supportsParallelCalls = false;\n\n private readonly config: MistralEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n modelId: MistralEmbeddingModelId,\n config: MistralEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n abortSignal,\n headers,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n },\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n MistralTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst MistralTextEmbeddingResponseSchema = z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\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 EmbeddingModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { MistralChatLanguageModel } from './mistral-chat-language-model';\nimport { MistralChatModelId } from './mistral-chat-options';\nimport { MistralEmbeddingModel } from './mistral-embedding-model';\nimport { MistralEmbeddingModelId } from './mistral-embedding-options';\nimport { VERSION } from './version';\n\nexport interface MistralProvider extends ProviderV2 {\n (modelId: MistralChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: MistralChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n chat(modelId: MistralChatModelId): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding()` instead.\n */\n embedding(modelId: MistralEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbedding(modelId: MistralEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbeddingModel: (\n modelId: MistralEmbeddingModelId,\n ) => EmbeddingModelV2<string>;\n}\n\nexport interface MistralProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.mistral.ai/v1`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `Authorization` header.\nIt defaults to the `MISTRAL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\n/**\nCreate a Mistral AI provider instance.\n */\nexport function createMistral(\n options: MistralProviderSettings = {},\n): MistralProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.mistral.ai/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'MISTRAL_API_KEY',\n description: 'Mistral',\n })}`,\n ...options.headers,\n },\n `ai-sdk/mistral/${VERSION}`,\n );\n\n const createChatModel = (modelId: MistralChatModelId) =>\n new MistralChatLanguageModel(modelId, {\n provider: 'mistral.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId,\n });\n\n const createEmbeddingModel = (modelId: MistralEmbeddingModelId) =>\n new MistralEmbeddingModel(modelId, {\n provider: 'mistral.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: MistralChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Mistral model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\n/**\nDefault Mistral provider instance.\n */\nexport const mistral = createMistral();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n PerplexityMessageContent,\n PerplexityPrompt,\n} from './perplexity-language-model-prompt';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToPerplexityMessages(\n prompt: LanguageModelV2Prompt,\n): PerplexityPrompt {\n const messages: PerplexityPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user':\n case 'assistant': {\n const hasMultipartContent = content.some(\n part =>\n (part.type === 'file' && part.mediaType.startsWith('image/')) ||\n (part.type === 'file' && part.mediaType === 'application/pdf'),\n );\n\n const messageContent = content\n .map((part, index) => {\n switch (part.type) {\n case 'text': {\n return {\n type: 'text',\n text: part.text,\n };\n }\n case 'file': {\n if (part.mediaType === 'application/pdf') {\n return part.data instanceof URL\n ? {\n type: 'file_url',\n file_url: {\n url: part.data.toString(),\n },\n file_name: part.filename,\n }\n : {\n type: 'file_url',\n file_url: {\n url:\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data),\n },\n file_name: part.filename || `document-${index}.pdf`,\n };\n } else if (part.mediaType.startsWith('image/')) {\n return part.data instanceof URL\n ? {\n type: 'image_url',\n image_url: {\n url: part.data.toString(),\n },\n }\n : {\n type: 'image_url',\n image_url: {\n url: `data:${part.mediaType ?? 'image/jpeg'};base64,${\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data)\n }`,\n },\n };\n }\n }\n }\n })\n .filter(Boolean) as PerplexityMessageContent[];\n messages.push({\n role,\n content: hasMultipartContent\n ? messageContent\n : messageContent\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join(''),\n });\n break;\n }\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tool messages',\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","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapPerplexityFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n case 'length':\n return finishReason;\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToPerplexityMessages } from './convert-to-perplexity-messages';\nimport { mapPerplexityFinishReason } from './map-perplexity-finish-reason';\nimport { PerplexityLanguageModelId } from './perplexity-language-model-options';\n\ntype PerplexityChatConfig = {\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class PerplexityLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider = 'perplexity';\n\n readonly modelId: PerplexityLanguageModelId;\n\n private readonly config: PerplexityChatConfig;\n\n constructor(\n modelId: PerplexityLanguageModelId,\n config: PerplexityChatConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported.\n };\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n max_tokens: maxOutputTokens,\n presence_penalty: presencePenalty,\n temperature,\n top_k: topK,\n top_p: topP,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? {\n type: 'json_schema',\n json_schema: { schema: responseFormat.schema },\n }\n : undefined,\n\n // provider extensions\n ...(providerOptions?.perplexity ?? {}),\n\n // messages:\n messages: convertToPerplexityMessages(prompt),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // sources:\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapPerplexityFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: response.usage?.reasoning_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata: {\n perplexity: {\n images:\n response.images?.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n })) ?? null,\n usage: {\n citationTokens: response.usage?.citation_tokens ?? null,\n numSearchQueries: response.usage?.num_search_queries ?? null,\n },\n },\n },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createEventSourceResponseHandler(\n perplexityChunkSchema,\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 reasoningTokens: undefined,\n };\n\n const providerMetadata: {\n perplexity: {\n usage: {\n citationTokens: number | null;\n numSearchQueries: number | null;\n };\n images: Array<{\n imageUrl: string;\n originUrl: string;\n height: number;\n width: number;\n }> | null;\n };\n } = {\n perplexity: {\n usage: {\n citationTokens: null,\n numSearchQueries: null,\n },\n images: null,\n },\n };\n let isFirstChunk = true;\n let isActive = false;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof perplexityChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n value.citations?.forEach(url => {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n });\n\n isFirstChunk = false;\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.reasoningTokens = value.usage.reasoning_tokens ?? undefined;\n\n providerMetadata.perplexity.usage = {\n citationTokens: value.usage.citation_tokens ?? null,\n numSearchQueries: value.usage.num_search_queries ?? null,\n };\n }\n\n if (value.images != null) {\n providerMetadata.perplexity.images = value.images.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n }));\n }\n\n const choice = value.choices[0];\n if (choice?.finish_reason != null) {\n finishReason = mapPerplexityFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const textContent = delta.content;\n\n if (textContent != null) {\n if (!isActive) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActive = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: textContent,\n });\n }\n },\n\n flush(controller) {\n if (isActive) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction getResponseMetadata({\n id,\n model,\n created,\n}: {\n id: string;\n created: number;\n model: string;\n}) {\n return {\n id,\n modelId: model,\n timestamp: new Date(created * 1000),\n };\n}\n\nconst perplexityUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n citation_tokens: z.number().nullish(),\n num_search_queries: z.number().nullish(),\n reasoning_tokens: z.number().nullish(),\n});\n\nexport const perplexityImageSchema = z.object({\n image_url: z.string(),\n origin_url: z.string(),\n height: z.number(),\n width: 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 perplexityResponseSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.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 perplexityChunkSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.literal('assistant'),\n content: z.string(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish(),\n});\n\nexport const perplexityErrorSchema = z.object({\n error: z.object({\n code: z.number(),\n message: z.string().nullish(),\n type: z.string().nullish(),\n }),\n});\n\nexport type PerplexityErrorData = z.infer<typeof perplexityErrorSchema>;\n\nconst errorToMessage = (data: PerplexityErrorData) => {\n return data.error.message ?? data.error.type ?? 'unknown error';\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 LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { PerplexityLanguageModel } from './perplexity-language-model';\nimport { PerplexityLanguageModelId } from './perplexity-language-model-options';\nimport { VERSION } from './version';\n\nexport interface PerplexityProvider extends ProviderV2 {\n /**\nCreates an Perplexity chat model for text generation.\n */\n (modelId: PerplexityLanguageModelId): LanguageModelV2;\n\n /**\nCreates an Perplexity language model for text generation.\n */\n languageModel(modelId: PerplexityLanguageModelId): LanguageModelV2;\n}\n\nexport interface PerplexityProviderSettings {\n /**\nBase URL for the perplexity API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createPerplexity(\n options: PerplexityProviderSettings = {},\n): PerplexityProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'PERPLEXITY_API_KEY',\n description: 'Perplexity',\n })}`,\n ...options.headers,\n },\n `ai-sdk/perplexity/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: PerplexityLanguageModelId) => {\n return new PerplexityLanguageModel(modelId, {\n baseURL: withoutTrailingSlash(\n options.baseURL ?? 'https://api.perplexity.ai',\n )!,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const provider = (modelId: PerplexityLanguageModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const perplexity = createPerplexity();\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { z } from 'zod/v4';\n\ninterface TogetherAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class TogetherAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: TogetherAIImageModelId,\n private config: TogetherAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\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 (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support the `aspectRatio` option. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const splitSize = size?.split('x');\n // https://docs.together.ai/reference/post_images-generations\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n ...(n > 1 ? { n } : {}),\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n response_format: 'base64',\n ...(providerOptions.togetherai ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiImageResponseSchema,\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// 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 togetheraiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n }),\n ),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\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 LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIChatModelId } from './togetherai-chat-options';\nimport { TogetherAIEmbeddingModelId } from './togetherai-embedding-options';\nimport { TogetherAICompletionModelId } from './togetherai-completion-options';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { VERSION } from './version';\n\nexport interface TogetherAIProviderSettings {\n /**\nTogetherAI API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface TogetherAIProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: TogetherAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n*/\n image(modelId: TogetherAIImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n*/\n imageModel(modelId: TogetherAIImageModelId): ImageModelV2;\n}\n\nexport function createTogetherAI(\n options: TogetherAIProviderSettings = {},\n): TogetherAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.together.xyz/v1/',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'TOGETHER_AI_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n },\n `ai-sdk/togetherai/${VERSION}`,\n );\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 getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: TogetherAIChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(\n modelId,\n getCommonModelConfig('chat'),\n );\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: TogetherAIEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (modelId: TogetherAIImageModelId) =>\n new TogetherAIImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV2Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n created_at,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n created_at?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n const unixTime = created ?? created_at;\n\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: unixTime != null ? new Date(unixTime * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4-1'\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-code-fast-1'\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n excludedXHandles: z.array(z.string()).optional(),\n includedXHandles: z.array(z.string()).optional(),\n postFavoriteCount: z.number().int().optional(),\n postViewCount: z.number().int().optional(),\n /**\n * @deprecated use `includedXHandles` instead\n */\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When true, the model can call multiple functions in parallel.\n * When false, the model will call functions sequentially.\n * Defaults to true.\n */\n parallel_function_calling: z.boolean().optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from.\n * defaults to [{ type: 'web' }, { type: 'x' }] if not specified.\n *\n * @example\n * sources: [{ type: 'web', country: 'US' }, { type: 'x' }]\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n extractResponseHeaders,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n safeParseJSON,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_completion_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // parallel function calling\n parallel_function_calling: options.parallel_function_calling,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n excluded_x_handles: source.excludedXHandles,\n included_x_handles: source.includedXHandles ?? source.xHandles,\n post_favorite_count: source.postFavoriteCount,\n post_view_count: source.postViewCount,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\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: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error != null) {\n throw new APICallError({\n message: response.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody: JSON.stringify(rawResponse),\n isRetryable: response.code === 'The service is currently unavailable',\n });\n }\n\n if (!response.choices || response.choices.length === 0) {\n throw new APICallError({\n message: 'No choices returned from the API',\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody: JSON.stringify(rawResponse),\n });\n }\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n reasoningTokens:\n response.usage?.completion_tokens_details?.reasoning_tokens ??\n undefined,\n cachedInputTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n const contentType = response.headers.get('content-type');\n\n if (contentType?.includes('application/json')) {\n const responseBody = await response.text();\n const parsedError = await safeParseJSON({\n text: responseBody,\n schema: xaiStreamErrorSchema,\n });\n\n if (parsedError.success) {\n throw new APICallError({\n message: parsedError.value.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n isRetryable:\n parsedError.value.code ===\n 'The service is currently unavailable',\n });\n }\n\n throw new APICallError({\n message: 'Invalid JSON response',\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n });\n }\n\n return createEventSourceResponseHandler(xaiChatChunkSchema)({\n response,\n url,\n requestBodyValues: body,\n });\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 reasoningTokens: undefined,\n cachedInputTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<\n string,\n { type: 'text' | 'reasoning'; ended: boolean }\n > = {};\n const lastReasoningDeltas: Record<string, string> = {};\n let activeReasoningBlockId: string | undefined = undefined;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // end active reasoning block when text content arrives\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text', ended: false };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning', ended: false };\n activeReasoningBlockId = blockId;\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n // end active reasoning block before tool calls start\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\n\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n // end any blocks that haven't been ended yet\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (!block.ended) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n prompt_tokens_details: z\n .object({\n text_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n image_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z\n .array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n object: z.literal('chat.completion').nullish(),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n code: z.string().nullish(),\n error: z.string().nullish(),\n});\n\nconst xaiChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiStreamErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesInput = Array<XaiResponsesInputItem>;\n\nexport type XaiResponsesInputItem =\n | XaiResponsesSystemMessage\n | XaiResponsesUserMessage\n | XaiResponsesAssistantMessage\n | XaiResponsesFunctionCallOutput\n | XaiResponsesReasoning\n | XaiResponsesToolCall;\n\nexport type XaiResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type XaiResponsesUserMessageContentPart =\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string };\n\nexport type XaiResponsesUserMessage = {\n role: 'user';\n content: Array<XaiResponsesUserMessageContentPart>;\n};\n\nexport type XaiResponsesAssistantMessage = {\n role: 'assistant';\n content: string;\n id?: string;\n};\n\nexport type XaiResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output: string;\n};\n\nexport type XaiResponsesReasoning = {\n type: 'reasoning';\n id: string;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n status: string;\n encrypted_content?: string | null;\n};\n\nexport type XaiResponsesToolCall = {\n type:\n | 'function_call'\n | 'web_search_call'\n | 'x_search_call'\n | 'code_interpreter_call'\n | 'custom_tool_call';\n id: string;\n call_id?: string;\n name?: string;\n arguments?: string;\n input?: string;\n status: string;\n action?: any;\n};\n\nexport type XaiResponsesTool =\n | {\n type: 'web_search';\n allowed_domains?: string[];\n excluded_domains?: string[];\n enable_image_understanding?: boolean;\n }\n | {\n type: 'x_search';\n allowed_x_handles?: string[];\n excluded_x_handles?: string[];\n from_date?: string;\n to_date?: string;\n enable_image_understanding?: boolean;\n enable_video_understanding?: boolean;\n }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | { type: 'file_search' }\n | { type: 'mcp' }\n | {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n };\n\nconst annotationSchema = z.union([\n z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n type: z.string(),\n }),\n]);\n\nconst messageContentPartSchema = z.object({\n type: z.string(),\n text: z.string().optional(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n});\n\nconst reasoningSummaryPartSchema = z.object({\n type: z.string(),\n text: z.string(),\n});\n\nconst toolCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n input: z.string().optional(),\n call_id: z.string().optional(),\n id: z.string(),\n status: z.string(),\n action: z.any().optional(),\n});\n\nconst outputItemSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('web_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('x_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_execution_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_image_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_x_video_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('custom_tool_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('message'),\n role: z.string(),\n content: z.array(messageContentPartSchema),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('function_call'),\n name: z.string(),\n arguments: z.string(),\n call_id: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n summary: z.array(reasoningSummaryPartSchema),\n status: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n]);\n\nexport const xaiResponsesUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n total_tokens: z.number().optional(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .optional(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .optional(),\n num_sources_used: z.number().optional(),\n num_server_side_tools_used: z.number().optional(),\n});\n\nexport const xaiResponsesResponseSchema = z.object({\n id: z.string().nullish(),\n created_at: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('response'),\n output: z.array(outputItemSchema),\n usage: xaiResponsesUsageSchema.nullish(),\n status: z.string(),\n});\n\nexport const xaiResponsesChunkSchema = z.union([\n z.object({\n type: z.literal('response.created'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.in_progress'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.content_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.content_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n logprobs: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n annotation_index: z.number(),\n annotation: annotationSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.web_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.done'),\n item_id: z.string(),\n output_index: z.number(),\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 }),\n z.object({\n type: z.literal('response.code_execution_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.interpreting'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n // Code interpreter code streaming events\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.done'),\n response: xaiResponsesResponseSchema,\n }),\n z.object({\n type: z.literal('response.completed'),\n response: xaiResponsesResponseSchema,\n }),\n]);\n\nexport type XaiResponsesResponse = z.infer<typeof xaiResponsesResponseSchema>;\nexport type XaiResponsesChunk = z.infer<typeof xaiResponsesChunkSchema>;\nexport type XaiResponsesUsage = z.infer<typeof xaiResponsesUsageSchema>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n case 'completed':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesModelId =\n | 'grok-4-1'\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4'\n | 'grok-4-fast'\n | 'grok-4-fast-non-reasoning'\n | (string & {});\n\n/**\n * @see https://docs.x.ai/docs/api-reference#create-new-response\n */\nexport const xaiResponsesProviderOptions = z.object({\n /**\n * Constrains how hard a reasoning model thinks before responding.\n * Possible values are `low` (uses fewer reasoning tokens), `medium` and `high` (uses more reasoning tokens).\n */\n reasoningEffort: z.enum(['low', 'medium', 'high']).optional(),\n /**\n * Whether to store the input message(s) and model response for later retrieval.\n * @default true\n */\n store: z.boolean().optional(),\n /**\n * The ID of the previous response from the model.\n */\n previousResponseId: z.string().optional(),\n});\n\nexport type XaiResponsesProviderOptions = z.infer<\n typeof xaiResponsesProviderOptions\n>;\n","import {\n type LanguageModelV2CallWarning,\n type LanguageModelV2Message,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport type {\n XaiResponsesInput,\n XaiResponsesUserMessageContentPart,\n} from './xai-responses-api';\n\nexport async function convertToXaiResponsesInput({\n prompt,\n}: {\n prompt: LanguageModelV2Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: LanguageModelV2CallWarning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: LanguageModelV2CallWarning[] = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case 'system': {\n input.push({\n role: 'system',\n content: message.content,\n });\n break;\n }\n\n case 'user': {\n const contentParts: XaiResponsesUserMessageContentPart[] = [];\n\n for (const block of message.content) {\n switch (block.type) {\n case 'text': {\n contentParts.push({ type: 'input_text', text: block.text });\n break;\n }\n\n case 'file': {\n if (block.mediaType.startsWith('image/')) {\n const mediaType =\n block.mediaType === 'image/*'\n ? 'image/jpeg'\n : block.mediaType;\n\n const imageUrl =\n block.data instanceof URL\n ? block.data.toString()\n : `data:${mediaType};base64,${convertToBase64(block.data)}`;\n\n contentParts.push({ type: 'input_image', image_url: imageUrl });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${block.mediaType}`,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = block;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in user messages',\n });\n }\n }\n }\n\n input.push({\n role: 'user',\n content: contentParts,\n });\n break;\n }\n\n case 'assistant': {\n for (const part of message.content) {\n switch (part.type) {\n case 'text': {\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n role: 'assistant',\n content: part.text,\n id,\n });\n\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n break;\n }\n\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n type: 'function_call',\n id: id ?? part.toolCallId,\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n status: 'completed',\n });\n break;\n }\n\n case 'tool-result': {\n break;\n }\n\n case 'reasoning':\n case 'file': {\n inputWarnings.push({\n type: 'other',\n message: `xAI Responses API does not support ${part.type} in assistant messages`,\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in assistant messages',\n });\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of message.content) {\n const output = part.output;\n\n let outputValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n outputValue = output.value;\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 if (item.type === 'text') {\n return item.text;\n }\n return '';\n })\n .join('');\n break;\n default: {\n const _exhaustiveCheck: never = output;\n outputValue = '';\n }\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: outputValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n inputWarnings.push({\n type: 'other',\n message: 'unsupported message role',\n });\n }\n }\n }\n\n return { input, inputWarnings };\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedDomains: z.array(z.string()).max(5).optional(),\n excludedDomains: z.array(z.string()).max(5).optional(),\n enableImageUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n sources: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n snippet: z.string(),\n }),\n ),\n }),\n ),\n);\n\nconst webSearchToolFactory = createProviderDefinedToolFactoryWithOutputSchema<\n Record<string, never>,\n {\n query: string;\n sources: Array<{\n title: string;\n url: string;\n snippet: string;\n }>;\n },\n {\n allowedDomains?: string[];\n excludedDomains?: string[];\n enableImageUnderstanding?: boolean;\n }\n>({\n id: 'xai.web_search',\n name: 'web_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {},\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedXHandles: z.array(z.string()).max(10).optional(),\n excludedXHandles: z.array(z.string()).max(10).optional(),\n fromDate: z.string().optional(),\n toDate: z.string().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n enableVideoUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst xSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n posts: z.array(\n z.object({\n author: z.string(),\n text: z.string(),\n url: z.string(),\n likes: z.number(),\n }),\n ),\n }),\n ),\n);\n\nconst xSearchToolFactory = createProviderDefinedToolFactoryWithOutputSchema<\n Record<string, never>,\n {\n query: string;\n posts: Array<{\n author: string;\n text: string;\n url: string;\n likes: number;\n }>;\n },\n {\n allowedXHandles?: string[];\n excludedXHandles?: string[];\n fromDate?: string;\n toDate?: string;\n enableImageUnderstanding?: boolean;\n enableVideoUnderstanding?: boolean;\n }\n>({\n id: 'xai.x_search',\n name: 'x_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: xSearchOutputSchema,\n});\n\nexport const xSearch = (args: Parameters<typeof xSearchToolFactory>[0] = {}) =>\n xSearchToolFactory(args);\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { xSearchArgsSchema } from '../tool/x-search';\nimport { XaiResponsesTool } from './xai-responses-api';\n\ntype XaiResponsesToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'web_search' }\n | { type: 'x_search' }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | { type: 'file_search' }\n | { type: 'mcp' }\n | { type: 'function'; name: string };\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (normalizedTools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const xaiTools: Array<XaiResponsesTool> = [];\n const toolByName = new Map<string, (typeof normalizedTools)[number]>();\n\n for (const tool of normalizedTools) {\n toolByName.set(tool.name, tool);\n\n if (tool.type === 'provider-defined') {\n switch (tool.id) {\n case 'xai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'web_search',\n allowed_domains: args.allowedDomains,\n excluded_domains: args.excludedDomains,\n enable_image_understanding: args.enableImageUnderstanding,\n });\n break;\n }\n\n case 'xai.x_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: xSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'x_search',\n allowed_x_handles: args.allowedXHandles,\n excluded_x_handles: args.excludedXHandles,\n from_date: args.fromDate,\n to_date: args.toDate,\n enable_image_understanding: args.enableImageUnderstanding,\n enable_video_understanding: args.enableVideoUnderstanding,\n });\n break;\n }\n\n case 'xai.code_execution': {\n xaiTools.push({\n type: 'code_interpreter',\n });\n break;\n }\n\n case 'xai.view_image': {\n xaiTools.push({\n type: 'view_image',\n });\n break;\n }\n\n case 'xai.view_x_video': {\n xaiTools.push({\n type: 'view_x_video',\n });\n break;\n }\n\n case 'xai.file_search': {\n xaiTools.push({\n type: 'file_search',\n });\n break;\n }\n\n case 'xai.mcp': {\n xaiTools.push({\n type: 'mcp',\n });\n break;\n }\n\n default: {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n } else {\n xaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool': {\n const selectedTool = toolByName.get(toolChoice.toolName);\n\n if (selectedTool == null) {\n return {\n tools: xaiTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n\n if (selectedTool.type === 'provider-defined') {\n switch (selectedTool.id) {\n case 'xai.web_search':\n return {\n tools: xaiTools,\n toolChoice: { type: 'web_search' },\n toolWarnings,\n };\n case 'xai.x_search':\n return {\n tools: xaiTools,\n toolChoice: { type: 'x_search' },\n toolWarnings,\n };\n case 'xai.code_execution':\n return {\n tools: xaiTools,\n toolChoice: { type: 'code_interpreter' },\n toolWarnings,\n };\n case 'xai.view_image':\n return {\n tools: xaiTools,\n toolChoice: { type: 'view_image' },\n toolWarnings,\n };\n case 'xai.view_x_video':\n return {\n tools: xaiTools,\n toolChoice: { type: 'view_x_video' },\n toolWarnings,\n };\n case 'xai.file_search':\n return {\n tools: xaiTools,\n toolChoice: { type: 'file_search' },\n toolWarnings,\n };\n case 'xai.mcp':\n return {\n tools: xaiTools,\n toolChoice: { type: 'mcp' },\n toolWarnings,\n };\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool: selectedTool });\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n }\n\n return {\n tools: xaiTools,\n toolChoice: { type: 'function', name: selectedTool.name },\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","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { getResponseMetadata } from '../get-response-metadata';\nimport {\n xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n} from './xai-responses-api';\nimport { mapXaiResponsesFinishReason } from './map-xai-responses-finish-reason';\nimport {\n XaiResponsesModelId,\n xaiResponsesProviderOptions,\n} from './xai-responses-options';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { convertToXaiResponsesInput } from './convert-to-xai-responses-input';\nimport { prepareResponsesTools } from './xai-responses-prepare-tools';\n\ntype XaiResponsesConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\n\n constructor(modelId: XaiResponsesModelId, config: XaiResponsesConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiResponsesProviderOptions,\n })) ?? {};\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n const webSearchToolName = tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === 'xai.web_search',\n )?.name;\n\n const xSearchToolName = tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === 'xai.x_search',\n )?.name;\n\n const codeExecutionToolName = tools?.find(\n tool =>\n tool.type === 'provider-defined' && tool.id === 'xai.code_execution',\n )?.name;\n\n const { input, inputWarnings } = await convertToXaiResponsesInput({\n prompt,\n store: true,\n });\n warnings.push(...inputWarnings);\n\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs: Record<string, unknown> = {\n model: this.modelId,\n input,\n max_output_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n ...(options.reasoningEffort != null && {\n reasoning: { effort: options.reasoningEffort },\n }),\n ...(options.store === false && {\n store: options.store,\n include: ['reasoning.encrypted_content'],\n }),\n ...(options.previousResponseId != null && {\n previous_response_id: options.previousResponseId,\n }),\n };\n\n if (xaiTools && xaiTools.length > 0) {\n baseArgs.tools = xaiTools;\n }\n\n if (xaiToolChoice != null) {\n baseArgs.tool_choice = xaiToolChoice;\n }\n\n return {\n args: baseArgs,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n for (const part of response.output) {\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call'\n ) {\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n }\n\n // custom_tool_call uses 'input' field, others use 'arguments'\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : (part.arguments ?? '');\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n\n continue;\n }\n\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n if (contentPart.text) {\n content.push({\n type: 'text',\n text: contentPart.text,\n });\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n break;\n }\n\n case 'reasoning': {\n const summaryTexts = part.summary\n .map(s => s.text)\n .filter(text => text && text.length > 0);\n\n if (summaryTexts.length > 0) {\n const reasoningText = summaryTexts.join('');\n if (part.encrypted_content || part.id) {\n content.push({\n type: 'reasoning',\n text: reasoningText,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n } else {\n content.push({\n type: 'reasoning',\n text: reasoningText,\n });\n }\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: mapXaiResponsesFinishReason(response.status),\n usage: response.usage\n ? {\n inputTokens: response.usage.input_tokens,\n outputTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.output_tokens_details?.reasoning_tokens,\n cachedInputTokens:\n response.usage.input_tokens_details?.cached_tokens,\n }\n : {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const {\n args,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n xaiResponsesChunkSchema,\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 const contentBlocks: Record<string, { type: 'text' }> = {};\n const seenToolCalls = new Set<string>();\n\n const activeReasoning: Record<\n string,\n { encryptedContent?: string | null }\n > = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiResponsesChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const event = chunk.value;\n\n if (\n event.type === 'response.created' ||\n event.type === 'response.in_progress'\n ) {\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(event.response),\n });\n isFirstChunk = false;\n }\n return;\n }\n\n if (event.type === 'response.reasoning_summary_part.added') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n if (event.type === 'response.reasoning_summary_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_summary_text.done') {\n return;\n }\n\n if (event.type === 'response.reasoning_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_text.done') {\n return;\n }\n\n if (event.type === 'response.output_text.delta') {\n const blockId = `text-${event.item_id}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: event.delta,\n });\n\n return;\n }\n\n if (event.type === 'response.output_text.done') {\n if (event.annotations) {\n for (const annotation of event.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n\n return;\n }\n\n if (event.type === 'response.output_text.annotation.added') {\n const annotation = event.annotation;\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.done' ||\n event.type === 'response.completed'\n ) {\n const response = event.response;\n\n if (response.usage) {\n usage.inputTokens = response.usage.input_tokens;\n usage.cachedInputTokens =\n response.usage.input_tokens_details?.cached_tokens;\n usage.outputTokens = response.usage.output_tokens;\n usage.totalTokens = response.usage.total_tokens;\n usage.reasoningTokens =\n response.usage.output_tokens_details?.reasoning_tokens;\n }\n\n if (response.status) {\n finishReason = mapXaiResponsesFinishReason(response.status);\n }\n\n return;\n }\n\n if (\n event.type === 'response.output_item.added' ||\n event.type === 'response.output_item.done'\n ) {\n const part = event.item;\n if (part.type === 'reasoning') {\n if (event.type === 'response.output_item.done') {\n // Emit reasoning-start if it was never emitted\n // (e.g. encrypted reasoning with no summary/text events)\n if (activeReasoning[part.id] == null) {\n controller.enqueue({\n type: 'reasoning-start',\n id: `reasoning-${part.id}`,\n providerMetadata: {\n xai: {\n itemId: part.id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-end',\n id: `reasoning-${part.id}`,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n delete activeReasoning[part.id];\n }\n return;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call'\n ) {\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n }\n\n // custom_tool_call uses 'input' field, others use 'arguments'\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : (part.arguments ?? '');\n\n // for custom_tool_call, input is only available on 'done' event\n // for other types, input is available on 'added' event\n const shouldEmit =\n part.type === 'custom_tool_call'\n ? event.type === 'response.output_item.done'\n : !seenToolCalls.has(part.id);\n\n if (shouldEmit && !seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: toolInput,\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,\n input: toolInput,\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n if (part.type === 'message') {\n for (const contentPart of part.content) {\n if (contentPart.text && contentPart.text.length > 0) {\n const blockId = `text-${part.id}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: contentPart.text,\n });\n }\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n } else if (part.type === 'function_call') {\n if (!seenToolCalls.has(part.call_id)) {\n seenToolCalls.add(part.call_id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.call_id,\n toolName: part.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.call_id,\n delta: part.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n }\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (block.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst codeExecutionOutputSchema = z.object({\n output: z.string().describe('the output of the code execution'),\n error: z.string().optional().describe('any error that occurred'),\n});\n\nconst codeExecutionToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema({\n id: 'xai.code_execution',\n name: 'code_execution',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: codeExecutionOutputSchema,\n });\n\nexport const codeExecution = (\n args: Parameters<typeof codeExecutionToolFactory>[0] = {},\n) => codeExecutionToolFactory(args);\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewImageOutputSchema = z.object({\n description: z.string().describe('description of the image'),\n objects: z\n .array(z.string())\n .optional()\n .describe('objects detected in the image'),\n});\n\nconst viewImageToolFactory = createProviderDefinedToolFactoryWithOutputSchema({\n id: 'xai.view_image',\n name: 'view_image',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewImageOutputSchema,\n});\n\nexport const viewImage = (\n args: Parameters<typeof viewImageToolFactory>[0] = {},\n) => viewImageToolFactory(args);\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewXVideoOutputSchema = z.object({\n transcript: z.string().optional().describe('transcript of the video'),\n description: z.string().describe('description of the video content'),\n duration: z.number().optional().describe('duration in seconds'),\n});\n\nconst viewXVideoToolFactory = createProviderDefinedToolFactoryWithOutputSchema({\n id: 'xai.view_x_video',\n name: 'view_x_video',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewXVideoOutputSchema,\n});\n\nexport const viewXVideo = (\n args: Parameters<typeof viewXVideoToolFactory>[0] = {},\n) => viewXVideoToolFactory(args);\n","import { codeExecution } from './code-execution';\nimport { viewImage } from './view-image';\nimport { viewXVideo } from './view-x-video';\nimport { webSearch } from './web-search';\nimport { xSearch } from './x-search';\n\nexport { codeExecution, viewImage, viewXVideo, webSearch, xSearch };\n\nexport const xaiTools = {\n codeExecution,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\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 OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport { XaiResponsesModelId } from './responses/xai-responses-options';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai responses model for agentic tool calling.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nServer-side agentic tools for use with the responses API.\n */\n tools: typeof xaiTools;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createChatLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createResponsesLanguageModel = (modelId: XaiResponsesModelId) => {\n return new XaiResponsesLanguageModel(modelId, {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new OpenAICompatibleImageModel(modelId, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) =>\n createChatLanguageModel(modelId);\n\n provider.specificationVersion = 'v2' as const;\n provider.languageModel = createChatLanguageModel;\n provider.chat = createChatLanguageModel;\n provider.responses = createResponsesLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidResponseDataError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Server returned a response with invalid data content.\n * This should be thrown by providers when they cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super({ name, message });\n\n this.data = data;\n }\n\n static isInstance(error: unknown): error is InvalidResponseDataError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadAPIKeyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadAPIKeyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadAPIKeyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_NoContentGeneratedError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\nThrown when the AI provider fails to generate any content.\n */\nexport class NoContentGeneratedError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({\n message = 'No content generated.',\n }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is NoContentGeneratedError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_UnsupportedFunctionalityError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class UnsupportedFunctionalityError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly functionality: string;\n\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`,\n }: {\n functionality: string;\n message?: string;\n }) {\n super({ name, message });\n this.functionality = functionality;\n }\n\n static isInstance(error: unknown): error is UnsupportedFunctionalityError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string\n\n /**\n * The line that caused the error, if available.\n */\n line?: string\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array<string>, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array<string> = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n lineEnd = crIndex\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n","import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: 'terminate' | ((error: Error) => void)\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: (retry: number) => void\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: (comment: string) => void\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream<string, EventSourceMessage> {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\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: /^(?!\\.)(?!.*\\.\\.)([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(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\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: /^(?:(?: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: /^(([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: /^([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};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\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 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(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\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 setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\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\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\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 ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\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(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\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(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\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 for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\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 }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\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","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(response: Response) {\n return Object.fromEntries<string>([...response.headers]);\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNot cryptographically secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Optional.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\nexport const createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): IdGenerator => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[(Math.random() * alphabetLength) | 0];\n }\n return chars.join('');\n };\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return () => `${prefix}${separator}${generator()}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs.\nNot cryptographically secure.\n */\nexport const generateId = createIdGenerator();\n","export function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { isAbortError } from './is-abort-error';\n\nconst FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch'];\n\nexport function handleFetchError({\n error,\n url,\n requestBodyValues,\n}: {\n error: unknown;\n url: string;\n requestBodyValues: unknown;\n}) {\n if (isAbortError(error)) {\n return error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (\n error instanceof TypeError &&\n FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())\n ) {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n return error;\n}\n","/**\n * Removes entries from a record where the value is null or undefined.\n * @param record - The input object whose entries may be null or undefined.\n * @returns A new object containing only entries with non-null and non-undefined values.\n */\nexport function removeUndefinedEntries<T>(\n record: Record<string, T | undefined>,\n): Record<string, T> {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null),\n ) as Record<string, T>;\n}\n","import { LoadAPIKeyError } from '@ai-sdk/provider';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","// Licensed under BSD-3-Clause (this file only)\n// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js\n//\n// Copyright (c) Vercel, Inc. (https://vercel.com)\n// Copyright (c) 2019 The Fastify Team\n// Copyright (c) 2019, Sideway Inc, and project contributors\n// All rights reserved.\n//\n// The complete list of contributors can be found at:\n// - https://github.com/hapijs/bourne/graphs/contributors\n// - https://github.com/fastify/secure-json-parse/graphs/contributors\n// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts\n//\n// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nconst suspectProtoRx = /\"__proto__\"\\s*:/;\nconst suspectConstructorRx = /\"constructor\"\\s*:/;\n\nfunction _parse(text: string) {\n // Parse normally\n const obj = JSON.parse(text);\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (\n suspectProtoRx.test(text) === false &&\n suspectConstructorRx.test(text) === false\n ) {\n return obj;\n }\n\n // Scan result for proto keys\n return filter(obj);\n}\n\nfunction filter(obj: any) {\n let next = [obj];\n\n while (next.length) {\n const nodes = next;\n next = [];\n\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n if (\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')\n ) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === 'object') {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\n\nexport function secureJsonParse(text: string) {\n // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n const { stackTraceLimit } = Error;\n Error.stackTraceLimit = 0;\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?:\n | undefined\n | ((\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\nexport function asValidator<OBJECT>(\n value: Validator<OBJECT> | StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return isValidator(value) ? value : standardSchemaValidator(value);\n}\n\nexport function standardSchemaValidator<OBJECT>(\n standardSchema: StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return validator(async value => {\n const result = await standardSchema['~standard'].validate(value);\n\n return result.issues == null\n ? { success: true, value: result.value }\n : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues,\n }),\n };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Validator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: StandardSchemaV1<unknown, OBJECT> | Validator<OBJECT>;\n}): Promise<OBJECT> {\n const result = await safeValidateTypes({ value, schema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeValidateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: StandardSchemaV1<unknown, OBJECT> | Validator<OBJECT>;\n}): Promise<\n | {\n success: true;\n value: OBJECT;\n rawValue: unknown;\n }\n | {\n success: false;\n error: TypeValidationError;\n rawValue: unknown;\n }\n> {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as OBJECT, rawValue: value };\n }\n\n const result = await validator.validate(value);\n\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n rawValue: value,\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n rawValue: value,\n };\n }\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport async function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<JSONValue>;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {Promise<T>} - The parsed object.\n */\nexport async function parseJSON<T>(options: {\n text: string;\n schema: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<T> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes<T>({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | {\n success: false;\n error: JSONParseError | TypeValidationError;\n rawValue: unknown;\n };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {Promise<object>} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport async function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<ParseResult<JSONValue>>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeParseJSON<T>(options: {\n text: string;\n schema: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<ParseResult<T>> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n return await safeValidateTypes<T>({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n rawValue: undefined,\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n secureJsonParse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n EventSourceMessage,\n EventSourceParserStream,\n} from 'eventsource-parser/stream';\nimport { ZodType } from 'zod/v4';\nimport { ParseResult, safeParseJSON } from './parse-json';\n\n/**\n * Parses a JSON event stream into a stream of parsed JSON objects.\n */\nexport function parseJsonEventStream<T>({\n stream,\n schema,\n}: {\n stream: ReadableStream<Uint8Array>;\n schema: ZodType<T>;\n}): ReadableStream<ParseResult<T>> {\n return stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceMessage, ParseResult<T>>({\n async transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n },\n }),\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { removeUndefinedEntries } from './remove-undefined-entries';\nimport { ResponseHandler } from './response-handler';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: removeUndefinedEntries(headers),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodType } from 'zod/v4';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodType<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema,\n }),\n };\n };\n\nexport const createJsonStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n let buffer = '';\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream<string, ParseResult<T>>({\n async transform(chunkText, controller) {\n if (chunkText.endsWith('\\n')) {\n controller.enqueue(\n await safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema,\n }),\n );\n buffer = '';\n } else {\n buffer += chunkText;\n }\n },\n }),\n ),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodType<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n\nexport function convertToBase64(value: string | Uint8Array): string {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n","export function withoutTrailingSlash(url: string | undefined) {\n return url?.replace(/\\/$/, '');\n}\n","/**\n * Type guard to check if a value is defined and not null\n */\nexport function isDefinedOrNotNull<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n","export enum ReasoningFormat {\n Unknown = 'unknown',\n OpenAIResponsesV1 = 'openai-responses-v1',\n XAIResponsesV1 = 'xai-responses-v1',\n AnthropicClaudeV1 = 'anthropic-claude-v1',\n}\n\n// Anthropic Claude was the first reasoning that we're\n// passing back and forth\nexport const DEFAULT_REASONING_FORMAT = ReasoningFormat.AnthropicClaudeV1;\n","import { z } from 'zod/v4';\nimport { isDefinedOrNotNull } from '../utils/type-guards';\nimport { ReasoningFormat } from './format';\n\nexport enum ReasoningDetailType {\n Summary = 'reasoning.summary',\n Encrypted = 'reasoning.encrypted',\n Text = 'reasoning.text',\n}\n\nexport const CommonReasoningDetailSchema = z\n .object({\n id: z.string().nullish(),\n format: z.nativeEnum(ReasoningFormat).nullish(),\n index: z.number().optional(),\n })\n .passthrough();\n\nexport const ReasoningDetailSummarySchema = z\n .object({\n type: z.literal(ReasoningDetailType.Summary),\n summary: z.string(),\n })\n .extend(CommonReasoningDetailSchema.shape);\nexport type ReasoningDetailSummary = z.infer<\n typeof ReasoningDetailSummarySchema\n>;\n\nexport const ReasoningDetailEncryptedSchema = z\n .object({\n type: z.literal(ReasoningDetailType.Encrypted),\n data: z.string(),\n })\n .extend(CommonReasoningDetailSchema.shape);\n\nexport type ReasoningDetailEncrypted = z.infer<\n typeof ReasoningDetailEncryptedSchema\n>;\n\nexport const ReasoningDetailTextSchema = z\n .object({\n type: z.literal(ReasoningDetailType.Text),\n text: z.string().nullish(),\n signature: z.string().nullish(),\n })\n .extend(CommonReasoningDetailSchema.shape);\n\nexport type ReasoningDetailText = z.infer<typeof ReasoningDetailTextSchema>;\n\nexport const ReasoningDetailUnionSchema = z.union([\n ReasoningDetailSummarySchema,\n ReasoningDetailEncryptedSchema,\n ReasoningDetailTextSchema,\n]);\n\nexport type ReasoningDetailUnion = z.infer<typeof ReasoningDetailUnionSchema>;\n\nconst ReasoningDetailsWithUnknownSchema = z.union([\n ReasoningDetailUnionSchema,\n z.unknown().transform(() => null),\n]);\n\nexport const ReasoningDetailArraySchema = z\n .array(ReasoningDetailsWithUnknownSchema)\n .transform((d) => d.filter((d): d is ReasoningDetailUnion => !!d));\n\nexport const OutputUnionToReasoningDetailsSchema = z.union([\n z\n .object({\n delta: z.object({\n reasoning_details: z.array(ReasoningDetailsWithUnknownSchema),\n }),\n })\n .transform((data) =>\n data.delta.reasoning_details.filter(isDefinedOrNotNull),\n ),\n z\n .object({\n message: z.object({\n reasoning_details: z.array(ReasoningDetailsWithUnknownSchema),\n }),\n })\n .transform((data) =>\n data.message.reasoning_details.filter(isDefinedOrNotNull),\n ),\n z\n .object({\n text: z.string(),\n reasoning_details: z.array(ReasoningDetailsWithUnknownSchema),\n })\n .transform((data) => data.reasoning_details.filter(isDefinedOrNotNull)),\n]);\n","import type { ChatErrorError } from '@openrouter/sdk/models';\n\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Use SDK's ChatErrorError type but wrap in response schema\n// SDK type: { code: string | number | null; message: string; param?: string | null; type?: string | null }\nexport const OpenRouterErrorResponseSchema = z\n .object({\n error: z\n .object({\n code: z\n .union([z.string(), z.number()])\n .nullable()\n .optional()\n .default(null),\n message: z.string(),\n type: z.string().nullable().optional().default(null),\n param: z.any().nullable().optional().default(null),\n })\n .passthrough() satisfies z.ZodType<\n Omit<ChatErrorError, 'code'> & { code: string | number | null }\n >,\n })\n .passthrough();\n\nexport type OpenRouterErrorData = z.infer<typeof OpenRouterErrorResponseSchema>;\n\nexport const openrouterFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: OpenRouterErrorResponseSchema,\n errorToMessage: (data: OpenRouterErrorData) => data.error.message,\n});\n","import { z } from 'zod/v4';\nimport { ReasoningDetailUnionSchema } from './reasoning-details';\n\n/**\n * Schema for OpenRouter provider metadata attached to responses\n */\nexport const OpenRouterProviderMetadataSchema = z\n .object({\n provider: z.string(),\n reasoning_details: z.array(ReasoningDetailUnionSchema).optional(),\n usage: z\n .object({\n promptTokens: z.number(),\n promptTokensDetails: z\n .object({\n cachedTokens: z.number(),\n })\n .passthrough()\n .optional(),\n completionTokens: z.number(),\n completionTokensDetails: z\n .object({\n reasoningTokens: z.number(),\n })\n .passthrough()\n .optional(),\n totalTokens: z.number(),\n cost: z.number().optional(),\n costDetails: z\n .object({\n upstreamInferenceCost: z.number(),\n })\n .passthrough(),\n })\n .passthrough(),\n })\n .passthrough();\n\nexport type OpenRouterProviderMetadata = z.infer<\n typeof OpenRouterProviderMetadataSchema\n>;\n\n/**\n * Schema for parsing provider options that may contain reasoning_details\n */\nexport const OpenRouterProviderOptionsSchema = z\n .object({\n openrouter: z\n .object({\n reasoning_details: z.array(ReasoningDetailUnionSchema).optional(),\n })\n .optional(),\n })\n .optional();\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenRouterFinishReason(\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","export function isUrl({\n url,\n protocols,\n}: {\n url: string | URL;\n protocols: Set<`${string}:`>;\n}): boolean {\n try {\n const urlObj = new URL(url);\n // Cast to the literal string due to Set inferred input type\n return protocols.has(urlObj.protocol as `${string}:`);\n } catch (_) {\n return false;\n }\n}\n","import type { LanguageModelV2FilePart } from '@ai-sdk/provider';\n\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport { isUrl } from './is-url';\n\nexport function getFileUrl({\n part,\n defaultMediaType,\n}: {\n part: LanguageModelV2FilePart;\n defaultMediaType: string;\n}) {\n if (part.data instanceof Uint8Array) {\n const base64 = convertUint8ArrayToBase64(part.data);\n return `data:${part.mediaType ?? defaultMediaType};base64,${base64}`;\n }\n\n const stringUrl = part.data.toString();\n\n if (\n isUrl({\n url: stringUrl,\n protocols: new Set(['http:', 'https:']),\n })\n ) {\n return stringUrl;\n }\n\n return stringUrl.startsWith('data:')\n ? stringUrl\n : `data:${part.mediaType ?? defaultMediaType};base64,${stringUrl}`;\n}\n\nexport function getMediaType(\n dataUrl: string,\n defaultMediaType: string,\n): string {\n const match = dataUrl.match(/^data:([^;]+)/);\n return match ? (match[1] ?? defaultMediaType) : defaultMediaType;\n}\n\nexport function getBase64FromDataUrl(dataUrl: string): string {\n const match = dataUrl.match(/^data:[^;]*;base64,(.+)$/);\n return match ? match[1]! : dataUrl;\n}\n","import type {\n LanguageModelV2FilePart,\n LanguageModelV2Prompt,\n LanguageModelV2TextPart,\n LanguageModelV2ToolResultPart,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport type {\n ChatCompletionContentPart,\n OpenRouterChatCompletionsInput,\n} from '../types/openrouter-chat-completions-input';\n\nimport { OpenRouterProviderOptionsSchema } from '../schemas/provider-metadata';\nimport { getFileUrl } from './file-url-utils';\nimport { isUrl } from './is-url';\n\n// Type for OpenRouter Cache Control following Anthropic's pattern\nexport type OpenRouterCacheControl = { type: 'ephemeral' };\n\nfunction getCacheControl(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): OpenRouterCacheControl | undefined {\n const anthropic = providerMetadata?.anthropic;\n const openrouter = providerMetadata?.openrouter;\n\n // Allow both cacheControl and cache_control:\n return (openrouter?.cacheControl ??\n openrouter?.cache_control ??\n anthropic?.cacheControl ??\n anthropic?.cache_control) as OpenRouterCacheControl | undefined;\n}\n\nexport function convertToOpenRouterChatMessages(\n prompt: LanguageModelV2Prompt,\n): OpenRouterChatCompletionsInput {\n const messages: OpenRouterChatCompletionsInput = [];\n for (const { role, content, providerOptions } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({\n role: 'system',\n content,\n cache_control: getCacheControl(providerOptions),\n });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0]?.type === 'text') {\n const cacheControl =\n getCacheControl(providerOptions) ??\n getCacheControl(content[0].providerOptions);\n const contentWithCacheControl: string | ChatCompletionContentPart[] =\n cacheControl\n ? [\n {\n type: 'text',\n text: content[0].text,\n cache_control: cacheControl,\n },\n ]\n : content[0].text;\n messages.push({\n role: 'user',\n content: contentWithCacheControl,\n });\n break;\n }\n\n // Get message level cache control\n const messageCacheControl = getCacheControl(providerOptions);\n const contentParts: ChatCompletionContentPart[] = content.map(\n (part: LanguageModelV2TextPart | LanguageModelV2FilePart) => {\n const cacheControl =\n getCacheControl(part.providerOptions) ?? messageCacheControl;\n\n switch (part.type) {\n case 'text':\n return {\n type: 'text' as const,\n text: part.text,\n // For text parts, only use part-specific cache control\n cache_control: cacheControl,\n };\n case 'file': {\n if (part.mediaType?.startsWith('image/')) {\n const url = getFileUrl({\n part,\n defaultMediaType: 'image/jpeg',\n });\n return {\n type: 'image_url' as const,\n image_url: {\n url,\n },\n // For image parts, use part-specific or message-level cache control\n cache_control: cacheControl,\n };\n }\n\n const fileName = String(\n part.providerOptions?.openrouter?.filename ??\n part.filename ??\n '',\n );\n\n const fileData = getFileUrl({\n part,\n defaultMediaType: 'application/pdf',\n });\n\n if (\n isUrl({\n url: fileData,\n protocols: new Set(['http:', 'https:']),\n })\n ) {\n return {\n type: 'file' as const,\n file: {\n filename: fileName,\n file_data: fileData,\n },\n } satisfies ChatCompletionContentPart;\n }\n\n return {\n type: 'file' as const,\n file: {\n filename: fileName,\n file_data: fileData,\n },\n cache_control: cacheControl,\n } satisfies ChatCompletionContentPart;\n }\n default: {\n return {\n type: 'text' as const,\n text: '',\n cache_control: cacheControl,\n };\n }\n }\n },\n );\n\n // For multi-part messages, don't add cache_control at the root level\n messages.push({\n role: 'user',\n content: contentParts,\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 switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n case 'reasoning': {\n reasoning += part.text;\n break;\n }\n\n case 'file':\n break;\n default: {\n break;\n }\n }\n }\n\n // Check if we have preserved reasoning_details from the original OpenRouter response\n // OpenRouter requires reasoning_details to be passed back unmodified for multi-turn conversations\n // If we don't have the preserved version (AI SDK doesn't pass providerOptions back),\n // we should NOT send reconstructed reasoning_details as they won't match the original\n // Instead, only use the legacy reasoning field\n const parsedProviderOptions =\n OpenRouterProviderOptionsSchema.safeParse(providerOptions);\n const preservedReasoningDetails = parsedProviderOptions.success\n ? parsedProviderOptions.data?.openrouter?.reasoning_details\n : undefined;\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n reasoning: reasoning || undefined,\n // Only include reasoning_details if we have the preserved original version\n reasoning_details:\n preservedReasoningDetails &&\n Array.isArray(preservedReasoningDetails) &&\n preservedReasoningDetails.length > 0\n ? preservedReasoningDetails\n : undefined,\n cache_control: getCacheControl(providerOptions),\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const content = getToolResultContent(toolResponse);\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content,\n cache_control:\n getCacheControl(providerOptions) ??\n getCacheControl(toolResponse.providerOptions),\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return messages;\n}\n\nfunction getToolResultContent(input: LanguageModelV2ToolResultPart): string {\n return input.output.type === 'text'\n ? input.output.value\n : JSON.stringify(input.output.value);\n}\n","import type { LanguageModelV2ToolChoice } from '@ai-sdk/provider';\n\nimport { InvalidArgumentError } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nconst ChatCompletionToolChoiceSchema = z.union([\n z.literal('auto'),\n z.literal('none'),\n z.literal('required'),\n z.object({\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n }),\n }),\n]);\n\ntype ChatCompletionToolChoice = z.infer<typeof ChatCompletionToolChoiceSchema>;\n\nexport function getChatCompletionToolChoice(\n toolChoice: LanguageModelV2ToolChoice,\n): ChatCompletionToolChoice {\n switch (toolChoice.type) {\n case 'auto':\n case 'none':\n case 'required':\n return toolChoice.type;\n case 'tool': {\n return {\n type: 'function',\n function: { name: toolChoice.toolName },\n };\n }\n default: {\n toolChoice satisfies never;\n throw new InvalidArgumentError({\n argument: 'toolChoice',\n message: `Invalid tool choice type: ${JSON.stringify(toolChoice)}`,\n });\n }\n }\n}\n","import { z } from 'zod/v4';\n\nconst ImageResponseSchema = z\n .object({\n type: z.literal('image_url'),\n image_url: z\n .object({\n url: z.string(),\n })\n .passthrough(),\n })\n .passthrough();\n\nexport type ImageResponse = z.infer<typeof ImageResponseSchema>;\n\nconst ImageResponseWithUnknownSchema = z.union([\n ImageResponseSchema,\n z.unknown().transform(() => null),\n]);\n\nexport const ImageResponseArraySchema = z\n .array(ImageResponseWithUnknownSchema)\n .transform((d) => d.filter((d): d is ImageResponse => !!d));\n","import { z } from 'zod/v4';\nimport { OpenRouterErrorResponseSchema } from '../schemas/error-response';\nimport { ImageResponseArraySchema } from '../schemas/image';\nimport { ReasoningDetailArraySchema } from '../schemas/reasoning-details';\n\nconst OpenRouterChatCompletionBaseResponseSchema = z\n .object({\n id: z.string().optional(),\n model: z.string().optional(),\n provider: z.string().optional(),\n usage: z\n .object({\n prompt_tokens: z.number(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n completion_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n total_tokens: z.number(),\n cost: z.number().optional(),\n cost_details: z\n .object({\n upstream_inference_cost: z.number().nullish(),\n })\n .passthrough()\n .nullish(),\n })\n .passthrough()\n .nullish(),\n })\n .passthrough();\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 OpenRouterNonStreamChatCompletionResponseSchema = z.union([\n // Success response with choices\n OpenRouterChatCompletionBaseResponseSchema.extend({\n choices: z.array(\n z\n .object({\n message: z\n .object({\n role: z.literal('assistant'),\n content: z.string().nullable().optional(),\n reasoning: z.string().nullable().optional(),\n reasoning_details: ReasoningDetailArraySchema.nullish(),\n images: ImageResponseArraySchema.nullish(),\n\n tool_calls: z\n .array(\n z\n .object({\n id: z.string().optional().nullable(),\n type: z.literal('function'),\n function: z\n .object({\n name: z.string(),\n arguments: z.string(),\n })\n .passthrough(),\n })\n .passthrough(),\n )\n .optional(),\n\n annotations: z\n .array(\n z.union([\n // URL citation from web search\n z\n .object({\n type: z.literal('url_citation'),\n url_citation: z\n .object({\n end_index: z.number(),\n start_index: z.number(),\n title: z.string(),\n url: z.string(),\n content: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (old format)\n z\n .object({\n type: z.literal('file_annotation'),\n file_annotation: z\n .object({\n file_id: z.string(),\n quote: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (new format)\n z\n .object({\n type: z.literal('file'),\n file: z\n .object({\n hash: z.string(),\n name: z.string(),\n content: z\n .array(\n z\n .object({\n type: z.string(),\n text: z.string(),\n })\n .passthrough(),\n )\n .optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n ]),\n )\n .nullish(),\n })\n .passthrough(),\n index: z.number().nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough(),\n )\n .nullable(),\n })\n .passthrough()\n .nullable()\n .optional(),\n finish_reason: z.string().optional().nullable(),\n })\n .passthrough(),\n ),\n }),\n // Error response (HTTP 200 with error payload)\n OpenRouterErrorResponseSchema.extend({\n user_id: z.string().optional(),\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 OpenRouterStreamChatCompletionChunkSchema = z.union([\n OpenRouterChatCompletionBaseResponseSchema.extend({\n choices: z.array(\n z\n .object({\n delta: z\n .object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning: z.string().nullish().optional(),\n reasoning_details: ReasoningDetailArraySchema.nullish(),\n images: ImageResponseArraySchema.nullish(),\n tool_calls: z\n .array(\n z\n .object({\n index: z.number().nullish(),\n id: z.string().nullish(),\n type: z.literal('function').optional(),\n function: z\n .object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n })\n .passthrough(),\n })\n .passthrough(),\n )\n .nullish(),\n\n annotations: z\n .array(\n z.union([\n // URL citation from web search\n z\n .object({\n type: z.literal('url_citation'),\n url_citation: z\n .object({\n end_index: z.number(),\n start_index: z.number(),\n title: z.string(),\n url: z.string(),\n content: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (old format)\n z\n .object({\n type: z.literal('file_annotation'),\n file_annotation: z\n .object({\n file_id: z.string(),\n quote: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (new format)\n z\n .object({\n type: z.literal('file'),\n file: z\n .object({\n hash: z.string(),\n name: z.string(),\n content: z\n .array(\n z\n .object({\n type: z.string(),\n text: z.string(),\n })\n .passthrough(),\n )\n .optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n ]),\n )\n .nullish(),\n })\n .passthrough()\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough(),\n )\n .nullable(),\n })\n .passthrough()\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number().nullish(),\n })\n .passthrough(),\n ),\n }),\n OpenRouterErrorResponseSchema,\n]);\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ResponseMetadata,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2Headers,\n} from '@ai-sdk/provider';\nimport type { ParseResult } from '@ai-sdk/provider-utils';\nimport type { FinishReason } from 'ai';\nimport type { z } from 'zod/v4';\nimport type { ReasoningDetailUnion } from '@/src/schemas/reasoning-details';\nimport type { OpenRouterUsageAccounting } from '@/src/types/index';\nimport type {\n OpenRouterChatModelId,\n OpenRouterChatSettings,\n} from '../types/openrouter-chat-settings';\n\nimport {\n APICallError,\n InvalidResponseDataError,\n NoContentGeneratedError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { ReasoningDetailType } from '@/src/schemas/reasoning-details';\nimport { openrouterFailedResponseHandler } from '../schemas/error-response';\nimport { OpenRouterProviderMetadataSchema } from '../schemas/provider-metadata';\nimport { mapOpenRouterFinishReason } from '../utils/map-finish-reason';\nimport { convertToOpenRouterChatMessages } from './convert-to-openrouter-chat-messages';\nimport { getBase64FromDataUrl, getMediaType } from './file-url-utils';\nimport { getChatCompletionToolChoice } from './get-tool-choice';\nimport {\n OpenRouterNonStreamChatCompletionResponseSchema,\n OpenRouterStreamChatCompletionChunkSchema,\n} from './schemas';\n\ntype OpenRouterChatConfig = {\n provider: string;\n compatibility: 'strict' | 'compatible';\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: typeof fetch;\n extraBody?: Record<string, unknown>;\n};\n\nexport class OpenRouterChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly provider = 'openrouter';\n readonly defaultObjectGenerationMode = 'tool' as const;\n\n readonly modelId: OpenRouterChatModelId;\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [\n /^data:image\\/[a-zA-Z]+;base64,/,\n /^https?:\\/\\/.+\\.(jpg|jpeg|png|gif|webp)$/i,\n ],\n // 'text/*': [/^data:text\\//, /^https?:\\/\\/.+$/],\n 'application/*': [/^data:application\\//, /^https?:\\/\\/.+$/],\n };\n readonly settings: OpenRouterChatSettings;\n\n private readonly config: OpenRouterChatConfig;\n\n constructor(\n modelId: OpenRouterChatModelId,\n settings: OpenRouterChatSettings,\n config: OpenRouterChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n stopSequences,\n responseFormat,\n topK,\n tools,\n toolChoice,\n }: LanguageModelV2CallOptions) {\n const baseArgs = {\n // model id:\n model: this.modelId,\n models: this.settings.models,\n\n // model specific settings:\n logit_bias: this.settings.logitBias,\n logprobs:\n this.settings.logprobs === true ||\n typeof this.settings.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof this.settings.logprobs === 'number'\n ? this.settings.logprobs\n : typeof this.settings.logprobs === 'boolean'\n ? this.settings.logprobs\n ? 0\n : undefined\n : undefined,\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n stop: stopSequences,\n response_format: responseFormat,\n top_k: topK,\n\n // messages:\n messages: convertToOpenRouterChatMessages(prompt),\n\n // OpenRouter specific settings:\n include_reasoning: this.settings.includeReasoning,\n reasoning: this.settings.reasoning,\n usage: this.settings.usage,\n\n // Web search settings:\n plugins: this.settings.plugins,\n web_search_options: this.settings.web_search_options,\n // Provider routing settings:\n provider: this.settings.provider,\n\n // extra body:\n ...this.config.extraBody,\n ...this.settings.extraBody,\n };\n\n if (responseFormat?.type === 'json' && responseFormat.schema != null) {\n return {\n ...baseArgs,\n response_format: {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: true,\n name: responseFormat.name ?? 'response',\n ...(responseFormat.description && {\n description: responseFormat.description,\n }),\n },\n },\n };\n }\n\n if (tools && tools.length > 0) {\n // TODO: support built-in tools\n const mappedTools = tools\n .filter((tool) => tool.type === 'function')\n .map((tool) => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n }));\n\n return {\n ...baseArgs,\n tools: mappedTools,\n tool_choice: toolChoice\n ? getChatCompletionToolChoice(toolChoice)\n : undefined,\n };\n }\n\n return baseArgs;\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<{\n content: Array<LanguageModelV2Content>;\n finishReason: LanguageModelV2FinishReason;\n usage: LanguageModelV2Usage;\n warnings: Array<LanguageModelV2CallWarning>;\n providerMetadata?: {\n openrouter: {\n provider: string;\n reasoning_details?: ReasoningDetailUnion[];\n usage: OpenRouterUsageAccounting;\n };\n };\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n }> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: responseValue, responseHeaders } = 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: openrouterFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n OpenRouterNonStreamChatCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n // Check if response is an error (HTTP 200 with error payload)\n if ('error' in responseValue) {\n const errorData = responseValue.error as {\n message: string;\n code?: string;\n };\n throw new APICallError({\n message: errorData.message,\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n requestBodyValues: args,\n statusCode: 200,\n responseHeaders,\n data: errorData,\n });\n }\n\n // Now TypeScript knows this is the success response\n const response = responseValue;\n\n const choice = response.choices[0];\n\n if (!choice) {\n throw new NoContentGeneratedError({\n message: 'No choice in response',\n });\n }\n\n // Extract detailed usage information\n const usageInfo: LanguageModelV2Usage = response.usage\n ? {\n inputTokens: response.usage.prompt_tokens ?? 0,\n outputTokens: response.usage.completion_tokens ?? 0,\n totalTokens:\n (response.usage.prompt_tokens ?? 0) +\n (response.usage.completion_tokens ?? 0),\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ?? 0,\n cachedInputTokens:\n response.usage.prompt_tokens_details?.cached_tokens ?? 0,\n }\n : {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n reasoningTokens: 0,\n cachedInputTokens: 0,\n };\n\n const reasoningDetails = choice.message.reasoning_details ?? [];\n\n const reasoning: Array<LanguageModelV2Content> =\n reasoningDetails.length > 0\n ? reasoningDetails\n .map((detail) => {\n switch (detail.type) {\n case ReasoningDetailType.Text: {\n if (detail.text) {\n return {\n type: 'reasoning' as const,\n text: detail.text,\n };\n }\n break;\n }\n case ReasoningDetailType.Summary: {\n if (detail.summary) {\n return {\n type: 'reasoning' as const,\n text: detail.summary,\n };\n }\n break;\n }\n case ReasoningDetailType.Encrypted: {\n // For encrypted reasoning, we include a redacted placeholder\n if (detail.data) {\n return {\n type: 'reasoning' as const,\n text: '[REDACTED]',\n };\n }\n break;\n }\n default: {\n detail satisfies never;\n }\n }\n return null;\n })\n .filter((p) => p !== null)\n : choice.message.reasoning\n ? [\n {\n type: 'reasoning' as const,\n text: choice.message.reasoning,\n },\n ]\n : [];\n\n const content: Array<LanguageModelV2Content> = [];\n\n // Add reasoning content first\n content.push(...reasoning);\n\n if (choice.message.content) {\n content.push({\n type: 'text' as const,\n text: choice.message.content,\n });\n }\n\n if (choice.message.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\n if (choice.message.images) {\n for (const image of choice.message.images) {\n content.push({\n type: 'file' as const,\n mediaType: getMediaType(image.image_url.url, 'image/jpeg'),\n data: getBase64FromDataUrl(image.image_url.url),\n });\n }\n }\n\n if (choice.message.annotations) {\n for (const annotation of choice.message.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source' as const,\n sourceType: 'url' as const,\n id: annotation.url_citation.url,\n url: annotation.url_citation.url,\n title: annotation.url_citation.title,\n providerMetadata: {\n openrouter: {\n content: annotation.url_citation.content || '',\n },\n },\n });\n }\n }\n }\n\n return {\n content,\n finishReason: mapOpenRouterFinishReason(choice.finish_reason),\n usage: usageInfo,\n warnings: [],\n providerMetadata: {\n openrouter: OpenRouterProviderMetadataSchema.parse({\n provider: response.provider ?? '',\n reasoning_details: choice.message.reasoning_details ?? [],\n usage: {\n promptTokens: usageInfo.inputTokens ?? 0,\n completionTokens: usageInfo.outputTokens ?? 0,\n totalTokens: usageInfo.totalTokens ?? 0,\n cost: response.usage?.cost,\n promptTokensDetails: {\n cachedTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n },\n completionTokensDetails: {\n reasoningTokens:\n response.usage?.completion_tokens_details?.reasoning_tokens ??\n 0,\n },\n costDetails: {\n upstreamInferenceCost:\n response.usage?.cost_details?.upstream_inference_cost ?? 0,\n },\n },\n }),\n },\n request: { body: args },\n response: {\n id: response.id,\n modelId: response.model,\n headers: responseHeaders,\n },\n };\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n warnings: Array<LanguageModelV2CallWarning>;\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n }> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options:\n this.config.compatibility === 'strict'\n ? {\n include_usage: true,\n // If user has requested usage accounting, make sure we get it in the stream\n ...(this.settings.usage?.include\n ? { include_usage: true }\n : {}),\n }\n : undefined,\n },\n failedResponseHandler: openrouterFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n OpenRouterStreamChatCompletionChunkSchema,\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 inputStarted: boolean;\n sent: boolean;\n }> = [];\n\n let finishReason: FinishReason = 'other';\n const usage: LanguageModelV2Usage = {\n inputTokens: Number.NaN,\n outputTokens: Number.NaN,\n totalTokens: Number.NaN,\n reasoningTokens: Number.NaN,\n cachedInputTokens: Number.NaN,\n };\n\n // Track provider-specific usage information\n const openrouterUsage: Partial<OpenRouterUsageAccounting> = {};\n\n // Track reasoning details to preserve for multi-turn conversations\n const accumulatedReasoningDetails: ReasoningDetailUnion[] = [];\n\n let textStarted = false;\n let reasoningStarted = false;\n let textId: string | undefined;\n let reasoningId: string | undefined;\n let openrouterResponseId: string | undefined;\n let provider: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<\n z.infer<typeof OpenRouterStreamChatCompletionChunkSchema>\n >,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (value.provider) {\n provider = value.provider;\n }\n\n if (value.id) {\n openrouterResponseId = value.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.id,\n });\n }\n\n if (value.model) {\n controller.enqueue({\n type: 'response-metadata',\n modelId: value.model,\n });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens =\n value.usage.prompt_tokens + value.usage.completion_tokens;\n\n // Collect OpenRouter specific usage information\n openrouterUsage.promptTokens = value.usage.prompt_tokens;\n\n if (value.usage.prompt_tokens_details) {\n const cachedInputTokens =\n value.usage.prompt_tokens_details.cached_tokens ?? 0;\n\n usage.cachedInputTokens = cachedInputTokens;\n openrouterUsage.promptTokensDetails = {\n cachedTokens: cachedInputTokens,\n };\n }\n\n openrouterUsage.completionTokens = value.usage.completion_tokens;\n if (value.usage.completion_tokens_details) {\n const reasoningTokens =\n value.usage.completion_tokens_details.reasoning_tokens ?? 0;\n\n usage.reasoningTokens = reasoningTokens;\n openrouterUsage.completionTokensDetails = {\n reasoningTokens,\n };\n }\n\n openrouterUsage.cost = value.usage.cost;\n openrouterUsage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenRouterFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n const emitReasoningChunk = (chunkText: string) => {\n if (!reasoningStarted) {\n reasoningId = openrouterResponseId || generateId();\n controller.enqueue({\n type: 'reasoning-start',\n id: reasoningId,\n });\n reasoningStarted = true;\n }\n controller.enqueue({\n type: 'reasoning-delta',\n delta: chunkText,\n id: reasoningId || generateId(),\n });\n };\n\n if (delta.reasoning_details && delta.reasoning_details.length > 0) {\n // Accumulate reasoning_details to preserve for multi-turn conversations\n accumulatedReasoningDetails.push(...delta.reasoning_details);\n\n for (const detail of delta.reasoning_details) {\n switch (detail.type) {\n case ReasoningDetailType.Text: {\n if (detail.text) {\n emitReasoningChunk(detail.text);\n }\n break;\n }\n case ReasoningDetailType.Encrypted: {\n if (detail.data) {\n emitReasoningChunk('[REDACTED]');\n }\n break;\n }\n case ReasoningDetailType.Summary: {\n if (detail.summary) {\n emitReasoningChunk(detail.summary);\n }\n break;\n }\n default: {\n detail satisfies never;\n break;\n }\n }\n }\n } else if (delta.reasoning) {\n emitReasoningChunk(delta.reasoning);\n }\n\n if (delta.content) {\n // If reasoning was previously active and now we're starting text content,\n // we should end the reasoning first to maintain proper order\n if (reasoningStarted && !textStarted) {\n controller.enqueue({\n type: 'reasoning-end',\n id: reasoningId || generateId(),\n });\n reasoningStarted = false; // Mark as ended so we don't end it again in flush\n }\n\n if (!textStarted) {\n textId = openrouterResponseId || generateId();\n controller.enqueue({\n type: 'text-start',\n id: textId,\n });\n textStarted = true;\n }\n controller.enqueue({\n type: 'text-delta',\n delta: delta.content,\n id: textId || generateId(),\n });\n }\n\n if (delta.annotations) {\n for (const annotation of delta.annotations) {\n if (annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url' as const,\n id: annotation.url_citation.url,\n url: annotation.url_citation.url,\n title: annotation.url_citation.title,\n providerMetadata: {\n openrouter: {\n content: annotation.url_citation.content || '',\n },\n },\n });\n }\n }\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index ?? toolCalls.length - 1;\n\n // Tool call start. OpenRouter returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n inputStarted: false,\n sent: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (toolCall == null) {\n throw new InvalidResponseDataError({\n data: { index, toolCallsLength: toolCalls.length },\n message: `Tool call at index ${index} is missing after creation.`,\n });\n }\n\n // check if tool call is complete (some providers send the full tool call in one chunk)\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n toolCall.inputStarted = true;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\n });\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n // send tool call\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n\n toolCall.sent = true;\n }\n\n continue;\n }\n\n // existing tool call, merge\n const toolCall = toolCalls[index];\n\n if (toolCall == null) {\n throw new InvalidResponseDataError({\n data: {\n index,\n toolCallsLength: toolCalls.length,\n toolCallDelta,\n },\n message: `Tool call at index ${index} is missing during merge.`,\n });\n }\n\n if (!toolCall.inputStarted) {\n toolCall.inputStarted = true;\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\n });\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-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n\n toolCall.sent = true;\n }\n }\n }\n\n if (delta.images != null) {\n for (const image of delta.images) {\n controller.enqueue({\n type: 'file',\n mediaType: getMediaType(image.image_url.url, 'image/jpeg'),\n data: getBase64FromDataUrl(image.image_url.url),\n });\n }\n }\n },\n\n flush(controller) {\n // Forward any unsent tool calls if finish reason is 'tool-calls'\n if (finishReason === 'tool-calls') {\n for (const toolCall of toolCalls) {\n if (toolCall && !toolCall.sent) {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n // Coerce invalid arguments to an empty JSON object\n input: isParsableJson(toolCall.function.arguments)\n ? toolCall.function.arguments\n : '{}',\n });\n toolCall.sent = true;\n }\n }\n }\n\n // End reasoning first if it was started, to maintain proper order\n if (reasoningStarted) {\n controller.enqueue({\n type: 'reasoning-end',\n id: reasoningId || generateId(),\n });\n }\n if (textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: textId || generateId(),\n });\n }\n\n const openrouterMetadata: {\n usage: Partial<OpenRouterUsageAccounting>;\n provider?: string;\n reasoning_details?: ReasoningDetailUnion[];\n } = {\n usage: openrouterUsage,\n };\n\n // Only include provider if it's actually set\n if (provider !== undefined) {\n openrouterMetadata.provider = provider;\n }\n\n // Include accumulated reasoning_details if any were received\n if (accumulatedReasoningDetails.length > 0) {\n openrouterMetadata.reasoning_details =\n accumulatedReasoningDetails;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata: {\n openrouter: openrouterMetadata,\n },\n });\n },\n }),\n ),\n warnings: [],\n request: { body: args },\n response: { headers: responseHeaders },\n };\n }\n}\n","import type {\n LanguageModelV2FilePart,\n LanguageModelV2Prompt,\n LanguageModelV2ReasoningPart,\n LanguageModelV2TextPart,\n LanguageModelV2ToolCallPart,\n LanguageModelV2ToolResultPart,\n} from '@ai-sdk/provider';\n\nimport {\n InvalidPromptError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenRouterCompletionPrompt({\n prompt,\n inputFormat,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n inputFormat: 'prompt' | 'messages';\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n} {\n // When the user supplied a prompt input, we don't transform it:\n if (\n inputFormat === 'prompt' &&\n prompt.length === 1 &&\n prompt[0] &&\n prompt[0].role === 'user' &&\n prompt[0].content.length === 1 &&\n prompt[0].content[0] &&\n prompt[0].content[0].type === 'text'\n ) {\n return { prompt: prompt[0].content[0].text };\n }\n\n // otherwise transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0] && 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: LanguageModelV2TextPart | LanguageModelV2FilePart) => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n\n case 'file': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file attachments',\n });\n }\n default: {\n return '';\n }\n }\n })\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(\n (\n part:\n | LanguageModelV2TextPart\n | LanguageModelV2FilePart\n | LanguageModelV2ReasoningPart\n | LanguageModelV2ToolCallPart\n | LanguageModelV2ToolResultPart,\n ) => {\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 case 'tool-result': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-result messages',\n });\n }\n case 'reasoning': {\n throw new UnsupportedFunctionalityError({\n functionality: 'reasoning messages',\n });\n }\n\n case 'file': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file attachments',\n });\n }\n\n default: {\n return '';\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 break;\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n };\n}\n","import { z } from 'zod/v4';\nimport { OpenRouterErrorResponseSchema } from '../schemas/error-response';\nimport { ReasoningDetailArraySchema } from '../schemas/reasoning-details';\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 OpenRouterCompletionChunkSchema = z.union([\n z\n .object({\n id: z.string().optional(),\n model: z.string().optional(),\n choices: z.array(\n z\n .object({\n text: z.string(),\n reasoning: z.string().nullish().optional(),\n reasoning_details: ReasoningDetailArraySchema.nullish(),\n\n finish_reason: z.string().nullish(),\n index: z.number().nullish(),\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 .nullable(),\n })\n .passthrough()\n .nullable()\n .optional(),\n })\n .passthrough(),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n completion_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n total_tokens: z.number(),\n cost: z.number().optional(),\n })\n .passthrough()\n .nullish(),\n })\n .passthrough(),\n OpenRouterErrorResponseSchema,\n]);\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport type { ParseResult } from '@ai-sdk/provider-utils';\nimport type { FinishReason } from 'ai';\nimport type { z } from 'zod/v4';\nimport type { OpenRouterUsageAccounting } from '../types';\nimport type {\n OpenRouterCompletionModelId,\n OpenRouterCompletionSettings,\n} from '../types/openrouter-completion-settings';\n\nimport {\n APICallError,\n NoContentGeneratedError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openrouterFailedResponseHandler } from '../schemas/error-response';\nimport { mapOpenRouterFinishReason } from '../utils/map-finish-reason';\nimport { convertToOpenRouterCompletionPrompt } from './convert-to-openrouter-completion-prompt';\nimport { OpenRouterCompletionChunkSchema } from './schemas';\n\ntype OpenRouterCompletionConfig = {\n provider: string;\n compatibility: 'strict' | 'compatible';\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: typeof fetch;\n extraBody?: Record<string, unknown>;\n};\n\nexport class OpenRouterCompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly provider = 'openrouter';\n readonly modelId: OpenRouterCompletionModelId;\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [\n /^data:image\\/[a-zA-Z]+;base64,/,\n /^https?:\\/\\/.+\\.(jpg|jpeg|png|gif|webp)$/i,\n ],\n 'text/*': [/^data:text\\//, /^https?:\\/\\/.+$/],\n 'application/*': [/^data:application\\//, /^https?:\\/\\/.+$/],\n };\n readonly defaultObjectGenerationMode = undefined;\n readonly settings: OpenRouterCompletionSettings;\n\n private readonly config: OpenRouterCompletionConfig;\n\n constructor(\n modelId: OpenRouterCompletionModelId,\n settings: OpenRouterCompletionSettings,\n config: OpenRouterCompletionConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n responseFormat,\n topK,\n stopSequences,\n tools,\n toolChoice,\n }: LanguageModelV2CallOptions) {\n const { prompt: completionPrompt } = convertToOpenRouterCompletionPrompt({\n prompt,\n inputFormat: 'prompt',\n });\n\n if (tools?.length) {\n throw new UnsupportedFunctionalityError({\n functionality: 'tools',\n });\n }\n\n if (toolChoice) {\n throw new UnsupportedFunctionalityError({\n functionality: 'toolChoice',\n });\n }\n\n return {\n // model id:\n model: this.modelId,\n models: this.settings.models,\n\n // model specific settings:\n logit_bias: this.settings.logitBias,\n logprobs:\n typeof this.settings.logprobs === 'number'\n ? this.settings.logprobs\n : typeof this.settings.logprobs === 'boolean'\n ? this.settings.logprobs\n ? 0\n : undefined\n : undefined,\n suffix: this.settings.suffix,\n user: this.settings.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n stop: stopSequences,\n response_format: responseFormat,\n top_k: topK,\n\n // prompt:\n prompt: completionPrompt,\n\n // OpenRouter specific settings:\n include_reasoning: this.settings.includeReasoning,\n reasoning: this.settings.reasoning,\n\n // extra body:\n ...this.config.extraBody,\n ...this.settings.extraBody,\n };\n }\n\n async doGenerate(\n options: LanguageModelV2CallOptions,\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: response, responseHeaders } = 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: openrouterFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n OpenRouterCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if ('error' in response) {\n const errorData = response.error as { message: string; code?: string };\n throw new APICallError({\n message: errorData.message,\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n requestBodyValues: args,\n statusCode: 200,\n responseHeaders,\n data: errorData,\n });\n }\n\n const choice = response.choices[0];\n\n if (!choice) {\n throw new NoContentGeneratedError({\n message: 'No choice in OpenRouter completion response',\n });\n }\n\n return {\n content: [\n {\n type: 'text',\n text: choice.text ?? '',\n },\n ],\n finishReason: mapOpenRouterFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? 0,\n outputTokens: response.usage?.completion_tokens ?? 0,\n totalTokens:\n (response.usage?.prompt_tokens ?? 0) +\n (response.usage?.completion_tokens ?? 0),\n reasoningTokens:\n response.usage?.completion_tokens_details?.reasoning_tokens ?? 0,\n cachedInputTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n },\n warnings: [],\n response: {\n headers: responseHeaders,\n },\n };\n }\n\n async doStream(\n options: LanguageModelV2CallOptions,\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: response, responseHeaders } = 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 ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options:\n this.config.compatibility === 'strict'\n ? { include_usage: true }\n : undefined,\n },\n failedResponseHandler: openrouterFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n OpenRouterCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: FinishReason = 'other';\n const usage: LanguageModelV2Usage = {\n inputTokens: Number.NaN,\n outputTokens: Number.NaN,\n totalTokens: Number.NaN,\n reasoningTokens: Number.NaN,\n cachedInputTokens: Number.NaN,\n };\n\n const openrouterUsage: Partial<OpenRouterUsageAccounting> = {};\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof OpenRouterCompletionChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens =\n value.usage.prompt_tokens + value.usage.completion_tokens;\n\n // Collect OpenRouter specific usage information\n openrouterUsage.promptTokens = value.usage.prompt_tokens;\n\n if (value.usage.prompt_tokens_details) {\n const cachedInputTokens =\n value.usage.prompt_tokens_details.cached_tokens ?? 0;\n\n usage.cachedInputTokens = cachedInputTokens;\n openrouterUsage.promptTokensDetails = {\n cachedTokens: cachedInputTokens,\n };\n }\n\n openrouterUsage.completionTokens = value.usage.completion_tokens;\n if (value.usage.completion_tokens_details) {\n const reasoningTokens =\n value.usage.completion_tokens_details.reasoning_tokens ?? 0;\n\n usage.reasoningTokens = reasoningTokens;\n openrouterUsage.completionTokensDetails = {\n reasoningTokens,\n };\n }\n\n openrouterUsage.cost = value.usage.cost;\n openrouterUsage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenRouterFinishReason(choice.finish_reason);\n }\n\n if (choice?.text != null) {\n controller.enqueue({\n type: 'text-delta',\n delta: choice.text,\n id: generateId(),\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata: {\n openrouter: {\n usage: openrouterUsage,\n },\n },\n });\n },\n }),\n ),\n response: {\n headers: responseHeaders,\n },\n };\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(([, value]) => value !== null),\n ) as Record<string, T>;\n}\n","import { removeUndefinedEntries } from '@/src/utils/remove-undefined';\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 cleanedHeaders = removeUndefinedEntries(\n (headers as Record<string, string | undefined>) ?? {},\n );\n\n const currentUserAgentHeader = cleanedHeaders['user-agent'] || '';\n const newUserAgent = [currentUserAgentHeader, ...userAgentSuffixParts]\n .filter(Boolean)\n .join(' ');\n\n return {\n ...cleanedHeaders,\n 'user-agent': newUserAgent,\n };\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n __PACKAGE_VERSION__ === undefined ? '0.0.0-test' : __PACKAGE_VERSION__;\n","import type { ProviderV2 } from '@ai-sdk/provider';\nimport type {\n OpenRouterChatModelId,\n OpenRouterChatSettings,\n} from './types/openrouter-chat-settings';\nimport type {\n OpenRouterCompletionModelId,\n OpenRouterCompletionSettings,\n} from './types/openrouter-completion-settings';\n\nimport { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { OpenRouterChatLanguageModel } from './chat';\nimport { OpenRouterCompletionLanguageModel } from './completion';\nimport { withUserAgentSuffix } from './utils/with-user-agent-suffix';\nimport { VERSION } from './version';\n\nexport type { OpenRouterCompletionSettings };\n\nexport interface OpenRouterProvider extends ProviderV2 {\n (\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterCompletionSettings,\n ): OpenRouterCompletionLanguageModel;\n (\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterChatSettings,\n ): OpenRouterChatLanguageModel;\n\n languageModel(\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterCompletionSettings,\n ): OpenRouterCompletionLanguageModel;\n languageModel(\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterChatSettings,\n ): OpenRouterChatLanguageModel;\n\n /**\nCreates an OpenRouter chat model for text generation.\n */\n chat(\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterChatSettings,\n ): OpenRouterChatLanguageModel;\n\n /**\nCreates an OpenRouter completion model for text generation.\n */\n completion(\n modelId: OpenRouterCompletionModelId,\n settings?: OpenRouterCompletionSettings,\n ): OpenRouterCompletionLanguageModel;\n}\n\nexport interface OpenRouterProviderSettings {\n /**\nBase URL for the OpenRouter API calls.\n */\n baseURL?: string;\n\n /**\n@deprecated Use `baseURL` instead.\n */\n baseUrl?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nOpenRouter compatibility mode. Should be set to `strict` when using the OpenRouter API,\nand `compatible` when using 3rd party providers. In `compatible` mode, newer\ninformation such as streamOptions are not being sent. Defaults to 'compatible'.\n */\n compatibility?: 'strict' | 'compatible';\n\n /**\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?: typeof fetch;\n\n /**\nA JSON object to send as the request body to access OpenRouter features & upstream provider features.\n */\n extraBody?: Record<string, unknown>;\n}\n\n/**\nCreate an OpenRouter provider instance.\n */\nexport function createOpenRouter(\n options: OpenRouterProviderSettings = {},\n): OpenRouterProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://openrouter.ai/api/v1';\n\n // we default to compatible, because strict breaks providers like Groq:\n const compatibility = options.compatibility ?? 'compatible';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'OPENROUTER_API_KEY',\n description: 'OpenRouter',\n })}`,\n ...options.headers,\n },\n `ai-sdk/openrouter/${VERSION}`,\n );\n\n const createChatModel = (\n modelId: OpenRouterChatModelId,\n settings: OpenRouterChatSettings = {},\n ) =>\n new OpenRouterChatLanguageModel(modelId, settings, {\n provider: 'openrouter.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n compatibility,\n fetch: options.fetch,\n extraBody: options.extraBody,\n });\n\n const createCompletionModel = (\n modelId: OpenRouterCompletionModelId,\n settings: OpenRouterCompletionSettings = {},\n ) =>\n new OpenRouterCompletionLanguageModel(modelId, settings, {\n provider: 'openrouter.completion',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n compatibility,\n fetch: options.fetch,\n extraBody: options.extraBody,\n });\n\n const createLanguageModel = (\n modelId: OpenRouterChatModelId | OpenRouterCompletionModelId,\n settings?: OpenRouterChatSettings | OpenRouterCompletionSettings,\n ) => {\n if (new.target) {\n throw new Error(\n 'The OpenRouter model function cannot be called with the new keyword.',\n );\n }\n\n if (modelId === 'openai/gpt-3.5-turbo-instruct') {\n return createCompletionModel(\n modelId,\n settings as OpenRouterCompletionSettings,\n );\n }\n\n return createChatModel(modelId, settings as OpenRouterChatSettings);\n };\n\n const provider = (\n modelId: OpenRouterChatModelId | OpenRouterCompletionModelId,\n settings?: OpenRouterChatSettings | OpenRouterCompletionSettings,\n ) => createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n\n return provider as OpenRouterProvider;\n}\n\n/**\nDefault OpenRouter provider instance. It uses 'strict' compatibility mode.\n */\nexport const openrouter = createOpenRouter({\n compatibility: 'strict', // strict for OpenRouter API\n});\n","export type ResolvedModelConfig = {\n url: string | false;\n headers: Record<string, string>;\n resolvedModelId: string;\n fullModelId: string;\n};\n\nexport function parseModelRouterId(routerId: string, gatewayPrefix?: string): { providerId: string; modelId: string } {\n if (gatewayPrefix && !routerId.startsWith(`${gatewayPrefix}/`)) {\n throw new Error(`Expected ${gatewayPrefix}/ in model router ID ${routerId}`);\n }\n\n const idParts = routerId.split('/');\n\n // Azure OpenAI uses 2-part format (azure-openai/deployment), others use 3-part (gateway/provider/model)\n if (gatewayPrefix === 'azure-openai') {\n if (idParts.length < 2) {\n throw new Error(`Expected format azure-openai/deployment-name, but got ${routerId}`);\n }\n return {\n providerId: 'azure-openai',\n modelId: idParts.slice(1).join('/'), // Deployment name\n };\n }\n\n // Standard 3-part format for other prefixed gateways (Netlify, etc.)\n if (gatewayPrefix && idParts.length < 3) {\n throw new Error(\n `Expected atleast 3 id parts ${gatewayPrefix}/provider/model, but only saw ${idParts.length} in ${routerId}`,\n );\n }\n\n const providerId = idParts.at(gatewayPrefix ? 1 : 0);\n const modelId = idParts.slice(gatewayPrefix ? 2 : 1).join(`/`);\n\n if (!routerId.includes(`/`) || !providerId || !modelId) {\n throw new Error(\n `Attempted to parse provider/model from ${routerId} but this ID doesn't appear to contain a provider`,\n );\n }\n\n return {\n providerId,\n modelId,\n };\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","import { createAnthropic } from '@ai-sdk/anthropic-v5';\nimport { createCerebras } from '@ai-sdk/cerebras-v5';\nimport { createDeepInfra } from '@ai-sdk/deepinfra-v5';\nimport { createDeepSeek } from '@ai-sdk/deepseek-v5';\nimport { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createGroq } from '@ai-sdk/groq-v5';\nimport { createMistral } from '@ai-sdk/mistral-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport { createPerplexity } from '@ai-sdk/perplexity-v5';\nimport { createTogetherAI } from '@ai-sdk/togetherai-v5';\nimport { createXai } from '@ai-sdk/xai-v5';\nimport { createGateway } from '@internal/ai-v6';\nimport { createOpenRouter } from '@openrouter/ai-sdk-provider-v5';\nimport { parseModelRouterId } from '../gateway-resolver.js';\nimport { MastraModelGateway } from './base.js';\nimport type { GatewayLanguageModel, ProviderConfig } from './base.js';\nimport { EXCLUDED_PROVIDERS, PROVIDERS_WITH_INSTALLED_PACKAGES } from './constants.js';\n\ninterface ModelsDevProviderInfo {\n id: string;\n name: string;\n models: Record<string, any>;\n env?: string[]; // Array of env var names\n api?: string; // Base API URL\n npm?: string; // NPM package name\n doc?: string; // Documentation URL\n}\n\ninterface ModelsDevResponse {\n [providerId: string]: ModelsDevProviderInfo;\n}\n\n// Provider-specific overrides for URL, npm package, and other config.\n// These take priority over what models.dev returns (e.g. correct base URLs, SDK packages).\n// This constant is ONLY used during generation in fetchProviders() to determine\n// which providers from models.dev should be included in the registry.\n// At runtime, buildUrl() and buildHeaders() use the pre-generated PROVIDER_REGISTRY instead.\nconst PROVIDER_OVERRIDES: Record<string, Partial<ProviderConfig>> = {\n mistral: {\n url: 'https://api.mistral.ai/v1',\n },\n groq: {\n url: 'https://api.groq.com/openai/v1',\n },\n // moonshotai uses Anthropic-compatible API, not OpenAI-compatible\n moonshotai: {\n url: 'https://api.moonshot.ai/anthropic/v1',\n npm: '@ai-sdk/anthropic',\n },\n // moonshotai-cn (China version) also uses Anthropic-compatible API\n 'moonshotai-cn': {\n url: 'https://api.moonshot.cn/anthropic/v1',\n npm: '@ai-sdk/anthropic',\n },\n};\n\nexport class ModelsDevGateway extends MastraModelGateway {\n readonly id = 'models.dev';\n readonly name = 'models.dev';\n\n private providerConfigs: Record<string, ProviderConfig> = {};\n\n constructor(providerConfigs?: Record<string, ProviderConfig>) {\n super();\n if (providerConfigs) this.providerConfigs = providerConfigs;\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n const response = await fetch('https://models.dev/api.json');\n if (!response.ok) {\n throw new Error(`Failed to fetch from models.dev: ${response.statusText}`);\n }\n\n const data = (await response.json()) as ModelsDevResponse;\n\n const providerConfigs: Record<string, ProviderConfig> = {};\n\n for (const [providerId, providerInfo] of Object.entries(data)) {\n // Skip excluded providers\n if (EXCLUDED_PROVIDERS.includes(providerId)) continue;\n // Skip non-provider entries (if any)\n if (!providerInfo || typeof providerInfo !== 'object' || !providerInfo.models) continue;\n\n // Use provider ID as-is (keep hyphens for consistency)\n const normalizedId = providerId;\n\n // Check if this is OpenAI-compatible based on npm package or overrides\n const isOpenAICompatible =\n providerInfo.npm === '@ai-sdk/openai-compatible' ||\n providerInfo.npm === '@ai-sdk/gateway' || // Vercel AI Gateway is OpenAI-compatible\n normalizedId in PROVIDER_OVERRIDES;\n\n // these have their ai sdk provider package installed and don't use openai-compat\n const hasInstalledPackage = PROVIDERS_WITH_INSTALLED_PACKAGES.includes(providerId);\n\n // Also include providers that have an API URL and env vars (likely OpenAI-compatible)\n const hasApiAndEnv = providerInfo.api && providerInfo.env && providerInfo.env.length > 0;\n\n if (isOpenAICompatible || hasInstalledPackage || hasApiAndEnv) {\n // Get model IDs from the models object\n // Filter out deprecated models before collecting model IDs\n const modelIds = Object.entries(providerInfo.models)\n .filter(([, modelInfo]) => modelInfo?.status !== 'deprecated')\n .map(([modelId]) => modelId)\n .sort();\n\n // Get the API URL - overrides take priority over models.dev data\n const url = PROVIDER_OVERRIDES[normalizedId]?.url || providerInfo.api;\n\n // Skip if we don't have a URL\n if (!hasInstalledPackage && !url) {\n continue;\n }\n\n // Get the API key env var from the provider info\n // Convert hyphens to underscores for env var naming convention\n const apiKeyEnvVar = providerInfo.env?.[0] || `${normalizedId.toUpperCase().replace(/-/g, '_')}_API_KEY`;\n\n // Determine the API key header (special case for Anthropic)\n const apiKeyHeader = !hasInstalledPackage\n ? PROVIDER_OVERRIDES[normalizedId]?.apiKeyHeader || 'Authorization'\n : undefined;\n\n providerConfigs[normalizedId] = {\n url,\n apiKeyEnvVar,\n apiKeyHeader,\n name: providerInfo.name || providerId.charAt(0).toUpperCase() + providerId.slice(1),\n models: modelIds,\n docUrl: providerInfo.doc, // Include documentation URL if available\n gateway: `models.dev`,\n // Only store npm when it's a non-default SDK (not openai-compatible/gateway) to keep the registry small\n // Overrides take priority (e.g., moonshotai uses @ai-sdk/anthropic, not the openai-compatible listed in models.dev)\n npm:\n PROVIDER_OVERRIDES[normalizedId]?.npm ||\n (providerInfo.npm &&\n providerInfo.npm !== '@ai-sdk/openai-compatible' &&\n providerInfo.npm !== '@ai-sdk/gateway'\n ? providerInfo.npm\n : undefined),\n };\n }\n }\n\n // Store for later use in buildUrl and buildHeaders\n this.providerConfigs = providerConfigs;\n\n return providerConfigs;\n }\n\n buildUrl(routerId: string, envVars?: typeof process.env): string | undefined {\n const { providerId } = parseModelRouterId(routerId);\n\n const config = this.providerConfigs[providerId];\n\n if (!config?.url) {\n return;\n }\n\n // Check for custom base URL from env vars\n const baseUrlEnvVar = `${providerId.toUpperCase().replace(/-/g, '_')}_BASE_URL`;\n const customBaseUrl = envVars?.[baseUrlEnvVar] || process.env[baseUrlEnvVar];\n\n return customBaseUrl || config.url;\n }\n\n getApiKey(modelId: string): Promise<string> {\n const [provider, model] = modelId.split('/');\n if (!provider || !model) {\n throw new Error(`Could not identify provider from model id ${modelId}`);\n }\n const config = this.providerConfigs[provider];\n\n if (!config) {\n throw new Error(`Could not find config for provider ${provider} with model id ${modelId}`);\n }\n\n const apiKey = typeof config.apiKeyEnvVar === `string` ? process.env[config.apiKeyEnvVar] : undefined; // we only use single string env var for models.dev for now\n\n if (!apiKey) {\n throw new Error(`Could not find API key process.env.${config.apiKeyEnvVar} for model id ${modelId}`);\n }\n\n return Promise.resolve(apiKey);\n }\n\n async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<GatewayLanguageModel> {\n const baseURL = this.buildUrl(`${providerId}/${modelId}`);\n\n switch (providerId) {\n case 'openai':\n return createOpenAI({ apiKey }).responses(modelId);\n case 'gemini':\n case 'google':\n return createGoogleGenerativeAI({\n apiKey,\n }).chat(modelId);\n case 'anthropic':\n return createAnthropic({ apiKey })(modelId);\n case 'mistral':\n return createMistral({ apiKey })(modelId);\n case 'groq':\n return createGroq({ apiKey })(modelId);\n case 'openrouter':\n return createOpenRouter({ apiKey, headers })(modelId);\n case 'xai':\n return createXai({\n apiKey,\n })(modelId);\n case 'deepseek':\n return createDeepSeek({\n apiKey,\n })(modelId);\n case 'perplexity':\n return createPerplexity({ apiKey })(modelId);\n case 'cerebras':\n return createCerebras({ apiKey })(modelId);\n case 'togetherai':\n return createTogetherAI({ apiKey })(modelId);\n case 'deepinfra':\n return createDeepInfra({ apiKey })(modelId);\n case 'vercel':\n return createGateway({ apiKey, headers })(modelId);\n case 'moonshotai':\n case 'moonshotai-cn': {\n // moonshotai uses Anthropic-compatible API endpoint\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createAnthropic({ apiKey, baseURL })(modelId);\n }\n default: {\n // Check if this provider uses a specific SDK package (e.g., kimi-for-coding uses @ai-sdk/anthropic)\n const config = this.providerConfigs[providerId];\n const npm = config?.npm;\n\n if (npm === '@ai-sdk/anthropic') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createAnthropic({ apiKey, baseURL })(modelId);\n }\n\n if (npm === '@ai-sdk/openai') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createOpenAI({ apiKey, baseURL }).chat(modelId);\n }\n\n if (npm === '@ai-sdk/google') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createGoogleGenerativeAI({ apiKey, baseURL }).chat(modelId);\n }\n\n if (npm === '@ai-sdk/mistral') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createMistral({ apiKey, baseURL })(modelId);\n }\n\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createOpenAICompatible({ name: providerId, apiKey, baseURL, supportsStructuredOutputs: true }).chatModel(\n modelId,\n );\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/.pnpm/@ai-sdk+cerebras@1.0.36_zod@3.25.76/node_modules/@ai-sdk/cerebras/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+cerebras@1.0.36_zod@3.25.76/node_modules/@ai-sdk/cerebras/src/cerebras-provider.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/deepinfra-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/deepinfra-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+deepinfra@1.0.35_zod@3.25.76/node_modules/@ai-sdk/deepinfra/src/deepinfra-provider.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/convert-to-deepseek-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-chat-api-types.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/map-deepseek-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/chat/deepseek-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+deepseek@1.0.33_zod@3.25.76/node_modules/@ai-sdk/deepseek/src/deepseek-provider.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/convert-to-groq-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-error.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-browser-search-models.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/map-groq-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-transcription-model.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/tool/browser-search.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-tools.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+groq@2.0.34_zod@3.25.76/node_modules/@ai-sdk/groq/src/groq-provider.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/convert-to-mistral-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/map-mistral-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-error.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-embedding-model.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+mistral@2.0.27_zod@3.25.76/node_modules/@ai-sdk/mistral/src/mistral-provider.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/convert-to-perplexity-messages.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/map-perplexity-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/perplexity-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+perplexity@2.0.23_zod@3.25.76/node_modules/@ai-sdk/perplexity/src/perplexity-provider.ts","../../../node_modules/.pnpm/@ai-sdk+togetherai@1.0.34_zod@3.25.76/node_modules/@ai-sdk/togetherai/src/togetherai-image-model.ts","../../../node_modules/.pnpm/@ai-sdk+togetherai@1.0.34_zod@3.25.76/node_modules/@ai-sdk/togetherai/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+togetherai@1.0.34_zod@3.25.76/node_modules/@ai-sdk/togetherai/src/togetherai-provider.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/convert-to-xai-chat-messages.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/get-response-metadata.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/map-xai-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-options.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-error.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-chat-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-api.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/map-xai-responses-finish-reason.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-options.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/convert-to-xai-responses-input.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/web-search.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/x-search.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-prepare-tools.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/responses/xai-responses-language-model.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/code-execution.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/view-image.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/view-x-video.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/tool/index.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/version.ts","../../../node_modules/.pnpm/@ai-sdk+xai@2.0.57_zod@3.25.76/node_modules/@ai-sdk/xai/src/xai-provider.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/ai-sdk-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/api-call-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/empty-response-body-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/get-error-message.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-argument-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-prompt-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/invalid-response-data-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/json-parse-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/load-api-key-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/no-content-generated-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/type-validation-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider@2.0.0/node_modules/@ai-sdk/provider/src/errors/unsupported-functionality-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/errors.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/parse.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/eventsource-parser@3.0.3/node_modules/eventsource-parser/src/stream.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/zod-to-json-schema@3.24.6_zod@3.25.76/node_modules/zod-to-json-schema/dist/esm/parsers/string.js","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/combine-headers.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/extract-response-headers.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/generate-id.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/is-abort-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/handle-fetch-error.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/remove-undefined-entries.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/load-api-key.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/secure-json-parse.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validator.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/validate-types.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/parse-json-event-stream.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/post-to-api.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/response-handler.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/uint8-utils.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/node_modules/.pnpm/@ai-sdk+provider-utils@3.0.1_zod@3.25.76/node_modules/@ai-sdk/provider-utils/src/without-trailing-slash.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/type-guards.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/format.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/reasoning-details.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/error-response.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/provider-metadata.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/map-finish-reason.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/is-url.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/file-url-utils.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/convert-to-openrouter-chat-messages.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/get-tool-choice.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/schemas/image.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/schemas.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/chat/index.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/completion/convert-to-openrouter-completion-prompt.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/completion/schemas.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/completion/index.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/remove-undefined.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/utils/with-user-agent-suffix.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/version.ts","../../../node_modules/.pnpm/@openrouter+ai-sdk-provider@1.2.3_ai@6.0.116_zod@3.25.76__zod@3.25.76/node_modules/@openrouter/ai-sdk-provider/src/provider.ts","../src/llm/model/gateway-resolver.ts","../src/llm/model/gateways/constants.ts","../src/llm/model/gateways/models-dev.ts"],"names":["z","_a","withoutTrailingSlash","withUserAgentSuffix","loadApiKey","OpenAICompatibleChatLanguageModel","NoSuchModelError","postJsonToApi","combineHeaders","createJsonErrorResponseHandler","createJsonResponseHandler","VERSION","OpenAICompatibleCompletionLanguageModel","OpenAICompatibleEmbeddingModel","lazySchema","zodSchema","UnsupportedFunctionalityError","parseProviderOptions","generateId","createEventSourceResponseHandler","InvalidResponseDataError","toolCall","isParsableJson","convertToBase64","getResponseMetadata","prepareTools","groqTools","convertBase64ToUint8Array","mediaTypeToExtension","postFormDataToApi","createProviderDefinedToolFactory","injectJsonInstructionIntoMessages","TooManyEmbeddingValuesForCallError","convertUint8ArrayToBase64","xaiTools","APICallError","url","response","responseHeaders","extractResponseHeaders","safeParseJSON","createProviderDefinedToolFactoryWithOutputSchema","validateTypes","OpenAICompatibleImageModel","_AISDKError","name","marker","symbol","_TypeValidationError","TypeValidationError","validator","getOriginalFetch","fetch","errorToMessage","ReasoningFormat","d","openrouter","_b","_c","_d","_e","content","removeUndefinedEntries","MastraModelGateway","createOpenAI","createGoogleGenerativeAI","createAnthropic","createGatewayProvider","createOpenAICompatible"],"mappings":"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","file":"chunk-Z52OAJ73.cjs","sourcesContent":["// 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 { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { CerebrasChatModelId } from './cerebras-chat-options';\nimport { z } from 'zod/v4';\nimport { ProviderErrorStructure } from '@ai-sdk/openai-compatible';\nimport { VERSION } from './version';\n\n// Add error schema and structure\nconst cerebrasErrorSchema = z.object({\n message: z.string(),\n type: z.string(),\n param: z.string(),\n code: z.string(),\n});\n\nexport type CerebrasErrorData = z.infer<typeof cerebrasErrorSchema>;\n\nconst cerebrasErrorStructure: ProviderErrorStructure<CerebrasErrorData> = {\n errorSchema: cerebrasErrorSchema,\n errorToMessage: data => data.message,\n};\n\nexport interface CerebrasProviderSettings {\n /**\nCerebras API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface CerebrasProvider extends ProviderV2 {\n /**\nCreates a Cerebras model for text generation.\n*/\n (modelId: CerebrasChatModelId): LanguageModelV2;\n\n /**\nCreates a Cerebras model for text generation.\n*/\n languageModel(modelId: CerebrasChatModelId): LanguageModelV2;\n\n /**\nCreates a Cerebras chat model for text generation.\n*/\n chat(modelId: CerebrasChatModelId): LanguageModelV2;\n}\n\nexport function createCerebras(\n options: CerebrasProviderSettings = {},\n): CerebrasProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.cerebras.ai/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'CEREBRAS_API_KEY',\n description: 'Cerebras API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/cerebras/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: CerebrasChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `cerebras.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: cerebrasErrorStructure,\n supportsStructuredOutputs: true,\n });\n };\n\n const provider = (modelId: CerebrasChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const cerebras = createCerebras();\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n FetchFunction,\n combineHeaders,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { DeepInfraImageModelId } from './deepinfra-image-settings';\nimport { z } from 'zod/v4';\n\ninterface DeepInfraImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepInfraImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepInfraImageModelId,\n private config: DeepInfraImageModelConfig,\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 // Some deepinfra models support size while others support aspect ratio.\n // Allow passing either and leave it up to the server to validate.\n\n const splitSize = size?.split('x');\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/${this.modelId}`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n prompt,\n num_images: n,\n ...(aspectRatio && { aspect_ratio: aspectRatio }),\n ...(splitSize && { width: splitSize[0], height: splitSize[1] }),\n ...(seed != null && { seed }),\n ...(providerOptions.deepinfra ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: deepInfraErrorSchema,\n errorToMessage: error => error.detail.error,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n deepInfraImageResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n images: response.images.map(image =>\n image.replace(/^data:image\\/\\w+;base64,/, ''),\n ),\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n },\n };\n }\n}\n\nexport const deepInfraErrorSchema = z.object({\n detail: z.object({\n error: z.string(),\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 deepInfraImageResponseSchema = z.object({\n images: z.array(z.string()),\n});\n","import { LanguageModelV2, LanguageModelV2Usage } from '@ai-sdk/provider';\nimport { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport { FetchFunction } from '@ai-sdk/provider-utils';\n\ntype DeepInfraChatConfig = {\n provider: string;\n url: (options: { path: string; modelId?: string }) => string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class DeepInfraChatLanguageModel extends OpenAICompatibleChatLanguageModel {\n constructor(modelId: string, config: DeepInfraChatConfig) {\n super(modelId, config);\n }\n\n private fixUsage(usage: LanguageModelV2Usage): LanguageModelV2Usage {\n const outputTokens = usage.outputTokens ?? 0;\n const reasoningTokens = usage.reasoningTokens ?? 0;\n\n if (reasoningTokens > outputTokens) {\n const correctedOutputTokens = outputTokens + reasoningTokens;\n return {\n ...usage,\n outputTokens: correctedOutputTokens,\n totalTokens:\n usage.totalTokens != null\n ? usage.totalTokens + reasoningTokens\n : undefined,\n };\n }\n\n return usage;\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const result = await super.doGenerate(options);\n return {\n ...result,\n usage: this.fixUsage(result.usage),\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const result = await super.doStream(options);\n const fixUsage = this.fixUsage.bind(this);\n\n const transformedStream = result.stream.pipeThrough(\n new TransformStream({\n transform(chunk, controller) {\n if (chunk.type === 'finish') {\n controller.enqueue({\n ...chunk,\n usage: fixUsage(chunk.usage),\n });\n } else {\n controller.enqueue(chunk);\n }\n },\n }),\n );\n\n return {\n ...result,\n stream: transformedStream,\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 LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepInfraChatModelId } from './deepinfra-chat-options';\nimport { DeepInfraEmbeddingModelId } from './deepinfra-embedding-options';\nimport { DeepInfraCompletionModelId } from './deepinfra-completion-options';\nimport { DeepInfraImageModelId } from './deepinfra-image-settings';\nimport { DeepInfraImageModel } from './deepinfra-image-model';\nimport { DeepInfraChatLanguageModel } from './deepinfra-chat-language-model';\nimport { VERSION } from './version';\n\nexport interface DeepInfraProviderSettings {\n /**\nDeepInfra API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepInfraProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: DeepInfraChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: DeepInfraChatModelId): LanguageModelV2;\n\n /**\nCreates a model for image generation.\n */\n image(modelId: DeepInfraImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n */\n imageModel(modelId: DeepInfraImageModelId): ImageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: DeepInfraChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: DeepInfraCompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: DeepInfraEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n}\n\nexport function createDeepInfra(\n options: DeepInfraProviderSettings = {},\n): DeepInfraProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepinfra.com/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPINFRA_API_KEY',\n description: \"DeepInfra's API key\",\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepinfra/${VERSION}`,\n );\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 getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `deepinfra.${modelType}`,\n url: ({ path }) => `${baseURL}/openai${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: DeepInfraChatModelId) => {\n return new DeepInfraChatLanguageModel(\n modelId,\n getCommonModelConfig('chat'),\n );\n };\n\n const createCompletionModel = (modelId: DeepInfraCompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: DeepInfraEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (modelId: DeepInfraImageModelId) =>\n new DeepInfraImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL\n ? `${baseURL}/inference`\n : 'https://api.deepinfra.com/v1/inference',\n });\n\n const provider = (modelId: DeepInfraChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.chatModel = createChatModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n provider.languageModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n\n return provider;\n}\n\nexport const deepinfra = createDeepInfra();\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n} from '@ai-sdk/provider';\nimport { DeepSeekChatPrompt } from './deepseek-chat-api-types';\n\nexport function convertToDeepSeekChatMessages({\n prompt,\n responseFormat,\n}: {\n prompt: LanguageModelV2Prompt;\n responseFormat: LanguageModelV2CallOptions['responseFormat'];\n}): {\n messages: DeepSeekChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: DeepSeekChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n // Inject system message if response format is JSON\n if (responseFormat?.type === 'json') {\n if (responseFormat.schema == null) {\n messages.push({\n role: 'system',\n content: 'Return JSON.',\n });\n } else {\n messages.push({\n role: 'system',\n content:\n 'Return JSON that conforms to the following schema: ' +\n JSON.stringify(responseFormat.schema),\n });\n }\n }\n\n // TODO use findLastIndex once we use ES2023\n let lastUserMessageIndex = -1;\n for (let i = prompt.length - 1; i >= 0; i--) {\n if (prompt[i].role === 'user') {\n lastUserMessageIndex = i;\n break;\n }\n }\n\n let index = -1;\n for (const { role, content } of prompt) {\n index++;\n\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n let userContent = '';\n for (const part of content) {\n if (part.type === 'text') {\n userContent += part.text;\n } else {\n warnings.push({\n type: 'other',\n message: `Unsupported user message part type: ${part.type}`,\n });\n }\n }\n\n messages.push({\n role: 'user',\n content: userContent,\n });\n\n break;\n }\n case 'assistant': {\n let text = '';\n let reasoning: string | undefined;\n\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 'reasoning': {\n if (index <= lastUserMessageIndex) {\n break;\n }\n\n if (reasoning == null) {\n reasoning = part.text;\n } else {\n reasoning += part.text;\n }\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n reasoning_content: reasoning,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n warnings.push({\n type: 'other',\n message: `Unsupported message role: ${role}`,\n });\n break;\n }\n }\n }\n\n return { messages, warnings };\n}\n","import { lazySchema, zodSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport type DeepSeekChatPrompt = Array<DeepSeekMessage>;\n\nexport type DeepSeekMessage =\n | DeepSeekSystemMessage\n | DeepSeekUserMessage\n | DeepSeekAssistantMessage\n | DeepSeekToolMessage;\n\nexport interface DeepSeekSystemMessage {\n role: 'system';\n content: string;\n}\n\nexport interface DeepSeekUserMessage {\n role: 'user';\n content: string;\n}\n\nexport interface DeepSeekAssistantMessage {\n role: 'assistant';\n content?: string | null;\n reasoning_content?: string;\n tool_calls?: Array<DeepSeekMessageToolCall>;\n}\n\nexport interface DeepSeekMessageToolCall {\n type: 'function';\n id: string;\n function: {\n arguments: string;\n name: string;\n };\n}\n\nexport interface DeepSeekToolMessage {\n role: 'tool';\n content: string;\n tool_call_id: string;\n}\n\nconst tokenUsageSchema = z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish();\n\nexport type DeepSeekChatTokenUsage = z.infer<typeof tokenUsageSchema>;\n\nexport const deepSeekErrorSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type DeepSeekErrorData = z.infer<typeof deepSeekErrorSchema>;\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 deepseekChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant').nullish(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\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 deepseekChatChunkSchema = 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 reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: tokenUsageSchema,\n }),\n deepSeekErrorSchema,\n ]),\n ),\n);\n","import { z } from 'zod/v4';\n\n// https://api-docs.deepseek.com/quick_start/pricing\nexport type DeepSeekChatModelId =\n | 'deepseek-chat'\n | 'deepseek-reasoner'\n | (string & {});\n\nexport const deepseekChatOptions = z.object({\n /**\n * Type of thinking to use. Defaults to `enabled`.\n */\n thinking: z\n .object({\n type: z.enum(['enabled', 'disabled']).optional(),\n })\n .optional(),\n});\n\nexport type DeepSeekChatOptions = z.infer<typeof deepseekChatOptions>;\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 deepseekTools: 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({\n type: 'unsupported-tool',\n tool,\n });\n } else {\n deepseekTools.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: deepseekTools, 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: deepseekTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: deepseekTools,\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","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 mapDeepSeekFinishReason(\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 'tool_calls':\n return 'tool-calls';\n case 'insufficient_system_resource':\n return 'error';\n default:\n return 'unknown';\n }\n}\n","import {\n APICallError,\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n generateId,\n InferSchema,\n isParsableJson,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n ResponseHandler,\n} from '@ai-sdk/provider-utils';\nimport { convertToDeepSeekChatMessages } from './convert-to-deepseek-chat-messages';\nimport {\n deepseekChatChunkSchema,\n deepseekChatResponseSchema,\n DeepSeekChatTokenUsage,\n deepSeekErrorSchema,\n} from './deepseek-chat-api-types';\nimport {\n DeepSeekChatModelId,\n deepseekChatOptions,\n} from './deepseek-chat-options';\nimport { prepareTools } from './deepseek-prepare-tools';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapDeepSeekFinishReason } from './map-deepseek-finish-reason';\n\nexport type DeepSeekChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class DeepSeekChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: DeepSeekChatModelId;\n readonly supportedUrls = {};\n\n private readonly config: DeepSeekChatConfig;\n private readonly failedResponseHandler: ResponseHandler<APICallError>;\n\n constructor(modelId: DeepSeekChatModelId, config: DeepSeekChatConfig) {\n this.modelId = modelId;\n this.config = config;\n\n this.failedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepSeekErrorSchema,\n errorToMessage: (error: InferSchema<typeof deepSeekErrorSchema>) =>\n error.error.message,\n });\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private get providerOptionsName(): string {\n return this.config.provider.split('.')[0].trim();\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n providerOptions,\n stopSequences,\n responseFormat,\n tools,\n toolChoice,\n seed,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const deepseekOptions =\n (await parseProviderOptions({\n provider: this.providerOptionsName,\n providerOptions,\n schema: deepseekChatOptions,\n })) ?? {};\n\n const { messages, warnings } = convertToDeepSeekChatMessages({\n prompt,\n responseFormat,\n });\n\n if (topK != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'topK' });\n }\n\n if (seed != null) {\n warnings.push({ type: 'unsupported-setting', setting: 'seed' });\n }\n\n const {\n tools: deepseekTools,\n toolChoice: deepseekToolChoices,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n\n return {\n args: {\n model: this.modelId,\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' ? { type: 'json_object' } : undefined,\n stop: stopSequences,\n messages,\n tools: deepseekTools,\n tool_choice: deepseekToolChoices,\n thinking:\n deepseekOptions.thinking?.type != null\n ? { type: deepseekOptions.thinking.type }\n : undefined,\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 {\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 deepseekChatResponseSchema,\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 // reasoning content (before text):\n const reasoning = choice.message.reasoning_content;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: 'reasoning',\n text: reasoning,\n });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n return {\n content,\n finishReason: mapDeepSeekFinishReason(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_cache_hit_tokens ?? undefined,\n },\n providerMetadata: {\n [this.providerOptionsName]: {\n promptCacheHitTokens:\n responseBody.usage?.prompt_cache_hit_tokens ?? null,\n promptCacheMissTokens:\n responseBody.usage?.prompt_cache_miss_tokens ?? null,\n },\n },\n request: { body: args },\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 stream_options: { include_usage: true },\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: this.failedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n deepseekChatChunkSchema,\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 let usage: DeepSeekChatTokenUsage | undefined = undefined;\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<InferSchema<typeof deepseekChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n 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.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 usage = value.usage;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapDeepSeekFinishReason(choice.finish_reason);\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;\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 // end reasoning when text starts:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\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 // end reasoning when tool calls start:\n if (isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-end',\n id: 'reasoning-0',\n });\n isActiveReasoning = false;\n }\n\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 controller.enqueue({\n type: 'finish',\n finishReason,\n usage: {\n inputTokens: usage?.prompt_tokens ?? undefined,\n outputTokens: usage?.completion_tokens ?? undefined,\n totalTokens: usage?.total_tokens ?? undefined,\n reasoningTokens:\n usage?.completion_tokens_details?.reasoning_tokens ??\n undefined,\n cachedInputTokens: usage?.prompt_cache_hit_tokens ?? undefined,\n },\n providerMetadata: {\n [providerOptionsName]: {\n promptCacheHitTokens: usage?.prompt_cache_hit_tokens ?? null,\n promptCacheMissTokens:\n usage?.prompt_cache_miss_tokens ?? null,\n },\n },\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\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 LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './chat/deepseek-chat-options';\nimport { DeepSeekChatLanguageModel } from './chat/deepseek-chat-language-model';\nimport { VERSION } from './version';\n\nexport interface DeepSeekProviderSettings {\n /**\n * DeepSeek API key.\n */\n apiKey?: string;\n\n /**\n * Base URL for the API calls.\n */\n baseURL?: 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\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com',\n );\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepseek/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new DeepSeekChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { GroqChatPrompt } from './groq-api-types';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToGroqChatMessages(\n prompt: LanguageModelV2Prompt,\n): GroqChatPrompt {\n const messages: GroqChatPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (!part.mediaType.startsWith('image/')) {\n throw new UnsupportedFunctionalityError({\n functionality: 'Non-image file content parts',\n });\n }\n\n const mediaType =\n part.mediaType === 'image/*' ? 'image/jpeg' : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n }\n }\n }),\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 switch (part.type) {\n // groq supports reasoning for tool-calls in multi-turn conversations\n // https://github.com/vercel/ai/issues/7860\n case 'reasoning': {\n reasoning += part.text;\n break;\n }\n\n case 'text': {\n text += part.text;\n break;\n }\n\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n ...(reasoning.length > 0 ? { reasoning } : null),\n ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : null),\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return messages;\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: created != null ? new Date(created * 1000) : undefined,\n };\n}\n","import { z } from 'zod/v4';\n\n// https://console.groq.com/docs/models\nexport type GroqChatModelId =\n // production models\n | 'gemma2-9b-it'\n | 'llama-3.1-8b-instant'\n | 'llama-3.3-70b-versatile'\n | 'meta-llama/llama-guard-4-12b'\n | 'openai/gpt-oss-120b'\n | 'openai/gpt-oss-20b'\n // preview models (selection)\n | 'deepseek-r1-distill-llama-70b'\n | 'meta-llama/llama-4-maverick-17b-128e-instruct'\n | 'meta-llama/llama-4-scout-17b-16e-instruct'\n | 'meta-llama/llama-prompt-guard-2-22m'\n | 'meta-llama/llama-prompt-guard-2-86m'\n | 'moonshotai/kimi-k2-instruct-0905'\n | 'qwen/qwen3-32b'\n | 'llama-guard-3-8b'\n | 'llama3-70b-8192'\n | 'llama3-8b-8192'\n | 'mixtral-8x7b-32768'\n | 'qwen-qwq-32b'\n | 'qwen-2.5-32b'\n | 'deepseek-r1-distill-qwen-32b'\n | (string & {});\n\nexport const groqProviderOptions = z.object({\n reasoningFormat: z.enum(['parsed', 'raw', 'hidden']).optional(),\n\n /**\n * Specifies the reasoning effort level for model inference.\n * @see https://console.groq.com/docs/reasoning#reasoning-effort\n */\n reasoningEffort: z\n .enum(['none', 'default', 'low', 'medium', 'high'])\n .optional(),\n\n /**\n * Whether to enable parallel function calling during tool use. Default to true.\n */\n parallelToolCalls: z.boolean().optional(),\n\n /**\n * A unique identifier representing your end-user, which can help OpenAI to\n * monitor and detect abuse. Learn more.\n */\n user: z.string().optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Service tier for the request.\n * - 'on_demand': Default tier with consistent performance and fairness\n * - 'flex': Higher throughput tier optimized for workloads that can handle occasional request failures\n * - 'auto': Uses on_demand rate limits, then falls back to flex tier if exceeded\n *\n * @default 'on_demand'\n */\n serviceTier: z.enum(['on_demand', 'flex', 'auto']).optional(),\n});\n\nexport type GroqProviderOptions = z.infer<typeof groqProviderOptions>;\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const groqErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string(),\n }),\n});\n\nexport type GroqErrorData = z.infer<typeof groqErrorDataSchema>;\n\nexport const groqFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: groqErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { GroqChatModelId } from './groq-chat-options';\n\n/**\n * Models that support browser search functionality.\n * Based on: https://console.groq.com/docs/browser-search\n */\nexport const BROWSER_SEARCH_SUPPORTED_MODELS: readonly GroqChatModelId[] = [\n 'openai/gpt-oss-20b',\n 'openai/gpt-oss-120b',\n] as const;\n\n/**\n * Check if a model supports browser search functionality.\n */\nexport function isBrowserSearchSupportedModel(\n modelId: GroqChatModelId,\n): boolean {\n return BROWSER_SEARCH_SUPPORTED_MODELS.includes(modelId);\n}\n\n/**\n * Get a formatted list of supported models for error messages.\n */\nexport function getSupportedModelsString(): string {\n return BROWSER_SEARCH_SUPPORTED_MODELS.join(', ');\n}\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n getSupportedModelsString,\n isBrowserSearchSupportedModel,\n} from './groq-browser-search-models';\nimport { GroqChatModelId } from './groq-chat-options';\n\nexport function prepareTools({\n tools,\n toolChoice,\n modelId,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n modelId: GroqChatModelId;\n}): {\n tools:\n | undefined\n | Array<\n | {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }\n | {\n type: 'browser_search';\n }\n >;\n toolChoice:\n | { type: 'function'; function: { name: string } }\n | 'auto'\n | 'none'\n | 'required'\n | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors:\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const groqTools: Array<\n | {\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }\n | {\n type: 'browser_search';\n }\n > = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n if (tool.id === 'groq.browser_search') {\n if (!isBrowserSearchSupportedModel(modelId)) {\n toolWarnings.push({\n type: 'unsupported-tool',\n tool,\n details: `Browser search is only supported on the following models: ${getSupportedModelsString()}. Current model: ${modelId}`,\n });\n } else {\n groqTools.push({\n type: 'browser_search',\n });\n }\n } else {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n }\n } else {\n groqTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: groqTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n case 'required':\n return { tools: groqTools, toolChoice: type, toolWarnings };\n case 'tool':\n return {\n tools: groqTools,\n toolChoice: {\n type: 'function',\n function: {\n name: toolChoice.toolName,\n },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapGroqFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'content_filter':\n return 'content-filter';\n case 'function_call':\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import {\n InvalidResponseDataError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2Prompt,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToGroqChatMessages } from './convert-to-groq-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { GroqChatModelId, groqProviderOptions } from './groq-chat-options';\nimport { groqErrorDataSchema, groqFailedResponseHandler } from './groq-error';\nimport { prepareTools } from './groq-prepare-tools';\nimport { mapGroqFinishReason } from './map-groq-finish-reason';\n\ntype GroqChatConfig = {\n provider: string;\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: FetchFunction;\n};\n\nexport class GroqChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: GroqChatModelId;\n\n readonly supportedUrls = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private readonly config: GroqChatConfig;\n\n constructor(modelId: GroqChatModelId, config: GroqChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n stream,\n tools,\n toolChoice,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0] & {\n stream: boolean;\n }) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const groqOptions = await parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptions,\n });\n\n const structuredOutputs = groqOptions?.structuredOutputs ?? true;\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (\n responseFormat?.type === 'json' &&\n responseFormat.schema != null &&\n !structuredOutputs\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'responseFormat',\n details:\n 'JSON response format schema is only supported with structuredOutputs',\n });\n }\n\n const {\n tools: groqTools,\n toolChoice: groqToolChoice,\n toolWarnings,\n } = prepareTools({ tools, toolChoice, modelId: this.modelId });\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n user: groqOptions?.user,\n parallel_tool_calls: groqOptions?.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n stop: stopSequences,\n seed,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // provider options:\n reasoning_format: groqOptions?.reasoningFormat,\n reasoning_effort: groqOptions?.reasoningEffort,\n service_tier: groqOptions?.serviceTier,\n\n // messages:\n messages: convertToGroqChatMessages(prompt),\n\n // tools:\n tools: groqTools,\n tool_choice: groqToolChoice,\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args, warnings } = await this.getArgs({\n ...options,\n stream: false,\n });\n\n const body = JSON.stringify(args);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: args,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text: text });\n }\n\n // reasoning:\n const reasoning = choice.message.reasoning;\n if (reasoning != null && reasoning.length > 0) {\n content.push({\n type: 'reasoning',\n text: reasoning,\n });\n }\n\n // tool calls:\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n return {\n content,\n finishReason: mapGroqFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? undefined,\n outputTokens: response.usage?.completion_tokens ?? undefined,\n totalTokens: response.usage?.total_tokens ?? undefined,\n cachedInputTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? undefined,\n },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n request: { body },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs({ ...options, stream: true });\n\n const body = JSON.stringify({ ...args, stream: true });\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n },\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler:\n createEventSourceResponseHandler(groqChatChunkSchema),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: {\n name: string;\n arguments: string;\n };\n hasFinished: boolean;\n }> = [];\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n cachedInputTokens: undefined,\n };\n let isFirstChunk = true;\n let isActiveText = false;\n let isActiveReasoning = false;\n\n let providerMetadata: SharedV2ProviderMetadata | undefined;\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof groqChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\n if (value.x_groq?.usage != null) {\n usage.inputTokens = value.x_groq.usage.prompt_tokens ?? undefined;\n usage.outputTokens =\n value.x_groq.usage.completion_tokens ?? undefined;\n usage.totalTokens = value.x_groq.usage.total_tokens ?? undefined;\n usage.cachedInputTokens =\n value.x_groq.usage.prompt_tokens_details?.cached_tokens ??\n undefined;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapGroqFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n if (delta.reasoning != null && delta.reasoning.length > 0) {\n if (!isActiveReasoning) {\n controller.enqueue({\n type: 'reasoning-start',\n id: 'reasoning-0',\n });\n isActiveReasoning = true;\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: 'reasoning-0',\n delta: delta.reasoning,\n });\n }\n\n if (delta.content != null && delta.content.length > 0) {\n if (!isActiveText) {\n controller.enqueue({ type: 'text-start', id: 'txt-0' });\n isActiveText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: 'txt-0',\n delta: delta.content,\n });\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index;\n\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallDelta.id,\n toolName: toolCallDelta.function.name,\n });\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n hasFinished: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null\n ) {\n // send delta if the argument text has already started:\n if (toolCall.function.arguments.length > 0) {\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n }\n\n // check if tool call is complete\n // (some providers send the full tool call in one chunk):\n if (isParsableJson(toolCall.function.arguments)) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n\n continue;\n }\n\n // existing tool call, merge if not finished\n const toolCall = toolCalls[index];\n\n if (toolCall.hasFinished) {\n continue;\n }\n\n if (toolCallDelta.function?.arguments != null) {\n toolCall.function!.arguments +=\n toolCallDelta.function?.arguments ?? '';\n }\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCallDelta.function.arguments ?? '',\n });\n\n // check if tool call is complete\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n toolCall.hasFinished = true;\n }\n }\n }\n },\n\n flush(controller) {\n if (isActiveReasoning) {\n controller.enqueue({ type: 'reasoning-end', id: 'reasoning-0' });\n }\n\n if (isActiveText) {\n controller.enqueue({ type: 'text-end', id: 'txt-0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n ...(providerMetadata != null ? { providerMetadata } : {}),\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst groqChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string().nullish(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst groqChatChunkSchema = z.union([\n z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z\n .object({\n content: z.string().nullish(),\n reasoning: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n index: z.number(),\n id: z.string().nullish(),\n type: z.literal('function').optional(),\n function: z.object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n }),\n }),\n )\n .nullish(),\n })\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number(),\n }),\n ),\n x_groq: z\n .object({\n usage: z\n .object({\n prompt_tokens: z.number().nullish(),\n completion_tokens: z.number().nullish(),\n total_tokens: z.number().nullish(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n })\n .nullish(),\n })\n .nullish(),\n }),\n groqErrorDataSchema,\n]);\n","import {\n TranscriptionModelV2,\n TranscriptionModelV2CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n mediaTypeToExtension,\n parseProviderOptions,\n postFormDataToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { GroqConfig } from './groq-config';\nimport { groqFailedResponseHandler } from './groq-error';\nimport { GroqTranscriptionModelId } from './groq-transcription-options';\nimport { GroqTranscriptionAPITypes } from './groq-api-types';\n\n// https://console.groq.com/docs/speech-to-text\nconst groqProviderOptionsSchema = z.object({\n language: z.string().nullish(),\n prompt: z.string().nullish(),\n responseFormat: z.string().nullish(),\n temperature: z.number().min(0).max(1).nullish(),\n timestampGranularities: z.array(z.string()).nullish(),\n});\n\nexport type GroqTranscriptionCallOptions = z.infer<\n typeof groqProviderOptionsSchema\n>;\n\ninterface GroqTranscriptionModelConfig extends GroqConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class GroqTranscriptionModel implements TranscriptionModelV2 {\n readonly specificationVersion = 'v2';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: GroqTranscriptionModelId,\n private readonly config: GroqTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n audio,\n mediaType,\n providerOptions,\n }: Parameters<TranscriptionModelV2['doGenerate']>[0]) {\n const warnings: TranscriptionModelV2CallWarning[] = [];\n\n // Parse provider options\n const groqOptions = await parseProviderOptions({\n provider: 'groq',\n providerOptions,\n schema: groqProviderOptionsSchema,\n });\n\n // Create form data with base fields\n const formData = new FormData();\n const blob =\n audio instanceof Uint8Array\n ? new Blob([audio])\n : new Blob([convertBase64ToUint8Array(audio)]);\n\n formData.append('model', this.modelId);\n 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 (groqOptions) {\n const transcriptionModelOptions: Omit<\n GroqTranscriptionAPITypes,\n 'model'\n > = {\n language: groqOptions.language ?? undefined,\n prompt: groqOptions.prompt ?? undefined,\n response_format: groqOptions.responseFormat ?? undefined,\n temperature: groqOptions.temperature ?? undefined,\n timestamp_granularities:\n groqOptions.timestampGranularities ?? undefined,\n };\n\n for (const key in transcriptionModelOptions) {\n const value =\n transcriptionModelOptions[\n key as keyof Omit<GroqTranscriptionAPITypes, 'model'>\n ];\n if (value !== undefined) {\n formData.append(key, String(value));\n }\n }\n }\n\n return {\n formData,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV2['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { formData, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postFormDataToApi({\n url: this.config.url({\n path: '/audio/transcriptions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n formData,\n failedResponseHandler: groqFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n groqTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text: response.text,\n segments:\n response.segments?.map(segment => ({\n text: segment.text,\n startSecond: segment.start,\n endSecond: segment.end,\n })) ?? [],\n language: response.language ?? undefined,\n durationInSeconds: response.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst groqTranscriptionResponseSchema = z.object({\n text: z.string(),\n x_groq: z.object({\n id: z.string(),\n }),\n // additional properties are returned when `response_format: 'verbose_json'` is\n task: z.string().nullish(),\n language: z.string().nullish(),\n duration: z.number().nullish(),\n segments: z\n .array(\n z.object({\n id: z.number(),\n seek: z.number(),\n start: z.number(),\n end: z.number(),\n text: z.string(),\n tokens: z.array(z.number()),\n temperature: z.number(),\n avg_logprob: z.number(),\n compression_ratio: z.number(),\n no_speech_prob: z.number(),\n }),\n )\n .nullish(),\n});\n","import { createProviderDefinedToolFactory } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n/**\n * Browser search tool for Groq models.\n *\n * Provides interactive browser search capabilities that go beyond traditional web search\n * by navigating websites interactively and providing more detailed results.\n *\n * Currently supported on:\n * - openai/gpt-oss-20b\n * - openai/gpt-oss-120b\n *\n * @see https://console.groq.com/docs/browser-search\n */\nexport const browserSearch = createProviderDefinedToolFactory<\n {\n // Browser search doesn't take input parameters - it's controlled by the prompt\n // The tool is activated automatically when included in the tools array\n },\n {\n // No configuration options needed - the tool works automatically\n // when included in the tools array for supported models\n }\n>({\n id: 'groq.browser_search',\n name: 'browser_search',\n inputSchema: z.object({}),\n});\n","import { browserSearch } from './tool/browser-search';\n\nexport const groqTools = {\n browserSearch,\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 LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n TranscriptionModelV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { GroqChatLanguageModel } from './groq-chat-language-model';\nimport { GroqChatModelId } from './groq-chat-options';\nimport { GroqTranscriptionModelId } from './groq-transcription-options';\nimport { GroqTranscriptionModel } from './groq-transcription-model';\n\nimport { groqTools } from './groq-tools';\nimport { VERSION } from './version';\nexport interface GroqProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: GroqChatModelId): LanguageModelV2;\n\n /**\nCreates an Groq chat model for text generation.\n */\n languageModel(modelId: GroqChatModelId): LanguageModelV2;\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: GroqTranscriptionModelId): TranscriptionModelV2;\n\n /**\n * Tools provided by Groq.\n */\n tools: typeof groqTools;\n}\n\nexport interface GroqProviderSettings {\n /**\nBase URL for the Groq API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Groq provider instance.\n */\nexport function createGroq(options: GroqProviderSettings = {}): GroqProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.groq.com/openai/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'GROQ_API_KEY',\n description: 'Groq',\n })}`,\n ...options.headers,\n },\n `ai-sdk/groq/${VERSION}`,\n );\n\n const createChatModel = (modelId: GroqChatModelId) =>\n new GroqChatLanguageModel(modelId, {\n provider: 'groq.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createLanguageModel = (modelId: GroqChatModelId) => {\n if (new.target) {\n throw new Error(\n 'The Groq model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n const createTranscriptionModel = (modelId: GroqTranscriptionModelId) => {\n return new GroqTranscriptionModel(modelId, {\n provider: 'groq.transcription',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n };\n\n const provider = function (modelId: GroqChatModelId) {\n return createLanguageModel(modelId);\n };\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n\n provider.tools = groqTools;\n\n return provider;\n}\n\n/**\nDefault Groq provider instance.\n */\nexport const groq = createGroq();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { MistralPrompt } from './mistral-chat-prompt';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToMistralChatMessages(\n prompt: LanguageModelV2Prompt,\n): MistralPrompt {\n const messages: MistralPrompt = [];\n\n for (let i = 0; i < prompt.length; i++) {\n const { role, content } = prompt[i];\n const isLastMessage = i === prompt.length - 1;\n\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n\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 part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n };\n } else if (part.mediaType === 'application/pdf') {\n return {\n type: 'document_url',\n document_url: part.data.toString(),\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality:\n 'Only images and PDF file parts are supported',\n });\n }\n }\n }\n }),\n });\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n case 'reasoning': {\n text += part.text;\n break;\n }\n default: {\n throw new Error(\n `Unsupported content type in assistant message: ${part.type}`,\n );\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n prefix: isLastMessage ? true : undefined,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n name: toolResponse.toolName,\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\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 mapMistralFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n case 'model_length':\n return 'length';\n case 'tool_calls':\n return 'tool-calls';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://docs.mistral.ai/getting-started/models/models_overview/\nexport type MistralChatModelId =\n // premier\n | 'ministral-3b-latest'\n | 'ministral-8b-latest'\n | 'mistral-large-latest'\n | 'mistral-medium-latest'\n | 'mistral-medium-2508'\n | 'mistral-medium-2505'\n | 'mistral-small-latest'\n | 'pixtral-large-latest'\n // reasoning models\n | 'magistral-small-2507'\n | 'magistral-medium-2507'\n | 'magistral-small-2506'\n | 'magistral-medium-2506'\n // free\n | 'pixtral-12b-2409'\n // legacy\n | 'open-mistral-7b'\n | 'open-mixtral-8x7b'\n | 'open-mixtral-8x22b'\n | (string & {});\n\nexport const mistralLanguageModelOptions = z.object({\n /**\nWhether to inject a safety prompt before all conversations.\n\nDefaults to `false`.\n */\n safePrompt: z.boolean().optional(),\n\n documentImageLimit: z.number().optional(),\n documentPageLimit: z.number().optional(),\n\n /**\n * Whether to use structured outputs.\n *\n * @default true\n */\n structuredOutputs: z.boolean().optional(),\n\n /**\n * Whether to use strict JSON schema validation.\n *\n * @default false\n */\n strictJsonSchema: z.boolean().optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When set to false, the model will use at most one tool per response.\n *\n * @default true\n */\n parallelToolCalls: z.boolean().optional(),\n});\n\nexport type MistralLanguageModelOptions = z.infer<\n typeof mistralLanguageModelOptions\n>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst mistralErrorDataSchema = z.object({\n object: z.literal('error'),\n message: z.string(),\n type: z.string(),\n param: z.string().nullable(),\n code: z.string().nullable(),\n});\n\nexport type MistralErrorData = z.infer<typeof mistralErrorDataSchema>;\n\nexport const mistralFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: mistralErrorDataSchema,\n errorToMessage: data => data.message,\n});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { MistralToolChoice } from './mistral-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: MistralToolChoice | 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 mistralTools: 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 mistralTools.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: mistralTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: mistralTools, toolChoice: type, toolWarnings };\n case 'required':\n return { tools: mistralTools, toolChoice: 'any', toolWarnings };\n\n // mistral does not support tool mode directly,\n // so we filter the tools and force the tool choice through 'any'\n case 'tool':\n return {\n tools: mistralTools.filter(\n tool => tool.function.name === toolChoice.toolName,\n ),\n toolChoice: 'any',\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n generateId,\n injectJsonInstructionIntoMessages,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToMistralChatMessages } from './convert-to-mistral-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapMistralFinishReason } from './map-mistral-finish-reason';\nimport {\n MistralChatModelId,\n mistralLanguageModelOptions,\n} from './mistral-chat-options';\nimport { mistralFailedResponseHandler } from './mistral-error';\nimport { prepareTools } from './mistral-prepare-tools';\n\ntype MistralChatConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n generateId?: () => string;\n};\n\nexport class MistralChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: MistralChatModelId;\n\n private readonly config: MistralChatConfig;\n private readonly generateId: () => string;\n\n constructor(modelId: MistralChatModelId, config: MistralChatConfig) {\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 readonly supportedUrls: Record<string, RegExp[]> = {\n 'application/pdf': [/^https:\\/\\/.*$/],\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 providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'mistral',\n providerOptions,\n schema: mistralLanguageModelOptions,\n })) ?? {};\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n const structuredOutputs = options.structuredOutputs ?? true;\n const strictJsonSchema = options.strictJsonSchema ?? false;\n\n // For Mistral we need to need to instruct the model to return a JSON object.\n // https://docs.mistral.ai/capabilities/structured-output/structured_output_overview/\n if (responseFormat?.type === 'json' && !responseFormat?.schema) {\n prompt = injectJsonInstructionIntoMessages({\n messages: prompt,\n schema: responseFormat.schema,\n });\n }\n\n const baseArgs = {\n // model id:\n model: this.modelId,\n\n // model specific settings:\n safe_prompt: options.safePrompt,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n random_seed: seed,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? structuredOutputs && responseFormat?.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: strictJsonSchema,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // mistral-specific provider options:\n document_image_limit: options.documentImageLimit,\n document_page_limit: options.documentPageLimit,\n\n // messages:\n messages: convertToMistralChatMessages(prompt),\n };\n\n const {\n tools: mistralTools,\n toolChoice: mistralToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n\n return {\n args: {\n ...baseArgs,\n tools: mistralTools,\n tool_choice: mistralToolChoice,\n ...(mistralTools != null && options.parallelToolCalls !== undefined\n ? { parallel_tool_calls: options.parallelToolCalls }\n : {}),\n },\n warnings: [...warnings, ...toolWarnings],\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n mistralChatResponseSchema,\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 // process content parts in order to preserve sequence\n if (\n choice.message.content != null &&\n Array.isArray(choice.message.content)\n ) {\n for (const part of choice.message.content) {\n if (part.type === 'thinking') {\n const reasoningText = extractReasoningContent(part.thinking);\n if (reasoningText.length > 0) {\n content.push({ type: 'reasoning', text: reasoningText });\n }\n } else if (part.type === 'text') {\n if (part.text.length > 0) {\n content.push({ type: 'text', text: part.text });\n }\n }\n }\n } else {\n // handle legacy string content\n const text = extractTextContent(choice.message.content);\n if (text != null && text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // when there is a trailing assistant message, mistral will send the\n // content of that message again. we skip this repeated content to\n // avoid duplication, e.g. in continuation mode.\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,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments!,\n });\n }\n }\n\n return {\n content,\n finishReason: mapMistralFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage.prompt_tokens,\n outputTokens: response.usage.completion_tokens,\n totalTokens: response.usage.total_tokens,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n mistralChatChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: LanguageModelV2FinishReason = 'unknown';\n const usage: LanguageModelV2Usage = {\n inputTokens: undefined,\n outputTokens: undefined,\n totalTokens: undefined,\n };\n\n let isFirstChunk = true;\n let activeText = false;\n let activeReasoningId: string | null = null;\n\n const generateId = this.generateId;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof mistralChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isFirstChunk) {\n isFirstChunk = false;\n\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n const delta = choice.delta;\n\n const textContent = extractTextContent(delta.content);\n\n if (delta.content != null && Array.isArray(delta.content)) {\n for (const part of delta.content) {\n if (part.type === 'thinking') {\n const reasoningDelta = extractReasoningContent(part.thinking);\n if (reasoningDelta.length > 0) {\n if (activeReasoningId == null) {\n // end any active text before starting reasoning\n if (activeText) {\n controller.enqueue({ type: 'text-end', id: '0' });\n activeText = false;\n }\n\n activeReasoningId = generateId();\n controller.enqueue({\n type: 'reasoning-start',\n id: activeReasoningId,\n });\n }\n controller.enqueue({\n type: 'reasoning-delta',\n id: activeReasoningId,\n delta: reasoningDelta,\n });\n }\n }\n }\n }\n\n if (textContent != null && textContent.length > 0) {\n if (!activeText) {\n // if we were in reasoning mode, end it before starting text\n if (activeReasoningId != null) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningId,\n });\n activeReasoningId = null;\n }\n controller.enqueue({ type: 'text-start', id: '0' });\n activeText = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: textContent,\n });\n }\n\n if (delta?.tool_calls != null) {\n for (const toolCall of delta.tool_calls) {\n const toolCallId = toolCall.id;\n const toolName = toolCall.function.name;\n const input = toolCall.function.arguments;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: input,\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,\n input,\n });\n }\n }\n\n if (choice.finish_reason != null) {\n finishReason = mapMistralFinishReason(choice.finish_reason);\n }\n },\n\n flush(controller) {\n if (activeReasoningId != null) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningId,\n });\n }\n if (activeText) {\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\nfunction extractReasoningContent(\n thinking: Array<{ type: string; text: string }>,\n) {\n return thinking\n .filter(chunk => chunk.type === 'text')\n .map(chunk => chunk.text)\n .join('');\n}\n\nfunction extractTextContent(content: z.infer<typeof mistralContentSchema>) {\n if (typeof content === 'string') {\n return content;\n }\n\n if (content == null) {\n return undefined;\n }\n\n const textContent: string[] = [];\n\n for (const chunk of content) {\n const { type } = chunk;\n\n switch (type) {\n case 'text':\n textContent.push(chunk.text);\n break;\n case 'thinking':\n case 'image_url':\n case 'reference':\n // thinking, image content, and reference content are currently ignored\n break;\n default: {\n const _exhaustiveCheck: never = type;\n throw new Error(`Unsupported type: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return textContent.length ? textContent.join('') : undefined;\n}\n\nconst mistralContentSchema = z\n .union([\n z.string(),\n z.array(\n z.discriminatedUnion('type', [\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n z.object({\n type: z.literal('image_url'),\n image_url: z.union([\n z.string(),\n z.object({\n url: z.string(),\n detail: z.string().nullable(),\n }),\n ]),\n }),\n z.object({\n type: z.literal('reference'),\n reference_ids: z.array(z.number()),\n }),\n z.object({\n type: z.literal('thinking'),\n thinking: z.array(\n z.object({\n type: z.literal('text'),\n text: z.string(),\n }),\n ),\n }),\n ]),\n ),\n ])\n .nullish();\n\nconst mistralUsageSchema = 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 mistralChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: mistralContentSchema,\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n function: z.object({ name: z.string(), arguments: z.string() }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n ),\n object: z.literal('chat.completion'),\n usage: mistralUsageSchema,\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 mistralChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: mistralContentSchema,\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n function: z.object({ name: z.string(), arguments: z.string() }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: mistralUsageSchema.nullish(),\n});\n","import {\n EmbeddingModelV2,\n TooManyEmbeddingValuesForCallError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { MistralEmbeddingModelId } from './mistral-embedding-options';\nimport { mistralFailedResponseHandler } from './mistral-error';\n\ntype MistralEmbeddingConfig = {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n fetch?: FetchFunction;\n};\n\nexport class MistralEmbeddingModel implements EmbeddingModelV2<string> {\n readonly specificationVersion = 'v2';\n readonly modelId: MistralEmbeddingModelId;\n readonly maxEmbeddingsPerCall = 32;\n readonly supportsParallelCalls = false;\n\n private readonly config: MistralEmbeddingConfig;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n modelId: MistralEmbeddingModelId,\n config: MistralEmbeddingConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n async doEmbed({\n values,\n abortSignal,\n headers,\n }: Parameters<EmbeddingModelV2<string>['doEmbed']>[0]): Promise<\n Awaited<ReturnType<EmbeddingModelV2<string>['doEmbed']>>\n > {\n if (values.length > this.maxEmbeddingsPerCall) {\n throw new TooManyEmbeddingValuesForCallError({\n provider: this.provider,\n modelId: this.modelId,\n maxEmbeddingsPerCall: this.maxEmbeddingsPerCall,\n values,\n });\n }\n\n const {\n responseHeaders,\n value: response,\n rawValue,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/embeddings`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n input: values,\n encoding_format: 'float',\n },\n failedResponseHandler: mistralFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n MistralTextEmbeddingResponseSchema,\n ),\n abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n embeddings: response.data.map(item => item.embedding),\n usage: response.usage\n ? { tokens: response.usage.prompt_tokens }\n : undefined,\n response: { headers: responseHeaders, body: rawValue },\n };\n }\n}\n\n// minimal version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst MistralTextEmbeddingResponseSchema = z.object({\n data: z.array(z.object({ embedding: z.array(z.number()) })),\n usage: z.object({ prompt_tokens: z.number() }).nullish(),\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 EmbeddingModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { MistralChatLanguageModel } from './mistral-chat-language-model';\nimport { MistralChatModelId } from './mistral-chat-options';\nimport { MistralEmbeddingModel } from './mistral-embedding-model';\nimport { MistralEmbeddingModelId } from './mistral-embedding-options';\nimport { VERSION } from './version';\n\nexport interface MistralProvider extends ProviderV2 {\n (modelId: MistralChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n languageModel(modelId: MistralChatModelId): LanguageModelV2;\n\n /**\nCreates a model for text generation.\n*/\n chat(modelId: MistralChatModelId): LanguageModelV2;\n\n /**\n@deprecated Use `textEmbedding()` instead.\n */\n embedding(modelId: MistralEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbedding(modelId: MistralEmbeddingModelId): EmbeddingModelV2<string>;\n\n textEmbeddingModel: (\n modelId: MistralEmbeddingModelId,\n ) => EmbeddingModelV2<string>;\n}\n\nexport interface MistralProviderSettings {\n /**\nUse a different URL prefix for API calls, e.g. to use proxy servers.\nThe default prefix is `https://api.mistral.ai/v1`.\n */\n baseURL?: string;\n\n /**\nAPI key that is being send using the `Authorization` header.\nIt defaults to the `MISTRAL_API_KEY` environment variable.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n\n generateId?: () => string;\n}\n\n/**\nCreate a Mistral AI provider instance.\n */\nexport function createMistral(\n options: MistralProviderSettings = {},\n): MistralProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL) ?? 'https://api.mistral.ai/v1';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'MISTRAL_API_KEY',\n description: 'Mistral',\n })}`,\n ...options.headers,\n },\n `ai-sdk/mistral/${VERSION}`,\n );\n\n const createChatModel = (modelId: MistralChatModelId) =>\n new MistralChatLanguageModel(modelId, {\n provider: 'mistral.chat',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n generateId: options.generateId,\n });\n\n const createEmbeddingModel = (modelId: MistralEmbeddingModelId) =>\n new MistralEmbeddingModel(modelId, {\n provider: 'mistral.embedding',\n baseURL,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: MistralChatModelId) {\n if (new.target) {\n throw new Error(\n 'The Mistral model function cannot be called with the new keyword.',\n );\n }\n\n return createChatModel(modelId);\n };\n\n provider.languageModel = createChatModel;\n provider.chat = createChatModel;\n provider.embedding = createEmbeddingModel;\n provider.textEmbedding = createEmbeddingModel;\n provider.textEmbeddingModel = createEmbeddingModel;\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\n/**\nDefault Mistral provider instance.\n */\nexport const mistral = createMistral();\n","import {\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n PerplexityMessageContent,\n PerplexityPrompt,\n} from './perplexity-language-model-prompt';\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\n\nexport function convertToPerplexityMessages(\n prompt: LanguageModelV2Prompt,\n): PerplexityPrompt {\n const messages: PerplexityPrompt = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user':\n case 'assistant': {\n const hasMultipartContent = content.some(\n part =>\n (part.type === 'file' && part.mediaType.startsWith('image/')) ||\n (part.type === 'file' && part.mediaType === 'application/pdf'),\n );\n\n const messageContent = content\n .map((part, index) => {\n switch (part.type) {\n case 'text': {\n return {\n type: 'text',\n text: part.text,\n };\n }\n case 'file': {\n if (part.mediaType === 'application/pdf') {\n return part.data instanceof URL\n ? {\n type: 'file_url',\n file_url: {\n url: part.data.toString(),\n },\n file_name: part.filename,\n }\n : {\n type: 'file_url',\n file_url: {\n url:\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data),\n },\n file_name: part.filename || `document-${index}.pdf`,\n };\n } else if (part.mediaType.startsWith('image/')) {\n return part.data instanceof URL\n ? {\n type: 'image_url',\n image_url: {\n url: part.data.toString(),\n },\n }\n : {\n type: 'image_url',\n image_url: {\n url: `data:${part.mediaType ?? 'image/jpeg'};base64,${\n typeof part.data === 'string'\n ? part.data\n : convertUint8ArrayToBase64(part.data)\n }`,\n },\n };\n }\n }\n }\n })\n .filter(Boolean) as PerplexityMessageContent[];\n messages.push({\n role,\n content: hasMultipartContent\n ? messageContent\n : messageContent\n .filter(part => part.type === 'text')\n .map(part => part.text)\n .join(''),\n });\n break;\n }\n case 'tool': {\n throw new UnsupportedFunctionalityError({\n functionality: 'Tool messages',\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","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapPerplexityFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n case 'length':\n return finishReason;\n default:\n return 'unknown';\n }\n}\n","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n ParseResult,\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonErrorResponseHandler,\n createJsonResponseHandler,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToPerplexityMessages } from './convert-to-perplexity-messages';\nimport { mapPerplexityFinishReason } from './map-perplexity-finish-reason';\nimport { PerplexityLanguageModelId } from './perplexity-language-model-options';\n\ntype PerplexityChatConfig = {\n baseURL: string;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class PerplexityLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n readonly provider = 'perplexity';\n\n readonly modelId: PerplexityLanguageModelId;\n\n private readonly config: PerplexityChatConfig;\n\n constructor(\n modelId: PerplexityLanguageModelId,\n config: PerplexityChatConfig,\n ) {\n this.modelId = modelId;\n this.config = config;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n // No URLs are supported.\n };\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n responseFormat,\n seed,\n providerOptions,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n if (seed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'seed',\n });\n }\n\n return {\n args: {\n // model id:\n model: this.modelId,\n\n // standardized settings:\n frequency_penalty: frequencyPenalty,\n max_tokens: maxOutputTokens,\n presence_penalty: presencePenalty,\n temperature,\n top_k: topK,\n top_p: topP,\n\n // response format:\n response_format:\n responseFormat?.type === 'json'\n ? {\n type: 'json_schema',\n json_schema: { schema: responseFormat.schema },\n }\n : undefined,\n\n // provider extensions\n ...(providerOptions?.perplexity ?? {}),\n\n // messages:\n messages: convertToPerplexityMessages(prompt),\n },\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n perplexityResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // text content:\n const text = choice.message.content;\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n\n // sources:\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapPerplexityFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens ?? undefined,\n reasoningTokens: response.usage?.reasoning_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n providerMetadata: {\n perplexity: {\n images:\n response.images?.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n })) ?? null,\n usage: {\n citationTokens: response.usage?.citation_tokens ?? null,\n numSearchQueries: response.usage?.num_search_queries ?? null,\n },\n },\n },\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = this.getArgs(options);\n\n const body = { ...args, stream: true };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL}/chat/completions`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: perplexityErrorSchema,\n errorToMessage,\n }),\n successfulResponseHandler: createEventSourceResponseHandler(\n perplexityChunkSchema,\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 reasoningTokens: undefined,\n };\n\n const providerMetadata: {\n perplexity: {\n usage: {\n citationTokens: number | null;\n numSearchQueries: number | null;\n };\n images: Array<{\n imageUrl: string;\n originUrl: string;\n height: number;\n width: number;\n }> | null;\n };\n } = {\n perplexity: {\n usage: {\n citationTokens: null,\n numSearchQueries: null,\n },\n images: null,\n },\n };\n let isFirstChunk = true;\n let isActive = false;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof perplexityChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n\n value.citations?.forEach(url => {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n });\n\n isFirstChunk = false;\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.reasoningTokens = value.usage.reasoning_tokens ?? undefined;\n\n providerMetadata.perplexity.usage = {\n citationTokens: value.usage.citation_tokens ?? null,\n numSearchQueries: value.usage.num_search_queries ?? null,\n };\n }\n\n if (value.images != null) {\n providerMetadata.perplexity.images = value.images.map(image => ({\n imageUrl: image.image_url,\n originUrl: image.origin_url,\n height: image.height,\n width: image.width,\n }));\n }\n\n const choice = value.choices[0];\n if (choice?.finish_reason != null) {\n finishReason = mapPerplexityFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const textContent = delta.content;\n\n if (textContent != null) {\n if (!isActive) {\n controller.enqueue({ type: 'text-start', id: '0' });\n isActive = true;\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: '0',\n delta: textContent,\n });\n }\n },\n\n flush(controller) {\n if (isActive) {\n controller.enqueue({ type: 'text-end', id: '0' });\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata,\n });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\nfunction getResponseMetadata({\n id,\n model,\n created,\n}: {\n id: string;\n created: number;\n model: string;\n}) {\n return {\n id,\n modelId: model,\n timestamp: new Date(created * 1000),\n };\n}\n\nconst perplexityUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number().nullish(),\n citation_tokens: z.number().nullish(),\n num_search_queries: z.number().nullish(),\n reasoning_tokens: z.number().nullish(),\n});\n\nexport const perplexityImageSchema = z.object({\n image_url: z.string(),\n origin_url: z.string(),\n height: z.number(),\n width: 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 perplexityResponseSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.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 perplexityChunkSchema = z.object({\n id: z.string(),\n created: z.number(),\n model: z.string(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.literal('assistant'),\n content: z.string(),\n }),\n finish_reason: z.string().nullish(),\n }),\n ),\n citations: z.array(z.string()).nullish(),\n images: z.array(perplexityImageSchema).nullish(),\n usage: perplexityUsageSchema.nullish(),\n});\n\nexport const perplexityErrorSchema = z.object({\n error: z.object({\n code: z.number(),\n message: z.string().nullish(),\n type: z.string().nullish(),\n }),\n});\n\nexport type PerplexityErrorData = z.infer<typeof perplexityErrorSchema>;\n\nconst errorToMessage = (data: PerplexityErrorData) => {\n return data.error.message ?? data.error.type ?? 'unknown error';\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 LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { PerplexityLanguageModel } from './perplexity-language-model';\nimport { PerplexityLanguageModelId } from './perplexity-language-model-options';\nimport { VERSION } from './version';\n\nexport interface PerplexityProvider extends ProviderV2 {\n /**\nCreates an Perplexity chat model for text generation.\n */\n (modelId: PerplexityLanguageModelId): LanguageModelV2;\n\n /**\nCreates an Perplexity language model for text generation.\n */\n languageModel(modelId: PerplexityLanguageModelId): LanguageModelV2;\n}\n\nexport interface PerplexityProviderSettings {\n /**\nBase URL for the perplexity API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createPerplexity(\n options: PerplexityProviderSettings = {},\n): PerplexityProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'PERPLEXITY_API_KEY',\n description: 'Perplexity',\n })}`,\n ...options.headers,\n },\n `ai-sdk/perplexity/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: PerplexityLanguageModelId) => {\n return new PerplexityLanguageModel(modelId, {\n baseURL: withoutTrailingSlash(\n options.baseURL ?? 'https://api.perplexity.ai',\n )!,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const provider = (modelId: PerplexityLanguageModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const perplexity = createPerplexity();\n","import { ImageModelV2, ImageModelV2CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n createJsonErrorResponseHandler,\n FetchFunction,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { z } from 'zod/v4';\n\ninterface TogetherAIImageModelConfig {\n provider: string;\n baseURL: string;\n headers: () => Record<string, string>;\n fetch?: FetchFunction;\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class TogetherAIImageModel implements ImageModelV2 {\n readonly specificationVersion = 'v2';\n readonly maxImagesPerCall = 1;\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: TogetherAIImageModelId,\n private config: TogetherAIImageModelConfig,\n ) {}\n\n async doGenerate({\n prompt,\n n,\n size,\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 (size != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'aspectRatio',\n details:\n 'This model does not support the `aspectRatio` option. Use `size` instead.',\n });\n }\n\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const splitSize = size?.split('x');\n // https://docs.together.ai/reference/post_images-generations\n const { value: response, responseHeaders } = await postJsonToApi({\n url: `${this.config.baseURL}/images/generations`,\n headers: combineHeaders(this.config.headers(), headers),\n body: {\n model: this.modelId,\n prompt,\n seed,\n ...(n > 1 ? { n } : {}),\n ...(splitSize && {\n width: parseInt(splitSize[0]),\n height: parseInt(splitSize[1]),\n }),\n response_format: 'base64',\n ...(providerOptions.togetherai ?? {}),\n },\n failedResponseHandler: createJsonErrorResponseHandler({\n errorSchema: togetheraiErrorSchema,\n errorToMessage: data => data.error.message,\n }),\n successfulResponseHandler: createJsonResponseHandler(\n togetheraiImageResponseSchema,\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// 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 togetheraiImageResponseSchema = z.object({\n data: z.array(\n z.object({\n b64_json: z.string(),\n }),\n ),\n});\n\n// limited version of the schema, focussed on what is needed for the implementation\n// this approach limits breakages when the API changes and increases efficiency\nconst togetheraiErrorSchema = z.object({\n error: z.object({\n message: z.string(),\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 LanguageModelV2,\n EmbeddingModelV2,\n ProviderV2,\n ImageModelV2,\n} from '@ai-sdk/provider';\nimport {\n OpenAICompatibleChatLanguageModel,\n OpenAICompatibleCompletionLanguageModel,\n OpenAICompatibleEmbeddingModel,\n} from '@ai-sdk/openai-compatible';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { TogetherAIChatModelId } from './togetherai-chat-options';\nimport { TogetherAIEmbeddingModelId } from './togetherai-embedding-options';\nimport { TogetherAICompletionModelId } from './togetherai-completion-options';\nimport { TogetherAIImageModel } from './togetherai-image-model';\nimport { TogetherAIImageModelId } from './togetherai-image-settings';\nimport { VERSION } from './version';\n\nexport interface TogetherAIProviderSettings {\n /**\nTogetherAI API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface TogetherAIProvider extends ProviderV2 {\n /**\nCreates a model for text generation.\n*/\n (modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n chatModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a chat model for text generation.\n*/\n languageModel(modelId: TogetherAIChatModelId): LanguageModelV2;\n\n /**\nCreates a completion model for text generation.\n*/\n completionModel(modelId: TogetherAICompletionModelId): LanguageModelV2;\n\n /**\nCreates a text embedding model for text generation.\n*/\n textEmbeddingModel(\n modelId: TogetherAIEmbeddingModelId,\n ): EmbeddingModelV2<string>;\n\n /**\nCreates a model for image generation.\n*/\n image(modelId: TogetherAIImageModelId): ImageModelV2;\n\n /**\nCreates a model for image generation.\n*/\n imageModel(modelId: TogetherAIImageModelId): ImageModelV2;\n}\n\nexport function createTogetherAI(\n options: TogetherAIProviderSettings = {},\n): TogetherAIProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.together.xyz/v1/',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'TOGETHER_AI_API_KEY',\n description: 'TogetherAI',\n })}`,\n ...options.headers,\n },\n `ai-sdk/togetherai/${VERSION}`,\n );\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 getCommonModelConfig = (modelType: string): CommonModelConfig => ({\n provider: `togetherai.${modelType}`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createChatModel = (modelId: TogetherAIChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(\n modelId,\n getCommonModelConfig('chat'),\n );\n };\n\n const createCompletionModel = (modelId: TogetherAICompletionModelId) =>\n new OpenAICompatibleCompletionLanguageModel(\n modelId,\n getCommonModelConfig('completion'),\n );\n\n const createTextEmbeddingModel = (modelId: TogetherAIEmbeddingModelId) =>\n new OpenAICompatibleEmbeddingModel(\n modelId,\n getCommonModelConfig('embedding'),\n );\n\n const createImageModel = (modelId: TogetherAIImageModelId) =>\n new TogetherAIImageModel(modelId, {\n ...getCommonModelConfig('image'),\n baseURL: baseURL ?? 'https://api.together.xyz/v1/',\n });\n\n const provider = (modelId: TogetherAIChatModelId) => createChatModel(modelId);\n\n provider.completionModel = createCompletionModel;\n provider.languageModel = createChatModel;\n provider.chatModel = createChatModel;\n provider.textEmbeddingModel = createTextEmbeddingModel;\n provider.image = createImageModel;\n provider.imageModel = createImageModel;\n\n return provider;\n}\n\nexport const togetherai = createTogetherAI();\n","import {\n LanguageModelV2CallWarning,\n LanguageModelV2Prompt,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport { XaiChatPrompt } from './xai-chat-prompt';\n\nexport function convertToXaiChatMessages(prompt: LanguageModelV2Prompt): {\n messages: XaiChatPrompt;\n warnings: Array<LanguageModelV2CallWarning>;\n} {\n const messages: XaiChatPrompt = [];\n const warnings: Array<LanguageModelV2CallWarning> = [];\n\n for (const { role, content } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({ role: 'system', content });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0].type === 'text') {\n messages.push({ role: 'user', content: content[0].text });\n break;\n }\n\n messages.push({\n role: 'user',\n content: content.map(part => {\n switch (part.type) {\n case 'text': {\n return { type: 'text', text: part.text };\n }\n case 'file': {\n if (part.mediaType.startsWith('image/')) {\n const mediaType =\n part.mediaType === 'image/*'\n ? 'image/jpeg'\n : part.mediaType;\n\n return {\n type: 'image_url',\n image_url: {\n url:\n part.data instanceof URL\n ? part.data.toString()\n : `data:${mediaType};base64,${convertToBase64(part.data)}`,\n },\n };\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${part.mediaType}`,\n });\n }\n }\n }\n }),\n });\n\n break;\n }\n\n case 'assistant': {\n let text = '';\n const toolCalls: Array<{\n id: string;\n type: 'function';\n function: { name: string; arguments: string };\n }> = [];\n\n for (const part of content) {\n switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n }\n }\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const output = toolResponse.output;\n\n let contentValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n contentValue = output.value;\n break;\n case 'content':\n case 'json':\n case 'error-json':\n contentValue = JSON.stringify(output.value);\n break;\n }\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content: contentValue,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = role;\n throw new Error(`Unsupported role: ${_exhaustiveCheck}`);\n }\n }\n }\n\n return { messages, warnings };\n}\n","export function getResponseMetadata({\n id,\n model,\n created,\n created_at,\n}: {\n id?: string | undefined | null;\n created?: number | undefined | null;\n created_at?: number | undefined | null;\n model?: string | undefined | null;\n}) {\n const unixTime = created ?? created_at;\n\n return {\n id: id ?? undefined,\n modelId: model ?? undefined,\n timestamp: unixTime != null ? new Date(unixTime * 1000) : undefined,\n };\n}\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\n// https://console.x.ai and see \"View models\"\nexport type XaiChatModelId =\n | 'grok-4-1'\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4-fast-non-reasoning'\n | 'grok-4-fast-reasoning'\n | 'grok-code-fast-1'\n | 'grok-4'\n | 'grok-4-0709'\n | 'grok-4-latest'\n | 'grok-3'\n | 'grok-3-latest'\n | 'grok-3-fast'\n | 'grok-3-fast-latest'\n | 'grok-3-mini'\n | 'grok-3-mini-latest'\n | 'grok-3-mini-fast'\n | 'grok-3-mini-fast-latest'\n | 'grok-2-vision-1212'\n | 'grok-2-vision'\n | 'grok-2-vision-latest'\n | 'grok-2-image-1212'\n | 'grok-2-image'\n | 'grok-2-image-latest'\n | 'grok-2-1212'\n | 'grok-2'\n | 'grok-2-latest'\n | 'grok-vision-beta'\n | 'grok-beta'\n | (string & {});\n\n// search source schemas\nconst webSourceSchema = z.object({\n type: z.literal('web'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n allowedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst xSourceSchema = z.object({\n type: z.literal('x'),\n excludedXHandles: z.array(z.string()).optional(),\n includedXHandles: z.array(z.string()).optional(),\n postFavoriteCount: z.number().int().optional(),\n postViewCount: z.number().int().optional(),\n /**\n * @deprecated use `includedXHandles` instead\n */\n xHandles: z.array(z.string()).optional(),\n});\n\nconst newsSourceSchema = z.object({\n type: z.literal('news'),\n country: z.string().length(2).optional(),\n excludedWebsites: z.array(z.string()).max(5).optional(),\n safeSearch: z.boolean().optional(),\n});\n\nconst rssSourceSchema = z.object({\n type: z.literal('rss'),\n links: z.array(z.string().url()).max(1), // currently only supports one RSS link\n});\n\nconst searchSourceSchema = z.discriminatedUnion('type', [\n webSourceSchema,\n xSourceSchema,\n newsSourceSchema,\n rssSourceSchema,\n]);\n\n// xai-specific provider options\nexport const xaiProviderOptions = z.object({\n reasoningEffort: z.enum(['low', 'high']).optional(),\n\n /**\n * Whether to enable parallel function calling during tool use.\n * When true, the model can call multiple functions in parallel.\n * When false, the model will call functions sequentially.\n * Defaults to true.\n */\n parallel_function_calling: z.boolean().optional(),\n\n searchParameters: z\n .object({\n /**\n * search mode preference\n * - \"off\": disables search completely\n * - \"auto\": model decides whether to search (default)\n * - \"on\": always enables search\n */\n mode: z.enum(['off', 'auto', 'on']),\n\n /**\n * whether to return citations in the response\n * defaults to true\n */\n returnCitations: z.boolean().optional(),\n\n /**\n * start date for search data (ISO8601 format: YYYY-MM-DD)\n */\n fromDate: z.string().optional(),\n\n /**\n * end date for search data (ISO8601 format: YYYY-MM-DD)\n */\n toDate: z.string().optional(),\n\n /**\n * maximum number of search results to consider\n * defaults to 20\n */\n maxSearchResults: z.number().min(1).max(50).optional(),\n\n /**\n * data sources to search from.\n * defaults to [{ type: 'web' }, { type: 'x' }] if not specified.\n *\n * @example\n * sources: [{ type: 'web', country: 'US' }, { type: 'x' }]\n */\n sources: z.array(searchSourceSchema).optional(),\n })\n .optional(),\n});\n\nexport type XaiProviderOptions = z.infer<typeof xaiProviderOptions>;\n","import { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Add error schema and structure\nexport const xaiErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n type: z.string().nullish(),\n param: z.any().nullish(),\n code: z.union([z.string(), z.number()]).nullish(),\n }),\n});\n\nexport type XaiErrorData = z.infer<typeof xaiErrorDataSchema>;\n\nexport const xaiFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { XaiToolChoice } from './xai-chat-prompt';\n\nexport function prepareTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): {\n tools:\n | Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }>\n | undefined;\n toolChoice: XaiToolChoice | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n} {\n // when the tools array is empty, change it to undefined to prevent errors\n tools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (tools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n // convert ai sdk tools to xai format\n const xaiTools: Array<{\n type: 'function';\n function: {\n name: string;\n description: string | undefined;\n parameters: unknown;\n };\n }> = [];\n\n for (const tool of tools) {\n if (tool.type === 'provider-defined') {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n } else {\n xaiTools.push({\n type: 'function',\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n // xai supports 'required' directly\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool':\n // xai supports specific tool selection\n return {\n tools: xaiTools,\n toolChoice: {\n type: 'function',\n function: { name: toolChoice.toolName },\n },\n toolWarnings,\n };\n default: {\n const _exhaustiveCheck: never = type;\n throw new UnsupportedFunctionalityError({\n functionality: `tool choice type: ${_exhaustiveCheck}`,\n });\n }\n }\n}\n","import {\n APICallError,\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n extractResponseHeaders,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n safeParseJSON,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { convertToXaiChatMessages } from './convert-to-xai-chat-messages';\nimport { getResponseMetadata } from './get-response-metadata';\nimport { mapXaiFinishReason } from './map-xai-finish-reason';\nimport { XaiChatModelId, xaiProviderOptions } from './xai-chat-options';\nimport { xaiFailedResponseHandler } from './xai-error';\nimport { prepareTools } from './xai-prepare-tools';\n\ntype XaiChatConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: XaiChatModelId;\n\n private readonly config: XaiChatConfig;\n\n constructor(modelId: XaiChatModelId, config: XaiChatConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n topK,\n frequencyPenalty,\n presencePenalty,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n // parse xai-specific provider options\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiProviderOptions,\n })) ?? {};\n\n // check for unsupported parameters\n if (topK != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'topK',\n });\n }\n\n if (frequencyPenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'frequencyPenalty',\n });\n }\n\n if (presencePenalty != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'presencePenalty',\n });\n }\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n // convert ai sdk messages to xai format\n const { messages, warnings: messageWarnings } =\n convertToXaiChatMessages(prompt);\n warnings.push(...messageWarnings);\n\n // prepare tools for xai\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = prepareTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs = {\n // model id\n model: this.modelId,\n\n // standard generation settings\n max_completion_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n reasoning_effort: options.reasoningEffort,\n\n // parallel function calling\n parallel_function_calling: options.parallel_function_calling,\n\n // response format\n response_format:\n responseFormat?.type === 'json'\n ? responseFormat.schema != null\n ? {\n type: 'json_schema',\n json_schema: {\n name: responseFormat.name ?? 'response',\n schema: responseFormat.schema,\n strict: true,\n },\n }\n : { type: 'json_object' }\n : undefined,\n\n // search parameters\n search_parameters: options.searchParameters\n ? {\n mode: options.searchParameters.mode,\n return_citations: options.searchParameters.returnCitations,\n from_date: options.searchParameters.fromDate,\n to_date: options.searchParameters.toDate,\n max_search_results: options.searchParameters.maxSearchResults,\n sources: options.searchParameters.sources?.map(source => ({\n type: source.type,\n ...(source.type === 'web' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n allowed_websites: source.allowedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'x' && {\n excluded_x_handles: source.excludedXHandles,\n included_x_handles: source.includedXHandles ?? source.xHandles,\n post_favorite_count: source.postFavoriteCount,\n post_view_count: source.postViewCount,\n }),\n ...(source.type === 'news' && {\n country: source.country,\n excluded_websites: source.excludedWebsites,\n safe_search: source.safeSearch,\n }),\n ...(source.type === 'rss' && {\n links: source.links,\n }),\n })),\n }\n : undefined,\n\n // messages in xai format\n messages,\n\n // tools in xai format\n tools: xaiTools,\n tool_choice: xaiToolChoice,\n };\n\n return {\n args: baseArgs,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const { args: body, warnings } = await this.getArgs(options);\n\n const url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\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: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiChatResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if (response.error != null) {\n throw new APICallError({\n message: response.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody: JSON.stringify(rawResponse),\n isRetryable: response.code === 'The service is currently unavailable',\n });\n }\n\n if (!response.choices || response.choices.length === 0) {\n throw new APICallError({\n message: 'No choices returned from the API',\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody: JSON.stringify(rawResponse),\n });\n }\n\n const choice = response.choices[0];\n const content: Array<LanguageModelV2Content> = [];\n\n // extract text content\n if (choice.message.content != null && choice.message.content.length > 0) {\n let text = choice.message.content;\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (lastMessage?.role === 'assistant' && text === lastMessage.content) {\n text = '';\n }\n\n if (text.length > 0) {\n content.push({ type: 'text', text });\n }\n }\n\n // extract reasoning content\n if (\n choice.message.reasoning_content != null &&\n choice.message.reasoning_content.length > 0\n ) {\n content.push({\n type: 'reasoning',\n text: choice.message.reasoning_content,\n });\n }\n\n // extract tool calls\n if (choice.message.tool_calls != null) {\n for (const toolCall of choice.message.tool_calls) {\n content.push({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n\n // extract citations\n if (response.citations != null) {\n for (const url of response.citations) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url,\n });\n }\n }\n\n return {\n content,\n finishReason: mapXaiFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens,\n outputTokens: response.usage?.completion_tokens,\n totalTokens: response.usage?.total_tokens,\n reasoningTokens:\n response.usage?.completion_tokens_details?.reasoning_tokens ??\n undefined,\n cachedInputTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? undefined,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const { args, warnings } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n stream_options: {\n include_usage: true,\n },\n };\n\n const url = `${this.config.baseURL ?? 'https://api.x.ai/v1'}/chat/completions`;\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: async ({ response }) => {\n const responseHeaders = extractResponseHeaders(response);\n const contentType = response.headers.get('content-type');\n\n if (contentType?.includes('application/json')) {\n const responseBody = await response.text();\n const parsedError = await safeParseJSON({\n text: responseBody,\n schema: xaiStreamErrorSchema,\n });\n\n if (parsedError.success) {\n throw new APICallError({\n message: parsedError.value.error,\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n isRetryable:\n parsedError.value.code ===\n 'The service is currently unavailable',\n });\n }\n\n throw new APICallError({\n message: 'Invalid JSON response',\n url,\n requestBodyValues: body,\n statusCode: 200,\n responseHeaders,\n responseBody,\n });\n }\n\n return createEventSourceResponseHandler(xaiChatChunkSchema)({\n response,\n url,\n requestBodyValues: body,\n });\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 reasoningTokens: undefined,\n cachedInputTokens: undefined,\n };\n let isFirstChunk = true;\n const contentBlocks: Record<\n string,\n { type: 'text' | 'reasoning'; ended: boolean }\n > = {};\n const lastReasoningDeltas: Record<string, string> = {};\n let activeReasoningBlockId: string | undefined = undefined;\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiChatChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n // Emit raw chunk if requested (before anything else)\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // emit response metadata on first chunk\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(value),\n });\n isFirstChunk = false;\n }\n\n // emit citations if present (they come in the last chunk according to docs)\n if (value.citations != null) {\n for (const url of value.citations) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url,\n });\n }\n }\n\n // update usage if present\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens = value.usage.total_tokens;\n usage.reasoningTokens =\n value.usage.completion_tokens_details?.reasoning_tokens ??\n undefined;\n usage.cachedInputTokens =\n value.usage.prompt_tokens_details?.cached_tokens ?? undefined;\n }\n\n const choice = value.choices[0];\n\n // update finish reason if present\n if (choice?.finish_reason != null) {\n finishReason = mapXaiFinishReason(choice.finish_reason);\n }\n\n // exit if no delta to process\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n const choiceIndex = choice.index;\n\n // process text content\n if (delta.content != null && delta.content.length > 0) {\n const textContent = delta.content;\n\n // end active reasoning block when text content arrives\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\n\n // skip if this content duplicates the last assistant message\n const lastMessage = body.messages[body.messages.length - 1];\n if (\n lastMessage?.role === 'assistant' &&\n textContent === lastMessage.content\n ) {\n return;\n }\n\n const blockId = `text-${value.id || choiceIndex}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text', ended: false };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: textContent,\n });\n }\n\n // process reasoning content\n if (\n delta.reasoning_content != null &&\n delta.reasoning_content.length > 0\n ) {\n const blockId = `reasoning-${value.id || choiceIndex}`;\n\n // skip if this reasoning content duplicates the last delta\n if (lastReasoningDeltas[blockId] === delta.reasoning_content) {\n return;\n }\n lastReasoningDeltas[blockId] = delta.reasoning_content;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'reasoning', ended: false };\n activeReasoningBlockId = blockId;\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: delta.reasoning_content,\n });\n }\n\n // process tool calls\n if (delta.tool_calls != null) {\n // end active reasoning block before tool calls start\n if (\n activeReasoningBlockId != null &&\n !contentBlocks[activeReasoningBlockId].ended\n ) {\n controller.enqueue({\n type: 'reasoning-end',\n id: activeReasoningBlockId,\n });\n contentBlocks[activeReasoningBlockId].ended = true;\n activeReasoningBlockId = undefined;\n }\n\n for (const toolCall of delta.tool_calls) {\n // xai tool calls come in one piece (like mistral)\n const toolCallId = toolCall.id;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCallId,\n toolName: toolCall.function.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCallId,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCallId,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n }\n }\n },\n\n flush(controller) {\n // end any blocks that haven't been ended yet\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (!block.ended) {\n controller.enqueue({\n type: block.type === 'text' ? 'text-end' : 'reasoning-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n\n// XAI API Response Schemas\nconst xaiUsageSchema = z.object({\n prompt_tokens: z.number(),\n completion_tokens: z.number(),\n total_tokens: z.number(),\n prompt_tokens_details: z\n .object({\n text_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n image_tokens: z.number().nullish(),\n cached_tokens: z.number().nullish(),\n })\n .nullish(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number().nullish(),\n audio_tokens: z.number().nullish(),\n accepted_prediction_tokens: z.number().nullish(),\n rejected_prediction_tokens: z.number().nullish(),\n })\n .nullish(),\n});\n\nconst xaiChatResponseSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z\n .array(\n z.object({\n message: z.object({\n role: z.literal('assistant'),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n index: z.number(),\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n object: z.literal('chat.completion').nullish(),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n code: z.string().nullish(),\n error: z.string().nullish(),\n});\n\nconst xaiChatChunkSchema = z.object({\n id: z.string().nullish(),\n created: z.number().nullish(),\n model: z.string().nullish(),\n choices: z.array(\n z.object({\n delta: z.object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning_content: z.string().nullish(),\n tool_calls: z\n .array(\n z.object({\n id: z.string(),\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n arguments: z.string(),\n }),\n }),\n )\n .nullish(),\n }),\n finish_reason: z.string().nullish(),\n index: z.number(),\n }),\n ),\n usage: xaiUsageSchema.nullish(),\n citations: z.array(z.string().url()).nullish(),\n});\n\nconst xaiStreamErrorSchema = z.object({\n code: z.string(),\n error: z.string(),\n});\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesInput = Array<XaiResponsesInputItem>;\n\nexport type XaiResponsesInputItem =\n | XaiResponsesSystemMessage\n | XaiResponsesUserMessage\n | XaiResponsesAssistantMessage\n | XaiResponsesFunctionCallOutput\n | XaiResponsesReasoning\n | XaiResponsesToolCall;\n\nexport type XaiResponsesSystemMessage = {\n role: 'system' | 'developer';\n content: string;\n};\n\nexport type XaiResponsesUserMessageContentPart =\n | { type: 'input_text'; text: string }\n | { type: 'input_image'; image_url: string };\n\nexport type XaiResponsesUserMessage = {\n role: 'user';\n content: Array<XaiResponsesUserMessageContentPart>;\n};\n\nexport type XaiResponsesAssistantMessage = {\n role: 'assistant';\n content: string;\n id?: string;\n};\n\nexport type XaiResponsesFunctionCallOutput = {\n type: 'function_call_output';\n call_id: string;\n output: string;\n};\n\nexport type XaiResponsesReasoning = {\n type: 'reasoning';\n id: string;\n summary: Array<{\n type: 'summary_text';\n text: string;\n }>;\n status: string;\n encrypted_content?: string | null;\n};\n\nexport type XaiResponsesToolCall = {\n type:\n | 'function_call'\n | 'web_search_call'\n | 'x_search_call'\n | 'code_interpreter_call'\n | 'custom_tool_call';\n id: string;\n call_id?: string;\n name?: string;\n arguments?: string;\n input?: string;\n status: string;\n action?: any;\n};\n\nexport type XaiResponsesTool =\n | {\n type: 'web_search';\n allowed_domains?: string[];\n excluded_domains?: string[];\n enable_image_understanding?: boolean;\n }\n | {\n type: 'x_search';\n allowed_x_handles?: string[];\n excluded_x_handles?: string[];\n from_date?: string;\n to_date?: string;\n enable_image_understanding?: boolean;\n enable_video_understanding?: boolean;\n }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | { type: 'file_search' }\n | { type: 'mcp' }\n | {\n type: 'function';\n name: string;\n description?: string;\n parameters: unknown;\n };\n\nconst annotationSchema = z.union([\n z.object({\n type: z.literal('url_citation'),\n url: z.string(),\n title: z.string().optional(),\n }),\n z.object({\n type: z.string(),\n }),\n]);\n\nconst messageContentPartSchema = z.object({\n type: z.string(),\n text: z.string().optional(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n});\n\nconst reasoningSummaryPartSchema = z.object({\n type: z.string(),\n text: z.string(),\n});\n\nconst toolCallSchema = z.object({\n name: z.string().optional(),\n arguments: z.string().optional(),\n input: z.string().optional(),\n call_id: z.string().optional(),\n id: z.string(),\n status: z.string(),\n action: z.any().optional(),\n});\n\nconst outputItemSchema = z.discriminatedUnion('type', [\n z.object({\n type: z.literal('web_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('x_search_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_interpreter_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('code_execution_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_image_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('view_x_video_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('custom_tool_call'),\n ...toolCallSchema.shape,\n }),\n z.object({\n type: z.literal('message'),\n role: z.string(),\n content: z.array(messageContentPartSchema),\n id: z.string(),\n status: z.string(),\n }),\n z.object({\n type: z.literal('function_call'),\n name: z.string(),\n arguments: z.string(),\n call_id: z.string(),\n id: z.string(),\n }),\n z.object({\n type: z.literal('reasoning'),\n id: z.string(),\n summary: z.array(reasoningSummaryPartSchema),\n status: z.string(),\n encrypted_content: z.string().nullish(),\n }),\n]);\n\nexport const xaiResponsesUsageSchema = z.object({\n input_tokens: z.number(),\n output_tokens: z.number(),\n total_tokens: z.number().optional(),\n input_tokens_details: z\n .object({\n cached_tokens: z.number().optional(),\n })\n .optional(),\n output_tokens_details: z\n .object({\n reasoning_tokens: z.number().optional(),\n })\n .optional(),\n num_sources_used: z.number().optional(),\n num_server_side_tools_used: z.number().optional(),\n});\n\nexport const xaiResponsesResponseSchema = z.object({\n id: z.string().nullish(),\n created_at: z.number().nullish(),\n model: z.string().nullish(),\n object: z.literal('response'),\n output: z.array(outputItemSchema),\n usage: xaiResponsesUsageSchema.nullish(),\n status: z.string(),\n});\n\nexport const xaiResponsesChunkSchema = z.union([\n z.object({\n type: z.literal('response.created'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.in_progress'),\n response: xaiResponsesResponseSchema.partial({ usage: true, status: true }),\n }),\n z.object({\n type: z.literal('response.output_item.added'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.output_item.done'),\n item: outputItemSchema,\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.content_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.content_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n part: messageContentPartSchema,\n }),\n z.object({\n type: z.literal('response.output_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n logprobs: z.array(z.any()).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n logprobs: z.array(z.any()).optional(),\n annotations: z.array(annotationSchema).optional(),\n }),\n z.object({\n type: z.literal('response.output_text.annotation.added'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n annotation_index: z.number(),\n annotation: annotationSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.added'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_part.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n part: reasoningSummaryPartSchema,\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_summary_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n summary_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.delta'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n delta: z.string(),\n }),\n z.object({\n type: z.literal('response.reasoning_text.done'),\n item_id: z.string(),\n output_index: z.number(),\n content_index: z.number(),\n text: z.string(),\n }),\n z.object({\n type: z.literal('response.web_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.web_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.searching'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.x_search_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.custom_tool_call_input.done'),\n item_id: z.string(),\n output_index: z.number(),\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 }),\n z.object({\n type: z.literal('response.code_execution_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_execution_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.in_progress'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.executing'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.interpreting'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n z.object({\n type: z.literal('response.code_interpreter_call.completed'),\n item_id: z.string(),\n output_index: z.number(),\n }),\n // Code interpreter code streaming events\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.done'),\n response: xaiResponsesResponseSchema,\n }),\n z.object({\n type: z.literal('response.completed'),\n response: xaiResponsesResponseSchema,\n }),\n]);\n\nexport type XaiResponsesResponse = z.infer<typeof xaiResponsesResponseSchema>;\nexport type XaiResponsesChunk = z.infer<typeof xaiResponsesChunkSchema>;\nexport type XaiResponsesUsage = z.infer<typeof xaiResponsesUsageSchema>;\n","import { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapXaiResponsesFinishReason(\n finishReason: string | null | undefined,\n): LanguageModelV2FinishReason {\n switch (finishReason) {\n case 'stop':\n case 'completed':\n return 'stop';\n case 'length':\n return 'length';\n case 'tool_calls':\n case 'function_call':\n return 'tool-calls';\n case 'content_filter':\n return 'content-filter';\n default:\n return 'unknown';\n }\n}\n","import { z } from 'zod/v4';\n\nexport type XaiResponsesModelId =\n | 'grok-4-1'\n | 'grok-4-1-fast-reasoning'\n | 'grok-4-1-fast-non-reasoning'\n | 'grok-4'\n | 'grok-4-fast'\n | 'grok-4-fast-non-reasoning'\n | (string & {});\n\n/**\n * @see https://docs.x.ai/docs/api-reference#create-new-response\n */\nexport const xaiResponsesProviderOptions = z.object({\n /**\n * Constrains how hard a reasoning model thinks before responding.\n * Possible values are `low` (uses fewer reasoning tokens), `medium` and `high` (uses more reasoning tokens).\n */\n reasoningEffort: z.enum(['low', 'medium', 'high']).optional(),\n /**\n * Whether to store the input message(s) and model response for later retrieval.\n * @default true\n */\n store: z.boolean().optional(),\n /**\n * The ID of the previous response from the model.\n */\n previousResponseId: z.string().optional(),\n});\n\nexport type XaiResponsesProviderOptions = z.infer<\n typeof xaiResponsesProviderOptions\n>;\n","import {\n type LanguageModelV2CallWarning,\n type LanguageModelV2Message,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { convertToBase64 } from '@ai-sdk/provider-utils';\nimport type {\n XaiResponsesInput,\n XaiResponsesUserMessageContentPart,\n} from './xai-responses-api';\n\nexport async function convertToXaiResponsesInput({\n prompt,\n}: {\n prompt: LanguageModelV2Message[];\n store?: boolean;\n}): Promise<{\n input: XaiResponsesInput;\n inputWarnings: LanguageModelV2CallWarning[];\n}> {\n const input: XaiResponsesInput = [];\n const inputWarnings: LanguageModelV2CallWarning[] = [];\n\n for (const message of prompt) {\n switch (message.role) {\n case 'system': {\n input.push({\n role: 'system',\n content: message.content,\n });\n break;\n }\n\n case 'user': {\n const contentParts: XaiResponsesUserMessageContentPart[] = [];\n\n for (const block of message.content) {\n switch (block.type) {\n case 'text': {\n contentParts.push({ type: 'input_text', text: block.text });\n break;\n }\n\n case 'file': {\n if (block.mediaType.startsWith('image/')) {\n const mediaType =\n block.mediaType === 'image/*'\n ? 'image/jpeg'\n : block.mediaType;\n\n const imageUrl =\n block.data instanceof URL\n ? block.data.toString()\n : `data:${mediaType};base64,${convertToBase64(block.data)}`;\n\n contentParts.push({ type: 'input_image', image_url: imageUrl });\n } else {\n throw new UnsupportedFunctionalityError({\n functionality: `file part media type ${block.mediaType}`,\n });\n }\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = block;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in user messages',\n });\n }\n }\n }\n\n input.push({\n role: 'user',\n content: contentParts,\n });\n break;\n }\n\n case 'assistant': {\n for (const part of message.content) {\n switch (part.type) {\n case 'text': {\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n role: 'assistant',\n content: part.text,\n id,\n });\n\n break;\n }\n\n case 'tool-call': {\n if (part.providerExecuted) {\n break;\n }\n\n const id =\n typeof part.providerOptions?.xai?.itemId === 'string'\n ? part.providerOptions.xai.itemId\n : undefined;\n\n input.push({\n type: 'function_call',\n id: id ?? part.toolCallId,\n call_id: part.toolCallId,\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n status: 'completed',\n });\n break;\n }\n\n case 'tool-result': {\n break;\n }\n\n case 'reasoning':\n case 'file': {\n inputWarnings.push({\n type: 'other',\n message: `xAI Responses API does not support ${part.type} in assistant messages`,\n });\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = part;\n inputWarnings.push({\n type: 'other',\n message:\n 'xAI Responses API does not support this content type in assistant messages',\n });\n }\n }\n }\n\n break;\n }\n\n case 'tool': {\n for (const part of message.content) {\n const output = part.output;\n\n let outputValue: string;\n switch (output.type) {\n case 'text':\n case 'error-text':\n outputValue = output.value;\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 if (item.type === 'text') {\n return item.text;\n }\n return '';\n })\n .join('');\n break;\n default: {\n const _exhaustiveCheck: never = output;\n outputValue = '';\n }\n }\n\n input.push({\n type: 'function_call_output',\n call_id: part.toolCallId,\n output: outputValue,\n });\n }\n\n break;\n }\n\n default: {\n const _exhaustiveCheck: never = message;\n inputWarnings.push({\n type: 'other',\n message: 'unsupported message role',\n });\n }\n }\n }\n\n return { input, inputWarnings };\n}\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const webSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedDomains: z.array(z.string()).max(5).optional(),\n excludedDomains: z.array(z.string()).max(5).optional(),\n enableImageUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst webSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n sources: z.array(\n z.object({\n title: z.string(),\n url: z.string(),\n snippet: z.string(),\n }),\n ),\n }),\n ),\n);\n\nconst webSearchToolFactory = createProviderDefinedToolFactoryWithOutputSchema<\n Record<string, never>,\n {\n query: string;\n sources: Array<{\n title: string;\n url: string;\n snippet: string;\n }>;\n },\n {\n allowedDomains?: string[];\n excludedDomains?: string[];\n enableImageUnderstanding?: boolean;\n }\n>({\n id: 'xai.web_search',\n name: 'web_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: webSearchOutputSchema,\n});\n\nexport const webSearch = (\n args: Parameters<typeof webSearchToolFactory>[0] = {},\n) => webSearchToolFactory(args);\n","import {\n createProviderDefinedToolFactoryWithOutputSchema,\n lazySchema,\n zodSchema,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nexport const xSearchArgsSchema = lazySchema(() =>\n zodSchema(\n z.object({\n allowedXHandles: z.array(z.string()).max(10).optional(),\n excludedXHandles: z.array(z.string()).max(10).optional(),\n fromDate: z.string().optional(),\n toDate: z.string().optional(),\n enableImageUnderstanding: z.boolean().optional(),\n enableVideoUnderstanding: z.boolean().optional(),\n }),\n ),\n);\n\nconst xSearchOutputSchema = lazySchema(() =>\n zodSchema(\n z.object({\n query: z.string(),\n posts: z.array(\n z.object({\n author: z.string(),\n text: z.string(),\n url: z.string(),\n likes: z.number(),\n }),\n ),\n }),\n ),\n);\n\nconst xSearchToolFactory = createProviderDefinedToolFactoryWithOutputSchema<\n Record<string, never>,\n {\n query: string;\n posts: Array<{\n author: string;\n text: string;\n url: string;\n likes: number;\n }>;\n },\n {\n allowedXHandles?: string[];\n excludedXHandles?: string[];\n fromDate?: string;\n toDate?: string;\n enableImageUnderstanding?: boolean;\n enableVideoUnderstanding?: boolean;\n }\n>({\n id: 'xai.x_search',\n name: 'x_search',\n inputSchema: lazySchema(() => zodSchema(z.object({}))),\n outputSchema: xSearchOutputSchema,\n});\n\nexport const xSearch = (args: Parameters<typeof xSearchToolFactory>[0] = {}) =>\n xSearchToolFactory(args);\n","import {\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport { validateTypes } from '@ai-sdk/provider-utils';\nimport { webSearchArgsSchema } from '../tool/web-search';\nimport { xSearchArgsSchema } from '../tool/x-search';\nimport { XaiResponsesTool } from './xai-responses-api';\n\ntype XaiResponsesToolChoice =\n | 'auto'\n | 'none'\n | 'required'\n | { type: 'web_search' }\n | { type: 'x_search' }\n | { type: 'code_interpreter' }\n | { type: 'view_image' }\n | { type: 'view_x_video' }\n | { type: 'file_search' }\n | { type: 'mcp' }\n | { type: 'function'; name: string };\n\nexport async function prepareResponsesTools({\n tools,\n toolChoice,\n}: {\n tools: LanguageModelV2CallOptions['tools'];\n toolChoice?: LanguageModelV2CallOptions['toolChoice'];\n}): Promise<{\n tools: Array<XaiResponsesTool> | undefined;\n toolChoice: XaiResponsesToolChoice | undefined;\n toolWarnings: LanguageModelV2CallWarning[];\n}> {\n const normalizedTools = tools?.length ? tools : undefined;\n\n const toolWarnings: LanguageModelV2CallWarning[] = [];\n\n if (normalizedTools == null) {\n return { tools: undefined, toolChoice: undefined, toolWarnings };\n }\n\n const xaiTools: Array<XaiResponsesTool> = [];\n const toolByName = new Map<string, (typeof normalizedTools)[number]>();\n\n for (const tool of normalizedTools) {\n toolByName.set(tool.name, tool);\n\n if (tool.type === 'provider-defined') {\n switch (tool.id) {\n case 'xai.web_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: webSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'web_search',\n allowed_domains: args.allowedDomains,\n excluded_domains: args.excludedDomains,\n enable_image_understanding: args.enableImageUnderstanding,\n });\n break;\n }\n\n case 'xai.x_search': {\n const args = await validateTypes({\n value: tool.args,\n schema: xSearchArgsSchema,\n });\n\n xaiTools.push({\n type: 'x_search',\n allowed_x_handles: args.allowedXHandles,\n excluded_x_handles: args.excludedXHandles,\n from_date: args.fromDate,\n to_date: args.toDate,\n enable_image_understanding: args.enableImageUnderstanding,\n enable_video_understanding: args.enableVideoUnderstanding,\n });\n break;\n }\n\n case 'xai.code_execution': {\n xaiTools.push({\n type: 'code_interpreter',\n });\n break;\n }\n\n case 'xai.view_image': {\n xaiTools.push({\n type: 'view_image',\n });\n break;\n }\n\n case 'xai.view_x_video': {\n xaiTools.push({\n type: 'view_x_video',\n });\n break;\n }\n\n case 'xai.file_search': {\n xaiTools.push({\n type: 'file_search',\n });\n break;\n }\n\n case 'xai.mcp': {\n xaiTools.push({\n type: 'mcp',\n });\n break;\n }\n\n default: {\n toolWarnings.push({ type: 'unsupported-tool', tool });\n break;\n }\n }\n } else {\n xaiTools.push({\n type: 'function',\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n });\n }\n }\n\n if (toolChoice == null) {\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n\n const type = toolChoice.type;\n\n switch (type) {\n case 'auto':\n case 'none':\n return { tools: xaiTools, toolChoice: type, toolWarnings };\n case 'required':\n return { tools: xaiTools, toolChoice: 'required', toolWarnings };\n case 'tool': {\n const selectedTool = toolByName.get(toolChoice.toolName);\n\n if (selectedTool == null) {\n return {\n tools: xaiTools,\n toolChoice: undefined,\n toolWarnings,\n };\n }\n\n if (selectedTool.type === 'provider-defined') {\n switch (selectedTool.id) {\n case 'xai.web_search':\n return {\n tools: xaiTools,\n toolChoice: { type: 'web_search' },\n toolWarnings,\n };\n case 'xai.x_search':\n return {\n tools: xaiTools,\n toolChoice: { type: 'x_search' },\n toolWarnings,\n };\n case 'xai.code_execution':\n return {\n tools: xaiTools,\n toolChoice: { type: 'code_interpreter' },\n toolWarnings,\n };\n case 'xai.view_image':\n return {\n tools: xaiTools,\n toolChoice: { type: 'view_image' },\n toolWarnings,\n };\n case 'xai.view_x_video':\n return {\n tools: xaiTools,\n toolChoice: { type: 'view_x_video' },\n toolWarnings,\n };\n case 'xai.file_search':\n return {\n tools: xaiTools,\n toolChoice: { type: 'file_search' },\n toolWarnings,\n };\n case 'xai.mcp':\n return {\n tools: xaiTools,\n toolChoice: { type: 'mcp' },\n toolWarnings,\n };\n default:\n toolWarnings.push({ type: 'unsupported-tool', tool: selectedTool });\n return { tools: xaiTools, toolChoice: undefined, toolWarnings };\n }\n }\n\n return {\n tools: xaiTools,\n toolChoice: { type: 'function', name: selectedTool.name },\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","import {\n LanguageModelV2,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n FetchFunction,\n parseProviderOptions,\n ParseResult,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { getResponseMetadata } from '../get-response-metadata';\nimport {\n xaiResponsesChunkSchema,\n xaiResponsesResponseSchema,\n} from './xai-responses-api';\nimport { mapXaiResponsesFinishReason } from './map-xai-responses-finish-reason';\nimport {\n XaiResponsesModelId,\n xaiResponsesProviderOptions,\n} from './xai-responses-options';\nimport { xaiFailedResponseHandler } from '../xai-error';\nimport { convertToXaiResponsesInput } from './convert-to-xai-responses-input';\nimport { prepareResponsesTools } from './xai-responses-prepare-tools';\n\ntype XaiResponsesConfig = {\n provider: string;\n baseURL: string | undefined;\n headers: () => Record<string, string | undefined>;\n generateId: () => string;\n fetch?: FetchFunction;\n};\n\nexport class XaiResponsesLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2';\n\n readonly modelId: XaiResponsesModelId;\n\n private readonly config: XaiResponsesConfig;\n\n constructor(modelId: XaiResponsesModelId, config: XaiResponsesConfig) {\n this.modelId = modelId;\n this.config = config;\n }\n\n get provider(): string {\n return this.config.provider;\n }\n\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [/^https?:\\/\\/.*$/],\n };\n\n private async getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n stopSequences,\n seed,\n responseFormat,\n providerOptions,\n tools,\n toolChoice,\n }: Parameters<LanguageModelV2['doGenerate']>[0]) {\n const warnings: LanguageModelV2CallWarning[] = [];\n\n const options =\n (await parseProviderOptions({\n provider: 'xai',\n providerOptions,\n schema: xaiResponsesProviderOptions,\n })) ?? {};\n\n if (stopSequences != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'stopSequences',\n });\n }\n\n const webSearchToolName = tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === 'xai.web_search',\n )?.name;\n\n const xSearchToolName = tools?.find(\n tool => tool.type === 'provider-defined' && tool.id === 'xai.x_search',\n )?.name;\n\n const codeExecutionToolName = tools?.find(\n tool =>\n tool.type === 'provider-defined' && tool.id === 'xai.code_execution',\n )?.name;\n\n const { input, inputWarnings } = await convertToXaiResponsesInput({\n prompt,\n store: true,\n });\n warnings.push(...inputWarnings);\n\n const {\n tools: xaiTools,\n toolChoice: xaiToolChoice,\n toolWarnings,\n } = await prepareResponsesTools({\n tools,\n toolChoice,\n });\n warnings.push(...toolWarnings);\n\n const baseArgs: Record<string, unknown> = {\n model: this.modelId,\n input,\n max_output_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n seed,\n ...(responseFormat?.type === 'json' && {\n text: {\n format:\n responseFormat.schema != null\n ? {\n type: 'json_schema',\n strict: true,\n name: responseFormat.name ?? 'response',\n description: responseFormat.description,\n schema: responseFormat.schema,\n }\n : { type: 'json_object' },\n },\n }),\n ...(options.reasoningEffort != null && {\n reasoning: { effort: options.reasoningEffort },\n }),\n ...(options.store === false && {\n store: options.store,\n include: ['reasoning.encrypted_content'],\n }),\n ...(options.previousResponseId != null && {\n previous_response_id: options.previousResponseId,\n }),\n };\n\n if (xaiTools && xaiTools.length > 0) {\n baseArgs.tools = xaiTools;\n }\n\n if (xaiToolChoice != null) {\n baseArgs.tool_choice = xaiToolChoice;\n }\n\n return {\n args: baseArgs,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n };\n }\n\n async doGenerate(\n options: Parameters<LanguageModelV2['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const {\n args: body,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n } = await this.getArgs(options);\n\n const {\n responseHeaders,\n value: response,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n xaiResponsesResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n const content: Array<LanguageModelV2Content> = [];\n\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n for (const part of response.output) {\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call'\n ) {\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n }\n\n // custom_tool_call uses 'input' field, others use 'arguments'\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : (part.arguments ?? '');\n\n content.push({\n type: 'tool-call',\n toolCallId: part.id,\n toolName,\n input: toolInput,\n providerExecuted: true,\n });\n\n continue;\n }\n\n switch (part.type) {\n case 'message': {\n for (const contentPart of part.content) {\n if (contentPart.text) {\n content.push({\n type: 'text',\n text: contentPart.text,\n });\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n content.push({\n type: 'source',\n sourceType: 'url',\n id: this.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n\n break;\n }\n\n case 'function_call': {\n content.push({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n break;\n }\n\n case 'reasoning': {\n const summaryTexts = part.summary\n .map(s => s.text)\n .filter(text => text && text.length > 0);\n\n if (summaryTexts.length > 0) {\n const reasoningText = summaryTexts.join('');\n if (part.encrypted_content || part.id) {\n content.push({\n type: 'reasoning',\n text: reasoningText,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n } else {\n content.push({\n type: 'reasoning',\n text: reasoningText,\n });\n }\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return {\n content,\n finishReason: mapXaiResponsesFinishReason(response.status),\n usage: response.usage\n ? {\n inputTokens: response.usage.input_tokens,\n outputTokens: response.usage.output_tokens,\n totalTokens: response.usage.total_tokens,\n reasoningTokens:\n response.usage.output_tokens_details?.reasoning_tokens,\n cachedInputTokens:\n response.usage.input_tokens_details?.cached_tokens,\n }\n : {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n },\n request: { body },\n response: {\n ...getResponseMetadata(response),\n headers: responseHeaders,\n body: rawResponse,\n },\n warnings,\n };\n }\n\n async doStream(\n options: Parameters<LanguageModelV2['doStream']>[0],\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const {\n args,\n warnings,\n webSearchToolName,\n xSearchToolName,\n codeExecutionToolName,\n } = await this.getArgs(options);\n const body = {\n ...args,\n stream: true,\n };\n\n const { responseHeaders, value: response } = await postJsonToApi({\n url: `${this.config.baseURL ?? 'https://api.x.ai/v1'}/responses`,\n headers: combineHeaders(this.config.headers(), options.headers),\n body,\n failedResponseHandler: xaiFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n xaiResponsesChunkSchema,\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 const contentBlocks: Record<string, { type: 'text' }> = {};\n const seenToolCalls = new Set<string>();\n\n const activeReasoning: Record<\n string,\n { encryptedContent?: string | null }\n > = {};\n\n const self = this;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof xaiResponsesChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n start(controller) {\n controller.enqueue({ type: 'stream-start', warnings });\n },\n\n transform(chunk, controller) {\n if (options.includeRawChunks) {\n controller.enqueue({ type: 'raw', rawValue: chunk.rawValue });\n }\n\n if (!chunk.success) {\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const event = chunk.value;\n\n if (\n event.type === 'response.created' ||\n event.type === 'response.in_progress'\n ) {\n if (isFirstChunk) {\n controller.enqueue({\n type: 'response-metadata',\n ...getResponseMetadata(event.response),\n });\n isFirstChunk = false;\n }\n return;\n }\n\n if (event.type === 'response.reasoning_summary_part.added') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n if (event.type === 'response.reasoning_summary_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_summary_text.done') {\n return;\n }\n\n if (event.type === 'response.reasoning_text.delta') {\n const blockId = `reasoning-${event.item_id}`;\n\n if (activeReasoning[event.item_id] == null) {\n activeReasoning[event.item_id] = {};\n controller.enqueue({\n type: 'reasoning-start',\n id: blockId,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-delta',\n id: blockId,\n delta: event.delta,\n providerMetadata: {\n xai: {\n itemId: event.item_id,\n },\n },\n });\n\n return;\n }\n\n if (event.type === 'response.reasoning_text.done') {\n return;\n }\n\n if (event.type === 'response.output_text.delta') {\n const blockId = `text-${event.item_id}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n }\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: event.delta,\n });\n\n return;\n }\n\n if (event.type === 'response.output_text.done') {\n if (event.annotations) {\n for (const annotation of event.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n\n return;\n }\n\n if (event.type === 'response.output_text.annotation.added') {\n const annotation = event.annotation;\n if (annotation.type === 'url_citation' && 'url' in annotation) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n\n return;\n }\n\n if (\n event.type === 'response.done' ||\n event.type === 'response.completed'\n ) {\n const response = event.response;\n\n if (response.usage) {\n usage.inputTokens = response.usage.input_tokens;\n usage.cachedInputTokens =\n response.usage.input_tokens_details?.cached_tokens;\n usage.outputTokens = response.usage.output_tokens;\n usage.totalTokens = response.usage.total_tokens;\n usage.reasoningTokens =\n response.usage.output_tokens_details?.reasoning_tokens;\n }\n\n if (response.status) {\n finishReason = mapXaiResponsesFinishReason(response.status);\n }\n\n return;\n }\n\n if (\n event.type === 'response.output_item.added' ||\n event.type === 'response.output_item.done'\n ) {\n const part = event.item;\n if (part.type === 'reasoning') {\n if (event.type === 'response.output_item.done') {\n // Emit reasoning-start if it was never emitted\n // (e.g. encrypted reasoning with no summary/text events)\n if (activeReasoning[part.id] == null) {\n controller.enqueue({\n type: 'reasoning-start',\n id: `reasoning-${part.id}`,\n providerMetadata: {\n xai: {\n itemId: part.id,\n },\n },\n });\n }\n\n controller.enqueue({\n type: 'reasoning-end',\n id: `reasoning-${part.id}`,\n providerMetadata: {\n xai: {\n ...(part.encrypted_content && {\n reasoningEncryptedContent: part.encrypted_content,\n }),\n ...(part.id && { itemId: part.id }),\n },\n },\n });\n delete activeReasoning[part.id];\n }\n return;\n }\n\n if (\n part.type === 'web_search_call' ||\n part.type === 'x_search_call' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call' ||\n part.type === 'view_image_call' ||\n part.type === 'view_x_video_call' ||\n part.type === 'custom_tool_call'\n ) {\n const webSearchSubTools = [\n 'web_search',\n 'web_search_with_snippets',\n 'browse_page',\n ];\n const xSearchSubTools = [\n 'x_user_search',\n 'x_keyword_search',\n 'x_semantic_search',\n 'x_thread_fetch',\n ];\n\n let toolName = part.name ?? '';\n if (\n webSearchSubTools.includes(part.name ?? '') ||\n part.type === 'web_search_call'\n ) {\n toolName = webSearchToolName ?? 'web_search';\n } else if (\n xSearchSubTools.includes(part.name ?? '') ||\n part.type === 'x_search_call'\n ) {\n toolName = xSearchToolName ?? 'x_search';\n } else if (\n part.name === 'code_execution' ||\n part.type === 'code_interpreter_call' ||\n part.type === 'code_execution_call'\n ) {\n toolName = codeExecutionToolName ?? 'code_execution';\n }\n\n // custom_tool_call uses 'input' field, others use 'arguments'\n const toolInput =\n part.type === 'custom_tool_call'\n ? (part.input ?? '')\n : (part.arguments ?? '');\n\n // for custom_tool_call, input is only available on 'done' event\n // for other types, input is available on 'added' event\n const shouldEmit =\n part.type === 'custom_tool_call'\n ? event.type === 'response.output_item.done'\n : !seenToolCalls.has(part.id);\n\n if (shouldEmit && !seenToolCalls.has(part.id)) {\n seenToolCalls.add(part.id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.id,\n toolName,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.id,\n delta: toolInput,\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,\n input: toolInput,\n providerExecuted: true,\n });\n }\n\n return;\n }\n\n if (part.type === 'message') {\n for (const contentPart of part.content) {\n if (contentPart.text && contentPart.text.length > 0) {\n const blockId = `text-${part.id}`;\n\n if (contentBlocks[blockId] == null) {\n contentBlocks[blockId] = { type: 'text' };\n controller.enqueue({\n type: 'text-start',\n id: blockId,\n });\n\n controller.enqueue({\n type: 'text-delta',\n id: blockId,\n delta: contentPart.text,\n });\n }\n }\n\n if (contentPart.annotations) {\n for (const annotation of contentPart.annotations) {\n if (\n annotation.type === 'url_citation' &&\n 'url' in annotation\n ) {\n controller.enqueue({\n type: 'source',\n sourceType: 'url',\n id: self.config.generateId(),\n url: annotation.url,\n title: annotation.title ?? annotation.url,\n });\n }\n }\n }\n }\n } else if (part.type === 'function_call') {\n if (!seenToolCalls.has(part.call_id)) {\n seenToolCalls.add(part.call_id);\n\n controller.enqueue({\n type: 'tool-input-start',\n id: part.call_id,\n toolName: part.name,\n });\n\n controller.enqueue({\n type: 'tool-input-delta',\n id: part.call_id,\n delta: part.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: part.call_id,\n });\n\n controller.enqueue({\n type: 'tool-call',\n toolCallId: part.call_id,\n toolName: part.name,\n input: part.arguments,\n });\n }\n }\n }\n },\n\n flush(controller) {\n for (const [blockId, block] of Object.entries(contentBlocks)) {\n if (block.type === 'text') {\n controller.enqueue({\n type: 'text-end',\n id: blockId,\n });\n }\n }\n\n controller.enqueue({ type: 'finish', finishReason, usage });\n },\n }),\n ),\n request: { body },\n response: { headers: responseHeaders },\n };\n }\n}\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst codeExecutionOutputSchema = z.object({\n output: z.string().describe('the output of the code execution'),\n error: z.string().optional().describe('any error that occurred'),\n});\n\nconst codeExecutionToolFactory =\n createProviderDefinedToolFactoryWithOutputSchema({\n id: 'xai.code_execution',\n name: 'code_execution',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: codeExecutionOutputSchema,\n });\n\nexport const codeExecution = (\n args: Parameters<typeof codeExecutionToolFactory>[0] = {},\n) => codeExecutionToolFactory(args);\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewImageOutputSchema = z.object({\n description: z.string().describe('description of the image'),\n objects: z\n .array(z.string())\n .optional()\n .describe('objects detected in the image'),\n});\n\nconst viewImageToolFactory = createProviderDefinedToolFactoryWithOutputSchema({\n id: 'xai.view_image',\n name: 'view_image',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewImageOutputSchema,\n});\n\nexport const viewImage = (\n args: Parameters<typeof viewImageToolFactory>[0] = {},\n) => viewImageToolFactory(args);\n","import { createProviderDefinedToolFactoryWithOutputSchema } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst viewXVideoOutputSchema = z.object({\n transcript: z.string().optional().describe('transcript of the video'),\n description: z.string().describe('description of the video content'),\n duration: z.number().optional().describe('duration in seconds'),\n});\n\nconst viewXVideoToolFactory = createProviderDefinedToolFactoryWithOutputSchema({\n id: 'xai.view_x_video',\n name: 'view_x_video',\n inputSchema: z.object({}).describe('no input parameters'),\n outputSchema: viewXVideoOutputSchema,\n});\n\nexport const viewXVideo = (\n args: Parameters<typeof viewXVideoToolFactory>[0] = {},\n) => viewXVideoToolFactory(args);\n","import { codeExecution } from './code-execution';\nimport { viewImage } from './view-image';\nimport { viewXVideo } from './view-x-video';\nimport { webSearch } from './web-search';\nimport { xSearch } from './x-search';\n\nexport { codeExecution, viewImage, viewXVideo, webSearch, xSearch };\n\nexport const xaiTools = {\n codeExecution,\n viewImage,\n viewXVideo,\n webSearch,\n xSearch,\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 OpenAICompatibleImageModel,\n ProviderErrorStructure,\n} from '@ai-sdk/openai-compatible';\nimport {\n ImageModelV2,\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n generateId,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { XaiChatLanguageModel } from './xai-chat-language-model';\nimport { XaiChatModelId } from './xai-chat-options';\nimport { XaiErrorData, xaiErrorDataSchema } from './xai-error';\nimport { XaiImageModelId } from './xai-image-settings';\nimport { XaiResponsesLanguageModel } from './responses/xai-responses-language-model';\nimport { XaiResponsesModelId } from './responses/xai-responses-options';\nimport { xaiTools } from './tool';\nimport { VERSION } from './version';\n\nconst xaiErrorStructure: ProviderErrorStructure<XaiErrorData> = {\n errorSchema: xaiErrorDataSchema,\n errorToMessage: data => data.error.message,\n};\n\nexport interface XaiProvider extends ProviderV2 {\n /**\nCreates an Xai chat model for text generation.\n */\n (modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai language model for text generation.\n */\n languageModel(modelId: XaiChatModelId): LanguageModelV2;\n\n /**\nCreates an Xai chat model for text generation.\n */\n chat: (modelId: XaiChatModelId) => LanguageModelV2;\n\n /**\nCreates an Xai responses model for agentic tool calling.\n */\n responses: (modelId: XaiResponsesModelId) => LanguageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n image(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nCreates an Xai image model for image generation.\n */\n imageModel(modelId: XaiImageModelId): ImageModelV2;\n\n /**\nServer-side agentic tools for use with the responses API.\n */\n tools: typeof xaiTools;\n}\n\nexport interface XaiProviderSettings {\n /**\nBase URL for the xAI API calls.\n */\n baseURL?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\nexport function createXai(options: XaiProviderSettings = {}): XaiProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.x.ai/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'XAI_API_KEY',\n description: 'xAI API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/xai/${VERSION}`,\n );\n\n const createChatLanguageModel = (modelId: XaiChatModelId) => {\n return new XaiChatLanguageModel(modelId, {\n provider: 'xai.chat',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createResponsesLanguageModel = (modelId: XaiResponsesModelId) => {\n return new XaiResponsesLanguageModel(modelId, {\n provider: 'xai.responses',\n baseURL,\n headers: getHeaders,\n generateId,\n fetch: options.fetch,\n });\n };\n\n const createImageModel = (modelId: XaiImageModelId) => {\n return new OpenAICompatibleImageModel(modelId, {\n provider: 'xai.image',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n errorStructure: xaiErrorStructure,\n });\n };\n\n const provider = (modelId: XaiChatModelId) =>\n createChatLanguageModel(modelId);\n\n provider.specificationVersion = 'v2' as const;\n provider.languageModel = createChatLanguageModel;\n provider.chat = createChatLanguageModel;\n provider.responses = createResponsesLanguageModel;\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = createImageModel;\n provider.image = createImageModel;\n provider.tools = xaiTools;\n\n return provider;\n}\n\nexport const xai = createXai();\n","/**\n * Symbol used for identifying AI SDK Error instances.\n * Enables checking if an error is an instance of AISDKError across package versions.\n */\nconst marker = 'vercel.ai.error';\nconst symbol = Symbol.for(marker);\n\n/**\n * Custom error class for AI SDK related errors.\n * @extends Error\n */\nexport class AISDKError extends Error {\n private readonly [symbol] = true; // used in isInstance\n\n /**\n * The underlying cause of the error, if any.\n */\n readonly cause?: unknown;\n\n /**\n * Creates an AI SDK Error.\n *\n * @param {Object} params - The parameters for creating the error.\n * @param {string} params.name - The name of the error.\n * @param {string} params.message - The error message.\n * @param {unknown} [params.cause] - The underlying cause of the error.\n */\n constructor({\n name,\n message,\n cause,\n }: {\n name: string;\n message: string;\n cause?: unknown;\n }) {\n super(message);\n\n this.name = name;\n this.cause = cause;\n }\n\n /**\n * Checks if the given error is an AI SDK Error.\n * @param {unknown} error - The error to check.\n * @returns {boolean} True if the error is an AI SDK Error, false otherwise.\n */\n static isInstance(error: unknown): error is AISDKError {\n return AISDKError.hasMarker(error, marker);\n }\n\n protected static hasMarker(error: unknown, marker: string): boolean {\n const markerSymbol = Symbol.for(marker);\n return (\n error != null &&\n typeof error === 'object' &&\n markerSymbol in error &&\n typeof error[markerSymbol] === 'boolean' &&\n error[markerSymbol] === true\n );\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_APICallError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class APICallError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly url: string;\n readonly requestBodyValues: unknown;\n readonly statusCode?: number;\n\n readonly responseHeaders?: Record<string, string>;\n readonly responseBody?: string;\n\n readonly isRetryable: boolean;\n readonly data?: unknown;\n\n constructor({\n message,\n url,\n requestBodyValues,\n statusCode,\n responseHeaders,\n responseBody,\n cause,\n isRetryable = statusCode != null &&\n (statusCode === 408 || // request timeout\n statusCode === 409 || // conflict\n statusCode === 429 || // too many requests\n statusCode >= 500), // server error\n data,\n }: {\n message: string;\n url: string;\n requestBodyValues: unknown;\n statusCode?: number;\n responseHeaders?: Record<string, string>;\n responseBody?: string;\n cause?: unknown;\n isRetryable?: boolean;\n data?: unknown;\n }) {\n super({ name, message, cause });\n\n this.url = url;\n this.requestBodyValues = requestBodyValues;\n this.statusCode = statusCode;\n this.responseHeaders = responseHeaders;\n this.responseBody = responseBody;\n this.isRetryable = isRetryable;\n this.data = data;\n }\n\n static isInstance(error: unknown): error is APICallError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_EmptyResponseBodyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class EmptyResponseBodyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message = 'Empty response body' }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is EmptyResponseBodyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","export function getErrorMessage(error: unknown | undefined) {\n if (error == null) {\n return 'unknown error';\n }\n\n if (typeof error === 'string') {\n return error;\n }\n\n if (error instanceof Error) {\n return error.message;\n }\n\n return JSON.stringify(error);\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidArgumentError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A function argument is invalid.\n */\nexport class InvalidArgumentError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly argument: string;\n\n constructor({\n message,\n cause,\n argument,\n }: {\n argument: string;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message, cause });\n\n this.argument = argument;\n }\n\n static isInstance(error: unknown): error is InvalidArgumentError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidPromptError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * A prompt is invalid. This error should be thrown by providers when they cannot\n * process a prompt.\n */\nexport class InvalidPromptError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly prompt: unknown;\n\n constructor({\n prompt,\n message,\n cause,\n }: {\n prompt: unknown;\n message: string;\n cause?: unknown;\n }) {\n super({ name, message: `Invalid prompt: ${message}`, cause });\n\n this.prompt = prompt;\n }\n\n static isInstance(error: unknown): error is InvalidPromptError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_InvalidResponseDataError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\n * Server returned a response with invalid data content.\n * This should be thrown by providers when they cannot parse the response from the API.\n */\nexport class InvalidResponseDataError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly data: unknown;\n\n constructor({\n data,\n message = `Invalid response data: ${JSON.stringify(data)}.`,\n }: {\n data: unknown;\n message?: string;\n }) {\n super({ name, message });\n\n this.data = data;\n }\n\n static isInstance(error: unknown): error is InvalidResponseDataError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_JSONParseError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n// TODO v5: rename to ParseError\nexport class JSONParseError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly text: string;\n\n constructor({ text, cause }: { text: string; cause: unknown }) {\n super({\n name,\n message:\n `JSON parsing failed: ` +\n `Text: ${text}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.text = text;\n }\n\n static isInstance(error: unknown): error is JSONParseError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_LoadAPIKeyError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class LoadAPIKeyError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({ message }: { message: string }) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is LoadAPIKeyError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_NoContentGeneratedError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\n/**\nThrown when the AI provider fails to generate any content.\n */\nexport class NoContentGeneratedError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n constructor({\n message = 'No content generated.',\n }: { message?: string } = {}) {\n super({ name, message });\n }\n\n static isInstance(error: unknown): error is NoContentGeneratedError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","import { AISDKError } from './ai-sdk-error';\nimport { getErrorMessage } from './get-error-message';\n\nconst name = 'AI_TypeValidationError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class TypeValidationError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly value: unknown;\n\n constructor({ value, cause }: { value: unknown; cause: unknown }) {\n super({\n name,\n message:\n `Type validation failed: ` +\n `Value: ${JSON.stringify(value)}.\\n` +\n `Error message: ${getErrorMessage(cause)}`,\n cause,\n });\n\n this.value = value;\n }\n\n static isInstance(error: unknown): error is TypeValidationError {\n return AISDKError.hasMarker(error, marker);\n }\n\n /**\n * Wraps an error into a TypeValidationError.\n * If the cause is already a TypeValidationError with the same value, it returns the cause.\n * Otherwise, it creates a new TypeValidationError.\n *\n * @param {Object} params - The parameters for wrapping the error.\n * @param {unknown} params.value - The value that failed validation.\n * @param {unknown} params.cause - The original error or cause of the validation failure.\n * @returns {TypeValidationError} A TypeValidationError instance.\n */\n static wrap({\n value,\n cause,\n }: {\n value: unknown;\n cause: unknown;\n }): TypeValidationError {\n return TypeValidationError.isInstance(cause) && cause.value === value\n ? cause\n : new TypeValidationError({ value, cause });\n }\n}\n","import { AISDKError } from './ai-sdk-error';\n\nconst name = 'AI_UnsupportedFunctionalityError';\nconst marker = `vercel.ai.error.${name}`;\nconst symbol = Symbol.for(marker);\n\nexport class UnsupportedFunctionalityError extends AISDKError {\n private readonly [symbol] = true; // used in isInstance\n\n readonly functionality: string;\n\n constructor({\n functionality,\n message = `'${functionality}' functionality not supported.`,\n }: {\n functionality: string;\n message?: string;\n }) {\n super({ name, message });\n this.functionality = functionality;\n }\n\n static isInstance(error: unknown): error is UnsupportedFunctionalityError {\n return AISDKError.hasMarker(error, marker);\n }\n}\n","/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string\n\n /**\n * The line that caused the error, if available.\n */\n line?: string\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n if (typeof callbacks === 'function') {\n throw new TypeError(\n '`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?',\n )\n }\n\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n isFirstChunk = true\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [complete: Array<string>, incomplete: string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n const lines: Array<string> = []\n let incompleteLine = ''\n let searchIndex = 0\n\n while (searchIndex < chunk.length) {\n // Find next line terminator\n const crIndex = chunk.indexOf('\\r', searchIndex)\n const lfIndex = chunk.indexOf('\\n', searchIndex)\n\n // Determine line end\n let lineEnd = -1\n if (crIndex !== -1 && lfIndex !== -1) {\n // CRLF case\n lineEnd = Math.min(crIndex, lfIndex)\n } else if (crIndex !== -1) {\n lineEnd = crIndex\n } else if (lfIndex !== -1) {\n lineEnd = lfIndex\n }\n\n // Extract line if terminator found\n if (lineEnd === -1) {\n // No terminator found, rest is incomplete\n incompleteLine = chunk.slice(searchIndex)\n break\n } else {\n const line = chunk.slice(searchIndex, lineEnd)\n lines.push(line)\n\n // Move past line terminator\n searchIndex = lineEnd + 1\n if (chunk[searchIndex - 1] === '\\r' && chunk[searchIndex] === '\\n') {\n searchIndex++\n }\n }\n }\n\n return [lines, incompleteLine]\n}\n","import {createParser} from './parse.ts'\nimport type {EventSourceMessage, EventSourceParser} from './types.ts'\n\n/**\n * Options for the EventSourceParserStream.\n *\n * @public\n */\nexport interface StreamOptions {\n /**\n * Behavior when a parsing error occurs.\n *\n * - A custom function can be provided to handle the error.\n * - `'terminate'` will error the stream and stop parsing.\n * - Any other value will ignore the error and continue parsing.\n *\n * @defaultValue `undefined`\n */\n onError?: 'terminate' | ((error: Error) => void)\n\n /**\n * Callback for when a reconnection interval is sent from the server.\n *\n * @param retry - The number of milliseconds to wait before reconnecting.\n */\n onRetry?: (retry: number) => void\n\n /**\n * Callback for when a comment is encountered in the stream.\n *\n * @param comment - The comment encountered in the stream.\n */\n onComment?: (comment: string) => void\n}\n\n/**\n * A TransformStream that ingests a stream of strings and produces a stream of `EventSourceMessage`.\n *\n * @example Basic usage\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream())\n * ```\n *\n * @example Terminate stream on parsing errors\n * ```\n * const eventStream =\n * response.body\n * .pipeThrough(new TextDecoderStream())\n * .pipeThrough(new EventSourceParserStream({terminateOnError: true}))\n * ```\n *\n * @public\n */\nexport class EventSourceParserStream extends TransformStream<string, EventSourceMessage> {\n constructor({onError, onRetry, onComment}: StreamOptions = {}) {\n let parser!: EventSourceParser\n\n super({\n start(controller) {\n parser = createParser({\n onEvent: (event) => {\n controller.enqueue(event)\n },\n onError(error) {\n if (onError === 'terminate') {\n controller.error(error)\n } else if (typeof onError === 'function') {\n onError(error)\n }\n\n // Ignore by default\n },\n onRetry,\n onComment,\n })\n },\n transform(chunk) {\n parser.feed(chunk)\n },\n })\n }\n}\n\nexport {type ErrorType, ParseError} from './errors.ts'\nexport type {EventSourceMessage} from './types.ts'\n","import { setResponseValueAndErrors } from \"../errorMessages.js\";\nlet emojiRegex = undefined;\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: /^(?!\\.)(?!.*\\.\\.)([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(\"^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$\", \"u\");\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: /^(?:(?: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: /^(([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: /^([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};\nexport function parseStringDef(def, refs) {\n const res = {\n type: \"string\",\n };\n if (def.checks) {\n for (const check of def.checks) {\n switch (check.kind) {\n case \"min\":\n setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"max\":\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\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 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(res, RegExp(`^${escapeLiteralCheckValue(check.value, refs)}`), check.message, refs);\n break;\n case \"endsWith\":\n addPattern(res, RegExp(`${escapeLiteralCheckValue(check.value, refs)}$`), check.message, refs);\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 setResponseValueAndErrors(res, \"minLength\", typeof res.minLength === \"number\"\n ? Math.max(res.minLength, check.value)\n : check.value, check.message, refs);\n setResponseValueAndErrors(res, \"maxLength\", typeof res.maxLength === \"number\"\n ? Math.min(res.maxLength, check.value)\n : check.value, check.message, refs);\n break;\n case \"includes\": {\n addPattern(res, RegExp(escapeLiteralCheckValue(check.value, refs)), check.message, refs);\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\", check.message, refs);\n break;\n }\n case \"contentEncoding:base64\": {\n setResponseValueAndErrors(res, \"contentEncoding\", \"base64\", check.message, refs);\n break;\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 ((_) => { })(check);\n }\n }\n }\n return res;\n}\nfunction escapeLiteralCheckValue(literal, refs) {\n return refs.patternStrategy === \"escape\"\n ? escapeNonAlphaNumeric(literal)\n : literal;\n}\nconst ALPHA_NUMERIC = new Set(\"ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789\");\nfunction escapeNonAlphaNumeric(source) {\n let result = \"\";\n for (let i = 0; i < source.length; i++) {\n if (!ALPHA_NUMERIC.has(source[i])) {\n result += \"\\\\\";\n }\n result += source[i];\n }\n return result;\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(schema, value, message, refs) {\n if (schema.format || schema.anyOf?.some((x) => x.format)) {\n if (!schema.anyOf) {\n schema.anyOf = [];\n }\n if (schema.format) {\n schema.anyOf.push({\n format: schema.format,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { format: schema.errorMessage.format },\n }),\n });\n delete schema.format;\n if (schema.errorMessage) {\n delete schema.errorMessage.format;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.anyOf.push({\n format: value,\n ...(message &&\n refs.errorMessages && { errorMessage: { format: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"format\", value, message, refs);\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(schema, regex, message, refs) {\n if (schema.pattern || schema.allOf?.some((x) => x.pattern)) {\n if (!schema.allOf) {\n schema.allOf = [];\n }\n if (schema.pattern) {\n schema.allOf.push({\n pattern: schema.pattern,\n ...(schema.errorMessage &&\n refs.errorMessages && {\n errorMessage: { pattern: schema.errorMessage.pattern },\n }),\n });\n delete schema.pattern;\n if (schema.errorMessage) {\n delete schema.errorMessage.pattern;\n if (Object.keys(schema.errorMessage).length === 0) {\n delete schema.errorMessage;\n }\n }\n }\n schema.allOf.push({\n pattern: stringifyRegExpWithFlags(regex, refs),\n ...(message &&\n refs.errorMessages && { errorMessage: { pattern: message } }),\n });\n }\n else {\n setResponseValueAndErrors(schema, \"pattern\", stringifyRegExpWithFlags(regex, refs), message, refs);\n }\n}\n// Mutate z.string.regex() in a best attempt to accommodate for regex flags when applyRegexFlags is true\nfunction stringifyRegExpWithFlags(regex, refs) {\n if (!refs.applyRegexFlags || !regex.flags) {\n return regex.source;\n }\n // Currently handled flags\n const flags = {\n i: regex.flags.includes(\"i\"),\n m: regex.flags.includes(\"m\"),\n s: regex.flags.includes(\"s\"), // `.` matches newlines\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 for (let i = 0; i < source.length; i++) {\n if (isEscaped) {\n pattern += source[i];\n isEscaped = false;\n continue;\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 }\n else if (source[i + 1] === \"-\" && source[i + 2]?.match(/[a-z]/)) {\n pattern += source[i];\n inCharRange = true;\n }\n else {\n pattern += `${source[i]}${source[i].toUpperCase()}`;\n }\n continue;\n }\n }\n else if (source[i].match(/[a-z]/)) {\n pattern += `[${source[i]}${source[i].toUpperCase()}]`;\n continue;\n }\n }\n if (flags.m) {\n if (source[i] === \"^\") {\n pattern += `(^|(?<=[\\r\\n]))`;\n continue;\n }\n else if (source[i] === \"$\") {\n pattern += `($|(?=[\\r\\n]))`;\n continue;\n }\n }\n if (flags.s && source[i] === \".\") {\n pattern += inCharGroup ? `${source[i]}\\r\\n` : `[${source[i]}\\r\\n]`;\n continue;\n }\n pattern += source[i];\n if (source[i] === \"\\\\\") {\n isEscaped = true;\n }\n else if (inCharGroup && source[i] === \"]\") {\n inCharGroup = false;\n }\n else if (!inCharGroup && source[i] === \"[\") {\n inCharGroup = true;\n }\n }\n try {\n new RegExp(pattern);\n }\n catch {\n console.warn(`Could not convert regex pattern at ${refs.currentPath.join(\"/\")} to a flag-independent form! Falling back to the flag-ignorant source`);\n return regex.source;\n }\n return pattern;\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","/**\nExtracts the headers from a response object and returns them as a key-value object.\n\n@param response - The response object to extract headers from.\n@returns The headers as a key-value object.\n*/\nexport function extractResponseHeaders(response: Response) {\n return Object.fromEntries<string>([...response.headers]);\n}\n","import { InvalidArgumentError } from '@ai-sdk/provider';\n\n/**\nCreates an ID generator.\nThe total length of the ID is the sum of the prefix, separator, and random part length.\nNot cryptographically secure.\n\n@param alphabet - The alphabet to use for the ID. Default: '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'.\n@param prefix - The prefix of the ID to generate. Optional.\n@param separator - The separator between the prefix and the random part of the ID. Default: '-'.\n@param size - The size of the random part of the ID to generate. Default: 16.\n */\nexport const createIdGenerator = ({\n prefix,\n size = 16,\n alphabet = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',\n separator = '-',\n}: {\n prefix?: string;\n separator?: string;\n size?: number;\n alphabet?: string;\n} = {}): IdGenerator => {\n const generator = () => {\n const alphabetLength = alphabet.length;\n const chars = new Array(size);\n for (let i = 0; i < size; i++) {\n chars[i] = alphabet[(Math.random() * alphabetLength) | 0];\n }\n return chars.join('');\n };\n\n if (prefix == null) {\n return generator;\n }\n\n // check that the prefix is not part of the alphabet (otherwise prefix checking can fail randomly)\n if (alphabet.includes(separator)) {\n throw new InvalidArgumentError({\n argument: 'separator',\n message: `The separator \"${separator}\" must not be part of the alphabet \"${alphabet}\".`,\n });\n }\n\n return () => `${prefix}${separator}${generator()}`;\n};\n\n/**\nA function that generates an ID.\n */\nexport type IdGenerator = () => string;\n\n/**\nGenerates a 16-character random string to use for IDs.\nNot cryptographically secure.\n */\nexport const generateId = createIdGenerator();\n","export function isAbortError(error: unknown): error is Error {\n return (\n (error instanceof Error || error instanceof DOMException) &&\n (error.name === 'AbortError' ||\n error.name === 'ResponseAborted' || // Next.js\n error.name === 'TimeoutError')\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { isAbortError } from './is-abort-error';\n\nconst FETCH_FAILED_ERROR_MESSAGES = ['fetch failed', 'failed to fetch'];\n\nexport function handleFetchError({\n error,\n url,\n requestBodyValues,\n}: {\n error: unknown;\n url: string;\n requestBodyValues: unknown;\n}) {\n if (isAbortError(error)) {\n return error;\n }\n\n // unwrap original error when fetch failed (for easier debugging):\n if (\n error instanceof TypeError &&\n FETCH_FAILED_ERROR_MESSAGES.includes(error.message.toLowerCase())\n ) {\n const cause = (error as any).cause;\n\n if (cause != null) {\n // Failed to connect to server:\n return new APICallError({\n message: `Cannot connect to API: ${cause.message}`,\n cause,\n url,\n requestBodyValues,\n isRetryable: true, // retry when network error\n });\n }\n }\n\n return error;\n}\n","/**\n * Removes entries from a record where the value is null or undefined.\n * @param record - The input object whose entries may be null or undefined.\n * @returns A new object containing only entries with non-null and non-undefined values.\n */\nexport function removeUndefinedEntries<T>(\n record: Record<string, T | undefined>,\n): Record<string, T> {\n return Object.fromEntries(\n Object.entries(record).filter(([_key, value]) => value != null),\n ) as Record<string, T>;\n}\n","import { LoadAPIKeyError } from '@ai-sdk/provider';\n\nexport function loadApiKey({\n apiKey,\n environmentVariableName,\n apiKeyParameterName = 'apiKey',\n description,\n}: {\n apiKey: string | undefined;\n environmentVariableName: string;\n apiKeyParameterName?: string;\n description: string;\n}): string {\n if (typeof apiKey === 'string') {\n return apiKey;\n }\n\n if (apiKey != null) {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string.`,\n });\n }\n\n if (typeof process === 'undefined') {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter. Environment variables is not supported in this environment.`,\n });\n }\n\n apiKey = process.env[environmentVariableName];\n\n if (apiKey == null) {\n throw new LoadAPIKeyError({\n message: `${description} API key is missing. Pass it using the '${apiKeyParameterName}' parameter or the ${environmentVariableName} environment variable.`,\n });\n }\n\n if (typeof apiKey !== 'string') {\n throw new LoadAPIKeyError({\n message: `${description} API key must be a string. The value of the ${environmentVariableName} environment variable is not a string.`,\n });\n }\n\n return apiKey;\n}\n","// Licensed under BSD-3-Clause (this file only)\n// Code adapted from https://github.com/fastify/secure-json-parse/blob/783fcb1b5434709466759847cec974381939673a/index.js\n//\n// Copyright (c) Vercel, Inc. (https://vercel.com)\n// Copyright (c) 2019 The Fastify Team\n// Copyright (c) 2019, Sideway Inc, and project contributors\n// All rights reserved.\n//\n// The complete list of contributors can be found at:\n// - https://github.com/hapijs/bourne/graphs/contributors\n// - https://github.com/fastify/secure-json-parse/graphs/contributors\n// - https://github.com/vercel/ai/commits/main/packages/provider-utils/src/secure-parse-json.ts\n//\n// Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:\n//\n// 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.\n//\n// 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\nconst suspectProtoRx = /\"__proto__\"\\s*:/;\nconst suspectConstructorRx = /\"constructor\"\\s*:/;\n\nfunction _parse(text: string) {\n // Parse normally\n const obj = JSON.parse(text);\n\n // Ignore null and non-objects\n if (obj === null || typeof obj !== 'object') {\n return obj;\n }\n\n if (\n suspectProtoRx.test(text) === false &&\n suspectConstructorRx.test(text) === false\n ) {\n return obj;\n }\n\n // Scan result for proto keys\n return filter(obj);\n}\n\nfunction filter(obj: any) {\n let next = [obj];\n\n while (next.length) {\n const nodes = next;\n next = [];\n\n for (const node of nodes) {\n if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n if (\n Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')\n ) {\n throw new SyntaxError('Object contains forbidden prototype property');\n }\n\n for (const key in node) {\n const value = node[key];\n if (value && typeof value === 'object') {\n next.push(value);\n }\n }\n }\n }\n return obj;\n}\n\nexport function secureJsonParse(text: string) {\n // Performance optimization, see https://github.com/fastify/secure-json-parse/pull/90\n const { stackTraceLimit } = Error;\n Error.stackTraceLimit = 0;\n try {\n return _parse(text);\n } finally {\n Error.stackTraceLimit = stackTraceLimit;\n }\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport { StandardSchemaV1 } from '@standard-schema/spec';\n\n/**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\nexport const validatorSymbol = Symbol.for('vercel.ai.validator');\n\nexport type ValidationResult<OBJECT> =\n | { success: true; value: OBJECT }\n | { success: false; error: Error };\n\nexport type Validator<OBJECT = unknown> = {\n /**\n * Used to mark validator functions so we can support both Zod and custom schemas.\n */\n [validatorSymbol]: true;\n\n /**\n * Optional. Validates that the structure of a value matches this schema,\n * and returns a typed version of the value if it does.\n */\n readonly validate?: (\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>;\n};\n\n/**\n * Create a validator.\n *\n * @param validate A validation function for the schema.\n */\nexport function validator<OBJECT>(\n validate?:\n | undefined\n | ((\n value: unknown,\n ) => ValidationResult<OBJECT> | PromiseLike<ValidationResult<OBJECT>>),\n): Validator<OBJECT> {\n return { [validatorSymbol]: true, validate };\n}\n\nexport function isValidator(value: unknown): value is Validator {\n return (\n typeof value === 'object' &&\n value !== null &&\n validatorSymbol in value &&\n value[validatorSymbol] === true &&\n 'validate' in value\n );\n}\n\nexport function asValidator<OBJECT>(\n value: Validator<OBJECT> | StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return isValidator(value) ? value : standardSchemaValidator(value);\n}\n\nexport function standardSchemaValidator<OBJECT>(\n standardSchema: StandardSchemaV1<unknown, OBJECT>,\n): Validator<OBJECT> {\n return validator(async value => {\n const result = await standardSchema['~standard'].validate(value);\n\n return result.issues == null\n ? { success: true, value: result.value }\n : {\n success: false,\n error: new TypeValidationError({\n value,\n cause: result.issues,\n }),\n };\n });\n}\n","import { TypeValidationError } from '@ai-sdk/provider';\nimport type { StandardSchemaV1 } from '@standard-schema/spec';\nimport { Validator, asValidator } from './validator';\n\n/**\n * Validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns {Promise<T>} - The typed object.\n */\nexport async function validateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: StandardSchemaV1<unknown, OBJECT> | Validator<OBJECT>;\n}): Promise<OBJECT> {\n const result = await safeValidateTypes({ value, schema });\n\n if (!result.success) {\n throw TypeValidationError.wrap({ value, cause: result.error });\n }\n\n return result.value;\n}\n\n/**\n * Safely validates the types of an unknown object using a schema and\n * return a strongly-typed object.\n *\n * @template T - The type of the object to validate.\n * @param {string} options.value - The JSON object to validate.\n * @param {Validator<T>} options.schema - The schema to use for validating the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeValidateTypes<OBJECT>({\n value,\n schema,\n}: {\n value: unknown;\n schema: StandardSchemaV1<unknown, OBJECT> | Validator<OBJECT>;\n}): Promise<\n | {\n success: true;\n value: OBJECT;\n rawValue: unknown;\n }\n | {\n success: false;\n error: TypeValidationError;\n rawValue: unknown;\n }\n> {\n const validator = asValidator(schema);\n\n try {\n if (validator.validate == null) {\n return { success: true, value: value as OBJECT, rawValue: value };\n }\n\n const result = await validator.validate(value);\n\n if (result.success) {\n return { success: true, value: result.value, rawValue: value };\n }\n\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: result.error }),\n rawValue: value,\n };\n } catch (error) {\n return {\n success: false,\n error: TypeValidationError.wrap({ value, cause: error }),\n rawValue: value,\n };\n }\n}\n","import {\n JSONParseError,\n JSONValue,\n TypeValidationError,\n} from '@ai-sdk/provider';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { secureJsonParse } from './secure-json-parse';\nimport { safeValidateTypes, validateTypes } from './validate-types';\nimport { Validator } from './validator';\n\n/**\n * Parses a JSON string into an unknown object.\n *\n * @param text - The JSON string to parse.\n * @returns {JSONValue} - The parsed JSON object.\n */\nexport async function parseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<JSONValue>;\n/**\n * Parses a JSON string into a strongly-typed object using the provided schema.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns {Promise<T>} - The parsed object.\n */\nexport async function parseJSON<T>(options: {\n text: string;\n schema: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<T>;\nexport async function parseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<T> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return value;\n }\n\n return validateTypes<T>({ value, schema });\n } catch (error) {\n if (\n JSONParseError.isInstance(error) ||\n TypeValidationError.isInstance(error)\n ) {\n throw error;\n }\n\n throw new JSONParseError({ text, cause: error });\n }\n}\n\nexport type ParseResult<T> =\n | { success: true; value: T; rawValue: unknown }\n | {\n success: false;\n error: JSONParseError | TypeValidationError;\n rawValue: unknown;\n };\n\n/**\n * Safely parses a JSON string and returns the result as an object of type `unknown`.\n *\n * @param text - The JSON string to parse.\n * @returns {Promise<object>} Either an object with `success: true` and the parsed data, or an object with `success: false` and the error that occurred.\n */\nexport async function safeParseJSON(options: {\n text: string;\n schema?: undefined;\n}): Promise<ParseResult<JSONValue>>;\n/**\n * Safely parses a JSON string into a strongly-typed object, using a provided schema to validate the object.\n *\n * @template T - The type of the object to parse the JSON into.\n * @param {string} text - The JSON string to parse.\n * @param {Validator<T>} schema - The schema to use for parsing the JSON.\n * @returns An object with either a `success` flag and the parsed and typed data, or a `success` flag and an error object.\n */\nexport async function safeParseJSON<T>(options: {\n text: string;\n schema: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<ParseResult<T>>;\nexport async function safeParseJSON<T>({\n text,\n schema,\n}: {\n text: string;\n schema?: z4.core.$ZodType<T> | z3.Schema<T> | Validator<T>;\n}): Promise<ParseResult<T>> {\n try {\n const value = secureJsonParse(text);\n\n if (schema == null) {\n return { success: true, value: value as T, rawValue: value };\n }\n\n return await safeValidateTypes<T>({ value, schema });\n } catch (error) {\n return {\n success: false,\n error: JSONParseError.isInstance(error)\n ? error\n : new JSONParseError({ text, cause: error }),\n rawValue: undefined,\n };\n }\n}\n\nexport function isParsableJson(input: string): boolean {\n try {\n secureJsonParse(input);\n return true;\n } catch {\n return false;\n }\n}\n","import {\n EventSourceMessage,\n EventSourceParserStream,\n} from 'eventsource-parser/stream';\nimport { ZodType } from 'zod/v4';\nimport { ParseResult, safeParseJSON } from './parse-json';\n\n/**\n * Parses a JSON event stream into a stream of parsed JSON objects.\n */\nexport function parseJsonEventStream<T>({\n stream,\n schema,\n}: {\n stream: ReadableStream<Uint8Array>;\n schema: ZodType<T>;\n}): ReadableStream<ParseResult<T>> {\n return stream\n .pipeThrough(new TextDecoderStream())\n .pipeThrough(new EventSourceParserStream())\n .pipeThrough(\n new TransformStream<EventSourceMessage, ParseResult<T>>({\n async transform({ data }, controller) {\n // ignore the 'DONE' event that e.g. OpenAI sends:\n if (data === '[DONE]') {\n return;\n }\n\n controller.enqueue(await safeParseJSON({ text: data, schema }));\n },\n }),\n );\n}\n","import { APICallError } from '@ai-sdk/provider';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { FetchFunction } from './fetch-function';\nimport { handleFetchError } from './handle-fetch-error';\nimport { isAbortError } from './is-abort-error';\nimport { removeUndefinedEntries } from './remove-undefined-entries';\nimport { ResponseHandler } from './response-handler';\n\n// use function to allow for mocking in tests:\nconst getOriginalFetch = () => globalThis.fetch;\n\nexport const postJsonToApi = async <T>({\n url,\n headers,\n body,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: unknown;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: {\n content: JSON.stringify(body),\n values: body,\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postFormDataToApi = async <T>({\n url,\n headers,\n formData,\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n formData: FormData;\n failedResponseHandler: ResponseHandler<APICallError>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) =>\n postToApi({\n url,\n headers,\n body: {\n content: formData,\n values: Object.fromEntries((formData as any).entries()),\n },\n failedResponseHandler,\n successfulResponseHandler,\n abortSignal,\n fetch,\n });\n\nexport const postToApi = async <T>({\n url,\n headers = {},\n body,\n successfulResponseHandler,\n failedResponseHandler,\n abortSignal,\n fetch = getOriginalFetch(),\n}: {\n url: string;\n headers?: Record<string, string | undefined>;\n body: {\n content: string | FormData | Uint8Array;\n values: unknown;\n };\n failedResponseHandler: ResponseHandler<Error>;\n successfulResponseHandler: ResponseHandler<T>;\n abortSignal?: AbortSignal;\n fetch?: FetchFunction;\n}) => {\n try {\n const response = await fetch(url, {\n method: 'POST',\n headers: removeUndefinedEntries(headers),\n body: body.content,\n signal: abortSignal,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.ok) {\n let errorInformation: {\n value: Error;\n responseHeaders?: Record<string, string> | undefined;\n };\n\n try {\n errorInformation = await failedResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n\n throw new APICallError({\n message: 'Failed to process error response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n\n throw errorInformation.value;\n }\n\n try {\n return await successfulResponseHandler({\n response,\n url,\n requestBodyValues: body.values,\n });\n } catch (error) {\n if (error instanceof Error) {\n if (isAbortError(error) || APICallError.isInstance(error)) {\n throw error;\n }\n }\n\n throw new APICallError({\n message: 'Failed to process successful response',\n cause: error,\n statusCode: response.status,\n url,\n responseHeaders,\n requestBodyValues: body.values,\n });\n }\n } catch (error) {\n throw handleFetchError({ error, url, requestBodyValues: body.values });\n }\n};\n","import { APICallError, EmptyResponseBodyError } from '@ai-sdk/provider';\nimport { ZodType } from 'zod/v4';\nimport { extractResponseHeaders } from './extract-response-headers';\nimport { parseJSON, ParseResult, safeParseJSON } from './parse-json';\nimport { parseJsonEventStream } from './parse-json-event-stream';\n\nexport type ResponseHandler<RETURN_TYPE> = (options: {\n url: string;\n requestBodyValues: unknown;\n response: Response;\n}) => PromiseLike<{\n value: RETURN_TYPE;\n rawValue?: unknown;\n responseHeaders?: Record<string, string>;\n}>;\n\nexport const createJsonErrorResponseHandler =\n <T>({\n errorSchema,\n errorToMessage,\n isRetryable,\n }: {\n errorSchema: ZodType<T>;\n errorToMessage: (error: T) => string;\n isRetryable?: (response: Response, error?: T) => boolean;\n }): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n const responseHeaders = extractResponseHeaders(response);\n\n // Some providers return an empty response body for some errors:\n if (responseBody.trim() === '') {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n\n // resilient parsing in case the response is not JSON or does not match the schema:\n try {\n const parsedError = await parseJSON({\n text: responseBody,\n schema: errorSchema,\n });\n\n return {\n responseHeaders,\n value: new APICallError({\n message: errorToMessage(parsedError),\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n data: parsedError,\n isRetryable: isRetryable?.(response, parsedError),\n }),\n };\n } catch (parseError) {\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n isRetryable: isRetryable?.(response),\n }),\n };\n }\n };\n\nexport const createEventSourceResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n return {\n responseHeaders,\n value: parseJsonEventStream({\n stream: response.body,\n schema: chunkSchema,\n }),\n };\n };\n\nexport const createJsonStreamResponseHandler =\n <T>(\n chunkSchema: ZodType<T>,\n ): ResponseHandler<ReadableStream<ParseResult<T>>> =>\n async ({ response }: { response: Response }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (response.body == null) {\n throw new EmptyResponseBodyError({});\n }\n\n let buffer = '';\n\n return {\n responseHeaders,\n value: response.body.pipeThrough(new TextDecoderStream()).pipeThrough(\n new TransformStream<string, ParseResult<T>>({\n async transform(chunkText, controller) {\n if (chunkText.endsWith('\\n')) {\n controller.enqueue(\n await safeParseJSON({\n text: buffer + chunkText,\n schema: chunkSchema,\n }),\n );\n buffer = '';\n } else {\n buffer += chunkText;\n }\n },\n }),\n ),\n };\n };\n\nexport const createJsonResponseHandler =\n <T>(responseSchema: ZodType<T>): ResponseHandler<T> =>\n async ({ response, url, requestBodyValues }) => {\n const responseBody = await response.text();\n\n const parsedResult = await safeParseJSON({\n text: responseBody,\n schema: responseSchema,\n });\n\n const responseHeaders = extractResponseHeaders(response);\n\n if (!parsedResult.success) {\n throw new APICallError({\n message: 'Invalid JSON response',\n cause: parsedResult.error,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n url,\n requestBodyValues,\n });\n }\n\n return {\n responseHeaders,\n value: parsedResult.value,\n rawValue: parsedResult.rawValue,\n };\n };\n\nexport const createBinaryResponseHandler =\n (): ResponseHandler<Uint8Array> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n\n if (!response.body) {\n throw new APICallError({\n message: 'Response body is empty',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n });\n }\n\n try {\n const buffer = await response.arrayBuffer();\n return {\n responseHeaders,\n value: new Uint8Array(buffer),\n };\n } catch (error) {\n throw new APICallError({\n message: 'Failed to read response as array buffer',\n url,\n requestBodyValues,\n statusCode: response.status,\n responseHeaders,\n responseBody: undefined,\n cause: error,\n });\n }\n };\n\nexport const createStatusCodeErrorResponseHandler =\n (): ResponseHandler<APICallError> =>\n async ({ response, url, requestBodyValues }) => {\n const responseHeaders = extractResponseHeaders(response);\n const responseBody = await response.text();\n\n return {\n responseHeaders,\n value: new APICallError({\n message: response.statusText,\n url,\n requestBodyValues: requestBodyValues as Record<string, unknown>,\n statusCode: response.status,\n responseHeaders,\n responseBody,\n }),\n };\n };\n","// btoa and atob need to be invoked as a function call, not as a method call.\n// Otherwise CloudFlare will throw a\n// \"TypeError: Illegal invocation: function called with incorrect this reference\"\nconst { btoa, atob } = globalThis;\n\nexport function convertBase64ToUint8Array(base64String: string) {\n const base64Url = base64String.replace(/-/g, '+').replace(/_/g, '/');\n const latin1string = atob(base64Url);\n return Uint8Array.from(latin1string, byte => byte.codePointAt(0)!);\n}\n\nexport function convertUint8ArrayToBase64(array: Uint8Array): string {\n let latin1string = '';\n\n // Note: regular for loop to support older JavaScript versions that\n // do not support for..of on Uint8Array\n for (let i = 0; i < array.length; i++) {\n latin1string += String.fromCodePoint(array[i]);\n }\n\n return btoa(latin1string);\n}\n\nexport function convertToBase64(value: string | Uint8Array): string {\n return value instanceof Uint8Array ? convertUint8ArrayToBase64(value) : value;\n}\n","export function withoutTrailingSlash(url: string | undefined) {\n return url?.replace(/\\/$/, '');\n}\n","/**\n * Type guard to check if a value is defined and not null\n */\nexport function isDefinedOrNotNull<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n","export enum ReasoningFormat {\n Unknown = 'unknown',\n OpenAIResponsesV1 = 'openai-responses-v1',\n XAIResponsesV1 = 'xai-responses-v1',\n AnthropicClaudeV1 = 'anthropic-claude-v1',\n}\n\n// Anthropic Claude was the first reasoning that we're\n// passing back and forth\nexport const DEFAULT_REASONING_FORMAT = ReasoningFormat.AnthropicClaudeV1;\n","import { z } from 'zod/v4';\nimport { isDefinedOrNotNull } from '../utils/type-guards';\nimport { ReasoningFormat } from './format';\n\nexport enum ReasoningDetailType {\n Summary = 'reasoning.summary',\n Encrypted = 'reasoning.encrypted',\n Text = 'reasoning.text',\n}\n\nexport const CommonReasoningDetailSchema = z\n .object({\n id: z.string().nullish(),\n format: z.nativeEnum(ReasoningFormat).nullish(),\n index: z.number().optional(),\n })\n .passthrough();\n\nexport const ReasoningDetailSummarySchema = z\n .object({\n type: z.literal(ReasoningDetailType.Summary),\n summary: z.string(),\n })\n .extend(CommonReasoningDetailSchema.shape);\nexport type ReasoningDetailSummary = z.infer<\n typeof ReasoningDetailSummarySchema\n>;\n\nexport const ReasoningDetailEncryptedSchema = z\n .object({\n type: z.literal(ReasoningDetailType.Encrypted),\n data: z.string(),\n })\n .extend(CommonReasoningDetailSchema.shape);\n\nexport type ReasoningDetailEncrypted = z.infer<\n typeof ReasoningDetailEncryptedSchema\n>;\n\nexport const ReasoningDetailTextSchema = z\n .object({\n type: z.literal(ReasoningDetailType.Text),\n text: z.string().nullish(),\n signature: z.string().nullish(),\n })\n .extend(CommonReasoningDetailSchema.shape);\n\nexport type ReasoningDetailText = z.infer<typeof ReasoningDetailTextSchema>;\n\nexport const ReasoningDetailUnionSchema = z.union([\n ReasoningDetailSummarySchema,\n ReasoningDetailEncryptedSchema,\n ReasoningDetailTextSchema,\n]);\n\nexport type ReasoningDetailUnion = z.infer<typeof ReasoningDetailUnionSchema>;\n\nconst ReasoningDetailsWithUnknownSchema = z.union([\n ReasoningDetailUnionSchema,\n z.unknown().transform(() => null),\n]);\n\nexport const ReasoningDetailArraySchema = z\n .array(ReasoningDetailsWithUnknownSchema)\n .transform((d) => d.filter((d): d is ReasoningDetailUnion => !!d));\n\nexport const OutputUnionToReasoningDetailsSchema = z.union([\n z\n .object({\n delta: z.object({\n reasoning_details: z.array(ReasoningDetailsWithUnknownSchema),\n }),\n })\n .transform((data) =>\n data.delta.reasoning_details.filter(isDefinedOrNotNull),\n ),\n z\n .object({\n message: z.object({\n reasoning_details: z.array(ReasoningDetailsWithUnknownSchema),\n }),\n })\n .transform((data) =>\n data.message.reasoning_details.filter(isDefinedOrNotNull),\n ),\n z\n .object({\n text: z.string(),\n reasoning_details: z.array(ReasoningDetailsWithUnknownSchema),\n })\n .transform((data) => data.reasoning_details.filter(isDefinedOrNotNull)),\n]);\n","import type { ChatErrorError } from '@openrouter/sdk/models';\n\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\n// Use SDK's ChatErrorError type but wrap in response schema\n// SDK type: { code: string | number | null; message: string; param?: string | null; type?: string | null }\nexport const OpenRouterErrorResponseSchema = z\n .object({\n error: z\n .object({\n code: z\n .union([z.string(), z.number()])\n .nullable()\n .optional()\n .default(null),\n message: z.string(),\n type: z.string().nullable().optional().default(null),\n param: z.any().nullable().optional().default(null),\n })\n .passthrough() satisfies z.ZodType<\n Omit<ChatErrorError, 'code'> & { code: string | number | null }\n >,\n })\n .passthrough();\n\nexport type OpenRouterErrorData = z.infer<typeof OpenRouterErrorResponseSchema>;\n\nexport const openrouterFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: OpenRouterErrorResponseSchema,\n errorToMessage: (data: OpenRouterErrorData) => data.error.message,\n});\n","import { z } from 'zod/v4';\nimport { ReasoningDetailUnionSchema } from './reasoning-details';\n\n/**\n * Schema for OpenRouter provider metadata attached to responses\n */\nexport const OpenRouterProviderMetadataSchema = z\n .object({\n provider: z.string(),\n reasoning_details: z.array(ReasoningDetailUnionSchema).optional(),\n usage: z\n .object({\n promptTokens: z.number(),\n promptTokensDetails: z\n .object({\n cachedTokens: z.number(),\n })\n .passthrough()\n .optional(),\n completionTokens: z.number(),\n completionTokensDetails: z\n .object({\n reasoningTokens: z.number(),\n })\n .passthrough()\n .optional(),\n totalTokens: z.number(),\n cost: z.number().optional(),\n costDetails: z\n .object({\n upstreamInferenceCost: z.number(),\n })\n .passthrough(),\n })\n .passthrough(),\n })\n .passthrough();\n\nexport type OpenRouterProviderMetadata = z.infer<\n typeof OpenRouterProviderMetadataSchema\n>;\n\n/**\n * Schema for parsing provider options that may contain reasoning_details\n */\nexport const OpenRouterProviderOptionsSchema = z\n .object({\n openrouter: z\n .object({\n reasoning_details: z.array(ReasoningDetailUnionSchema).optional(),\n })\n .optional(),\n })\n .optional();\n","import type { LanguageModelV2FinishReason } from '@ai-sdk/provider';\n\nexport function mapOpenRouterFinishReason(\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","export function isUrl({\n url,\n protocols,\n}: {\n url: string | URL;\n protocols: Set<`${string}:`>;\n}): boolean {\n try {\n const urlObj = new URL(url);\n // Cast to the literal string due to Set inferred input type\n return protocols.has(urlObj.protocol as `${string}:`);\n } catch (_) {\n return false;\n }\n}\n","import type { LanguageModelV2FilePart } from '@ai-sdk/provider';\n\nimport { convertUint8ArrayToBase64 } from '@ai-sdk/provider-utils';\nimport { isUrl } from './is-url';\n\nexport function getFileUrl({\n part,\n defaultMediaType,\n}: {\n part: LanguageModelV2FilePart;\n defaultMediaType: string;\n}) {\n if (part.data instanceof Uint8Array) {\n const base64 = convertUint8ArrayToBase64(part.data);\n return `data:${part.mediaType ?? defaultMediaType};base64,${base64}`;\n }\n\n const stringUrl = part.data.toString();\n\n if (\n isUrl({\n url: stringUrl,\n protocols: new Set(['http:', 'https:']),\n })\n ) {\n return stringUrl;\n }\n\n return stringUrl.startsWith('data:')\n ? stringUrl\n : `data:${part.mediaType ?? defaultMediaType};base64,${stringUrl}`;\n}\n\nexport function getMediaType(\n dataUrl: string,\n defaultMediaType: string,\n): string {\n const match = dataUrl.match(/^data:([^;]+)/);\n return match ? (match[1] ?? defaultMediaType) : defaultMediaType;\n}\n\nexport function getBase64FromDataUrl(dataUrl: string): string {\n const match = dataUrl.match(/^data:[^;]*;base64,(.+)$/);\n return match ? match[1]! : dataUrl;\n}\n","import type {\n LanguageModelV2FilePart,\n LanguageModelV2Prompt,\n LanguageModelV2TextPart,\n LanguageModelV2ToolResultPart,\n SharedV2ProviderMetadata,\n} from '@ai-sdk/provider';\nimport type {\n ChatCompletionContentPart,\n OpenRouterChatCompletionsInput,\n} from '../types/openrouter-chat-completions-input';\n\nimport { OpenRouterProviderOptionsSchema } from '../schemas/provider-metadata';\nimport { getFileUrl } from './file-url-utils';\nimport { isUrl } from './is-url';\n\n// Type for OpenRouter Cache Control following Anthropic's pattern\nexport type OpenRouterCacheControl = { type: 'ephemeral' };\n\nfunction getCacheControl(\n providerMetadata: SharedV2ProviderMetadata | undefined,\n): OpenRouterCacheControl | undefined {\n const anthropic = providerMetadata?.anthropic;\n const openrouter = providerMetadata?.openrouter;\n\n // Allow both cacheControl and cache_control:\n return (openrouter?.cacheControl ??\n openrouter?.cache_control ??\n anthropic?.cacheControl ??\n anthropic?.cache_control) as OpenRouterCacheControl | undefined;\n}\n\nexport function convertToOpenRouterChatMessages(\n prompt: LanguageModelV2Prompt,\n): OpenRouterChatCompletionsInput {\n const messages: OpenRouterChatCompletionsInput = [];\n for (const { role, content, providerOptions } of prompt) {\n switch (role) {\n case 'system': {\n messages.push({\n role: 'system',\n content,\n cache_control: getCacheControl(providerOptions),\n });\n break;\n }\n\n case 'user': {\n if (content.length === 1 && content[0]?.type === 'text') {\n const cacheControl =\n getCacheControl(providerOptions) ??\n getCacheControl(content[0].providerOptions);\n const contentWithCacheControl: string | ChatCompletionContentPart[] =\n cacheControl\n ? [\n {\n type: 'text',\n text: content[0].text,\n cache_control: cacheControl,\n },\n ]\n : content[0].text;\n messages.push({\n role: 'user',\n content: contentWithCacheControl,\n });\n break;\n }\n\n // Get message level cache control\n const messageCacheControl = getCacheControl(providerOptions);\n const contentParts: ChatCompletionContentPart[] = content.map(\n (part: LanguageModelV2TextPart | LanguageModelV2FilePart) => {\n const cacheControl =\n getCacheControl(part.providerOptions) ?? messageCacheControl;\n\n switch (part.type) {\n case 'text':\n return {\n type: 'text' as const,\n text: part.text,\n // For text parts, only use part-specific cache control\n cache_control: cacheControl,\n };\n case 'file': {\n if (part.mediaType?.startsWith('image/')) {\n const url = getFileUrl({\n part,\n defaultMediaType: 'image/jpeg',\n });\n return {\n type: 'image_url' as const,\n image_url: {\n url,\n },\n // For image parts, use part-specific or message-level cache control\n cache_control: cacheControl,\n };\n }\n\n const fileName = String(\n part.providerOptions?.openrouter?.filename ??\n part.filename ??\n '',\n );\n\n const fileData = getFileUrl({\n part,\n defaultMediaType: 'application/pdf',\n });\n\n if (\n isUrl({\n url: fileData,\n protocols: new Set(['http:', 'https:']),\n })\n ) {\n return {\n type: 'file' as const,\n file: {\n filename: fileName,\n file_data: fileData,\n },\n } satisfies ChatCompletionContentPart;\n }\n\n return {\n type: 'file' as const,\n file: {\n filename: fileName,\n file_data: fileData,\n },\n cache_control: cacheControl,\n } satisfies ChatCompletionContentPart;\n }\n default: {\n return {\n type: 'text' as const,\n text: '',\n cache_control: cacheControl,\n };\n }\n }\n },\n );\n\n // For multi-part messages, don't add cache_control at the root level\n messages.push({\n role: 'user',\n content: contentParts,\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 switch (part.type) {\n case 'text': {\n text += part.text;\n break;\n }\n case 'tool-call': {\n toolCalls.push({\n id: part.toolCallId,\n type: 'function',\n function: {\n name: part.toolName,\n arguments: JSON.stringify(part.input),\n },\n });\n break;\n }\n case 'reasoning': {\n reasoning += part.text;\n break;\n }\n\n case 'file':\n break;\n default: {\n break;\n }\n }\n }\n\n // Check if we have preserved reasoning_details from the original OpenRouter response\n // OpenRouter requires reasoning_details to be passed back unmodified for multi-turn conversations\n // If we don't have the preserved version (AI SDK doesn't pass providerOptions back),\n // we should NOT send reconstructed reasoning_details as they won't match the original\n // Instead, only use the legacy reasoning field\n const parsedProviderOptions =\n OpenRouterProviderOptionsSchema.safeParse(providerOptions);\n const preservedReasoningDetails = parsedProviderOptions.success\n ? parsedProviderOptions.data?.openrouter?.reasoning_details\n : undefined;\n\n messages.push({\n role: 'assistant',\n content: text,\n tool_calls: toolCalls.length > 0 ? toolCalls : undefined,\n reasoning: reasoning || undefined,\n // Only include reasoning_details if we have the preserved original version\n reasoning_details:\n preservedReasoningDetails &&\n Array.isArray(preservedReasoningDetails) &&\n preservedReasoningDetails.length > 0\n ? preservedReasoningDetails\n : undefined,\n cache_control: getCacheControl(providerOptions),\n });\n\n break;\n }\n\n case 'tool': {\n for (const toolResponse of content) {\n const content = getToolResultContent(toolResponse);\n\n messages.push({\n role: 'tool',\n tool_call_id: toolResponse.toolCallId,\n content,\n cache_control:\n getCacheControl(providerOptions) ??\n getCacheControl(toolResponse.providerOptions),\n });\n }\n break;\n }\n\n default: {\n break;\n }\n }\n }\n\n return messages;\n}\n\nfunction getToolResultContent(input: LanguageModelV2ToolResultPart): string {\n return input.output.type === 'text'\n ? input.output.value\n : JSON.stringify(input.output.value);\n}\n","import type { LanguageModelV2ToolChoice } from '@ai-sdk/provider';\n\nimport { InvalidArgumentError } from '@ai-sdk/provider';\nimport { z } from 'zod/v4';\n\nconst ChatCompletionToolChoiceSchema = z.union([\n z.literal('auto'),\n z.literal('none'),\n z.literal('required'),\n z.object({\n type: z.literal('function'),\n function: z.object({\n name: z.string(),\n }),\n }),\n]);\n\ntype ChatCompletionToolChoice = z.infer<typeof ChatCompletionToolChoiceSchema>;\n\nexport function getChatCompletionToolChoice(\n toolChoice: LanguageModelV2ToolChoice,\n): ChatCompletionToolChoice {\n switch (toolChoice.type) {\n case 'auto':\n case 'none':\n case 'required':\n return toolChoice.type;\n case 'tool': {\n return {\n type: 'function',\n function: { name: toolChoice.toolName },\n };\n }\n default: {\n toolChoice satisfies never;\n throw new InvalidArgumentError({\n argument: 'toolChoice',\n message: `Invalid tool choice type: ${JSON.stringify(toolChoice)}`,\n });\n }\n }\n}\n","import { z } from 'zod/v4';\n\nconst ImageResponseSchema = z\n .object({\n type: z.literal('image_url'),\n image_url: z\n .object({\n url: z.string(),\n })\n .passthrough(),\n })\n .passthrough();\n\nexport type ImageResponse = z.infer<typeof ImageResponseSchema>;\n\nconst ImageResponseWithUnknownSchema = z.union([\n ImageResponseSchema,\n z.unknown().transform(() => null),\n]);\n\nexport const ImageResponseArraySchema = z\n .array(ImageResponseWithUnknownSchema)\n .transform((d) => d.filter((d): d is ImageResponse => !!d));\n","import { z } from 'zod/v4';\nimport { OpenRouterErrorResponseSchema } from '../schemas/error-response';\nimport { ImageResponseArraySchema } from '../schemas/image';\nimport { ReasoningDetailArraySchema } from '../schemas/reasoning-details';\n\nconst OpenRouterChatCompletionBaseResponseSchema = z\n .object({\n id: z.string().optional(),\n model: z.string().optional(),\n provider: z.string().optional(),\n usage: z\n .object({\n prompt_tokens: z.number(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n completion_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n total_tokens: z.number(),\n cost: z.number().optional(),\n cost_details: z\n .object({\n upstream_inference_cost: z.number().nullish(),\n })\n .passthrough()\n .nullish(),\n })\n .passthrough()\n .nullish(),\n })\n .passthrough();\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 OpenRouterNonStreamChatCompletionResponseSchema = z.union([\n // Success response with choices\n OpenRouterChatCompletionBaseResponseSchema.extend({\n choices: z.array(\n z\n .object({\n message: z\n .object({\n role: z.literal('assistant'),\n content: z.string().nullable().optional(),\n reasoning: z.string().nullable().optional(),\n reasoning_details: ReasoningDetailArraySchema.nullish(),\n images: ImageResponseArraySchema.nullish(),\n\n tool_calls: z\n .array(\n z\n .object({\n id: z.string().optional().nullable(),\n type: z.literal('function'),\n function: z\n .object({\n name: z.string(),\n arguments: z.string(),\n })\n .passthrough(),\n })\n .passthrough(),\n )\n .optional(),\n\n annotations: z\n .array(\n z.union([\n // URL citation from web search\n z\n .object({\n type: z.literal('url_citation'),\n url_citation: z\n .object({\n end_index: z.number(),\n start_index: z.number(),\n title: z.string(),\n url: z.string(),\n content: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (old format)\n z\n .object({\n type: z.literal('file_annotation'),\n file_annotation: z\n .object({\n file_id: z.string(),\n quote: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (new format)\n z\n .object({\n type: z.literal('file'),\n file: z\n .object({\n hash: z.string(),\n name: z.string(),\n content: z\n .array(\n z\n .object({\n type: z.string(),\n text: z.string(),\n })\n .passthrough(),\n )\n .optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n ]),\n )\n .nullish(),\n })\n .passthrough(),\n index: z.number().nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough(),\n )\n .nullable(),\n })\n .passthrough()\n .nullable()\n .optional(),\n finish_reason: z.string().optional().nullable(),\n })\n .passthrough(),\n ),\n }),\n // Error response (HTTP 200 with error payload)\n OpenRouterErrorResponseSchema.extend({\n user_id: z.string().optional(),\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 OpenRouterStreamChatCompletionChunkSchema = z.union([\n OpenRouterChatCompletionBaseResponseSchema.extend({\n choices: z.array(\n z\n .object({\n delta: z\n .object({\n role: z.enum(['assistant']).optional(),\n content: z.string().nullish(),\n reasoning: z.string().nullish().optional(),\n reasoning_details: ReasoningDetailArraySchema.nullish(),\n images: ImageResponseArraySchema.nullish(),\n tool_calls: z\n .array(\n z\n .object({\n index: z.number().nullish(),\n id: z.string().nullish(),\n type: z.literal('function').optional(),\n function: z\n .object({\n name: z.string().nullish(),\n arguments: z.string().nullish(),\n })\n .passthrough(),\n })\n .passthrough(),\n )\n .nullish(),\n\n annotations: z\n .array(\n z.union([\n // URL citation from web search\n z\n .object({\n type: z.literal('url_citation'),\n url_citation: z\n .object({\n end_index: z.number(),\n start_index: z.number(),\n title: z.string(),\n url: z.string(),\n content: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (old format)\n z\n .object({\n type: z.literal('file_annotation'),\n file_annotation: z\n .object({\n file_id: z.string(),\n quote: z.string().optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n // File annotation from FileParserPlugin (new format)\n z\n .object({\n type: z.literal('file'),\n file: z\n .object({\n hash: z.string(),\n name: z.string(),\n content: z\n .array(\n z\n .object({\n type: z.string(),\n text: z.string(),\n })\n .passthrough(),\n )\n .optional(),\n })\n .passthrough(),\n })\n .passthrough(),\n ]),\n )\n .nullish(),\n })\n .passthrough()\n .nullish(),\n logprobs: z\n .object({\n content: z\n .array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n top_logprobs: z.array(\n z\n .object({\n token: z.string(),\n logprob: z.number(),\n })\n .passthrough(),\n ),\n })\n .passthrough(),\n )\n .nullable(),\n })\n .passthrough()\n .nullish(),\n finish_reason: z.string().nullable().optional(),\n index: z.number().nullish(),\n })\n .passthrough(),\n ),\n }),\n OpenRouterErrorResponseSchema,\n]);\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2CallWarning,\n LanguageModelV2Content,\n LanguageModelV2FinishReason,\n LanguageModelV2ResponseMetadata,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n SharedV2Headers,\n} from '@ai-sdk/provider';\nimport type { ParseResult } from '@ai-sdk/provider-utils';\nimport type { FinishReason } from 'ai';\nimport type { z } from 'zod/v4';\nimport type { ReasoningDetailUnion } from '@/src/schemas/reasoning-details';\nimport type { OpenRouterUsageAccounting } from '@/src/types/index';\nimport type {\n OpenRouterChatModelId,\n OpenRouterChatSettings,\n} from '../types/openrouter-chat-settings';\n\nimport {\n APICallError,\n InvalidResponseDataError,\n NoContentGeneratedError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n isParsableJson,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { ReasoningDetailType } from '@/src/schemas/reasoning-details';\nimport { openrouterFailedResponseHandler } from '../schemas/error-response';\nimport { OpenRouterProviderMetadataSchema } from '../schemas/provider-metadata';\nimport { mapOpenRouterFinishReason } from '../utils/map-finish-reason';\nimport { convertToOpenRouterChatMessages } from './convert-to-openrouter-chat-messages';\nimport { getBase64FromDataUrl, getMediaType } from './file-url-utils';\nimport { getChatCompletionToolChoice } from './get-tool-choice';\nimport {\n OpenRouterNonStreamChatCompletionResponseSchema,\n OpenRouterStreamChatCompletionChunkSchema,\n} from './schemas';\n\ntype OpenRouterChatConfig = {\n provider: string;\n compatibility: 'strict' | 'compatible';\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: typeof fetch;\n extraBody?: Record<string, unknown>;\n};\n\nexport class OpenRouterChatLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly provider = 'openrouter';\n readonly defaultObjectGenerationMode = 'tool' as const;\n\n readonly modelId: OpenRouterChatModelId;\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [\n /^data:image\\/[a-zA-Z]+;base64,/,\n /^https?:\\/\\/.+\\.(jpg|jpeg|png|gif|webp)$/i,\n ],\n // 'text/*': [/^data:text\\//, /^https?:\\/\\/.+$/],\n 'application/*': [/^data:application\\//, /^https?:\\/\\/.+$/],\n };\n readonly settings: OpenRouterChatSettings;\n\n private readonly config: OpenRouterChatConfig;\n\n constructor(\n modelId: OpenRouterChatModelId,\n settings: OpenRouterChatSettings,\n config: OpenRouterChatConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n stopSequences,\n responseFormat,\n topK,\n tools,\n toolChoice,\n }: LanguageModelV2CallOptions) {\n const baseArgs = {\n // model id:\n model: this.modelId,\n models: this.settings.models,\n\n // model specific settings:\n logit_bias: this.settings.logitBias,\n logprobs:\n this.settings.logprobs === true ||\n typeof this.settings.logprobs === 'number'\n ? true\n : undefined,\n top_logprobs:\n typeof this.settings.logprobs === 'number'\n ? this.settings.logprobs\n : typeof this.settings.logprobs === 'boolean'\n ? this.settings.logprobs\n ? 0\n : undefined\n : undefined,\n user: this.settings.user,\n parallel_tool_calls: this.settings.parallelToolCalls,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n stop: stopSequences,\n response_format: responseFormat,\n top_k: topK,\n\n // messages:\n messages: convertToOpenRouterChatMessages(prompt),\n\n // OpenRouter specific settings:\n include_reasoning: this.settings.includeReasoning,\n reasoning: this.settings.reasoning,\n usage: this.settings.usage,\n\n // Web search settings:\n plugins: this.settings.plugins,\n web_search_options: this.settings.web_search_options,\n // Provider routing settings:\n provider: this.settings.provider,\n\n // extra body:\n ...this.config.extraBody,\n ...this.settings.extraBody,\n };\n\n if (responseFormat?.type === 'json' && responseFormat.schema != null) {\n return {\n ...baseArgs,\n response_format: {\n type: 'json_schema',\n json_schema: {\n schema: responseFormat.schema,\n strict: true,\n name: responseFormat.name ?? 'response',\n ...(responseFormat.description && {\n description: responseFormat.description,\n }),\n },\n },\n };\n }\n\n if (tools && tools.length > 0) {\n // TODO: support built-in tools\n const mappedTools = tools\n .filter((tool) => tool.type === 'function')\n .map((tool) => ({\n type: 'function' as const,\n function: {\n name: tool.name,\n description: tool.description,\n parameters: tool.inputSchema,\n },\n }));\n\n return {\n ...baseArgs,\n tools: mappedTools,\n tool_choice: toolChoice\n ? getChatCompletionToolChoice(toolChoice)\n : undefined,\n };\n }\n\n return baseArgs;\n }\n\n async doGenerate(options: LanguageModelV2CallOptions): Promise<{\n content: Array<LanguageModelV2Content>;\n finishReason: LanguageModelV2FinishReason;\n usage: LanguageModelV2Usage;\n warnings: Array<LanguageModelV2CallWarning>;\n providerMetadata?: {\n openrouter: {\n provider: string;\n reasoning_details?: ReasoningDetailUnion[];\n usage: OpenRouterUsageAccounting;\n };\n };\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n }> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: responseValue, responseHeaders } = 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: openrouterFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n OpenRouterNonStreamChatCompletionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n // Check if response is an error (HTTP 200 with error payload)\n if ('error' in responseValue) {\n const errorData = responseValue.error as {\n message: string;\n code?: string;\n };\n throw new APICallError({\n message: errorData.message,\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n requestBodyValues: args,\n statusCode: 200,\n responseHeaders,\n data: errorData,\n });\n }\n\n // Now TypeScript knows this is the success response\n const response = responseValue;\n\n const choice = response.choices[0];\n\n if (!choice) {\n throw new NoContentGeneratedError({\n message: 'No choice in response',\n });\n }\n\n // Extract detailed usage information\n const usageInfo: LanguageModelV2Usage = response.usage\n ? {\n inputTokens: response.usage.prompt_tokens ?? 0,\n outputTokens: response.usage.completion_tokens ?? 0,\n totalTokens:\n (response.usage.prompt_tokens ?? 0) +\n (response.usage.completion_tokens ?? 0),\n reasoningTokens:\n response.usage.completion_tokens_details?.reasoning_tokens ?? 0,\n cachedInputTokens:\n response.usage.prompt_tokens_details?.cached_tokens ?? 0,\n }\n : {\n inputTokens: 0,\n outputTokens: 0,\n totalTokens: 0,\n reasoningTokens: 0,\n cachedInputTokens: 0,\n };\n\n const reasoningDetails = choice.message.reasoning_details ?? [];\n\n const reasoning: Array<LanguageModelV2Content> =\n reasoningDetails.length > 0\n ? reasoningDetails\n .map((detail) => {\n switch (detail.type) {\n case ReasoningDetailType.Text: {\n if (detail.text) {\n return {\n type: 'reasoning' as const,\n text: detail.text,\n };\n }\n break;\n }\n case ReasoningDetailType.Summary: {\n if (detail.summary) {\n return {\n type: 'reasoning' as const,\n text: detail.summary,\n };\n }\n break;\n }\n case ReasoningDetailType.Encrypted: {\n // For encrypted reasoning, we include a redacted placeholder\n if (detail.data) {\n return {\n type: 'reasoning' as const,\n text: '[REDACTED]',\n };\n }\n break;\n }\n default: {\n detail satisfies never;\n }\n }\n return null;\n })\n .filter((p) => p !== null)\n : choice.message.reasoning\n ? [\n {\n type: 'reasoning' as const,\n text: choice.message.reasoning,\n },\n ]\n : [];\n\n const content: Array<LanguageModelV2Content> = [];\n\n // Add reasoning content first\n content.push(...reasoning);\n\n if (choice.message.content) {\n content.push({\n type: 'text' as const,\n text: choice.message.content,\n });\n }\n\n if (choice.message.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\n if (choice.message.images) {\n for (const image of choice.message.images) {\n content.push({\n type: 'file' as const,\n mediaType: getMediaType(image.image_url.url, 'image/jpeg'),\n data: getBase64FromDataUrl(image.image_url.url),\n });\n }\n }\n\n if (choice.message.annotations) {\n for (const annotation of choice.message.annotations) {\n if (annotation.type === 'url_citation') {\n content.push({\n type: 'source' as const,\n sourceType: 'url' as const,\n id: annotation.url_citation.url,\n url: annotation.url_citation.url,\n title: annotation.url_citation.title,\n providerMetadata: {\n openrouter: {\n content: annotation.url_citation.content || '',\n },\n },\n });\n }\n }\n }\n\n return {\n content,\n finishReason: mapOpenRouterFinishReason(choice.finish_reason),\n usage: usageInfo,\n warnings: [],\n providerMetadata: {\n openrouter: OpenRouterProviderMetadataSchema.parse({\n provider: response.provider ?? '',\n reasoning_details: choice.message.reasoning_details ?? [],\n usage: {\n promptTokens: usageInfo.inputTokens ?? 0,\n completionTokens: usageInfo.outputTokens ?? 0,\n totalTokens: usageInfo.totalTokens ?? 0,\n cost: response.usage?.cost,\n promptTokensDetails: {\n cachedTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n },\n completionTokensDetails: {\n reasoningTokens:\n response.usage?.completion_tokens_details?.reasoning_tokens ??\n 0,\n },\n costDetails: {\n upstreamInferenceCost:\n response.usage?.cost_details?.upstream_inference_cost ?? 0,\n },\n },\n }),\n },\n request: { body: args },\n response: {\n id: response.id,\n modelId: response.model,\n headers: responseHeaders,\n },\n };\n }\n\n async doStream(options: LanguageModelV2CallOptions): Promise<{\n stream: ReadableStream<LanguageModelV2StreamPart>;\n warnings: Array<LanguageModelV2CallWarning>;\n request?: { body?: unknown };\n response?: LanguageModelV2ResponseMetadata & {\n headers?: SharedV2Headers;\n body?: unknown;\n };\n }> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: response, responseHeaders } = await postJsonToApi({\n url: this.config.url({\n path: '/chat/completions',\n modelId: this.modelId,\n }),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: {\n ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options:\n this.config.compatibility === 'strict'\n ? {\n include_usage: true,\n // If user has requested usage accounting, make sure we get it in the stream\n ...(this.settings.usage?.include\n ? { include_usage: true }\n : {}),\n }\n : undefined,\n },\n failedResponseHandler: openrouterFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n OpenRouterStreamChatCompletionChunkSchema,\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 inputStarted: boolean;\n sent: boolean;\n }> = [];\n\n let finishReason: FinishReason = 'other';\n const usage: LanguageModelV2Usage = {\n inputTokens: Number.NaN,\n outputTokens: Number.NaN,\n totalTokens: Number.NaN,\n reasoningTokens: Number.NaN,\n cachedInputTokens: Number.NaN,\n };\n\n // Track provider-specific usage information\n const openrouterUsage: Partial<OpenRouterUsageAccounting> = {};\n\n // Track reasoning details to preserve for multi-turn conversations\n const accumulatedReasoningDetails: ReasoningDetailUnion[] = [];\n\n let textStarted = false;\n let reasoningStarted = false;\n let textId: string | undefined;\n let reasoningId: string | undefined;\n let openrouterResponseId: string | undefined;\n let provider: string | undefined;\n\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<\n z.infer<typeof OpenRouterStreamChatCompletionChunkSchema>\n >,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (value.provider) {\n provider = value.provider;\n }\n\n if (value.id) {\n openrouterResponseId = value.id;\n controller.enqueue({\n type: 'response-metadata',\n id: value.id,\n });\n }\n\n if (value.model) {\n controller.enqueue({\n type: 'response-metadata',\n modelId: value.model,\n });\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens =\n value.usage.prompt_tokens + value.usage.completion_tokens;\n\n // Collect OpenRouter specific usage information\n openrouterUsage.promptTokens = value.usage.prompt_tokens;\n\n if (value.usage.prompt_tokens_details) {\n const cachedInputTokens =\n value.usage.prompt_tokens_details.cached_tokens ?? 0;\n\n usage.cachedInputTokens = cachedInputTokens;\n openrouterUsage.promptTokensDetails = {\n cachedTokens: cachedInputTokens,\n };\n }\n\n openrouterUsage.completionTokens = value.usage.completion_tokens;\n if (value.usage.completion_tokens_details) {\n const reasoningTokens =\n value.usage.completion_tokens_details.reasoning_tokens ?? 0;\n\n usage.reasoningTokens = reasoningTokens;\n openrouterUsage.completionTokensDetails = {\n reasoningTokens,\n };\n }\n\n openrouterUsage.cost = value.usage.cost;\n openrouterUsage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenRouterFinishReason(choice.finish_reason);\n }\n\n if (choice?.delta == null) {\n return;\n }\n\n const delta = choice.delta;\n\n const emitReasoningChunk = (chunkText: string) => {\n if (!reasoningStarted) {\n reasoningId = openrouterResponseId || generateId();\n controller.enqueue({\n type: 'reasoning-start',\n id: reasoningId,\n });\n reasoningStarted = true;\n }\n controller.enqueue({\n type: 'reasoning-delta',\n delta: chunkText,\n id: reasoningId || generateId(),\n });\n };\n\n if (delta.reasoning_details && delta.reasoning_details.length > 0) {\n // Accumulate reasoning_details to preserve for multi-turn conversations\n accumulatedReasoningDetails.push(...delta.reasoning_details);\n\n for (const detail of delta.reasoning_details) {\n switch (detail.type) {\n case ReasoningDetailType.Text: {\n if (detail.text) {\n emitReasoningChunk(detail.text);\n }\n break;\n }\n case ReasoningDetailType.Encrypted: {\n if (detail.data) {\n emitReasoningChunk('[REDACTED]');\n }\n break;\n }\n case ReasoningDetailType.Summary: {\n if (detail.summary) {\n emitReasoningChunk(detail.summary);\n }\n break;\n }\n default: {\n detail satisfies never;\n break;\n }\n }\n }\n } else if (delta.reasoning) {\n emitReasoningChunk(delta.reasoning);\n }\n\n if (delta.content) {\n // If reasoning was previously active and now we're starting text content,\n // we should end the reasoning first to maintain proper order\n if (reasoningStarted && !textStarted) {\n controller.enqueue({\n type: 'reasoning-end',\n id: reasoningId || generateId(),\n });\n reasoningStarted = false; // Mark as ended so we don't end it again in flush\n }\n\n if (!textStarted) {\n textId = openrouterResponseId || generateId();\n controller.enqueue({\n type: 'text-start',\n id: textId,\n });\n textStarted = true;\n }\n controller.enqueue({\n type: 'text-delta',\n delta: delta.content,\n id: textId || generateId(),\n });\n }\n\n if (delta.annotations) {\n for (const annotation of delta.annotations) {\n if (annotation.type === 'url_citation') {\n controller.enqueue({\n type: 'source',\n sourceType: 'url' as const,\n id: annotation.url_citation.url,\n url: annotation.url_citation.url,\n title: annotation.url_citation.title,\n providerMetadata: {\n openrouter: {\n content: annotation.url_citation.content || '',\n },\n },\n });\n }\n }\n }\n\n if (delta.tool_calls != null) {\n for (const toolCallDelta of delta.tool_calls) {\n const index = toolCallDelta.index ?? toolCalls.length - 1;\n\n // Tool call start. OpenRouter returns all information except the arguments in the first chunk.\n if (toolCalls[index] == null) {\n if (toolCallDelta.type !== 'function') {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function' type.`,\n });\n }\n\n if (toolCallDelta.id == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'id' to be a string.`,\n });\n }\n\n if (toolCallDelta.function?.name == null) {\n throw new InvalidResponseDataError({\n data: toolCallDelta,\n message: `Expected 'function.name' to be a string.`,\n });\n }\n\n toolCalls[index] = {\n id: toolCallDelta.id,\n type: 'function',\n function: {\n name: toolCallDelta.function.name,\n arguments: toolCallDelta.function.arguments ?? '',\n },\n inputStarted: false,\n sent: false,\n };\n\n const toolCall = toolCalls[index];\n\n if (toolCall == null) {\n throw new InvalidResponseDataError({\n data: { index, toolCallsLength: toolCalls.length },\n message: `Tool call at index ${index} is missing after creation.`,\n });\n }\n\n // check if tool call is complete (some providers send the full tool call in one chunk)\n if (\n toolCall.function?.name != null &&\n toolCall.function?.arguments != null &&\n isParsableJson(toolCall.function.arguments)\n ) {\n toolCall.inputStarted = true;\n\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\n });\n\n // send delta\n controller.enqueue({\n type: 'tool-input-delta',\n id: toolCall.id,\n delta: toolCall.function.arguments,\n });\n\n controller.enqueue({\n type: 'tool-input-end',\n id: toolCall.id,\n });\n\n // send tool call\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id,\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n\n toolCall.sent = true;\n }\n\n continue;\n }\n\n // existing tool call, merge\n const toolCall = toolCalls[index];\n\n if (toolCall == null) {\n throw new InvalidResponseDataError({\n data: {\n index,\n toolCallsLength: toolCalls.length,\n toolCallDelta,\n },\n message: `Tool call at index ${index} is missing during merge.`,\n });\n }\n\n if (!toolCall.inputStarted) {\n toolCall.inputStarted = true;\n controller.enqueue({\n type: 'tool-input-start',\n id: toolCall.id,\n toolName: toolCall.function.name,\n });\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-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n input: toolCall.function.arguments,\n });\n\n toolCall.sent = true;\n }\n }\n }\n\n if (delta.images != null) {\n for (const image of delta.images) {\n controller.enqueue({\n type: 'file',\n mediaType: getMediaType(image.image_url.url, 'image/jpeg'),\n data: getBase64FromDataUrl(image.image_url.url),\n });\n }\n }\n },\n\n flush(controller) {\n // Forward any unsent tool calls if finish reason is 'tool-calls'\n if (finishReason === 'tool-calls') {\n for (const toolCall of toolCalls) {\n if (toolCall && !toolCall.sent) {\n controller.enqueue({\n type: 'tool-call',\n toolCallId: toolCall.id ?? generateId(),\n toolName: toolCall.function.name,\n // Coerce invalid arguments to an empty JSON object\n input: isParsableJson(toolCall.function.arguments)\n ? toolCall.function.arguments\n : '{}',\n });\n toolCall.sent = true;\n }\n }\n }\n\n // End reasoning first if it was started, to maintain proper order\n if (reasoningStarted) {\n controller.enqueue({\n type: 'reasoning-end',\n id: reasoningId || generateId(),\n });\n }\n if (textStarted) {\n controller.enqueue({\n type: 'text-end',\n id: textId || generateId(),\n });\n }\n\n const openrouterMetadata: {\n usage: Partial<OpenRouterUsageAccounting>;\n provider?: string;\n reasoning_details?: ReasoningDetailUnion[];\n } = {\n usage: openrouterUsage,\n };\n\n // Only include provider if it's actually set\n if (provider !== undefined) {\n openrouterMetadata.provider = provider;\n }\n\n // Include accumulated reasoning_details if any were received\n if (accumulatedReasoningDetails.length > 0) {\n openrouterMetadata.reasoning_details =\n accumulatedReasoningDetails;\n }\n\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata: {\n openrouter: openrouterMetadata,\n },\n });\n },\n }),\n ),\n warnings: [],\n request: { body: args },\n response: { headers: responseHeaders },\n };\n }\n}\n","import type {\n LanguageModelV2FilePart,\n LanguageModelV2Prompt,\n LanguageModelV2ReasoningPart,\n LanguageModelV2TextPart,\n LanguageModelV2ToolCallPart,\n LanguageModelV2ToolResultPart,\n} from '@ai-sdk/provider';\n\nimport {\n InvalidPromptError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\n\nexport function convertToOpenRouterCompletionPrompt({\n prompt,\n inputFormat,\n user = 'user',\n assistant = 'assistant',\n}: {\n prompt: LanguageModelV2Prompt;\n inputFormat: 'prompt' | 'messages';\n user?: string;\n assistant?: string;\n}): {\n prompt: string;\n} {\n // When the user supplied a prompt input, we don't transform it:\n if (\n inputFormat === 'prompt' &&\n prompt.length === 1 &&\n prompt[0] &&\n prompt[0].role === 'user' &&\n prompt[0].content.length === 1 &&\n prompt[0].content[0] &&\n prompt[0].content[0].type === 'text'\n ) {\n return { prompt: prompt[0].content[0].text };\n }\n\n // otherwise transform to a chat message format:\n let text = '';\n\n // if first message is a system message, add it to the text:\n if (prompt[0] && 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: LanguageModelV2TextPart | LanguageModelV2FilePart) => {\n switch (part.type) {\n case 'text': {\n return part.text;\n }\n\n case 'file': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file attachments',\n });\n }\n default: {\n return '';\n }\n }\n })\n .join('');\n\n text += `${user}:\\n${userMessage}\\n\\n`;\n break;\n }\n\n case 'assistant': {\n const assistantMessage = content\n .map(\n (\n part:\n | LanguageModelV2TextPart\n | LanguageModelV2FilePart\n | LanguageModelV2ReasoningPart\n | LanguageModelV2ToolCallPart\n | LanguageModelV2ToolResultPart,\n ) => {\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 case 'tool-result': {\n throw new UnsupportedFunctionalityError({\n functionality: 'tool-result messages',\n });\n }\n case 'reasoning': {\n throw new UnsupportedFunctionalityError({\n functionality: 'reasoning messages',\n });\n }\n\n case 'file': {\n throw new UnsupportedFunctionalityError({\n functionality: 'file attachments',\n });\n }\n\n default: {\n return '';\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 break;\n }\n }\n }\n\n // Assistant message prefix:\n text += `${assistant}:\\n`;\n\n return {\n prompt: text,\n };\n}\n","import { z } from 'zod/v4';\nimport { OpenRouterErrorResponseSchema } from '../schemas/error-response';\nimport { ReasoningDetailArraySchema } from '../schemas/reasoning-details';\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 OpenRouterCompletionChunkSchema = z.union([\n z\n .object({\n id: z.string().optional(),\n model: z.string().optional(),\n choices: z.array(\n z\n .object({\n text: z.string(),\n reasoning: z.string().nullish().optional(),\n reasoning_details: ReasoningDetailArraySchema.nullish(),\n\n finish_reason: z.string().nullish(),\n index: z.number().nullish(),\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 .nullable(),\n })\n .passthrough()\n .nullable()\n .optional(),\n })\n .passthrough(),\n ),\n usage: z\n .object({\n prompt_tokens: z.number(),\n prompt_tokens_details: z\n .object({\n cached_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n completion_tokens: z.number(),\n completion_tokens_details: z\n .object({\n reasoning_tokens: z.number(),\n })\n .passthrough()\n .nullish(),\n total_tokens: z.number(),\n cost: z.number().optional(),\n })\n .passthrough()\n .nullish(),\n })\n .passthrough(),\n OpenRouterErrorResponseSchema,\n]);\n","import type {\n LanguageModelV2,\n LanguageModelV2CallOptions,\n LanguageModelV2StreamPart,\n LanguageModelV2Usage,\n} from '@ai-sdk/provider';\nimport type { ParseResult } from '@ai-sdk/provider-utils';\nimport type { FinishReason } from 'ai';\nimport type { z } from 'zod/v4';\nimport type { OpenRouterUsageAccounting } from '../types';\nimport type {\n OpenRouterCompletionModelId,\n OpenRouterCompletionSettings,\n} from '../types/openrouter-completion-settings';\n\nimport {\n APICallError,\n NoContentGeneratedError,\n UnsupportedFunctionalityError,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createEventSourceResponseHandler,\n createJsonResponseHandler,\n generateId,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { openrouterFailedResponseHandler } from '../schemas/error-response';\nimport { mapOpenRouterFinishReason } from '../utils/map-finish-reason';\nimport { convertToOpenRouterCompletionPrompt } from './convert-to-openrouter-completion-prompt';\nimport { OpenRouterCompletionChunkSchema } from './schemas';\n\ntype OpenRouterCompletionConfig = {\n provider: string;\n compatibility: 'strict' | 'compatible';\n headers: () => Record<string, string | undefined>;\n url: (options: { modelId: string; path: string }) => string;\n fetch?: typeof fetch;\n extraBody?: Record<string, unknown>;\n};\n\nexport class OpenRouterCompletionLanguageModel implements LanguageModelV2 {\n readonly specificationVersion = 'v2' as const;\n readonly provider = 'openrouter';\n readonly modelId: OpenRouterCompletionModelId;\n readonly supportedUrls: Record<string, RegExp[]> = {\n 'image/*': [\n /^data:image\\/[a-zA-Z]+;base64,/,\n /^https?:\\/\\/.+\\.(jpg|jpeg|png|gif|webp)$/i,\n ],\n 'text/*': [/^data:text\\//, /^https?:\\/\\/.+$/],\n 'application/*': [/^data:application\\//, /^https?:\\/\\/.+$/],\n };\n readonly defaultObjectGenerationMode = undefined;\n readonly settings: OpenRouterCompletionSettings;\n\n private readonly config: OpenRouterCompletionConfig;\n\n constructor(\n modelId: OpenRouterCompletionModelId,\n settings: OpenRouterCompletionSettings,\n config: OpenRouterCompletionConfig,\n ) {\n this.modelId = modelId;\n this.settings = settings;\n this.config = config;\n }\n\n private getArgs({\n prompt,\n maxOutputTokens,\n temperature,\n topP,\n frequencyPenalty,\n presencePenalty,\n seed,\n responseFormat,\n topK,\n stopSequences,\n tools,\n toolChoice,\n }: LanguageModelV2CallOptions) {\n const { prompt: completionPrompt } = convertToOpenRouterCompletionPrompt({\n prompt,\n inputFormat: 'prompt',\n });\n\n if (tools?.length) {\n throw new UnsupportedFunctionalityError({\n functionality: 'tools',\n });\n }\n\n if (toolChoice) {\n throw new UnsupportedFunctionalityError({\n functionality: 'toolChoice',\n });\n }\n\n return {\n // model id:\n model: this.modelId,\n models: this.settings.models,\n\n // model specific settings:\n logit_bias: this.settings.logitBias,\n logprobs:\n typeof this.settings.logprobs === 'number'\n ? this.settings.logprobs\n : typeof this.settings.logprobs === 'boolean'\n ? this.settings.logprobs\n ? 0\n : undefined\n : undefined,\n suffix: this.settings.suffix,\n user: this.settings.user,\n\n // standardized settings:\n max_tokens: maxOutputTokens,\n temperature,\n top_p: topP,\n frequency_penalty: frequencyPenalty,\n presence_penalty: presencePenalty,\n seed,\n\n stop: stopSequences,\n response_format: responseFormat,\n top_k: topK,\n\n // prompt:\n prompt: completionPrompt,\n\n // OpenRouter specific settings:\n include_reasoning: this.settings.includeReasoning,\n reasoning: this.settings.reasoning,\n\n // extra body:\n ...this.config.extraBody,\n ...this.settings.extraBody,\n };\n }\n\n async doGenerate(\n options: LanguageModelV2CallOptions,\n ): Promise<Awaited<ReturnType<LanguageModelV2['doGenerate']>>> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: response, responseHeaders } = 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: openrouterFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n OpenRouterCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n if ('error' in response) {\n const errorData = response.error as { message: string; code?: string };\n throw new APICallError({\n message: errorData.message,\n url: this.config.url({\n path: '/completions',\n modelId: this.modelId,\n }),\n requestBodyValues: args,\n statusCode: 200,\n responseHeaders,\n data: errorData,\n });\n }\n\n const choice = response.choices[0];\n\n if (!choice) {\n throw new NoContentGeneratedError({\n message: 'No choice in OpenRouter completion response',\n });\n }\n\n return {\n content: [\n {\n type: 'text',\n text: choice.text ?? '',\n },\n ],\n finishReason: mapOpenRouterFinishReason(choice.finish_reason),\n usage: {\n inputTokens: response.usage?.prompt_tokens ?? 0,\n outputTokens: response.usage?.completion_tokens ?? 0,\n totalTokens:\n (response.usage?.prompt_tokens ?? 0) +\n (response.usage?.completion_tokens ?? 0),\n reasoningTokens:\n response.usage?.completion_tokens_details?.reasoning_tokens ?? 0,\n cachedInputTokens:\n response.usage?.prompt_tokens_details?.cached_tokens ?? 0,\n },\n warnings: [],\n response: {\n headers: responseHeaders,\n },\n };\n }\n\n async doStream(\n options: LanguageModelV2CallOptions,\n ): Promise<Awaited<ReturnType<LanguageModelV2['doStream']>>> {\n const providerOptions = options.providerOptions || {};\n const openrouterOptions = providerOptions.openrouter || {};\n\n const args = {\n ...this.getArgs(options),\n ...openrouterOptions,\n };\n\n const { value: response, responseHeaders } = 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 ...args,\n stream: true,\n\n // only include stream_options when in strict compatibility mode:\n stream_options:\n this.config.compatibility === 'strict'\n ? { include_usage: true }\n : undefined,\n },\n failedResponseHandler: openrouterFailedResponseHandler,\n successfulResponseHandler: createEventSourceResponseHandler(\n OpenRouterCompletionChunkSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n let finishReason: FinishReason = 'other';\n const usage: LanguageModelV2Usage = {\n inputTokens: Number.NaN,\n outputTokens: Number.NaN,\n totalTokens: Number.NaN,\n reasoningTokens: Number.NaN,\n cachedInputTokens: Number.NaN,\n };\n\n const openrouterUsage: Partial<OpenRouterUsageAccounting> = {};\n return {\n stream: response.pipeThrough(\n new TransformStream<\n ParseResult<z.infer<typeof OpenRouterCompletionChunkSchema>>,\n LanguageModelV2StreamPart\n >({\n transform(chunk, controller) {\n // handle failed chunk parsing / validation:\n if (!chunk.success) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: chunk.error });\n return;\n }\n\n const value = chunk.value;\n\n // handle error chunks:\n if ('error' in value) {\n finishReason = 'error';\n controller.enqueue({ type: 'error', error: value.error });\n return;\n }\n\n if (value.usage != null) {\n usage.inputTokens = value.usage.prompt_tokens;\n usage.outputTokens = value.usage.completion_tokens;\n usage.totalTokens =\n value.usage.prompt_tokens + value.usage.completion_tokens;\n\n // Collect OpenRouter specific usage information\n openrouterUsage.promptTokens = value.usage.prompt_tokens;\n\n if (value.usage.prompt_tokens_details) {\n const cachedInputTokens =\n value.usage.prompt_tokens_details.cached_tokens ?? 0;\n\n usage.cachedInputTokens = cachedInputTokens;\n openrouterUsage.promptTokensDetails = {\n cachedTokens: cachedInputTokens,\n };\n }\n\n openrouterUsage.completionTokens = value.usage.completion_tokens;\n if (value.usage.completion_tokens_details) {\n const reasoningTokens =\n value.usage.completion_tokens_details.reasoning_tokens ?? 0;\n\n usage.reasoningTokens = reasoningTokens;\n openrouterUsage.completionTokensDetails = {\n reasoningTokens,\n };\n }\n\n openrouterUsage.cost = value.usage.cost;\n openrouterUsage.totalTokens = value.usage.total_tokens;\n }\n\n const choice = value.choices[0];\n\n if (choice?.finish_reason != null) {\n finishReason = mapOpenRouterFinishReason(choice.finish_reason);\n }\n\n if (choice?.text != null) {\n controller.enqueue({\n type: 'text-delta',\n delta: choice.text,\n id: generateId(),\n });\n }\n },\n\n flush(controller) {\n controller.enqueue({\n type: 'finish',\n finishReason,\n usage,\n providerMetadata: {\n openrouter: {\n usage: openrouterUsage,\n },\n },\n });\n },\n }),\n ),\n response: {\n headers: responseHeaders,\n },\n };\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(([, value]) => value !== null),\n ) as Record<string, T>;\n}\n","import { removeUndefinedEntries } from '@/src/utils/remove-undefined';\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 cleanedHeaders = removeUndefinedEntries(\n (headers as Record<string, string | undefined>) ?? {},\n );\n\n const currentUserAgentHeader = cleanedHeaders['user-agent'] || '';\n const newUserAgent = [currentUserAgentHeader, ...userAgentSuffixParts]\n .filter(Boolean)\n .join(' ');\n\n return {\n ...cleanedHeaders,\n 'user-agent': newUserAgent,\n };\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n __PACKAGE_VERSION__ === undefined ? '0.0.0-test' : __PACKAGE_VERSION__;\n","import type { ProviderV2 } from '@ai-sdk/provider';\nimport type {\n OpenRouterChatModelId,\n OpenRouterChatSettings,\n} from './types/openrouter-chat-settings';\nimport type {\n OpenRouterCompletionModelId,\n OpenRouterCompletionSettings,\n} from './types/openrouter-completion-settings';\n\nimport { loadApiKey, withoutTrailingSlash } from '@ai-sdk/provider-utils';\nimport { OpenRouterChatLanguageModel } from './chat';\nimport { OpenRouterCompletionLanguageModel } from './completion';\nimport { withUserAgentSuffix } from './utils/with-user-agent-suffix';\nimport { VERSION } from './version';\n\nexport type { OpenRouterCompletionSettings };\n\nexport interface OpenRouterProvider extends ProviderV2 {\n (\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterCompletionSettings,\n ): OpenRouterCompletionLanguageModel;\n (\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterChatSettings,\n ): OpenRouterChatLanguageModel;\n\n languageModel(\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterCompletionSettings,\n ): OpenRouterCompletionLanguageModel;\n languageModel(\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterChatSettings,\n ): OpenRouterChatLanguageModel;\n\n /**\nCreates an OpenRouter chat model for text generation.\n */\n chat(\n modelId: OpenRouterChatModelId,\n settings?: OpenRouterChatSettings,\n ): OpenRouterChatLanguageModel;\n\n /**\nCreates an OpenRouter completion model for text generation.\n */\n completion(\n modelId: OpenRouterCompletionModelId,\n settings?: OpenRouterCompletionSettings,\n ): OpenRouterCompletionLanguageModel;\n}\n\nexport interface OpenRouterProviderSettings {\n /**\nBase URL for the OpenRouter API calls.\n */\n baseURL?: string;\n\n /**\n@deprecated Use `baseURL` instead.\n */\n baseUrl?: string;\n\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nOpenRouter compatibility mode. Should be set to `strict` when using the OpenRouter API,\nand `compatible` when using 3rd party providers. In `compatible` mode, newer\ninformation such as streamOptions are not being sent. Defaults to 'compatible'.\n */\n compatibility?: 'strict' | 'compatible';\n\n /**\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?: typeof fetch;\n\n /**\nA JSON object to send as the request body to access OpenRouter features & upstream provider features.\n */\n extraBody?: Record<string, unknown>;\n}\n\n/**\nCreate an OpenRouter provider instance.\n */\nexport function createOpenRouter(\n options: OpenRouterProviderSettings = {},\n): OpenRouterProvider {\n const baseURL =\n withoutTrailingSlash(options.baseURL ?? options.baseUrl) ??\n 'https://openrouter.ai/api/v1';\n\n // we default to compatible, because strict breaks providers like Groq:\n const compatibility = options.compatibility ?? 'compatible';\n\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'OPENROUTER_API_KEY',\n description: 'OpenRouter',\n })}`,\n ...options.headers,\n },\n `ai-sdk/openrouter/${VERSION}`,\n );\n\n const createChatModel = (\n modelId: OpenRouterChatModelId,\n settings: OpenRouterChatSettings = {},\n ) =>\n new OpenRouterChatLanguageModel(modelId, settings, {\n provider: 'openrouter.chat',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n compatibility,\n fetch: options.fetch,\n extraBody: options.extraBody,\n });\n\n const createCompletionModel = (\n modelId: OpenRouterCompletionModelId,\n settings: OpenRouterCompletionSettings = {},\n ) =>\n new OpenRouterCompletionLanguageModel(modelId, settings, {\n provider: 'openrouter.completion',\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n compatibility,\n fetch: options.fetch,\n extraBody: options.extraBody,\n });\n\n const createLanguageModel = (\n modelId: OpenRouterChatModelId | OpenRouterCompletionModelId,\n settings?: OpenRouterChatSettings | OpenRouterCompletionSettings,\n ) => {\n if (new.target) {\n throw new Error(\n 'The OpenRouter model function cannot be called with the new keyword.',\n );\n }\n\n if (modelId === 'openai/gpt-3.5-turbo-instruct') {\n return createCompletionModel(\n modelId,\n settings as OpenRouterCompletionSettings,\n );\n }\n\n return createChatModel(modelId, settings as OpenRouterChatSettings);\n };\n\n const provider = (\n modelId: OpenRouterChatModelId | OpenRouterCompletionModelId,\n settings?: OpenRouterChatSettings | OpenRouterCompletionSettings,\n ) => createLanguageModel(modelId, settings);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createChatModel;\n provider.completion = createCompletionModel;\n\n return provider as OpenRouterProvider;\n}\n\n/**\nDefault OpenRouter provider instance. It uses 'strict' compatibility mode.\n */\nexport const openrouter = createOpenRouter({\n compatibility: 'strict', // strict for OpenRouter API\n});\n","export type ResolvedModelConfig = {\n url: string | false;\n headers: Record<string, string>;\n resolvedModelId: string;\n fullModelId: string;\n};\n\nexport function parseModelRouterId(routerId: string, gatewayPrefix?: string): { providerId: string; modelId: string } {\n if (gatewayPrefix && !routerId.startsWith(`${gatewayPrefix}/`)) {\n throw new Error(`Expected ${gatewayPrefix}/ in model router ID ${routerId}`);\n }\n\n const idParts = routerId.split('/');\n\n // Azure OpenAI uses 2-part format (azure-openai/deployment), others use 3-part (gateway/provider/model)\n if (gatewayPrefix === 'azure-openai') {\n if (idParts.length < 2) {\n throw new Error(`Expected format azure-openai/deployment-name, but got ${routerId}`);\n }\n return {\n providerId: 'azure-openai',\n modelId: idParts.slice(1).join('/'), // Deployment name\n };\n }\n\n // Standard 3-part format for other prefixed gateways (Netlify, etc.)\n if (gatewayPrefix && idParts.length < 3) {\n throw new Error(\n `Expected atleast 3 id parts ${gatewayPrefix}/provider/model, but only saw ${idParts.length} in ${routerId}`,\n );\n }\n\n const providerId = idParts.at(gatewayPrefix ? 1 : 0);\n const modelId = idParts.slice(gatewayPrefix ? 2 : 1).join(`/`);\n\n if (!routerId.includes(`/`) || !providerId || !modelId) {\n throw new Error(\n `Attempted to parse provider/model from ${routerId} but this ID doesn't appear to contain a provider`,\n );\n }\n\n return {\n providerId,\n modelId,\n };\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","import { createAnthropic } from '@ai-sdk/anthropic-v5';\nimport { createCerebras } from '@ai-sdk/cerebras-v5';\nimport { createDeepInfra } from '@ai-sdk/deepinfra-v5';\nimport { createDeepSeek } from '@ai-sdk/deepseek-v5';\nimport { createGoogleGenerativeAI } from '@ai-sdk/google-v5';\nimport { createGroq } from '@ai-sdk/groq-v5';\nimport { createMistral } from '@ai-sdk/mistral-v5';\nimport { createOpenAICompatible } from '@ai-sdk/openai-compatible-v5';\nimport { createOpenAI } from '@ai-sdk/openai-v5';\nimport { createPerplexity } from '@ai-sdk/perplexity-v5';\nimport { createTogetherAI } from '@ai-sdk/togetherai-v5';\nimport { createXai } from '@ai-sdk/xai-v5';\nimport { createGateway } from '@internal/ai-v6';\nimport { createOpenRouter } from '@openrouter/ai-sdk-provider-v5';\nimport { parseModelRouterId } from '../gateway-resolver.js';\nimport { MastraModelGateway } from './base.js';\nimport type { GatewayLanguageModel, ProviderConfig } from './base.js';\nimport { EXCLUDED_PROVIDERS, PROVIDERS_WITH_INSTALLED_PACKAGES } from './constants.js';\n\ninterface ModelsDevProviderInfo {\n id: string;\n name: string;\n models: Record<string, any>;\n env?: string[]; // Array of env var names\n api?: string; // Base API URL\n npm?: string; // NPM package name\n doc?: string; // Documentation URL\n}\n\ninterface ModelsDevResponse {\n [providerId: string]: ModelsDevProviderInfo;\n}\n\n// Provider-specific overrides for URL, npm package, and other config.\n// These take priority over what models.dev returns (e.g. correct base URLs, SDK packages).\n// This constant is ONLY used during generation in fetchProviders() to determine\n// which providers from models.dev should be included in the registry.\n// At runtime, buildUrl() and buildHeaders() use the pre-generated PROVIDER_REGISTRY instead.\nconst PROVIDER_OVERRIDES: Record<string, Partial<ProviderConfig>> = {\n mistral: {\n url: 'https://api.mistral.ai/v1',\n },\n groq: {\n url: 'https://api.groq.com/openai/v1',\n },\n // moonshotai uses Anthropic-compatible API, not OpenAI-compatible\n moonshotai: {\n url: 'https://api.moonshot.ai/anthropic/v1',\n npm: '@ai-sdk/anthropic',\n },\n // moonshotai-cn (China version) also uses Anthropic-compatible API\n 'moonshotai-cn': {\n url: 'https://api.moonshot.cn/anthropic/v1',\n npm: '@ai-sdk/anthropic',\n },\n};\n\nexport class ModelsDevGateway extends MastraModelGateway {\n readonly id = 'models.dev';\n readonly name = 'models.dev';\n\n private providerConfigs: Record<string, ProviderConfig> = {};\n\n constructor(providerConfigs?: Record<string, ProviderConfig>) {\n super();\n if (providerConfigs) this.providerConfigs = providerConfigs;\n }\n\n async fetchProviders(): Promise<Record<string, ProviderConfig>> {\n const response = await fetch('https://models.dev/api.json');\n if (!response.ok) {\n throw new Error(`Failed to fetch from models.dev: ${response.statusText}`);\n }\n\n const data = (await response.json()) as ModelsDevResponse;\n\n const providerConfigs: Record<string, ProviderConfig> = {};\n\n for (const [providerId, providerInfo] of Object.entries(data)) {\n // Skip excluded providers\n if (EXCLUDED_PROVIDERS.includes(providerId)) continue;\n // Skip non-provider entries (if any)\n if (!providerInfo || typeof providerInfo !== 'object' || !providerInfo.models) continue;\n\n // Use provider ID as-is (keep hyphens for consistency)\n const normalizedId = providerId;\n\n // Check if this is OpenAI-compatible based on npm package or overrides\n const isOpenAICompatible =\n providerInfo.npm === '@ai-sdk/openai-compatible' ||\n providerInfo.npm === '@ai-sdk/gateway' || // Vercel AI Gateway is OpenAI-compatible\n normalizedId in PROVIDER_OVERRIDES;\n\n // these have their ai sdk provider package installed and don't use openai-compat\n const hasInstalledPackage = PROVIDERS_WITH_INSTALLED_PACKAGES.includes(providerId);\n\n // Also include providers that have an API URL and env vars (likely OpenAI-compatible)\n const hasApiAndEnv = providerInfo.api && providerInfo.env && providerInfo.env.length > 0;\n\n if (isOpenAICompatible || hasInstalledPackage || hasApiAndEnv) {\n // Get model IDs from the models object\n // Filter out deprecated models before collecting model IDs\n const modelIds = Object.entries(providerInfo.models)\n .filter(([, modelInfo]) => modelInfo?.status !== 'deprecated')\n .map(([modelId]) => modelId)\n .sort();\n\n // Get the API URL - overrides take priority over models.dev data\n const url = PROVIDER_OVERRIDES[normalizedId]?.url || providerInfo.api;\n\n // Skip if we don't have a URL\n if (!hasInstalledPackage && !url) {\n continue;\n }\n\n // Get the API key env var from the provider info\n // Convert hyphens to underscores for env var naming convention\n const apiKeyEnvVar = providerInfo.env?.[0] || `${normalizedId.toUpperCase().replace(/-/g, '_')}_API_KEY`;\n\n // Determine the API key header (special case for Anthropic)\n const apiKeyHeader = !hasInstalledPackage\n ? PROVIDER_OVERRIDES[normalizedId]?.apiKeyHeader || 'Authorization'\n : undefined;\n\n providerConfigs[normalizedId] = {\n url,\n apiKeyEnvVar,\n apiKeyHeader,\n name: providerInfo.name || providerId.charAt(0).toUpperCase() + providerId.slice(1),\n models: modelIds,\n docUrl: providerInfo.doc, // Include documentation URL if available\n gateway: `models.dev`,\n // Only store npm when it's a non-default SDK (not openai-compatible/gateway) to keep the registry small\n // Overrides take priority (e.g., moonshotai uses @ai-sdk/anthropic, not the openai-compatible listed in models.dev)\n npm:\n PROVIDER_OVERRIDES[normalizedId]?.npm ||\n (providerInfo.npm &&\n providerInfo.npm !== '@ai-sdk/openai-compatible' &&\n providerInfo.npm !== '@ai-sdk/gateway'\n ? providerInfo.npm\n : undefined),\n };\n }\n }\n\n // Store for later use in buildUrl and buildHeaders\n this.providerConfigs = providerConfigs;\n\n return providerConfigs;\n }\n\n buildUrl(routerId: string, envVars?: typeof process.env): string | undefined {\n const { providerId } = parseModelRouterId(routerId);\n\n const config = this.providerConfigs[providerId];\n\n if (!config?.url) {\n return;\n }\n\n // Check for custom base URL from env vars\n const baseUrlEnvVar = `${providerId.toUpperCase().replace(/-/g, '_')}_BASE_URL`;\n const customBaseUrl = envVars?.[baseUrlEnvVar] || process.env[baseUrlEnvVar];\n\n return customBaseUrl || config.url;\n }\n\n getApiKey(modelId: string): Promise<string> {\n const [provider, model] = modelId.split('/');\n if (!provider || !model) {\n throw new Error(`Could not identify provider from model id ${modelId}`);\n }\n const config = this.providerConfigs[provider];\n\n if (!config) {\n throw new Error(`Could not find config for provider ${provider} with model id ${modelId}`);\n }\n\n const apiKey = typeof config.apiKeyEnvVar === `string` ? process.env[config.apiKeyEnvVar] : undefined; // we only use single string env var for models.dev for now\n\n if (!apiKey) {\n throw new Error(`Could not find API key process.env.${config.apiKeyEnvVar} for model id ${modelId}`);\n }\n\n return Promise.resolve(apiKey);\n }\n\n async resolveLanguageModel({\n modelId,\n providerId,\n apiKey,\n headers,\n }: {\n modelId: string;\n providerId: string;\n apiKey: string;\n headers?: Record<string, string>;\n }): Promise<GatewayLanguageModel> {\n const baseURL = this.buildUrl(`${providerId}/${modelId}`);\n\n switch (providerId) {\n case 'openai':\n return createOpenAI({ apiKey }).responses(modelId);\n case 'gemini':\n case 'google':\n return createGoogleGenerativeAI({\n apiKey,\n }).chat(modelId);\n case 'anthropic':\n return createAnthropic({ apiKey })(modelId);\n case 'mistral':\n return createMistral({ apiKey })(modelId);\n case 'groq':\n return createGroq({ apiKey })(modelId);\n case 'openrouter':\n return createOpenRouter({ apiKey, headers })(modelId);\n case 'xai':\n return createXai({\n apiKey,\n })(modelId);\n case 'deepseek':\n return createDeepSeek({\n apiKey,\n })(modelId);\n case 'perplexity':\n return createPerplexity({ apiKey })(modelId);\n case 'cerebras':\n return createCerebras({ apiKey })(modelId);\n case 'togetherai':\n return createTogetherAI({ apiKey })(modelId);\n case 'deepinfra':\n return createDeepInfra({ apiKey })(modelId);\n case 'vercel':\n return createGateway({ apiKey, headers })(modelId);\n case 'moonshotai':\n case 'moonshotai-cn': {\n // moonshotai uses Anthropic-compatible API endpoint\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createAnthropic({ apiKey, baseURL })(modelId);\n }\n default: {\n // Check if this provider uses a specific SDK package (e.g., kimi-for-coding uses @ai-sdk/anthropic)\n const config = this.providerConfigs[providerId];\n const npm = config?.npm;\n\n if (npm === '@ai-sdk/anthropic') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createAnthropic({ apiKey, baseURL })(modelId);\n }\n\n if (npm === '@ai-sdk/openai') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createOpenAI({ apiKey, baseURL }).chat(modelId);\n }\n\n if (npm === '@ai-sdk/google') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createGoogleGenerativeAI({ apiKey, baseURL }).chat(modelId);\n }\n\n if (npm === '@ai-sdk/mistral') {\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createMistral({ apiKey, baseURL })(modelId);\n }\n\n if (!baseURL) throw new Error(`No API URL found for ${providerId}/${modelId}`);\n return createOpenAICompatible({ name: providerId, apiKey, baseURL, supportsStructuredOutputs: true }).chatModel(\n modelId,\n );\n }\n }\n }\n}\n"]}
|