@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,266 @@
|
|
|
1
|
+
import {
|
|
2
|
+
createIdGenerator,
|
|
3
|
+
ProviderOptions,
|
|
4
|
+
withUserAgentSuffix,
|
|
5
|
+
} from '@ai-sdk/provider-utils';
|
|
6
|
+
import { logWarnings } from '../logger/log-warnings';
|
|
7
|
+
import { resolveEmbeddingModel } from '../model/resolve-model';
|
|
8
|
+
import { getGlobalTelemetryIntegration } from '../telemetry/get-global-telemetry-integration';
|
|
9
|
+
import { TelemetrySettings } from '../telemetry/telemetry-settings';
|
|
10
|
+
import { EmbeddingModel } from '../types';
|
|
11
|
+
import { notify } from '../util/notify';
|
|
12
|
+
import { prepareRetries } from '../util/prepare-retries';
|
|
13
|
+
import type { EmbedOnFinishEvent, EmbedOnStartEvent } from './embed-events';
|
|
14
|
+
import { EmbedResult } from './embed-result';
|
|
15
|
+
import { VERSION } from '../version';
|
|
16
|
+
import type { Listener } from '../util/notify';
|
|
17
|
+
|
|
18
|
+
const originalGenerateCallId = createIdGenerator({
|
|
19
|
+
prefix: 'call',
|
|
20
|
+
size: 24,
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Embed a value using an embedding model. The type of the value is defined by the embedding model.
|
|
25
|
+
*
|
|
26
|
+
* @param model - The embedding model to use.
|
|
27
|
+
* @param value - The value that should be embedded.
|
|
28
|
+
*
|
|
29
|
+
* @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.
|
|
30
|
+
* @param abortSignal - An optional abort signal that can be used to cancel the call.
|
|
31
|
+
* @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.
|
|
32
|
+
*
|
|
33
|
+
* @param experimental_telemetry - Optional telemetry configuration (experimental).
|
|
34
|
+
*
|
|
35
|
+
* @param providerOptions - Additional provider-specific options. They are passed through
|
|
36
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
37
|
+
* functionality that can be fully encapsulated in the provider.
|
|
38
|
+
*
|
|
39
|
+
* @returns A result object that contains the embedding, the value, and additional information.
|
|
40
|
+
*/
|
|
41
|
+
export async function embed({
|
|
42
|
+
model: modelArg,
|
|
43
|
+
value,
|
|
44
|
+
providerOptions,
|
|
45
|
+
maxRetries: maxRetriesArg,
|
|
46
|
+
abortSignal,
|
|
47
|
+
headers,
|
|
48
|
+
experimental_telemetry: telemetry,
|
|
49
|
+
experimental_onStart: onStart,
|
|
50
|
+
experimental_onFinish: onFinish,
|
|
51
|
+
_internal: { generateCallId = originalGenerateCallId } = {},
|
|
52
|
+
}: {
|
|
53
|
+
/**
|
|
54
|
+
* The embedding model to use.
|
|
55
|
+
*/
|
|
56
|
+
model: EmbeddingModel;
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The value that should be embedded.
|
|
60
|
+
*/
|
|
61
|
+
value: string;
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Maximum number of retries per embedding model call. Set to 0 to disable retries.
|
|
65
|
+
*
|
|
66
|
+
* @default 2
|
|
67
|
+
*/
|
|
68
|
+
maxRetries?: number;
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Abort signal.
|
|
72
|
+
*/
|
|
73
|
+
abortSignal?: AbortSignal;
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Additional headers to include in the request.
|
|
77
|
+
* Only applicable for HTTP-based providers.
|
|
78
|
+
*/
|
|
79
|
+
headers?: Record<string, string>;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Additional provider-specific options. They are passed through
|
|
83
|
+
* to the provider from the AI SDK and enable provider-specific
|
|
84
|
+
* functionality that can be fully encapsulated in the provider.
|
|
85
|
+
*/
|
|
86
|
+
providerOptions?: ProviderOptions;
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Optional telemetry configuration (experimental).
|
|
90
|
+
*/
|
|
91
|
+
experimental_telemetry?: TelemetrySettings;
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Callback that is called when the embed operation begins,
|
|
95
|
+
* before the embedding model is called.
|
|
96
|
+
*/
|
|
97
|
+
experimental_onStart?: Listener<EmbedOnStartEvent>;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Callback that is called when the embed operation completes,
|
|
101
|
+
* after the embedding model returns.
|
|
102
|
+
*/
|
|
103
|
+
experimental_onFinish?: Listener<EmbedOnFinishEvent>;
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Internal. For test use only. May change without notice.
|
|
107
|
+
*/
|
|
108
|
+
_internal?: {
|
|
109
|
+
generateCallId?: () => string;
|
|
110
|
+
};
|
|
111
|
+
}): Promise<EmbedResult> {
|
|
112
|
+
const model = resolveEmbeddingModel(modelArg);
|
|
113
|
+
|
|
114
|
+
const { maxRetries, retry } = prepareRetries({
|
|
115
|
+
maxRetries: maxRetriesArg,
|
|
116
|
+
abortSignal,
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
const headersWithUserAgent = withUserAgentSuffix(
|
|
120
|
+
headers ?? {},
|
|
121
|
+
`ai/${VERSION}`,
|
|
122
|
+
);
|
|
123
|
+
|
|
124
|
+
const callId = generateCallId();
|
|
125
|
+
|
|
126
|
+
const createGlobalTelemetry = getGlobalTelemetryIntegration();
|
|
127
|
+
const globalTelemetry = createGlobalTelemetry({
|
|
128
|
+
integrations: telemetry?.integrations,
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
await notify({
|
|
132
|
+
event: {
|
|
133
|
+
callId,
|
|
134
|
+
operationId: 'ai.embed',
|
|
135
|
+
provider: model.provider,
|
|
136
|
+
modelId: model.modelId,
|
|
137
|
+
value,
|
|
138
|
+
maxRetries,
|
|
139
|
+
abortSignal,
|
|
140
|
+
headers: headersWithUserAgent,
|
|
141
|
+
providerOptions,
|
|
142
|
+
isEnabled: telemetry?.isEnabled,
|
|
143
|
+
recordInputs: telemetry?.recordInputs,
|
|
144
|
+
recordOutputs: telemetry?.recordOutputs,
|
|
145
|
+
functionId: telemetry?.functionId,
|
|
146
|
+
metadata: telemetry?.metadata,
|
|
147
|
+
},
|
|
148
|
+
callbacks: [onStart, globalTelemetry.onStart],
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
try {
|
|
152
|
+
const { embedding, usage, warnings, response, providerMetadata } =
|
|
153
|
+
await retry(async () => {
|
|
154
|
+
const embedCallId = generateCallId();
|
|
155
|
+
|
|
156
|
+
await notify({
|
|
157
|
+
event: {
|
|
158
|
+
callId,
|
|
159
|
+
embedCallId,
|
|
160
|
+
operationId: 'ai.embed.doEmbed',
|
|
161
|
+
provider: model.provider,
|
|
162
|
+
modelId: model.modelId,
|
|
163
|
+
values: [value],
|
|
164
|
+
isEnabled: telemetry?.isEnabled,
|
|
165
|
+
recordInputs: telemetry?.recordInputs,
|
|
166
|
+
recordOutputs: telemetry?.recordOutputs,
|
|
167
|
+
functionId: telemetry?.functionId,
|
|
168
|
+
metadata: telemetry?.metadata,
|
|
169
|
+
},
|
|
170
|
+
callbacks: [globalTelemetry.onEmbedStart],
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
const modelResponse = await model.doEmbed({
|
|
174
|
+
values: [value],
|
|
175
|
+
abortSignal,
|
|
176
|
+
headers: headersWithUserAgent,
|
|
177
|
+
providerOptions,
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
const embedding = modelResponse.embeddings[0];
|
|
181
|
+
const usage = modelResponse.usage ?? { tokens: NaN };
|
|
182
|
+
|
|
183
|
+
await notify({
|
|
184
|
+
event: {
|
|
185
|
+
callId,
|
|
186
|
+
embedCallId,
|
|
187
|
+
operationId: 'ai.embed.doEmbed',
|
|
188
|
+
provider: model.provider,
|
|
189
|
+
modelId: model.modelId,
|
|
190
|
+
values: [value],
|
|
191
|
+
embeddings: modelResponse.embeddings,
|
|
192
|
+
usage,
|
|
193
|
+
},
|
|
194
|
+
callbacks: [globalTelemetry.onEmbedFinish],
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
return {
|
|
198
|
+
embedding,
|
|
199
|
+
usage,
|
|
200
|
+
warnings: modelResponse.warnings,
|
|
201
|
+
providerMetadata: modelResponse.providerMetadata,
|
|
202
|
+
response: modelResponse.response,
|
|
203
|
+
};
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
logWarnings({ warnings, provider: model.provider, model: model.modelId });
|
|
207
|
+
|
|
208
|
+
await notify({
|
|
209
|
+
event: {
|
|
210
|
+
callId,
|
|
211
|
+
operationId: 'ai.embed',
|
|
212
|
+
provider: model.provider,
|
|
213
|
+
modelId: model.modelId,
|
|
214
|
+
value,
|
|
215
|
+
embedding,
|
|
216
|
+
usage,
|
|
217
|
+
warnings,
|
|
218
|
+
providerMetadata,
|
|
219
|
+
response,
|
|
220
|
+
isEnabled: telemetry?.isEnabled,
|
|
221
|
+
recordInputs: telemetry?.recordInputs,
|
|
222
|
+
recordOutputs: telemetry?.recordOutputs,
|
|
223
|
+
functionId: telemetry?.functionId,
|
|
224
|
+
metadata: telemetry?.metadata,
|
|
225
|
+
},
|
|
226
|
+
callbacks: [onFinish, globalTelemetry.onFinish],
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
return new DefaultEmbedResult({
|
|
230
|
+
value,
|
|
231
|
+
embedding,
|
|
232
|
+
usage,
|
|
233
|
+
warnings,
|
|
234
|
+
providerMetadata,
|
|
235
|
+
response,
|
|
236
|
+
});
|
|
237
|
+
} catch (error) {
|
|
238
|
+
await globalTelemetry.onError?.({ callId, error });
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
class DefaultEmbedResult implements EmbedResult {
|
|
244
|
+
readonly value: EmbedResult['value'];
|
|
245
|
+
readonly embedding: EmbedResult['embedding'];
|
|
246
|
+
readonly usage: EmbedResult['usage'];
|
|
247
|
+
readonly warnings: EmbedResult['warnings'];
|
|
248
|
+
readonly providerMetadata: EmbedResult['providerMetadata'];
|
|
249
|
+
readonly response: EmbedResult['response'];
|
|
250
|
+
|
|
251
|
+
constructor(options: {
|
|
252
|
+
value: EmbedResult['value'];
|
|
253
|
+
embedding: EmbedResult['embedding'];
|
|
254
|
+
usage: EmbedResult['usage'];
|
|
255
|
+
warnings: EmbedResult['warnings'];
|
|
256
|
+
providerMetadata?: EmbedResult['providerMetadata'];
|
|
257
|
+
response?: EmbedResult['response'];
|
|
258
|
+
}) {
|
|
259
|
+
this.value = options.value;
|
|
260
|
+
this.embedding = options.embedding;
|
|
261
|
+
this.usage = options.usage;
|
|
262
|
+
this.warnings = options.warnings;
|
|
263
|
+
this.providerMetadata = options.providerMetadata;
|
|
264
|
+
this.response = options.response;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export {
|
|
2
|
+
AISDKError,
|
|
3
|
+
APICallError,
|
|
4
|
+
EmptyResponseBodyError,
|
|
5
|
+
InvalidPromptError,
|
|
6
|
+
InvalidResponseDataError,
|
|
7
|
+
JSONParseError,
|
|
8
|
+
LoadAPIKeyError,
|
|
9
|
+
LoadSettingError,
|
|
10
|
+
NoContentGeneratedError,
|
|
11
|
+
NoSuchModelError,
|
|
12
|
+
TooManyEmbeddingValuesForCallError,
|
|
13
|
+
TypeValidationError,
|
|
14
|
+
UnsupportedFunctionalityError,
|
|
15
|
+
} from '@ai-sdk/provider';
|
|
16
|
+
|
|
17
|
+
export { InvalidArgumentError } from './invalid-argument-error';
|
|
18
|
+
export { InvalidStreamPartError } from './invalid-stream-part-error';
|
|
19
|
+
export { InvalidToolApprovalError } from './invalid-tool-approval-error';
|
|
20
|
+
export { InvalidToolInputError } from './invalid-tool-input-error';
|
|
21
|
+
export { ToolCallNotFoundForApprovalError } from './tool-call-not-found-for-approval-error';
|
|
22
|
+
export { MissingToolResultsError } from './missing-tool-result-error';
|
|
23
|
+
export { NoImageGeneratedError } from './no-image-generated-error';
|
|
24
|
+
export { NoObjectGeneratedError } from './no-object-generated-error';
|
|
25
|
+
export { NoOutputGeneratedError } from './no-output-generated-error';
|
|
26
|
+
export { NoSpeechGeneratedError } from './no-speech-generated-error';
|
|
27
|
+
export { NoTranscriptGeneratedError } from './no-transcript-generated-error';
|
|
28
|
+
export { NoVideoGeneratedError } from './no-video-generated-error';
|
|
29
|
+
export { NoSuchToolError } from './no-such-tool-error';
|
|
30
|
+
export { ToolCallRepairError } from './tool-call-repair-error';
|
|
31
|
+
export { UnsupportedModelVersionError } from './unsupported-model-version-error';
|
|
32
|
+
export { UIMessageStreamError } from './ui-message-stream-error';
|
|
33
|
+
export { InvalidDataContentError } from '../prompt/invalid-data-content-error';
|
|
34
|
+
export { InvalidMessageRoleError } from '../prompt/invalid-message-role-error';
|
|
35
|
+
export { MessageConversionError } from '../prompt/message-conversion-error';
|
|
36
|
+
export { DownloadError } from '@ai-sdk/provider-utils';
|
|
37
|
+
export { RetryError } from '../util/retry-error';
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_InvalidArgumentError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class InvalidArgumentError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly parameter: string;
|
|
11
|
+
readonly value: unknown;
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
parameter,
|
|
15
|
+
value,
|
|
16
|
+
message,
|
|
17
|
+
}: {
|
|
18
|
+
parameter: string;
|
|
19
|
+
value: unknown;
|
|
20
|
+
message: string;
|
|
21
|
+
}) {
|
|
22
|
+
super({
|
|
23
|
+
name,
|
|
24
|
+
message: `Invalid argument for parameter ${parameter}: ${message}`,
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
this.parameter = parameter;
|
|
28
|
+
this.value = value;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static isInstance(error: unknown): error is InvalidArgumentError {
|
|
32
|
+
return AISDKError.hasMarker(error, marker);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { ModelCallStreamPart } from '../generate-text/stream-model-call';
|
|
3
|
+
|
|
4
|
+
const name = 'AI_InvalidStreamPartError';
|
|
5
|
+
const marker = `vercel.ai.error.${name}`;
|
|
6
|
+
const symbol = Symbol.for(marker);
|
|
7
|
+
|
|
8
|
+
export class InvalidStreamPartError extends AISDKError {
|
|
9
|
+
private readonly [symbol] = true; // used in isInstance
|
|
10
|
+
|
|
11
|
+
readonly chunk: ModelCallStreamPart<any>;
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
chunk,
|
|
15
|
+
message,
|
|
16
|
+
}: {
|
|
17
|
+
chunk: ModelCallStreamPart<any>;
|
|
18
|
+
message: string;
|
|
19
|
+
}) {
|
|
20
|
+
super({ name, message });
|
|
21
|
+
|
|
22
|
+
this.chunk = chunk;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static isInstance(error: unknown): error is InvalidStreamPartError {
|
|
26
|
+
return AISDKError.hasMarker(error, marker);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_InvalidToolApprovalError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class InvalidToolApprovalError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly approvalId: string;
|
|
11
|
+
|
|
12
|
+
constructor({ approvalId }: { approvalId: string }) {
|
|
13
|
+
super({
|
|
14
|
+
name,
|
|
15
|
+
message:
|
|
16
|
+
`Tool approval response references unknown approvalId: "${approvalId}". ` +
|
|
17
|
+
`No matching tool-approval-request found in message history.`,
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
this.approvalId = approvalId;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static isInstance(error: unknown): error is InvalidToolApprovalError {
|
|
24
|
+
return AISDKError.hasMarker(error, marker);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { AISDKError, getErrorMessage } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_InvalidToolInputError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class InvalidToolInputError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly toolName: string;
|
|
11
|
+
readonly toolInput: string;
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
toolInput,
|
|
15
|
+
toolName,
|
|
16
|
+
cause,
|
|
17
|
+
message = `Invalid input for tool ${toolName}: ${getErrorMessage(cause)}`,
|
|
18
|
+
}: {
|
|
19
|
+
message?: string;
|
|
20
|
+
toolInput: string;
|
|
21
|
+
toolName: string;
|
|
22
|
+
cause: unknown;
|
|
23
|
+
}) {
|
|
24
|
+
super({ name, message, cause });
|
|
25
|
+
|
|
26
|
+
this.toolInput = toolInput;
|
|
27
|
+
this.toolName = toolName;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
static isInstance(error: unknown): error is InvalidToolInputError {
|
|
31
|
+
return AISDKError.hasMarker(error, marker);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_MissingToolResultsError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class MissingToolResultsError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true;
|
|
9
|
+
|
|
10
|
+
readonly toolCallIds: string[];
|
|
11
|
+
|
|
12
|
+
constructor({ toolCallIds }: { toolCallIds: string[] }) {
|
|
13
|
+
super({
|
|
14
|
+
name,
|
|
15
|
+
message: `Tool result${
|
|
16
|
+
toolCallIds.length > 1 ? 's are' : ' is'
|
|
17
|
+
} missing for tool call${toolCallIds.length > 1 ? 's' : ''} ${toolCallIds.join(
|
|
18
|
+
', ',
|
|
19
|
+
)}.`,
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
this.toolCallIds = toolCallIds;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static isInstance(error: unknown): error is MissingToolResultsError {
|
|
26
|
+
return AISDKError.hasMarker(error, marker);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { ImageModelResponseMetadata } from '../types/image-model-response-metadata';
|
|
3
|
+
|
|
4
|
+
const name = 'AI_NoImageGeneratedError';
|
|
5
|
+
const marker = `vercel.ai.error.${name}`;
|
|
6
|
+
const symbol = Symbol.for(marker);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Thrown when no image could be generated. This can have multiple causes:
|
|
10
|
+
*
|
|
11
|
+
* - The model failed to generate a response.
|
|
12
|
+
* - The model generated a response that could not be parsed.
|
|
13
|
+
*/
|
|
14
|
+
export class NoImageGeneratedError extends AISDKError {
|
|
15
|
+
private readonly [symbol] = true; // used in isInstance
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* The response metadata for each call.
|
|
19
|
+
*/
|
|
20
|
+
readonly responses: Array<ImageModelResponseMetadata> | undefined;
|
|
21
|
+
|
|
22
|
+
constructor({
|
|
23
|
+
message = 'No image generated.',
|
|
24
|
+
cause,
|
|
25
|
+
responses,
|
|
26
|
+
}: {
|
|
27
|
+
message?: string;
|
|
28
|
+
cause?: Error;
|
|
29
|
+
responses?: Array<ImageModelResponseMetadata>;
|
|
30
|
+
}) {
|
|
31
|
+
super({ name, message, cause });
|
|
32
|
+
|
|
33
|
+
this.responses = responses;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
static isInstance(error: unknown): error is NoImageGeneratedError {
|
|
37
|
+
return AISDKError.hasMarker(error, marker);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { FinishReason } from '../types/language-model';
|
|
3
|
+
import { LanguageModelResponseMetadata } from '../types/language-model-response-metadata';
|
|
4
|
+
import { LanguageModelUsage } from '../types/usage';
|
|
5
|
+
|
|
6
|
+
const name = 'AI_NoObjectGeneratedError';
|
|
7
|
+
const marker = `vercel.ai.error.${name}`;
|
|
8
|
+
const symbol = Symbol.for(marker);
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Thrown when no object could be generated. This can have several causes:
|
|
12
|
+
*
|
|
13
|
+
* - The model failed to generate a response.
|
|
14
|
+
* - The model generated a response that could not be parsed.
|
|
15
|
+
* - The model generated a response that could not be validated against the schema.
|
|
16
|
+
*
|
|
17
|
+
* The error contains the following properties:
|
|
18
|
+
*
|
|
19
|
+
* - `text`: The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
|
20
|
+
*/
|
|
21
|
+
export class NoObjectGeneratedError extends AISDKError {
|
|
22
|
+
private readonly [symbol] = true; // used in isInstance
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* The text that was generated by the model. This can be the raw text or the tool call text, depending on the model.
|
|
26
|
+
*/
|
|
27
|
+
readonly text: string | undefined;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* The response metadata.
|
|
31
|
+
*/
|
|
32
|
+
readonly response: LanguageModelResponseMetadata | undefined;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The usage of the model.
|
|
36
|
+
*/
|
|
37
|
+
readonly usage: LanguageModelUsage | undefined;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Reason why the model finished generating a response.
|
|
41
|
+
*/
|
|
42
|
+
readonly finishReason: FinishReason | undefined;
|
|
43
|
+
|
|
44
|
+
constructor({
|
|
45
|
+
message = 'No object generated.',
|
|
46
|
+
cause,
|
|
47
|
+
text,
|
|
48
|
+
response,
|
|
49
|
+
usage,
|
|
50
|
+
finishReason,
|
|
51
|
+
}: {
|
|
52
|
+
message?: string;
|
|
53
|
+
cause?: Error;
|
|
54
|
+
text?: string;
|
|
55
|
+
response: LanguageModelResponseMetadata;
|
|
56
|
+
usage: LanguageModelUsage;
|
|
57
|
+
finishReason: FinishReason;
|
|
58
|
+
}) {
|
|
59
|
+
super({ name, message, cause });
|
|
60
|
+
|
|
61
|
+
this.text = text;
|
|
62
|
+
this.response = response;
|
|
63
|
+
this.usage = usage;
|
|
64
|
+
this.finishReason = finishReason;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
static isInstance(error: unknown): error is NoObjectGeneratedError {
|
|
68
|
+
return AISDKError.hasMarker(error, marker);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_NoOutputGeneratedError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Thrown when no LLM output was generated, e.g. because of errors.
|
|
9
|
+
*/
|
|
10
|
+
export class NoOutputGeneratedError extends AISDKError {
|
|
11
|
+
private readonly [symbol] = true; // used in isInstance
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
message = 'No output generated.',
|
|
15
|
+
cause,
|
|
16
|
+
}: {
|
|
17
|
+
message?: string;
|
|
18
|
+
cause?: Error;
|
|
19
|
+
} = {}) {
|
|
20
|
+
super({ name, message, cause });
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
static isInstance(error: unknown): error is NoOutputGeneratedError {
|
|
24
|
+
return AISDKError.hasMarker(error, marker);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { SpeechModelResponseMetadata } from '../types/speech-model-response-metadata';
|
|
3
|
+
|
|
4
|
+
const name = 'AI_NoSpeechGeneratedError';
|
|
5
|
+
const marker = `vercel.ai.error.${name}`;
|
|
6
|
+
const symbol = Symbol.for(marker);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Error that is thrown when no speech audio was generated.
|
|
10
|
+
*/
|
|
11
|
+
export class NoSpeechGeneratedError extends AISDKError {
|
|
12
|
+
private readonly [symbol] = true; // used in isInstance
|
|
13
|
+
|
|
14
|
+
readonly responses: Array<SpeechModelResponseMetadata>;
|
|
15
|
+
|
|
16
|
+
constructor(options: { responses: Array<SpeechModelResponseMetadata> }) {
|
|
17
|
+
super({
|
|
18
|
+
name,
|
|
19
|
+
message: 'No speech audio generated.',
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
this.responses = options.responses;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
static isInstance(error: unknown): error is NoSpeechGeneratedError {
|
|
26
|
+
return AISDKError.hasMarker(error, marker);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
const name = 'AI_NoSuchToolError';
|
|
4
|
+
const marker = `vercel.ai.error.${name}`;
|
|
5
|
+
const symbol = Symbol.for(marker);
|
|
6
|
+
|
|
7
|
+
export class NoSuchToolError extends AISDKError {
|
|
8
|
+
private readonly [symbol] = true; // used in isInstance
|
|
9
|
+
|
|
10
|
+
readonly toolName: string;
|
|
11
|
+
readonly availableTools: string[] | undefined;
|
|
12
|
+
|
|
13
|
+
constructor({
|
|
14
|
+
toolName,
|
|
15
|
+
availableTools = undefined,
|
|
16
|
+
message = `Model tried to call unavailable tool '${toolName}'. ${
|
|
17
|
+
availableTools === undefined
|
|
18
|
+
? 'No tools are available.'
|
|
19
|
+
: `Available tools: ${availableTools.join(', ')}.`
|
|
20
|
+
}`,
|
|
21
|
+
}: {
|
|
22
|
+
toolName: string;
|
|
23
|
+
availableTools?: string[] | undefined;
|
|
24
|
+
message?: string;
|
|
25
|
+
}) {
|
|
26
|
+
super({ name, message });
|
|
27
|
+
|
|
28
|
+
this.toolName = toolName;
|
|
29
|
+
this.availableTools = availableTools;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
static isInstance(error: unknown): error is NoSuchToolError {
|
|
33
|
+
return AISDKError.hasMarker(error, marker);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { AISDKError } from '@ai-sdk/provider';
|
|
2
|
+
import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
|
|
3
|
+
|
|
4
|
+
const name = 'AI_NoTranscriptGeneratedError';
|
|
5
|
+
const marker = `vercel.ai.error.${name}`;
|
|
6
|
+
const symbol = Symbol.for(marker);
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Error that is thrown when no transcript was generated.
|
|
10
|
+
*/
|
|
11
|
+
export class NoTranscriptGeneratedError extends AISDKError {
|
|
12
|
+
private readonly [symbol] = true; // used in isInstance
|
|
13
|
+
|
|
14
|
+
readonly responses: Array<TranscriptionModelResponseMetadata>;
|
|
15
|
+
|
|
16
|
+
constructor(options: {
|
|
17
|
+
responses: Array<TranscriptionModelResponseMetadata>;
|
|
18
|
+
}) {
|
|
19
|
+
super({
|
|
20
|
+
name,
|
|
21
|
+
message: 'No transcript generated.',
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
this.responses = options.responses;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
static isInstance(error: unknown): error is NoTranscriptGeneratedError {
|
|
28
|
+
return AISDKError.hasMarker(error, marker);
|
|
29
|
+
}
|
|
30
|
+
}
|