@fairyhunter13/ai-sdk 6.0.116-fork.1
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 +7582 -0
- package/README.md +238 -0
- package/dist/index.d.mts +6751 -0
- package/dist/index.d.ts +6751 -0
- package/dist/index.js +14155 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +14127 -0
- package/dist/index.mjs.map +1 -0
- package/dist/internal/index.d.mts +324 -0
- package/dist/internal/index.d.ts +324 -0
- package/dist/internal/index.js +1352 -0
- package/dist/internal/index.js.map +1 -0
- package/dist/internal/index.mjs +1336 -0
- package/dist/internal/index.mjs.map +1 -0
- package/dist/test/index.d.mts +265 -0
- package/dist/test/index.d.ts +265 -0
- package/dist/test/index.js +509 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/index.mjs +472 -0
- package/dist/test/index.mjs.map +1 -0
- package/docs/00-introduction/index.mdx +76 -0
- package/docs/02-foundations/01-overview.mdx +43 -0
- package/docs/02-foundations/02-providers-and-models.mdx +158 -0
- package/docs/02-foundations/03-prompts.mdx +616 -0
- package/docs/02-foundations/04-tools.mdx +251 -0
- package/docs/02-foundations/05-streaming.mdx +62 -0
- package/docs/02-foundations/06-provider-options.mdx +345 -0
- package/docs/02-foundations/index.mdx +49 -0
- package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
- package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
- package/docs/02-getting-started/02-nextjs-app-router.mdx +559 -0
- package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
- package/docs/02-getting-started/04-svelte.mdx +627 -0
- package/docs/02-getting-started/05-nuxt.mdx +566 -0
- package/docs/02-getting-started/06-nodejs.mdx +512 -0
- package/docs/02-getting-started/07-expo.mdx +766 -0
- package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
- package/docs/02-getting-started/09-coding-agents.mdx +179 -0
- package/docs/02-getting-started/index.mdx +44 -0
- package/docs/03-agents/01-overview.mdx +96 -0
- package/docs/03-agents/02-building-agents.mdx +449 -0
- package/docs/03-agents/03-workflows.mdx +386 -0
- package/docs/03-agents/04-loop-control.mdx +394 -0
- package/docs/03-agents/05-configuring-call-options.mdx +286 -0
- package/docs/03-agents/06-memory.mdx +222 -0
- package/docs/03-agents/06-subagents.mdx +362 -0
- package/docs/03-agents/index.mdx +46 -0
- package/docs/03-ai-sdk-core/01-overview.mdx +31 -0
- package/docs/03-ai-sdk-core/05-generating-text.mdx +707 -0
- package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +498 -0
- package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1144 -0
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +383 -0
- package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +146 -0
- package/docs/03-ai-sdk-core/25-settings.mdx +216 -0
- package/docs/03-ai-sdk-core/26-reasoning.mdx +190 -0
- package/docs/03-ai-sdk-core/30-embeddings.mdx +246 -0
- package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
- package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
- package/docs/03-ai-sdk-core/36-transcription.mdx +227 -0
- package/docs/03-ai-sdk-core/37-speech.mdx +169 -0
- package/docs/03-ai-sdk-core/38-video-generation.mdx +366 -0
- package/docs/03-ai-sdk-core/40-middleware.mdx +485 -0
- package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
- package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
- package/docs/03-ai-sdk-core/55-testing.mdx +219 -0
- package/docs/03-ai-sdk-core/60-telemetry.mdx +391 -0
- package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
- package/docs/03-ai-sdk-core/65-event-listeners.mdx +1118 -0
- package/docs/03-ai-sdk-core/index.mdx +99 -0
- package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
- package/docs/04-ai-sdk-ui/02-chatbot.mdx +1320 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
- package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
- package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
- package/docs/04-ai-sdk-ui/05-completion.mdx +181 -0
- package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
- package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
- package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
- package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
- package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
- package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
- package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +503 -0
- package/docs/04-ai-sdk-ui/index.mdx +64 -0
- package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
- package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
- package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
- package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
- package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
- package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +157 -0
- package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
- package/docs/05-ai-sdk-rsc/08-error-handling.mdx +94 -0
- package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
- package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
- package/docs/05-ai-sdk-rsc/index.mdx +63 -0
- package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
- package/docs/06-advanced/02-stopping-streams.mdx +184 -0
- package/docs/06-advanced/03-backpressure.mdx +173 -0
- package/docs/06-advanced/04-caching.mdx +169 -0
- package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
- package/docs/06-advanced/06-rate-limiting.mdx +60 -0
- package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +225 -0
- package/docs/06-advanced/08-model-as-router.mdx +120 -0
- package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
- package/docs/06-advanced/09-sequential-generations.mdx +55 -0
- package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
- package/docs/06-advanced/index.mdx +11 -0
- package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2785 -0
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3752 -0
- package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +332 -0
- package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +330 -0
- package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
- package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +251 -0
- package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +152 -0
- package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +221 -0
- package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +264 -0
- package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +235 -0
- package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +973 -0
- package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +154 -0
- package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +173 -0
- package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +150 -0
- package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +209 -0
- package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +223 -0
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +423 -0
- package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
- package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +58 -0
- package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
- package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +435 -0
- package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +264 -0
- package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
- package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
- package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +198 -0
- package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +157 -0
- package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
- package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
- package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
- package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +74 -0
- package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
- package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
- package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
- package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
- package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
- package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
- package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
- package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +30 -0
- package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
- package/docs/07-reference/01-ai-sdk-core/92-default-generated-file.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/index.mdx +160 -0
- package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +493 -0
- package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +185 -0
- package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +196 -0
- package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +231 -0
- package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
- package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +162 -0
- package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +119 -0
- package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +77 -0
- package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
- package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
- package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
- package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
- package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
- package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
- package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
- package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
- package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +78 -0
- package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +79 -0
- package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
- package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
- package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
- package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
- package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
- package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
- package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +266 -0
- package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +31 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-output-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-video-generated-error.mdx +39 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-ui-message-stream-error.mdx +67 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/index.mdx +39 -0
- package/docs/07-reference/index.mdx +28 -0
- package/docs/08-migration-guides/00-versioning.mdx +46 -0
- package/docs/08-migration-guides/23-migration-guide-7-0.mdx +95 -0
- package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
- package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
- package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
- package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
- package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
- package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
- package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
- package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
- package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
- package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
- package/docs/08-migration-guides/index.mdx +22 -0
- package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
- package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
- package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
- package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
- package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
- package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
- package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
- package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
- package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
- package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
- package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
- package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
- package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
- package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
- package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
- package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
- package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
- package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
- package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
- package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
- package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
- package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
- package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +76 -0
- package/docs/09-troubleshooting/21-missing-tool-results-error.mdx +82 -0
- package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
- package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
- package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
- package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
- package/docs/09-troubleshooting/70-high-memory-usage-with-images.mdx +108 -0
- package/docs/09-troubleshooting/index.mdx +11 -0
- package/internal.d.ts +1 -0
- package/package.json +120 -0
- package/src/agent/agent.ts +156 -0
- package/src/agent/create-agent-ui-stream-response.ts +61 -0
- package/src/agent/create-agent-ui-stream.ts +84 -0
- package/src/agent/index.ts +37 -0
- package/src/agent/infer-agent-tools.ts +7 -0
- package/src/agent/infer-agent-ui-message.ts +11 -0
- package/src/agent/pipe-agent-ui-stream-to-response.ts +64 -0
- package/src/agent/tool-loop-agent-settings.ts +244 -0
- package/src/agent/tool-loop-agent.ts +205 -0
- package/src/embed/embed-events.ts +109 -0
- package/src/embed/embed-many-result.ts +53 -0
- package/src/embed/embed-many.ts +484 -0
- package/src/embed/embed-result.ts +50 -0
- package/src/embed/embed.ts +294 -0
- package/src/embed/index.ts +5 -0
- package/src/error/index.ts +37 -0
- package/src/error/invalid-argument-error.ts +34 -0
- package/src/error/invalid-stream-part-error.ts +28 -0
- package/src/error/invalid-tool-approval-error.ts +26 -0
- package/src/error/invalid-tool-input-error.ts +33 -0
- package/src/error/missing-tool-result-error.ts +28 -0
- package/src/error/no-image-generated-error.ts +39 -0
- package/src/error/no-object-generated-error.ts +70 -0
- package/src/error/no-output-generated-error.ts +26 -0
- package/src/error/no-speech-generated-error.ts +28 -0
- package/src/error/no-such-tool-error.ts +35 -0
- package/src/error/no-transcript-generated-error.ts +30 -0
- package/src/error/no-video-generated-error.ts +57 -0
- package/src/error/tool-call-not-found-for-approval-error.ts +32 -0
- package/src/error/tool-call-repair-error.ts +30 -0
- package/src/error/ui-message-stream-error.ts +48 -0
- package/src/error/unsupported-model-version-error.ts +23 -0
- package/src/error/verify-no-object-generated-error.ts +27 -0
- package/src/generate-image/generate-image-result.ts +42 -0
- package/src/generate-image/generate-image.ts +361 -0
- package/src/generate-image/index.ts +18 -0
- package/src/generate-object/generate-object-result.ts +67 -0
- package/src/generate-object/generate-object.ts +514 -0
- package/src/generate-object/index.ts +9 -0
- package/src/generate-object/inject-json-instruction.ts +30 -0
- package/src/generate-object/output-strategy.ts +415 -0
- package/src/generate-object/parse-and-validate-object-result.ts +111 -0
- package/src/generate-object/repair-text.ts +12 -0
- package/src/generate-object/stream-object-result.ts +120 -0
- package/src/generate-object/stream-object.ts +984 -0
- package/src/generate-object/validate-object-generation-input.ts +144 -0
- package/src/generate-speech/generate-speech-result.ts +30 -0
- package/src/generate-speech/generate-speech.ts +191 -0
- package/src/generate-speech/generated-audio-file.ts +65 -0
- package/src/generate-speech/index.ts +3 -0
- package/src/generate-text/collect-tool-approvals.ts +116 -0
- package/src/generate-text/content-part.ts +31 -0
- package/src/generate-text/core-events.ts +390 -0
- package/src/generate-text/create-execute-tools-transformation.ts +168 -0
- package/src/generate-text/create-stream-text-part-transform.ts +229 -0
- package/src/generate-text/execute-tool-call.ts +190 -0
- package/src/generate-text/extract-reasoning-content.ts +17 -0
- package/src/generate-text/extract-text-content.ts +15 -0
- package/src/generate-text/generate-text-result.ts +168 -0
- package/src/generate-text/generate-text.ts +1411 -0
- package/src/generate-text/generated-file.ts +70 -0
- package/src/generate-text/index.ts +74 -0
- package/src/generate-text/is-approval-needed.ts +29 -0
- package/src/generate-text/output-utils.ts +23 -0
- package/src/generate-text/output.ts +590 -0
- package/src/generate-text/parse-tool-call.ts +188 -0
- package/src/generate-text/prepare-step.ts +103 -0
- package/src/generate-text/prune-messages.ts +167 -0
- package/src/generate-text/reasoning-output.ts +99 -0
- package/src/generate-text/reasoning.ts +10 -0
- package/src/generate-text/response-message.ts +10 -0
- package/src/generate-text/smooth-stream.ts +162 -0
- package/src/generate-text/step-result.ts +310 -0
- package/src/generate-text/stop-condition.ts +29 -0
- package/src/generate-text/stream-text-result.ts +536 -0
- package/src/generate-text/stream-text.ts +2693 -0
- package/src/generate-text/to-response-messages.ts +178 -0
- package/src/generate-text/tool-approval-request-output.ts +21 -0
- package/src/generate-text/tool-call-repair-function.ts +27 -0
- package/src/generate-text/tool-call.ts +47 -0
- package/src/generate-text/tool-error.ts +34 -0
- package/src/generate-text/tool-output-denied.ts +21 -0
- package/src/generate-text/tool-output.ts +7 -0
- package/src/generate-text/tool-result.ts +36 -0
- package/src/generate-text/tool-set.ts +14 -0
- package/src/generate-video/generate-video-result.ts +36 -0
- package/src/generate-video/generate-video.ts +402 -0
- package/src/generate-video/index.ts +3 -0
- package/src/global.ts +36 -0
- package/src/index.ts +49 -0
- package/src/logger/index.ts +6 -0
- package/src/logger/log-warnings.ts +140 -0
- package/src/middleware/add-tool-input-examples-middleware.ts +90 -0
- package/src/middleware/default-embedding-settings-middleware.ts +22 -0
- package/src/middleware/default-settings-middleware.ts +33 -0
- package/src/middleware/extract-json-middleware.ts +197 -0
- package/src/middleware/extract-reasoning-middleware.ts +249 -0
- package/src/middleware/index.ts +10 -0
- package/src/middleware/simulate-streaming-middleware.ts +79 -0
- package/src/middleware/wrap-embedding-model.ts +89 -0
- package/src/middleware/wrap-image-model.ts +92 -0
- package/src/middleware/wrap-language-model.ts +108 -0
- package/src/middleware/wrap-provider.ts +51 -0
- package/src/model/as-embedding-model-v3.ts +24 -0
- package/src/model/as-embedding-model-v4.ts +25 -0
- package/src/model/as-image-model-v3.ts +24 -0
- package/src/model/as-image-model-v4.ts +21 -0
- package/src/model/as-language-model-v3.ts +103 -0
- package/src/model/as-language-model-v4.ts +25 -0
- package/src/model/as-provider-v3.ts +36 -0
- package/src/model/as-provider-v4.ts +47 -0
- package/src/model/as-reranking-model-v4.ts +16 -0
- package/src/model/as-speech-model-v3.ts +24 -0
- package/src/model/as-speech-model-v4.ts +21 -0
- package/src/model/as-transcription-model-v3.ts +24 -0
- package/src/model/as-transcription-model-v4.ts +25 -0
- package/src/model/as-video-model-v4.ts +19 -0
- package/src/model/resolve-model.ts +172 -0
- package/src/prompt/call-settings.ts +177 -0
- package/src/prompt/content-part.ts +236 -0
- package/src/prompt/convert-to-language-model-prompt.ts +548 -0
- package/src/prompt/create-tool-model-output.ts +34 -0
- package/src/prompt/data-content.ts +134 -0
- package/src/prompt/index.ts +27 -0
- package/src/prompt/invalid-data-content-error.ts +29 -0
- package/src/prompt/invalid-message-role-error.ts +27 -0
- package/src/prompt/message-conversion-error.ts +28 -0
- package/src/prompt/message.ts +72 -0
- package/src/prompt/prepare-call-settings.ts +110 -0
- package/src/prompt/prepare-tools-and-tool-choice.ts +86 -0
- package/src/prompt/prompt.ts +43 -0
- package/src/prompt/split-data-url.ts +17 -0
- package/src/prompt/standardize-prompt.ts +99 -0
- package/src/prompt/wrap-gateway-error.ts +29 -0
- package/src/registry/custom-provider.ts +210 -0
- package/src/registry/index.ts +7 -0
- package/src/registry/no-such-provider-error.ts +41 -0
- package/src/registry/provider-registry.ts +331 -0
- package/src/rerank/index.ts +2 -0
- package/src/rerank/rerank-result.ts +70 -0
- package/src/rerank/rerank.ts +239 -0
- package/src/telemetry/assemble-operation-name.ts +21 -0
- package/src/telemetry/get-base-telemetry-attributes.ts +55 -0
- package/src/telemetry/get-global-telemetry-integration.ts +110 -0
- package/src/telemetry/get-tracer.ts +20 -0
- package/src/telemetry/index.ts +4 -0
- package/src/telemetry/noop-tracer.ts +69 -0
- package/src/telemetry/open-telemetry-integration.ts +537 -0
- package/src/telemetry/record-span.ts +75 -0
- package/src/telemetry/select-telemetry-attributes.ts +78 -0
- package/src/telemetry/stringify-for-telemetry.ts +33 -0
- package/src/telemetry/telemetry-integration-registry.ts +22 -0
- package/src/telemetry/telemetry-integration.ts +100 -0
- package/src/telemetry/telemetry-settings.ts +55 -0
- package/src/test/mock-embedding-model-v2.ts +35 -0
- package/src/test/mock-embedding-model-v3.ts +48 -0
- package/src/test/mock-embedding-model-v4.ts +48 -0
- package/src/test/mock-image-model-v2.ts +28 -0
- package/src/test/mock-image-model-v3.ts +28 -0
- package/src/test/mock-image-model-v4.ts +28 -0
- package/src/test/mock-language-model-v2.ts +72 -0
- package/src/test/mock-language-model-v3.ts +77 -0
- package/src/test/mock-language-model-v4.ts +77 -0
- package/src/test/mock-provider-v2.ts +68 -0
- package/src/test/mock-provider-v3.ts +80 -0
- package/src/test/mock-provider-v4.ts +80 -0
- package/src/test/mock-reranking-model-v3.ts +25 -0
- package/src/test/mock-reranking-model-v4.ts +25 -0
- package/src/test/mock-server-response.ts +69 -0
- package/src/test/mock-speech-model-v2.ts +24 -0
- package/src/test/mock-speech-model-v3.ts +24 -0
- package/src/test/mock-speech-model-v4.ts +24 -0
- package/src/test/mock-tracer.ts +156 -0
- package/src/test/mock-transcription-model-v2.ts +24 -0
- package/src/test/mock-transcription-model-v3.ts +24 -0
- package/src/test/mock-transcription-model-v4.ts +24 -0
- package/src/test/mock-values.ts +4 -0
- package/src/test/mock-video-model-v3.ts +28 -0
- package/src/test/mock-video-model-v4.ts +28 -0
- package/src/test/not-implemented.ts +3 -0
- package/src/text-stream/create-text-stream-response.ts +30 -0
- package/src/text-stream/index.ts +2 -0
- package/src/text-stream/pipe-text-stream-to-response.ts +38 -0
- package/src/transcribe/index.ts +2 -0
- package/src/transcribe/transcribe-result.ts +60 -0
- package/src/transcribe/transcribe.ts +187 -0
- package/src/types/embedding-model-middleware.ts +15 -0
- package/src/types/embedding-model.ts +20 -0
- package/src/types/image-model-middleware.ts +15 -0
- package/src/types/image-model-response-metadata.ts +16 -0
- package/src/types/image-model.ts +19 -0
- package/src/types/index.ts +29 -0
- package/src/types/json-value.ts +15 -0
- package/src/types/language-model-middleware.ts +15 -0
- package/src/types/language-model-request-metadata.ts +6 -0
- package/src/types/language-model-response-metadata.ts +21 -0
- package/src/types/language-model.ts +106 -0
- package/src/types/provider-metadata.ts +16 -0
- package/src/types/provider.ts +55 -0
- package/src/types/reranking-model.ts +6 -0
- package/src/types/speech-model-response-metadata.ts +21 -0
- package/src/types/speech-model.ts +10 -0
- package/src/types/transcription-model-response-metadata.ts +16 -0
- package/src/types/transcription-model.ts +14 -0
- package/src/types/usage.ts +200 -0
- package/src/types/video-model-response-metadata.ts +28 -0
- package/src/types/video-model.ts +15 -0
- package/src/types/warning.ts +7 -0
- package/src/ui/call-completion-api.ts +157 -0
- package/src/ui/chat-transport.ts +83 -0
- package/src/ui/chat.ts +786 -0
- package/src/ui/convert-file-list-to-file-ui-parts.ts +36 -0
- package/src/ui/convert-to-model-messages.ts +403 -0
- package/src/ui/default-chat-transport.ts +36 -0
- package/src/ui/direct-chat-transport.ts +117 -0
- package/src/ui/http-chat-transport.ts +273 -0
- package/src/ui/index.ts +76 -0
- package/src/ui/last-assistant-message-is-complete-with-approval-responses.ts +44 -0
- package/src/ui/last-assistant-message-is-complete-with-tool-calls.ts +39 -0
- package/src/ui/process-text-stream.ts +16 -0
- package/src/ui/process-ui-message-stream.ts +858 -0
- package/src/ui/text-stream-chat-transport.ts +23 -0
- package/src/ui/transform-text-to-ui-message-stream.ts +27 -0
- package/src/ui/ui-messages.ts +602 -0
- package/src/ui/use-completion.ts +84 -0
- package/src/ui/validate-ui-messages.ts +521 -0
- package/src/ui-message-stream/create-ui-message-stream-response.ts +44 -0
- package/src/ui-message-stream/create-ui-message-stream.ts +145 -0
- package/src/ui-message-stream/get-response-ui-message-id.ts +35 -0
- package/src/ui-message-stream/handle-ui-message-stream-finish.ts +170 -0
- package/src/ui-message-stream/index.ts +14 -0
- package/src/ui-message-stream/json-to-sse-transform-stream.ts +17 -0
- package/src/ui-message-stream/pipe-ui-message-stream-to-response.ts +51 -0
- package/src/ui-message-stream/read-ui-message-stream.ts +87 -0
- package/src/ui-message-stream/ui-message-chunks.ts +372 -0
- package/src/ui-message-stream/ui-message-stream-headers.ts +7 -0
- package/src/ui-message-stream/ui-message-stream-on-finish-callback.ts +32 -0
- package/src/ui-message-stream/ui-message-stream-on-step-finish-callback.ts +25 -0
- package/src/ui-message-stream/ui-message-stream-response-init.ts +14 -0
- package/src/ui-message-stream/ui-message-stream-writer.ts +24 -0
- package/src/util/as-array.ts +3 -0
- package/src/util/async-iterable-stream.ts +94 -0
- package/src/util/consume-stream.ts +31 -0
- package/src/util/cosine-similarity.ts +46 -0
- package/src/util/create-resolvable-promise.ts +30 -0
- package/src/util/create-stitchable-stream.ts +112 -0
- package/src/util/data-url.ts +17 -0
- package/src/util/deep-partial.ts +84 -0
- package/src/util/detect-media-type.ts +226 -0
- package/src/util/download/create-download.ts +13 -0
- package/src/util/download/download-function.ts +45 -0
- package/src/util/download/download.ts +74 -0
- package/src/util/error-handler.ts +1 -0
- package/src/util/fix-json.ts +401 -0
- package/src/util/get-potential-start-index.ts +39 -0
- package/src/util/index.ts +12 -0
- package/src/util/is-deep-equal-data.ts +48 -0
- package/src/util/is-non-empty-object.ts +5 -0
- package/src/util/job.ts +1 -0
- package/src/util/log-v2-compatibility-warning.ts +21 -0
- package/src/util/merge-abort-signals.ts +43 -0
- package/src/util/merge-objects.ts +79 -0
- package/src/util/notify.ts +22 -0
- package/src/util/now.ts +4 -0
- package/src/util/parse-partial-json.ts +30 -0
- package/src/util/prepare-headers.ts +14 -0
- package/src/util/prepare-retries.ts +47 -0
- package/src/util/retry-error.ts +41 -0
- package/src/util/retry-with-exponential-backoff.ts +154 -0
- package/src/util/serial-job-executor.ts +36 -0
- package/src/util/simulate-readable-stream.ts +39 -0
- package/src/util/split-array.ts +20 -0
- package/src/util/value-of.ts +65 -0
- package/src/util/write-to-server-response.ts +49 -0
- package/src/version.ts +5 -0
- package/test.d.ts +1 -0
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Experimental_VideoModelV4 } from '@ai-sdk/provider';
|
|
2
|
+
import { notImplemented } from './not-implemented';
|
|
3
|
+
|
|
4
|
+
export class MockVideoModelV4 implements Experimental_VideoModelV4 {
|
|
5
|
+
readonly specificationVersion = 'v4';
|
|
6
|
+
readonly provider: Experimental_VideoModelV4['provider'];
|
|
7
|
+
readonly modelId: Experimental_VideoModelV4['modelId'];
|
|
8
|
+
readonly maxVideosPerCall: Experimental_VideoModelV4['maxVideosPerCall'];
|
|
9
|
+
|
|
10
|
+
doGenerate: Experimental_VideoModelV4['doGenerate'];
|
|
11
|
+
|
|
12
|
+
constructor({
|
|
13
|
+
provider = 'mock-provider',
|
|
14
|
+
modelId = 'mock-model-id',
|
|
15
|
+
maxVideosPerCall = 1,
|
|
16
|
+
doGenerate = notImplemented,
|
|
17
|
+
}: {
|
|
18
|
+
provider?: Experimental_VideoModelV4['provider'];
|
|
19
|
+
modelId?: Experimental_VideoModelV4['modelId'];
|
|
20
|
+
maxVideosPerCall?: Experimental_VideoModelV4['maxVideosPerCall'];
|
|
21
|
+
doGenerate?: Experimental_VideoModelV4['doGenerate'];
|
|
22
|
+
} = {}) {
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
this.modelId = modelId;
|
|
25
|
+
this.maxVideosPerCall = maxVideosPerCall;
|
|
26
|
+
this.doGenerate = doGenerate;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { prepareHeaders } from '../util/prepare-headers';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Response object from a text stream.
|
|
5
|
+
* Each text chunk is encoded as UTF-8 and sent as a separate chunk.
|
|
6
|
+
* Sets a `Content-Type` header to `text/plain; charset=utf-8`.
|
|
7
|
+
*
|
|
8
|
+
* @param options - The options for creating the response.
|
|
9
|
+
* @param options.status - Optional HTTP status code (default: 200).
|
|
10
|
+
* @param options.statusText - Optional HTTP status text.
|
|
11
|
+
* @param options.headers - Optional response headers.
|
|
12
|
+
* @param options.textStream - The text stream to send.
|
|
13
|
+
* @returns A Response object with the text stream body.
|
|
14
|
+
*/
|
|
15
|
+
export function createTextStreamResponse({
|
|
16
|
+
status,
|
|
17
|
+
statusText,
|
|
18
|
+
headers,
|
|
19
|
+
textStream,
|
|
20
|
+
}: ResponseInit & {
|
|
21
|
+
textStream: ReadableStream<string>;
|
|
22
|
+
}): Response {
|
|
23
|
+
return new Response(textStream.pipeThrough(new TextEncoderStream()), {
|
|
24
|
+
status: status ?? 200,
|
|
25
|
+
statusText,
|
|
26
|
+
headers: prepareHeaders(headers, {
|
|
27
|
+
'content-type': 'text/plain; charset=utf-8',
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ServerResponse } from 'node:http';
|
|
2
|
+
import { prepareHeaders } from '../util/prepare-headers';
|
|
3
|
+
import { writeToServerResponse } from '../util/write-to-server-response';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Writes a text stream to a Node.js ServerResponse object.
|
|
7
|
+
* Each text chunk is encoded as UTF-8 and written as a separate chunk.
|
|
8
|
+
* Sets a `Content-Type` header to `text/plain; charset=utf-8`.
|
|
9
|
+
*
|
|
10
|
+
* @param options - The options for piping the stream.
|
|
11
|
+
* @param options.response - The Node.js ServerResponse to write to.
|
|
12
|
+
* @param options.status - Optional HTTP status code.
|
|
13
|
+
* @param options.statusText - Optional HTTP status text.
|
|
14
|
+
* @param options.headers - Optional response headers.
|
|
15
|
+
* @param options.textStream - The text stream to pipe.
|
|
16
|
+
*/
|
|
17
|
+
export function pipeTextStreamToResponse({
|
|
18
|
+
response,
|
|
19
|
+
status,
|
|
20
|
+
statusText,
|
|
21
|
+
headers,
|
|
22
|
+
textStream,
|
|
23
|
+
}: {
|
|
24
|
+
response: ServerResponse;
|
|
25
|
+
textStream: ReadableStream<string>;
|
|
26
|
+
} & ResponseInit): void {
|
|
27
|
+
writeToServerResponse({
|
|
28
|
+
response,
|
|
29
|
+
status,
|
|
30
|
+
statusText,
|
|
31
|
+
headers: Object.fromEntries(
|
|
32
|
+
prepareHeaders(headers, {
|
|
33
|
+
'content-type': 'text/plain; charset=utf-8',
|
|
34
|
+
}).entries(),
|
|
35
|
+
),
|
|
36
|
+
stream: textStream.pipeThrough(new TextEncoderStream()),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { JSONObject } from '@ai-sdk/provider';
|
|
2
|
+
import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
|
|
3
|
+
import { Warning } from '../types/warning';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The result of a `transcribe` call.
|
|
7
|
+
* It contains the transcript and additional information.
|
|
8
|
+
*/
|
|
9
|
+
export interface TranscriptionResult {
|
|
10
|
+
/**
|
|
11
|
+
* The complete transcribed text from the audio.
|
|
12
|
+
*/
|
|
13
|
+
readonly text: string;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Array of transcript segments with timing information.
|
|
17
|
+
* Each segment represents a portion of the transcribed text with start and end times.
|
|
18
|
+
*/
|
|
19
|
+
readonly segments: Array<{
|
|
20
|
+
/**
|
|
21
|
+
* The text content of this segment.
|
|
22
|
+
*/
|
|
23
|
+
readonly text: string;
|
|
24
|
+
/**
|
|
25
|
+
* The start time of this segment in seconds.
|
|
26
|
+
*/
|
|
27
|
+
readonly startSecond: number;
|
|
28
|
+
/**
|
|
29
|
+
* The end time of this segment in seconds.
|
|
30
|
+
*/
|
|
31
|
+
readonly endSecond: number;
|
|
32
|
+
}>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The detected language of the audio content, as an ISO-639-1 code (e.g., 'en' for English).
|
|
36
|
+
* May be undefined if the language couldn't be detected.
|
|
37
|
+
*/
|
|
38
|
+
readonly language: string | undefined;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The total duration of the audio file in seconds.
|
|
42
|
+
* May be undefined if the duration couldn't be determined.
|
|
43
|
+
*/
|
|
44
|
+
readonly durationInSeconds: number | undefined;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Warnings for the call, e.g. unsupported settings.
|
|
48
|
+
*/
|
|
49
|
+
readonly warnings: Array<Warning>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.
|
|
53
|
+
*/
|
|
54
|
+
readonly responses: Array<TranscriptionModelResponseMetadata>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Provider metadata from the provider.
|
|
58
|
+
*/
|
|
59
|
+
readonly providerMetadata: Record<string, JSONObject>;
|
|
60
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { JSONObject } from '@ai-sdk/provider';
|
|
2
|
+
import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils';
|
|
3
|
+
import { NoTranscriptGeneratedError } from '../error/no-transcript-generated-error';
|
|
4
|
+
import { logWarnings } from '../logger/log-warnings';
|
|
5
|
+
import { DataContent } from '../prompt';
|
|
6
|
+
import { convertDataContentToUint8Array } from '../prompt/data-content';
|
|
7
|
+
import { TranscriptionModel } from '../types/transcription-model';
|
|
8
|
+
import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
|
|
9
|
+
import {
|
|
10
|
+
audioMediaTypeSignatures,
|
|
11
|
+
detectMediaType,
|
|
12
|
+
} from '../util/detect-media-type';
|
|
13
|
+
import { createDownload } from '../util/download/create-download';
|
|
14
|
+
import { prepareRetries } from '../util/prepare-retries';
|
|
15
|
+
import { TranscriptionResult } from './transcribe-result';
|
|
16
|
+
import { VERSION } from '../version';
|
|
17
|
+
import { resolveTranscriptionModel } from '../model/resolve-model';
|
|
18
|
+
import { Warning } from '../types';
|
|
19
|
+
/**
|
|
20
|
+
* Generates transcripts using a transcription model.
|
|
21
|
+
*
|
|
22
|
+
* @param model - The transcription model to use.
|
|
23
|
+
* @param audio - The audio data to transcribe as DataContent (string | Uint8Array | ArrayBuffer | Buffer) or a URL.
|
|
24
|
+
* @param providerOptions - Additional provider-specific options that are passed through to the provider
|
|
25
|
+
* as body parameters.
|
|
26
|
+
* @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.
|
|
27
|
+
* @param abortSignal - An optional abort signal that can be used to cancel the call.
|
|
28
|
+
* @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.
|
|
29
|
+
*
|
|
30
|
+
* @returns A result object that contains the generated transcript.
|
|
31
|
+
*/
|
|
32
|
+
const defaultDownload = createDownload();
|
|
33
|
+
|
|
34
|
+
export async function transcribe({
|
|
35
|
+
model,
|
|
36
|
+
audio,
|
|
37
|
+
providerOptions = {},
|
|
38
|
+
maxRetries: maxRetriesArg,
|
|
39
|
+
abortSignal,
|
|
40
|
+
headers,
|
|
41
|
+
download: downloadFn = defaultDownload,
|
|
42
|
+
}: {
|
|
43
|
+
/**
|
|
44
|
+
* The transcription model to use.
|
|
45
|
+
*/
|
|
46
|
+
model: TranscriptionModel;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The audio data to transcribe.
|
|
50
|
+
*/
|
|
51
|
+
audio: DataContent | URL;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Additional provider-specific options that are passed through to the provider
|
|
55
|
+
* as body parameters.
|
|
56
|
+
*
|
|
57
|
+
* The outer record is keyed by the provider name, and the inner
|
|
58
|
+
* record is keyed by the provider-specific metadata key.
|
|
59
|
+
* ```ts
|
|
60
|
+
* {
|
|
61
|
+
* "openai": {
|
|
62
|
+
* "temperature": 0
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
providerOptions?: ProviderOptions;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Maximum number of retries per transcript model call. Set to 0 to disable retries.
|
|
71
|
+
*
|
|
72
|
+
* @default 2
|
|
73
|
+
*/
|
|
74
|
+
maxRetries?: number;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Abort signal.
|
|
78
|
+
*/
|
|
79
|
+
abortSignal?: AbortSignal;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Additional headers to include in the request.
|
|
83
|
+
* Only applicable for HTTP-based providers.
|
|
84
|
+
*/
|
|
85
|
+
headers?: Record<string, string>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Custom download function for fetching audio from URLs.
|
|
89
|
+
* Use `createDownload()` from `ai` to create a download function with custom size limits.
|
|
90
|
+
*
|
|
91
|
+
* @default createDownload() (2 GiB limit)
|
|
92
|
+
*/
|
|
93
|
+
download?: (options: {
|
|
94
|
+
url: URL;
|
|
95
|
+
abortSignal?: AbortSignal;
|
|
96
|
+
}) => Promise<{ data: Uint8Array; mediaType: string | undefined }>;
|
|
97
|
+
}): Promise<TranscriptionResult> {
|
|
98
|
+
const resolvedModel = resolveTranscriptionModel(model);
|
|
99
|
+
if (!resolvedModel) {
|
|
100
|
+
throw new Error('Model could not be resolved');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const { retry } = prepareRetries({
|
|
104
|
+
maxRetries: maxRetriesArg,
|
|
105
|
+
abortSignal,
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const headersWithUserAgent = withUserAgentSuffix(
|
|
109
|
+
headers ?? {},
|
|
110
|
+
`ai/${VERSION}`,
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
const audioData =
|
|
114
|
+
audio instanceof URL
|
|
115
|
+
? (await downloadFn({ url: audio, abortSignal })).data
|
|
116
|
+
: convertDataContentToUint8Array(audio);
|
|
117
|
+
|
|
118
|
+
const result = await retry(() =>
|
|
119
|
+
resolvedModel.doGenerate({
|
|
120
|
+
audio: audioData,
|
|
121
|
+
abortSignal,
|
|
122
|
+
headers: headersWithUserAgent,
|
|
123
|
+
providerOptions,
|
|
124
|
+
mediaType:
|
|
125
|
+
detectMediaType({
|
|
126
|
+
data: audioData,
|
|
127
|
+
signatures: audioMediaTypeSignatures,
|
|
128
|
+
}) ?? 'audio/wav',
|
|
129
|
+
}),
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
logWarnings({
|
|
133
|
+
warnings: result.warnings,
|
|
134
|
+
provider: resolvedModel.provider,
|
|
135
|
+
model: resolvedModel.modelId,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
if (!result.text) {
|
|
139
|
+
throw new NoTranscriptGeneratedError({ responses: [result.response] });
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return new DefaultTranscriptionResult({
|
|
143
|
+
text: result.text,
|
|
144
|
+
segments: result.segments,
|
|
145
|
+
language: result.language,
|
|
146
|
+
durationInSeconds: result.durationInSeconds,
|
|
147
|
+
warnings: result.warnings,
|
|
148
|
+
responses: [result.response],
|
|
149
|
+
providerMetadata: result.providerMetadata,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
class DefaultTranscriptionResult implements TranscriptionResult {
|
|
154
|
+
readonly text: string;
|
|
155
|
+
readonly segments: Array<{
|
|
156
|
+
text: string;
|
|
157
|
+
startSecond: number;
|
|
158
|
+
endSecond: number;
|
|
159
|
+
}>;
|
|
160
|
+
readonly language: string | undefined;
|
|
161
|
+
readonly durationInSeconds: number | undefined;
|
|
162
|
+
readonly warnings: Array<Warning>;
|
|
163
|
+
readonly responses: Array<TranscriptionModelResponseMetadata>;
|
|
164
|
+
readonly providerMetadata: Record<string, JSONObject>;
|
|
165
|
+
|
|
166
|
+
constructor(options: {
|
|
167
|
+
text: string;
|
|
168
|
+
segments: Array<{
|
|
169
|
+
text: string;
|
|
170
|
+
startSecond: number;
|
|
171
|
+
endSecond: number;
|
|
172
|
+
}>;
|
|
173
|
+
language: string | undefined;
|
|
174
|
+
durationInSeconds: number | undefined;
|
|
175
|
+
warnings: Array<Warning>;
|
|
176
|
+
responses: Array<TranscriptionModelResponseMetadata>;
|
|
177
|
+
providerMetadata: Record<string, JSONObject> | undefined;
|
|
178
|
+
}) {
|
|
179
|
+
this.text = options.text;
|
|
180
|
+
this.segments = options.segments;
|
|
181
|
+
this.language = options.language;
|
|
182
|
+
this.durationInSeconds = options.durationInSeconds;
|
|
183
|
+
this.warnings = options.warnings;
|
|
184
|
+
this.responses = options.responses;
|
|
185
|
+
this.providerMetadata = options.providerMetadata ?? {};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EmbeddingModelV4Middleware } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Middleware for embedding models.
|
|
5
|
+
* Accepts both V3 and V4 middleware types for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Uses EmbeddingModelV4Middleware as the base but relaxes specificationVersion
|
|
8
|
+
* to accept any string (including 'v3') and makes it optional.
|
|
9
|
+
*/
|
|
10
|
+
export type EmbeddingModelMiddleware = Omit<
|
|
11
|
+
EmbeddingModelV4Middleware,
|
|
12
|
+
'specificationVersion'
|
|
13
|
+
> & {
|
|
14
|
+
readonly specificationVersion?: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EmbeddingModelV2,
|
|
3
|
+
EmbeddingModelV3,
|
|
4
|
+
EmbeddingModelV4,
|
|
5
|
+
EmbeddingModelV4Embedding,
|
|
6
|
+
} from '@ai-sdk/provider';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Embedding model that is used by the AI SDK.
|
|
10
|
+
*/
|
|
11
|
+
export type EmbeddingModel =
|
|
12
|
+
| string
|
|
13
|
+
| EmbeddingModelV4
|
|
14
|
+
| EmbeddingModelV3
|
|
15
|
+
| EmbeddingModelV2<string>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Embedding.
|
|
19
|
+
*/
|
|
20
|
+
export type Embedding = EmbeddingModelV4Embedding;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImageModelV4Middleware } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Middleware for image models.
|
|
5
|
+
* Accepts both V3 and V4 middleware types for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Uses ImageModelV4Middleware as the base but relaxes specificationVersion
|
|
8
|
+
* to accept any string (including 'v3') and makes it optional.
|
|
9
|
+
*/
|
|
10
|
+
export type ImageModelMiddleware = Omit<
|
|
11
|
+
ImageModelV4Middleware,
|
|
12
|
+
'specificationVersion'
|
|
13
|
+
> & {
|
|
14
|
+
readonly specificationVersion?: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ImageModelResponseMetadata = {
|
|
2
|
+
/**
|
|
3
|
+
* Timestamp for the start of the generated response.
|
|
4
|
+
*/
|
|
5
|
+
timestamp: Date;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* The ID of the response model that was used to generate the response.
|
|
9
|
+
*/
|
|
10
|
+
modelId: string;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Response headers.
|
|
14
|
+
*/
|
|
15
|
+
headers?: Record<string, string>;
|
|
16
|
+
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ImageModelV2,
|
|
3
|
+
ImageModelV3,
|
|
4
|
+
ImageModelV4,
|
|
5
|
+
ImageModelV4ProviderMetadata,
|
|
6
|
+
ImageModelV2ProviderMetadata,
|
|
7
|
+
} from '@ai-sdk/provider';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Image model that is used by the AI SDK.
|
|
11
|
+
*/
|
|
12
|
+
export type ImageModel = string | ImageModelV4 | ImageModelV3 | ImageModelV2;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Metadata from the model provider for this call.
|
|
16
|
+
*/
|
|
17
|
+
export type ImageModelProviderMetadata =
|
|
18
|
+
| ImageModelV4ProviderMetadata
|
|
19
|
+
| ImageModelV2ProviderMetadata;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type { JSONSchema7 } from '@ai-sdk/provider';
|
|
2
|
+
export type { Embedding, EmbeddingModel } from './embedding-model';
|
|
3
|
+
export type { EmbeddingModelMiddleware } from './embedding-model-middleware';
|
|
4
|
+
export type { ImageModel, ImageModelProviderMetadata } from './image-model';
|
|
5
|
+
export type { ImageModelMiddleware } from './image-model-middleware';
|
|
6
|
+
export type { ImageModelResponseMetadata } from './image-model-response-metadata';
|
|
7
|
+
export type { JSONValue } from './json-value';
|
|
8
|
+
export type {
|
|
9
|
+
CallWarning,
|
|
10
|
+
FinishReason,
|
|
11
|
+
LanguageModel,
|
|
12
|
+
ToolChoice,
|
|
13
|
+
} from './language-model';
|
|
14
|
+
export type { LanguageModelMiddleware } from './language-model-middleware';
|
|
15
|
+
export type { LanguageModelRequestMetadata } from './language-model-request-metadata';
|
|
16
|
+
export type { LanguageModelResponseMetadata } from './language-model-response-metadata';
|
|
17
|
+
export type { Provider } from './provider';
|
|
18
|
+
export type { ProviderMetadata } from './provider-metadata';
|
|
19
|
+
export type { RerankingModel } from './reranking-model';
|
|
20
|
+
export type { SpeechModel } from './speech-model';
|
|
21
|
+
export type { SpeechModelResponseMetadata } from './speech-model-response-metadata';
|
|
22
|
+
export type { TranscriptionModel } from './transcription-model';
|
|
23
|
+
export type { TranscriptionModelResponseMetadata } from './transcription-model-response-metadata';
|
|
24
|
+
export type {
|
|
25
|
+
EmbeddingModelUsage,
|
|
26
|
+
ImageModelUsage,
|
|
27
|
+
LanguageModelUsage,
|
|
28
|
+
} from './usage';
|
|
29
|
+
export type { Warning } from './warning';
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { JSONValue as OriginalJSONValue } from '@ai-sdk/provider';
|
|
2
|
+
import { z } from 'zod/v4';
|
|
3
|
+
|
|
4
|
+
export const jsonValueSchema: z.ZodType<JSONValue> = z.lazy(() =>
|
|
5
|
+
z.union([
|
|
6
|
+
z.null(),
|
|
7
|
+
z.string(),
|
|
8
|
+
z.number(),
|
|
9
|
+
z.boolean(),
|
|
10
|
+
z.record(z.string(), jsonValueSchema.optional()),
|
|
11
|
+
z.array(jsonValueSchema),
|
|
12
|
+
]),
|
|
13
|
+
);
|
|
14
|
+
|
|
15
|
+
export type JSONValue = OriginalJSONValue;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LanguageModelV4Middleware } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Middleware for language models.
|
|
5
|
+
* Accepts both V3 and V4 middleware types for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Uses LanguageModelV4Middleware as the base but relaxes specificationVersion
|
|
8
|
+
* to accept any string (including 'v3') and makes it optional.
|
|
9
|
+
*/
|
|
10
|
+
export type LanguageModelMiddleware = Omit<
|
|
11
|
+
LanguageModelV4Middleware,
|
|
12
|
+
'specificationVersion'
|
|
13
|
+
> & {
|
|
14
|
+
readonly specificationVersion?: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export type LanguageModelResponseMetadata = {
|
|
2
|
+
/**
|
|
3
|
+
* ID for the generated response.
|
|
4
|
+
*/
|
|
5
|
+
id: string;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Timestamp for the start of the generated response.
|
|
9
|
+
*/
|
|
10
|
+
timestamp: Date;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The ID of the response model that was used to generate the response.
|
|
14
|
+
*/
|
|
15
|
+
modelId: string;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Response headers (available only for providers that use HTTP requests).
|
|
19
|
+
*/
|
|
20
|
+
headers?: Record<string, string>;
|
|
21
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { GatewayModelId } from '@ai-sdk/gateway';
|
|
2
|
+
import {
|
|
3
|
+
LanguageModelV2,
|
|
4
|
+
LanguageModelV3,
|
|
5
|
+
LanguageModelV4,
|
|
6
|
+
SharedV4Warning,
|
|
7
|
+
LanguageModelV4Source,
|
|
8
|
+
} from '@ai-sdk/provider';
|
|
9
|
+
|
|
10
|
+
declare global {
|
|
11
|
+
/**
|
|
12
|
+
* Global interface that can be augmented by third-party packages to register custom model IDs.
|
|
13
|
+
*
|
|
14
|
+
* You can register model IDs in two ways:
|
|
15
|
+
*
|
|
16
|
+
* 1. Register based on Model IDs from a provider package:
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { openai } from '@ai-sdk/openai';
|
|
20
|
+
* type OpenAIResponsesModelId = Parameters<typeof openai>[0];
|
|
21
|
+
*
|
|
22
|
+
* declare global {
|
|
23
|
+
* interface RegisteredProviderModels {
|
|
24
|
+
* openai: OpenAIResponsesModelId;
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* 2. Register individual model IDs directly as keys:
|
|
30
|
+
* @example
|
|
31
|
+
* ```typescript
|
|
32
|
+
* declare global {
|
|
33
|
+
* interface RegisteredProviderModels {
|
|
34
|
+
* 'my-provider:my-model': any;
|
|
35
|
+
* 'my-provider:another-model': any;
|
|
36
|
+
* }
|
|
37
|
+
* }
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
interface RegisteredProviderModels {}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Global provider model ID type that defaults to GatewayModelId but can be augmented
|
|
45
|
+
* by third-party packages via declaration merging.
|
|
46
|
+
*/
|
|
47
|
+
export type GlobalProviderModelId = [keyof RegisteredProviderModels] extends [
|
|
48
|
+
never,
|
|
49
|
+
]
|
|
50
|
+
? GatewayModelId
|
|
51
|
+
:
|
|
52
|
+
| keyof RegisteredProviderModels
|
|
53
|
+
| RegisteredProviderModels[keyof RegisteredProviderModels];
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Language model that is used by the AI SDK.
|
|
57
|
+
*/
|
|
58
|
+
export type LanguageModel =
|
|
59
|
+
| GlobalProviderModelId
|
|
60
|
+
| LanguageModelV4
|
|
61
|
+
| LanguageModelV3
|
|
62
|
+
| LanguageModelV2;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Reason why a language model finished generating a response.
|
|
66
|
+
*
|
|
67
|
+
* Can be one of the following:
|
|
68
|
+
* - `stop`: model generated stop sequence
|
|
69
|
+
* - `length`: model generated maximum number of tokens
|
|
70
|
+
* - `content-filter`: content filter violation stopped the model
|
|
71
|
+
* - `tool-calls`: model triggered tool calls
|
|
72
|
+
* - `error`: model stopped because of an error
|
|
73
|
+
* - `other`: model stopped for other reasons
|
|
74
|
+
*/
|
|
75
|
+
export type FinishReason =
|
|
76
|
+
| 'stop'
|
|
77
|
+
| 'length'
|
|
78
|
+
| 'content-filter'
|
|
79
|
+
| 'tool-calls'
|
|
80
|
+
| 'error'
|
|
81
|
+
| 'other';
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Warning from the model provider for this call. The call will proceed, but e.g.
|
|
85
|
+
* some settings might not be supported, which can lead to suboptimal results.
|
|
86
|
+
*/
|
|
87
|
+
export type CallWarning = SharedV4Warning;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* A source that has been used as input to generate the response.
|
|
91
|
+
*/
|
|
92
|
+
export type Source = LanguageModelV4Source;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Tool choice for the generation. It supports the following settings:
|
|
96
|
+
*
|
|
97
|
+
* - `auto` (default): the model can choose whether and which tools to call.
|
|
98
|
+
* - `required`: the model must call a tool. It can choose which tool to call.
|
|
99
|
+
* - `none`: the model must not call tools
|
|
100
|
+
* - `{ type: 'tool', toolName: string (typed) }`: the model must call the specified tool
|
|
101
|
+
*/
|
|
102
|
+
export type ToolChoice<TOOLS extends Record<string, unknown>> =
|
|
103
|
+
| 'auto'
|
|
104
|
+
| 'none'
|
|
105
|
+
| 'required'
|
|
106
|
+
| { type: 'tool'; toolName: Extract<keyof TOOLS, string> };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { SharedV4ProviderMetadata } from '@ai-sdk/provider';
|
|
2
|
+
import { z } from 'zod/v4';
|
|
3
|
+
import { jsonValueSchema } from './json-value';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Additional provider-specific metadata that is returned from the provider.
|
|
7
|
+
*
|
|
8
|
+
* This is needed to enable provider-specific functionality that can be
|
|
9
|
+
* fully encapsulated in the provider.
|
|
10
|
+
*/
|
|
11
|
+
export type ProviderMetadata = SharedV4ProviderMetadata;
|
|
12
|
+
|
|
13
|
+
export const providerMetadataSchema: z.ZodType<ProviderMetadata> = z.record(
|
|
14
|
+
z.string(),
|
|
15
|
+
z.record(z.string(), jsonValueSchema.optional()),
|
|
16
|
+
);
|