@fondation-io/ai 7.0.0-beta.45
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 +7687 -0
- package/README.md +238 -0
- package/dist/index.d.mts +7056 -0
- package/dist/index.d.ts +7056 -0
- package/dist/index.js +14607 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +14578 -0
- package/dist/index.mjs.map +1 -0
- package/dist/internal/index.d.mts +303 -0
- package/dist/internal/index.d.ts +303 -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 +160 -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 +1148 -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 +236 -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 +1303 -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 +534 -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 +323 -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 +252 -0
- package/src/agent/tool-loop-agent.ts +205 -0
- package/src/embed/embed-events.ts +181 -0
- package/src/embed/embed-many-result.ts +53 -0
- package/src/embed/embed-many.ts +428 -0
- package/src/embed/embed-result.ts +50 -0
- package/src/embed/embed.ts +266 -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 +144 -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 +1445 -0
- package/src/generate-text/generated-file.ts +70 -0
- package/src/generate-text/index.ts +78 -0
- package/src/generate-text/invoke-tool-callbacks-from-stream.ts +81 -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-model-call.ts +418 -0
- package/src/generate-text/stream-text-result.ts +536 -0
- package/src/generate-text/stream-text.ts +2696 -0
- package/src/generate-text/to-response-messages.ts +195 -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 +169 -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 +8 -0
- package/src/rerank/rerank-events.ts +189 -0
- package/src/rerank/rerank-result.ts +70 -0
- package/src/rerank/rerank.ts +348 -0
- package/src/telemetry/assemble-operation-name.ts +21 -0
- package/src/telemetry/get-base-telemetry-attributes.ts +45 -0
- package/src/telemetry/get-global-telemetry-integration.ts +126 -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 +875 -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 +139 -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,472 @@
|
|
|
1
|
+
// test/index.ts
|
|
2
|
+
import {
|
|
3
|
+
convertArrayToAsyncIterable,
|
|
4
|
+
convertArrayToReadableStream,
|
|
5
|
+
convertReadableStreamToArray,
|
|
6
|
+
mockId
|
|
7
|
+
} from "@ai-sdk/provider-utils/test";
|
|
8
|
+
|
|
9
|
+
// src/test/not-implemented.ts
|
|
10
|
+
function notImplemented() {
|
|
11
|
+
throw new Error("Not implemented");
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// src/test/mock-embedding-model-v3.ts
|
|
15
|
+
var MockEmbeddingModelV3 = class {
|
|
16
|
+
constructor({
|
|
17
|
+
provider = "mock-provider",
|
|
18
|
+
modelId = "mock-model-id",
|
|
19
|
+
maxEmbeddingsPerCall = 1,
|
|
20
|
+
supportsParallelCalls = false,
|
|
21
|
+
doEmbed = notImplemented
|
|
22
|
+
} = {}) {
|
|
23
|
+
this.specificationVersion = "v3";
|
|
24
|
+
this.doEmbedCalls = [];
|
|
25
|
+
this.provider = provider;
|
|
26
|
+
this.modelId = modelId;
|
|
27
|
+
this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? void 0;
|
|
28
|
+
this.supportsParallelCalls = supportsParallelCalls;
|
|
29
|
+
this.doEmbed = async (options) => {
|
|
30
|
+
this.doEmbedCalls.push(options);
|
|
31
|
+
if (typeof doEmbed === "function") {
|
|
32
|
+
return doEmbed(options);
|
|
33
|
+
} else if (Array.isArray(doEmbed)) {
|
|
34
|
+
return doEmbed[this.doEmbedCalls.length];
|
|
35
|
+
} else {
|
|
36
|
+
return doEmbed;
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
// src/test/mock-embedding-model-v4.ts
|
|
43
|
+
var MockEmbeddingModelV4 = class {
|
|
44
|
+
constructor({
|
|
45
|
+
provider = "mock-provider",
|
|
46
|
+
modelId = "mock-model-id",
|
|
47
|
+
maxEmbeddingsPerCall = 1,
|
|
48
|
+
supportsParallelCalls = false,
|
|
49
|
+
doEmbed = notImplemented
|
|
50
|
+
} = {}) {
|
|
51
|
+
this.specificationVersion = "v4";
|
|
52
|
+
this.doEmbedCalls = [];
|
|
53
|
+
this.provider = provider;
|
|
54
|
+
this.modelId = modelId;
|
|
55
|
+
this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? void 0;
|
|
56
|
+
this.supportsParallelCalls = supportsParallelCalls;
|
|
57
|
+
this.doEmbed = async (options) => {
|
|
58
|
+
this.doEmbedCalls.push(options);
|
|
59
|
+
if (typeof doEmbed === "function") {
|
|
60
|
+
return doEmbed(options);
|
|
61
|
+
} else if (Array.isArray(doEmbed)) {
|
|
62
|
+
return doEmbed[this.doEmbedCalls.length];
|
|
63
|
+
} else {
|
|
64
|
+
return doEmbed;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
// src/test/mock-image-model-v3.ts
|
|
71
|
+
var MockImageModelV3 = class {
|
|
72
|
+
constructor({
|
|
73
|
+
provider = "mock-provider",
|
|
74
|
+
modelId = "mock-model-id",
|
|
75
|
+
maxImagesPerCall = 1,
|
|
76
|
+
doGenerate = notImplemented
|
|
77
|
+
} = {}) {
|
|
78
|
+
this.specificationVersion = "v3";
|
|
79
|
+
this.provider = provider;
|
|
80
|
+
this.modelId = modelId;
|
|
81
|
+
this.maxImagesPerCall = maxImagesPerCall;
|
|
82
|
+
this.doGenerate = doGenerate;
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// src/test/mock-image-model-v4.ts
|
|
87
|
+
var MockImageModelV4 = class {
|
|
88
|
+
constructor({
|
|
89
|
+
provider = "mock-provider",
|
|
90
|
+
modelId = "mock-model-id",
|
|
91
|
+
maxImagesPerCall = 1,
|
|
92
|
+
doGenerate = notImplemented
|
|
93
|
+
} = {}) {
|
|
94
|
+
this.specificationVersion = "v4";
|
|
95
|
+
this.provider = provider;
|
|
96
|
+
this.modelId = modelId;
|
|
97
|
+
this.maxImagesPerCall = maxImagesPerCall;
|
|
98
|
+
this.doGenerate = doGenerate;
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/test/mock-language-model-v3.ts
|
|
103
|
+
var MockLanguageModelV3 = class {
|
|
104
|
+
constructor({
|
|
105
|
+
provider = "mock-provider",
|
|
106
|
+
modelId = "mock-model-id",
|
|
107
|
+
supportedUrls = {},
|
|
108
|
+
doGenerate = notImplemented,
|
|
109
|
+
doStream = notImplemented
|
|
110
|
+
} = {}) {
|
|
111
|
+
this.specificationVersion = "v3";
|
|
112
|
+
this.doGenerateCalls = [];
|
|
113
|
+
this.doStreamCalls = [];
|
|
114
|
+
this.provider = provider;
|
|
115
|
+
this.modelId = modelId;
|
|
116
|
+
this.doGenerate = async (options) => {
|
|
117
|
+
this.doGenerateCalls.push(options);
|
|
118
|
+
if (typeof doGenerate === "function") {
|
|
119
|
+
return doGenerate(options);
|
|
120
|
+
} else if (Array.isArray(doGenerate)) {
|
|
121
|
+
return doGenerate[this.doGenerateCalls.length];
|
|
122
|
+
} else {
|
|
123
|
+
return doGenerate;
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
this.doStream = async (options) => {
|
|
127
|
+
this.doStreamCalls.push(options);
|
|
128
|
+
if (typeof doStream === "function") {
|
|
129
|
+
return doStream(options);
|
|
130
|
+
} else if (Array.isArray(doStream)) {
|
|
131
|
+
return doStream[this.doStreamCalls.length];
|
|
132
|
+
} else {
|
|
133
|
+
return doStream;
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
this._supportedUrls = typeof supportedUrls === "function" ? supportedUrls : async () => supportedUrls;
|
|
137
|
+
}
|
|
138
|
+
get supportedUrls() {
|
|
139
|
+
return this._supportedUrls();
|
|
140
|
+
}
|
|
141
|
+
};
|
|
142
|
+
|
|
143
|
+
// src/test/mock-language-model-v4.ts
|
|
144
|
+
var MockLanguageModelV4 = class {
|
|
145
|
+
constructor({
|
|
146
|
+
provider = "mock-provider",
|
|
147
|
+
modelId = "mock-model-id",
|
|
148
|
+
supportedUrls = {},
|
|
149
|
+
doGenerate = notImplemented,
|
|
150
|
+
doStream = notImplemented
|
|
151
|
+
} = {}) {
|
|
152
|
+
this.specificationVersion = "v4";
|
|
153
|
+
this.doGenerateCalls = [];
|
|
154
|
+
this.doStreamCalls = [];
|
|
155
|
+
this.provider = provider;
|
|
156
|
+
this.modelId = modelId;
|
|
157
|
+
this.doGenerate = async (options) => {
|
|
158
|
+
this.doGenerateCalls.push(options);
|
|
159
|
+
if (typeof doGenerate === "function") {
|
|
160
|
+
return doGenerate(options);
|
|
161
|
+
} else if (Array.isArray(doGenerate)) {
|
|
162
|
+
return doGenerate[this.doGenerateCalls.length];
|
|
163
|
+
} else {
|
|
164
|
+
return doGenerate;
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
this.doStream = async (options) => {
|
|
168
|
+
this.doStreamCalls.push(options);
|
|
169
|
+
if (typeof doStream === "function") {
|
|
170
|
+
return doStream(options);
|
|
171
|
+
} else if (Array.isArray(doStream)) {
|
|
172
|
+
return doStream[this.doStreamCalls.length];
|
|
173
|
+
} else {
|
|
174
|
+
return doStream;
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
this._supportedUrls = typeof supportedUrls === "function" ? supportedUrls : async () => supportedUrls;
|
|
178
|
+
}
|
|
179
|
+
get supportedUrls() {
|
|
180
|
+
return this._supportedUrls();
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
// src/test/mock-provider-v3.ts
|
|
185
|
+
import {
|
|
186
|
+
NoSuchModelError
|
|
187
|
+
} from "@ai-sdk/provider";
|
|
188
|
+
var MockProviderV3 = class {
|
|
189
|
+
constructor({
|
|
190
|
+
languageModels,
|
|
191
|
+
embeddingModels,
|
|
192
|
+
imageModels,
|
|
193
|
+
transcriptionModels,
|
|
194
|
+
speechModels,
|
|
195
|
+
rerankingModels
|
|
196
|
+
} = {}) {
|
|
197
|
+
this.specificationVersion = "v3";
|
|
198
|
+
this.languageModel = (modelId) => {
|
|
199
|
+
if (!languageModels?.[modelId]) {
|
|
200
|
+
throw new NoSuchModelError({ modelId, modelType: "languageModel" });
|
|
201
|
+
}
|
|
202
|
+
return languageModels[modelId];
|
|
203
|
+
};
|
|
204
|
+
this.embeddingModel = (modelId) => {
|
|
205
|
+
if (!embeddingModels?.[modelId]) {
|
|
206
|
+
throw new NoSuchModelError({
|
|
207
|
+
modelId,
|
|
208
|
+
modelType: "embeddingModel"
|
|
209
|
+
});
|
|
210
|
+
}
|
|
211
|
+
return embeddingModels[modelId];
|
|
212
|
+
};
|
|
213
|
+
this.imageModel = (modelId) => {
|
|
214
|
+
if (!imageModels?.[modelId]) {
|
|
215
|
+
throw new NoSuchModelError({ modelId, modelType: "imageModel" });
|
|
216
|
+
}
|
|
217
|
+
return imageModels[modelId];
|
|
218
|
+
};
|
|
219
|
+
this.transcriptionModel = (modelId) => {
|
|
220
|
+
if (!transcriptionModels?.[modelId]) {
|
|
221
|
+
throw new NoSuchModelError({
|
|
222
|
+
modelId,
|
|
223
|
+
modelType: "transcriptionModel"
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
return transcriptionModels[modelId];
|
|
227
|
+
};
|
|
228
|
+
this.speechModel = (modelId) => {
|
|
229
|
+
if (!speechModels?.[modelId]) {
|
|
230
|
+
throw new NoSuchModelError({ modelId, modelType: "speechModel" });
|
|
231
|
+
}
|
|
232
|
+
return speechModels[modelId];
|
|
233
|
+
};
|
|
234
|
+
this.rerankingModel = (modelId) => {
|
|
235
|
+
if (!rerankingModels?.[modelId]) {
|
|
236
|
+
throw new NoSuchModelError({ modelId, modelType: "rerankingModel" });
|
|
237
|
+
}
|
|
238
|
+
return rerankingModels[modelId];
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
};
|
|
242
|
+
|
|
243
|
+
// src/test/mock-provider-v4.ts
|
|
244
|
+
import {
|
|
245
|
+
NoSuchModelError as NoSuchModelError2
|
|
246
|
+
} from "@ai-sdk/provider";
|
|
247
|
+
var MockProviderV4 = class {
|
|
248
|
+
constructor({
|
|
249
|
+
languageModels,
|
|
250
|
+
embeddingModels,
|
|
251
|
+
imageModels,
|
|
252
|
+
transcriptionModels,
|
|
253
|
+
speechModels,
|
|
254
|
+
rerankingModels
|
|
255
|
+
} = {}) {
|
|
256
|
+
this.specificationVersion = "v4";
|
|
257
|
+
this.languageModel = (modelId) => {
|
|
258
|
+
if (!languageModels?.[modelId]) {
|
|
259
|
+
throw new NoSuchModelError2({ modelId, modelType: "languageModel" });
|
|
260
|
+
}
|
|
261
|
+
return languageModels[modelId];
|
|
262
|
+
};
|
|
263
|
+
this.embeddingModel = (modelId) => {
|
|
264
|
+
if (!embeddingModels?.[modelId]) {
|
|
265
|
+
throw new NoSuchModelError2({
|
|
266
|
+
modelId,
|
|
267
|
+
modelType: "embeddingModel"
|
|
268
|
+
});
|
|
269
|
+
}
|
|
270
|
+
return embeddingModels[modelId];
|
|
271
|
+
};
|
|
272
|
+
this.imageModel = (modelId) => {
|
|
273
|
+
if (!imageModels?.[modelId]) {
|
|
274
|
+
throw new NoSuchModelError2({ modelId, modelType: "imageModel" });
|
|
275
|
+
}
|
|
276
|
+
return imageModels[modelId];
|
|
277
|
+
};
|
|
278
|
+
this.transcriptionModel = (modelId) => {
|
|
279
|
+
if (!transcriptionModels?.[modelId]) {
|
|
280
|
+
throw new NoSuchModelError2({
|
|
281
|
+
modelId,
|
|
282
|
+
modelType: "transcriptionModel"
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
return transcriptionModels[modelId];
|
|
286
|
+
};
|
|
287
|
+
this.speechModel = (modelId) => {
|
|
288
|
+
if (!speechModels?.[modelId]) {
|
|
289
|
+
throw new NoSuchModelError2({ modelId, modelType: "speechModel" });
|
|
290
|
+
}
|
|
291
|
+
return speechModels[modelId];
|
|
292
|
+
};
|
|
293
|
+
this.rerankingModel = (modelId) => {
|
|
294
|
+
if (!rerankingModels?.[modelId]) {
|
|
295
|
+
throw new NoSuchModelError2({ modelId, modelType: "rerankingModel" });
|
|
296
|
+
}
|
|
297
|
+
return rerankingModels[modelId];
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
};
|
|
301
|
+
|
|
302
|
+
// src/test/mock-speech-model-v3.ts
|
|
303
|
+
var MockSpeechModelV3 = class {
|
|
304
|
+
constructor({
|
|
305
|
+
provider = "mock-provider",
|
|
306
|
+
modelId = "mock-model-id",
|
|
307
|
+
doGenerate = notImplemented
|
|
308
|
+
} = {}) {
|
|
309
|
+
this.specificationVersion = "v3";
|
|
310
|
+
this.provider = provider;
|
|
311
|
+
this.modelId = modelId;
|
|
312
|
+
this.doGenerate = doGenerate;
|
|
313
|
+
}
|
|
314
|
+
};
|
|
315
|
+
|
|
316
|
+
// src/test/mock-speech-model-v4.ts
|
|
317
|
+
var MockSpeechModelV4 = class {
|
|
318
|
+
constructor({
|
|
319
|
+
provider = "mock-provider",
|
|
320
|
+
modelId = "mock-model-id",
|
|
321
|
+
doGenerate = notImplemented
|
|
322
|
+
} = {}) {
|
|
323
|
+
this.specificationVersion = "v4";
|
|
324
|
+
this.provider = provider;
|
|
325
|
+
this.modelId = modelId;
|
|
326
|
+
this.doGenerate = doGenerate;
|
|
327
|
+
}
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
// src/test/mock-transcription-model-v3.ts
|
|
331
|
+
var MockTranscriptionModelV3 = class {
|
|
332
|
+
constructor({
|
|
333
|
+
provider = "mock-provider",
|
|
334
|
+
modelId = "mock-model-id",
|
|
335
|
+
doGenerate = notImplemented
|
|
336
|
+
} = {}) {
|
|
337
|
+
this.specificationVersion = "v3";
|
|
338
|
+
this.provider = provider;
|
|
339
|
+
this.modelId = modelId;
|
|
340
|
+
this.doGenerate = doGenerate;
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
// src/test/mock-transcription-model-v4.ts
|
|
345
|
+
var MockTranscriptionModelV4 = class {
|
|
346
|
+
constructor({
|
|
347
|
+
provider = "mock-provider",
|
|
348
|
+
modelId = "mock-model-id",
|
|
349
|
+
doGenerate = notImplemented
|
|
350
|
+
} = {}) {
|
|
351
|
+
this.specificationVersion = "v4";
|
|
352
|
+
this.provider = provider;
|
|
353
|
+
this.modelId = modelId;
|
|
354
|
+
this.doGenerate = doGenerate;
|
|
355
|
+
}
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
// src/test/mock-reranking-model-v3.ts
|
|
359
|
+
var MockRerankingModelV3 = class {
|
|
360
|
+
constructor({
|
|
361
|
+
provider = "mock-provider",
|
|
362
|
+
modelId = "mock-model-id",
|
|
363
|
+
doRerank = notImplemented
|
|
364
|
+
} = {}) {
|
|
365
|
+
this.specificationVersion = "v3";
|
|
366
|
+
this.provider = provider;
|
|
367
|
+
this.modelId = modelId;
|
|
368
|
+
this.doRerank = doRerank;
|
|
369
|
+
}
|
|
370
|
+
};
|
|
371
|
+
|
|
372
|
+
// src/test/mock-reranking-model-v4.ts
|
|
373
|
+
var MockRerankingModelV4 = class {
|
|
374
|
+
constructor({
|
|
375
|
+
provider = "mock-provider",
|
|
376
|
+
modelId = "mock-model-id",
|
|
377
|
+
doRerank = notImplemented
|
|
378
|
+
} = {}) {
|
|
379
|
+
this.specificationVersion = "v4";
|
|
380
|
+
this.provider = provider;
|
|
381
|
+
this.modelId = modelId;
|
|
382
|
+
this.doRerank = doRerank;
|
|
383
|
+
}
|
|
384
|
+
};
|
|
385
|
+
|
|
386
|
+
// src/test/mock-video-model-v3.ts
|
|
387
|
+
var MockVideoModelV3 = class {
|
|
388
|
+
constructor({
|
|
389
|
+
provider = "mock-provider",
|
|
390
|
+
modelId = "mock-model-id",
|
|
391
|
+
maxVideosPerCall = 1,
|
|
392
|
+
doGenerate = notImplemented
|
|
393
|
+
} = {}) {
|
|
394
|
+
this.specificationVersion = "v3";
|
|
395
|
+
this.provider = provider;
|
|
396
|
+
this.modelId = modelId;
|
|
397
|
+
this.maxVideosPerCall = maxVideosPerCall;
|
|
398
|
+
this.doGenerate = doGenerate;
|
|
399
|
+
}
|
|
400
|
+
};
|
|
401
|
+
|
|
402
|
+
// src/test/mock-video-model-v4.ts
|
|
403
|
+
var MockVideoModelV4 = class {
|
|
404
|
+
constructor({
|
|
405
|
+
provider = "mock-provider",
|
|
406
|
+
modelId = "mock-model-id",
|
|
407
|
+
maxVideosPerCall = 1,
|
|
408
|
+
doGenerate = notImplemented
|
|
409
|
+
} = {}) {
|
|
410
|
+
this.specificationVersion = "v4";
|
|
411
|
+
this.provider = provider;
|
|
412
|
+
this.modelId = modelId;
|
|
413
|
+
this.maxVideosPerCall = maxVideosPerCall;
|
|
414
|
+
this.doGenerate = doGenerate;
|
|
415
|
+
}
|
|
416
|
+
};
|
|
417
|
+
|
|
418
|
+
// src/test/mock-values.ts
|
|
419
|
+
function mockValues(...values) {
|
|
420
|
+
let counter = 0;
|
|
421
|
+
return () => values[counter++] ?? values[values.length - 1];
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
// src/util/simulate-readable-stream.ts
|
|
425
|
+
import { delay as delayFunction } from "@ai-sdk/provider-utils";
|
|
426
|
+
function simulateReadableStream({
|
|
427
|
+
chunks,
|
|
428
|
+
initialDelayInMs = 0,
|
|
429
|
+
chunkDelayInMs = 0,
|
|
430
|
+
_internal
|
|
431
|
+
}) {
|
|
432
|
+
const delay = _internal?.delay ?? delayFunction;
|
|
433
|
+
let index = 0;
|
|
434
|
+
return new ReadableStream({
|
|
435
|
+
async pull(controller) {
|
|
436
|
+
if (index < chunks.length) {
|
|
437
|
+
await delay(index === 0 ? initialDelayInMs : chunkDelayInMs);
|
|
438
|
+
controller.enqueue(chunks[index++]);
|
|
439
|
+
} else {
|
|
440
|
+
controller.close();
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
});
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
// test/index.ts
|
|
447
|
+
var simulateReadableStream2 = simulateReadableStream;
|
|
448
|
+
export {
|
|
449
|
+
MockEmbeddingModelV3,
|
|
450
|
+
MockEmbeddingModelV4,
|
|
451
|
+
MockImageModelV3,
|
|
452
|
+
MockImageModelV4,
|
|
453
|
+
MockLanguageModelV3,
|
|
454
|
+
MockLanguageModelV4,
|
|
455
|
+
MockProviderV3,
|
|
456
|
+
MockProviderV4,
|
|
457
|
+
MockRerankingModelV3,
|
|
458
|
+
MockRerankingModelV4,
|
|
459
|
+
MockSpeechModelV3,
|
|
460
|
+
MockSpeechModelV4,
|
|
461
|
+
MockTranscriptionModelV3,
|
|
462
|
+
MockTranscriptionModelV4,
|
|
463
|
+
MockVideoModelV3,
|
|
464
|
+
MockVideoModelV4,
|
|
465
|
+
convertArrayToAsyncIterable,
|
|
466
|
+
convertArrayToReadableStream,
|
|
467
|
+
convertReadableStreamToArray,
|
|
468
|
+
mockId,
|
|
469
|
+
mockValues,
|
|
470
|
+
simulateReadableStream2 as simulateReadableStream
|
|
471
|
+
};
|
|
472
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../test/index.ts","../../src/test/not-implemented.ts","../../src/test/mock-embedding-model-v3.ts","../../src/test/mock-embedding-model-v4.ts","../../src/test/mock-image-model-v3.ts","../../src/test/mock-image-model-v4.ts","../../src/test/mock-language-model-v3.ts","../../src/test/mock-language-model-v4.ts","../../src/test/mock-provider-v3.ts","../../src/test/mock-provider-v4.ts","../../src/test/mock-speech-model-v3.ts","../../src/test/mock-speech-model-v4.ts","../../src/test/mock-transcription-model-v3.ts","../../src/test/mock-transcription-model-v4.ts","../../src/test/mock-reranking-model-v3.ts","../../src/test/mock-reranking-model-v4.ts","../../src/test/mock-video-model-v3.ts","../../src/test/mock-video-model-v4.ts","../../src/test/mock-values.ts","../../src/util/simulate-readable-stream.ts"],"sourcesContent":["export {\n convertArrayToAsyncIterable,\n convertArrayToReadableStream,\n convertReadableStreamToArray,\n mockId,\n} from '@ai-sdk/provider-utils/test';\nexport { MockEmbeddingModelV3 } from '../src/test/mock-embedding-model-v3';\nexport { MockEmbeddingModelV4 } from '../src/test/mock-embedding-model-v4';\nexport { MockImageModelV3 } from '../src/test/mock-image-model-v3';\nexport { MockImageModelV4 } from '../src/test/mock-image-model-v4';\nexport { MockLanguageModelV3 } from '../src/test/mock-language-model-v3';\nexport { MockLanguageModelV4 } from '../src/test/mock-language-model-v4';\nexport { MockProviderV3 } from '../src/test/mock-provider-v3';\nexport { MockProviderV4 } from '../src/test/mock-provider-v4';\nexport { MockSpeechModelV3 } from '../src/test/mock-speech-model-v3';\nexport { MockSpeechModelV4 } from '../src/test/mock-speech-model-v4';\nexport { MockTranscriptionModelV3 } from '../src/test/mock-transcription-model-v3';\nexport { MockTranscriptionModelV4 } from '../src/test/mock-transcription-model-v4';\nexport { MockRerankingModelV3 } from '../src/test/mock-reranking-model-v3';\nexport { MockRerankingModelV4 } from '../src/test/mock-reranking-model-v4';\nexport { MockVideoModelV3 } from '../src/test/mock-video-model-v3';\nexport { MockVideoModelV4 } from '../src/test/mock-video-model-v4';\nexport { mockValues } from '../src/test/mock-values';\n\nimport { simulateReadableStream as originalSimulateReadableStream } from '../src/util/simulate-readable-stream';\n\n/**\n * @deprecated Use `simulateReadableStream` from `ai` instead.\n */\nexport const simulateReadableStream = originalSimulateReadableStream;\n","export function notImplemented(): never {\n throw new Error('Not implemented');\n}\n","import { EmbeddingModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV3 implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly provider: EmbeddingModelV3['provider'];\n readonly modelId: EmbeddingModelV3['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV3['maxEmbeddingsPerCall'];\n readonly supportsParallelCalls: EmbeddingModelV3['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV3['doEmbed'];\n\n doEmbedCalls: Parameters<EmbeddingModelV3['doEmbed']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV3['provider'];\n modelId?: EmbeddingModelV3['modelId'];\n maxEmbeddingsPerCall?: EmbeddingModelV3['maxEmbeddingsPerCall'] | null;\n supportsParallelCalls?: EmbeddingModelV3['supportsParallelCalls'];\n doEmbed?:\n | EmbeddingModelV3['doEmbed']\n | Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n | Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = async options => {\n this.doEmbedCalls.push(options);\n\n if (typeof doEmbed === 'function') {\n return doEmbed(options);\n } else if (Array.isArray(doEmbed)) {\n return doEmbed[this.doEmbedCalls.length];\n } else {\n return doEmbed;\n }\n };\n }\n}\n","import { EmbeddingModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV4 implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly provider: EmbeddingModelV4['provider'];\n readonly modelId: EmbeddingModelV4['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV4['maxEmbeddingsPerCall'];\n readonly supportsParallelCalls: EmbeddingModelV4['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV4['doEmbed'];\n\n doEmbedCalls: Parameters<EmbeddingModelV4['doEmbed']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV4['provider'];\n modelId?: EmbeddingModelV4['modelId'];\n maxEmbeddingsPerCall?: EmbeddingModelV4['maxEmbeddingsPerCall'] | null;\n supportsParallelCalls?: EmbeddingModelV4['supportsParallelCalls'];\n doEmbed?:\n | EmbeddingModelV4['doEmbed']\n | Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n | Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = async options => {\n this.doEmbedCalls.push(options);\n\n if (typeof doEmbed === 'function') {\n return doEmbed(options);\n } else if (Array.isArray(doEmbed)) {\n return doEmbed[this.doEmbedCalls.length];\n } else {\n return doEmbed;\n }\n };\n }\n}\n","import { ImageModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV3 implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: ImageModelV3['provider'];\n readonly modelId: ImageModelV3['modelId'];\n readonly maxImagesPerCall: ImageModelV3['maxImagesPerCall'];\n\n doGenerate: ImageModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV3['provider'];\n modelId?: ImageModelV3['modelId'];\n maxImagesPerCall?: ImageModelV3['maxImagesPerCall'];\n doGenerate?: ImageModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import { ImageModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV4 implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: ImageModelV4['provider'];\n readonly modelId: ImageModelV4['modelId'];\n readonly maxImagesPerCall: ImageModelV4['maxImagesPerCall'];\n\n doGenerate: ImageModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV4['provider'];\n modelId?: ImageModelV4['modelId'];\n maxImagesPerCall?: ImageModelV4['maxImagesPerCall'];\n doGenerate?: ImageModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n} from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV3 implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n private _supportedUrls: () => LanguageModelV3['supportedUrls'];\n\n readonly provider: LanguageModelV3['provider'];\n readonly modelId: LanguageModelV3['modelId'];\n\n doGenerate: LanguageModelV3['doGenerate'];\n doStream: LanguageModelV3['doStream'];\n\n doGenerateCalls: LanguageModelV3CallOptions[] = [];\n doStreamCalls: LanguageModelV3CallOptions[] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV3['provider'];\n modelId?: LanguageModelV3['modelId'];\n supportedUrls?:\n | LanguageModelV3['supportedUrls']\n | (() => LanguageModelV3['supportedUrls']);\n doGenerate?:\n | LanguageModelV3['doGenerate']\n | LanguageModelV3GenerateResult\n | LanguageModelV3GenerateResult[];\n doStream?:\n | LanguageModelV3['doStream']\n | LanguageModelV3StreamResult\n | LanguageModelV3StreamResult[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamResult,\n} from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV4 implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n private _supportedUrls: () => LanguageModelV4['supportedUrls'];\n\n readonly provider: LanguageModelV4['provider'];\n readonly modelId: LanguageModelV4['modelId'];\n\n doGenerate: LanguageModelV4['doGenerate'];\n doStream: LanguageModelV4['doStream'];\n\n doGenerateCalls: LanguageModelV4CallOptions[] = [];\n doStreamCalls: LanguageModelV4CallOptions[] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV4['provider'];\n modelId?: LanguageModelV4['modelId'];\n supportedUrls?:\n | LanguageModelV4['supportedUrls']\n | (() => LanguageModelV4['supportedUrls']);\n doGenerate?:\n | LanguageModelV4['doGenerate']\n | LanguageModelV4GenerateResult\n | LanguageModelV4GenerateResult[];\n doStream?:\n | LanguageModelV4['doStream']\n | LanguageModelV4StreamResult\n | LanguageModelV4StreamResult[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import {\n EmbeddingModelV3,\n ImageModelV3,\n LanguageModelV3,\n NoSuchModelError,\n ProviderV3,\n SpeechModelV3,\n TranscriptionModelV3,\n RerankingModelV3,\n} from '@ai-sdk/provider';\n\nexport class MockProviderV3 implements ProviderV3 {\n readonly specificationVersion = 'v3' as const;\n\n languageModel: ProviderV3['languageModel'];\n embeddingModel: ProviderV3['embeddingModel'];\n imageModel: ProviderV3['imageModel'];\n transcriptionModel: ProviderV3['transcriptionModel'];\n speechModel: ProviderV3['speechModel'];\n rerankingModel: ProviderV3['rerankingModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n }: {\n languageModels?: Record<string, LanguageModelV3>;\n embeddingModels?: Record<string, EmbeddingModelV3>;\n imageModels?: Record<string, ImageModelV3>;\n transcriptionModels?: Record<string, TranscriptionModelV3>;\n speechModels?: Record<string, SpeechModelV3>;\n rerankingModels?: Record<string, RerankingModelV3>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.embeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string): SpeechModelV3 => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n this.rerankingModel = (modelId: string) => {\n if (!rerankingModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' });\n }\n return rerankingModels[modelId];\n };\n }\n}\n","import {\n EmbeddingModelV4,\n ImageModelV4,\n LanguageModelV4,\n NoSuchModelError,\n ProviderV4,\n SpeechModelV4,\n TranscriptionModelV4,\n RerankingModelV4,\n} from '@ai-sdk/provider';\n\nexport class MockProviderV4 implements ProviderV4 {\n readonly specificationVersion = 'v4' as const;\n\n languageModel: ProviderV4['languageModel'];\n embeddingModel: ProviderV4['embeddingModel'];\n imageModel: ProviderV4['imageModel'];\n transcriptionModel: ProviderV4['transcriptionModel'];\n speechModel: ProviderV4['speechModel'];\n rerankingModel: ProviderV4['rerankingModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n }: {\n languageModels?: Record<string, LanguageModelV4>;\n embeddingModels?: Record<string, EmbeddingModelV4>;\n imageModels?: Record<string, ImageModelV4>;\n transcriptionModels?: Record<string, TranscriptionModelV4>;\n speechModels?: Record<string, SpeechModelV4>;\n rerankingModels?: Record<string, RerankingModelV4>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.embeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string): SpeechModelV4 => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n this.rerankingModel = (modelId: string) => {\n if (!rerankingModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' });\n }\n return rerankingModels[modelId];\n };\n }\n}\n","import { SpeechModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV3 implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: SpeechModelV3['provider'];\n readonly modelId: SpeechModelV3['modelId'];\n\n doGenerate: SpeechModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV3['provider'];\n modelId?: SpeechModelV3['modelId'];\n doGenerate?: SpeechModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import { SpeechModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV4 implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: SpeechModelV4['provider'];\n readonly modelId: SpeechModelV4['modelId'];\n\n doGenerate: SpeechModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV4['provider'];\n modelId?: SpeechModelV4['modelId'];\n doGenerate?: SpeechModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import { TranscriptionModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV3 implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: TranscriptionModelV3['provider'];\n readonly modelId: TranscriptionModelV3['modelId'];\n\n doGenerate: TranscriptionModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: TranscriptionModelV3['provider'];\n modelId?: TranscriptionModelV3['modelId'];\n doGenerate?: TranscriptionModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import { TranscriptionModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV4 implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: TranscriptionModelV4['provider'];\n readonly modelId: TranscriptionModelV4['modelId'];\n\n doGenerate: TranscriptionModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: TranscriptionModelV4['provider'];\n modelId?: TranscriptionModelV4['modelId'];\n doGenerate?: TranscriptionModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import { RerankingModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockRerankingModelV3 implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly provider: RerankingModelV3['provider'];\n readonly modelId: RerankingModelV3['modelId'];\n\n doRerank: RerankingModelV3['doRerank'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doRerank = notImplemented,\n }: {\n provider?: RerankingModelV3['provider'];\n modelId?: RerankingModelV3['modelId'];\n doRerank?: RerankingModelV3['doRerank'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doRerank = doRerank;\n }\n}\n","import { RerankingModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockRerankingModelV4 implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly provider: RerankingModelV4['provider'];\n readonly modelId: RerankingModelV4['modelId'];\n\n doRerank: RerankingModelV4['doRerank'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doRerank = notImplemented,\n }: {\n provider?: RerankingModelV4['provider'];\n modelId?: RerankingModelV4['modelId'];\n doRerank?: RerankingModelV4['doRerank'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doRerank = doRerank;\n }\n}\n","import { Experimental_VideoModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockVideoModelV3 implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: Experimental_VideoModelV3['provider'];\n readonly modelId: Experimental_VideoModelV3['modelId'];\n readonly maxVideosPerCall: Experimental_VideoModelV3['maxVideosPerCall'];\n\n doGenerate: Experimental_VideoModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxVideosPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: Experimental_VideoModelV3['provider'];\n modelId?: Experimental_VideoModelV3['modelId'];\n maxVideosPerCall?: Experimental_VideoModelV3['maxVideosPerCall'];\n doGenerate?: Experimental_VideoModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxVideosPerCall = maxVideosPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import { Experimental_VideoModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockVideoModelV4 implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_VideoModelV4['provider'];\n readonly modelId: Experimental_VideoModelV4['modelId'];\n readonly maxVideosPerCall: Experimental_VideoModelV4['maxVideosPerCall'];\n\n doGenerate: Experimental_VideoModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxVideosPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: Experimental_VideoModelV4['provider'];\n modelId?: Experimental_VideoModelV4['modelId'];\n maxVideosPerCall?: Experimental_VideoModelV4['maxVideosPerCall'];\n doGenerate?: Experimental_VideoModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxVideosPerCall = maxVideosPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","export function mockValues<T>(...values: T[]): () => T {\n let counter = 0;\n return () => values[counter++] ?? values[values.length - 1];\n}\n","import { delay as delayFunction } from '@ai-sdk/provider-utils';\n\n/**\n * Creates a ReadableStream that emits the provided values with an optional delay between each value.\n *\n * @param options - The configuration options\n * @param options.chunks - Array of values to be emitted by the stream\n * @param options.initialDelayInMs - Optional initial delay in milliseconds before emitting the first value (default: 0). Can be set to `null` to skip the initial delay. The difference between `initialDelayInMs: null` and `initialDelayInMs: 0` is that `initialDelayInMs: null` will emit the values without any delay, while `initialDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @param options.chunkDelayInMs - Optional delay in milliseconds between emitting each value (default: 0). Can be set to `null` to skip the delay. The difference between `chunkDelayInMs: null` and `chunkDelayInMs: 0` is that `chunkDelayInMs: null` will emit the values without any delay, while `chunkDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @returns A ReadableStream that emits the provided values\n */\nexport function simulateReadableStream<T>({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal,\n}: {\n chunks: T[];\n initialDelayInMs?: number | null;\n chunkDelayInMs?: number | null;\n _internal?: {\n delay?: (ms: number | null) => Promise<void>;\n };\n}): ReadableStream<T> {\n const delay = _internal?.delay ?? delayFunction;\n\n let index = 0;\n\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n },\n });\n}\n"],"mappings":"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","names":["NoSuchModelError","simulateReadableStream"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: AI SDK by Vercel
|
|
3
|
+
description: The AI SDK is the TypeScript toolkit for building AI applications and agents with React, Next.js, Vue, Svelte, Node.js, and more.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# AI SDK
|
|
7
|
+
|
|
8
|
+
The AI SDK is the TypeScript toolkit designed to help developers build AI-powered applications and agents with React, Next.js, Vue, Svelte, Node.js, and more.
|
|
9
|
+
|
|
10
|
+
## Why use the AI SDK?
|
|
11
|
+
|
|
12
|
+
Integrating large language models (LLMs) into applications is complicated and heavily dependent on the specific model provider you use.
|
|
13
|
+
|
|
14
|
+
The AI SDK standardizes integrating artificial intelligence (AI) models across [supported providers](/docs/foundations/providers-and-models). This enables developers to focus on building great AI applications, not waste time on technical details.
|
|
15
|
+
|
|
16
|
+
For example, here’s how you can generate text with various models using the AI SDK:
|
|
17
|
+
|
|
18
|
+
<PreviewSwitchProviders />
|
|
19
|
+
|
|
20
|
+
The AI SDK has two main libraries:
|
|
21
|
+
|
|
22
|
+
- **[AI SDK Core](/docs/ai-sdk-core):** A unified API for generating text, structured objects, tool calls, and building agents with LLMs.
|
|
23
|
+
- **[AI SDK UI](/docs/ai-sdk-ui):** A set of framework-agnostic hooks for quickly building chat and generative user interface.
|
|
24
|
+
|
|
25
|
+
## Model Providers
|
|
26
|
+
|
|
27
|
+
The AI SDK supports [multiple model providers](/providers).
|
|
28
|
+
|
|
29
|
+
<OfficialModelCards />
|
|
30
|
+
|
|
31
|
+
## Templates
|
|
32
|
+
|
|
33
|
+
We've built some [templates](https://vercel.com/templates?type=ai) that include AI SDK integrations for different use cases, providers, and frameworks. You can use these templates to get started with your AI-powered application.
|
|
34
|
+
|
|
35
|
+
### Starter Kits
|
|
36
|
+
|
|
37
|
+
<Templates type="starter-kits" />
|
|
38
|
+
|
|
39
|
+
### Feature Exploration
|
|
40
|
+
|
|
41
|
+
<Templates type="feature-exploration" />
|
|
42
|
+
|
|
43
|
+
### Frameworks
|
|
44
|
+
|
|
45
|
+
<Templates type="frameworks" />
|
|
46
|
+
|
|
47
|
+
### Generative UI
|
|
48
|
+
|
|
49
|
+
<Templates type="generative-ui" />
|
|
50
|
+
|
|
51
|
+
### Security
|
|
52
|
+
|
|
53
|
+
<Templates type="security" />
|
|
54
|
+
|
|
55
|
+
## Join our Community
|
|
56
|
+
|
|
57
|
+
If you have questions about anything related to the AI SDK, you're always welcome to ask our community on [the Vercel Community](https://community.vercel.com/c/ai-sdk/62).
|
|
58
|
+
|
|
59
|
+
## `llms.txt` (for Cursor, Windsurf, Copilot, Claude etc.)
|
|
60
|
+
|
|
61
|
+
You can access the entire AI SDK documentation in Markdown format at [ai-sdk.dev/llms.txt](/llms.txt). This can be used to ask any LLM (assuming it has a big enough context window) questions about the AI SDK based on the most up-to-date documentation.
|
|
62
|
+
|
|
63
|
+
### Example Usage
|
|
64
|
+
|
|
65
|
+
For instance, to prompt an LLM with questions about the AI SDK:
|
|
66
|
+
|
|
67
|
+
1. Copy the documentation contents from [ai-sdk.dev/llms.txt](/llms.txt)
|
|
68
|
+
2. Use the following prompt format:
|
|
69
|
+
|
|
70
|
+
```prompt
|
|
71
|
+
Documentation:
|
|
72
|
+
{paste documentation here}
|
|
73
|
+
---
|
|
74
|
+
Based on the above documentation, answer the following:
|
|
75
|
+
{your question}
|
|
76
|
+
```
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Overview
|
|
3
|
+
description: An overview of foundational concepts critical to understanding the AI SDK
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Overview
|
|
7
|
+
|
|
8
|
+
<Note>
|
|
9
|
+
This page is a beginner-friendly introduction to high-level artificial
|
|
10
|
+
intelligence (AI) concepts. To dive right into implementing the AI SDK, feel
|
|
11
|
+
free to skip ahead to our [quickstarts](/docs/getting-started) or learn about
|
|
12
|
+
our [supported models and providers](/docs/foundations/providers-and-models).
|
|
13
|
+
</Note>
|
|
14
|
+
|
|
15
|
+
The AI SDK standardizes integrating artificial intelligence (AI) models across [supported providers](/docs/foundations/providers-and-models). This enables developers to focus on building great AI applications, not waste time on technical details.
|
|
16
|
+
|
|
17
|
+
For example, here’s how you can generate text with various models using the AI SDK:
|
|
18
|
+
|
|
19
|
+
<PreviewSwitchProviders />
|
|
20
|
+
|
|
21
|
+
To effectively leverage the AI SDK, it helps to familiarize yourself with the following concepts:
|
|
22
|
+
|
|
23
|
+
## Generative Artificial Intelligence
|
|
24
|
+
|
|
25
|
+
**Generative artificial intelligence** refers to models that predict and generate various types of outputs (such as text, images, or audio) based on what’s statistically likely, pulling from patterns they’ve learned from their training data. For example:
|
|
26
|
+
|
|
27
|
+
- Given a photo, a generative model can generate a caption.
|
|
28
|
+
- Given an audio file, a generative model can generate a transcription.
|
|
29
|
+
- Given a text description, a generative model can generate an image.
|
|
30
|
+
|
|
31
|
+
## Large Language Models
|
|
32
|
+
|
|
33
|
+
A **large language model (LLM)** is a subset of generative models focused primarily on **text**. An LLM takes a sequence of words as input and aims to predict the most likely sequence to follow. It assigns probabilities to potential next sequences and then selects one. The model continues to generate sequences until it meets a specified stopping criterion.
|
|
34
|
+
|
|
35
|
+
LLMs learn by training on massive collections of written text, which means they will be better suited to some use cases than others. For example, a model trained on GitHub data would understand the probabilities of sequences in source code particularly well.
|
|
36
|
+
|
|
37
|
+
However, it's crucial to understand LLMs' limitations. When asked about less known or absent information, like the birthday of a personal relative, LLMs might "hallucinate" or make up information. It's essential to consider how well-represented the information you need is in the model.
|
|
38
|
+
|
|
39
|
+
## Embedding Models
|
|
40
|
+
|
|
41
|
+
An **embedding model** is used to convert complex data (like words or images) into a dense vector (a list of numbers) representation, known as an embedding. Unlike generative models, embedding models do not generate new text or data. Instead, they provide representations of semantic and syntactic relationships between entities that can be used as input for other models or other natural language processing tasks.
|
|
42
|
+
|
|
43
|
+
In the next section, you will learn about the difference between models providers and models, and which ones are available in the AI SDK.
|