@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,156 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AttributeValue,
|
|
3
|
+
Attributes,
|
|
4
|
+
Context,
|
|
5
|
+
Exception,
|
|
6
|
+
Span,
|
|
7
|
+
SpanContext,
|
|
8
|
+
SpanOptions,
|
|
9
|
+
SpanStatus,
|
|
10
|
+
TimeInput,
|
|
11
|
+
Tracer,
|
|
12
|
+
} from '@opentelemetry/api';
|
|
13
|
+
|
|
14
|
+
export class MockTracer implements Tracer {
|
|
15
|
+
spans: MockSpan[] = [];
|
|
16
|
+
|
|
17
|
+
get jsonSpans() {
|
|
18
|
+
return this.spans.map(span => ({
|
|
19
|
+
name: span.name,
|
|
20
|
+
attributes: span.attributes,
|
|
21
|
+
events: span.events,
|
|
22
|
+
...(span.status && { status: span.status }),
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
startSpan(name: string, options?: SpanOptions, context?: Context): Span {
|
|
27
|
+
const span = new MockSpan({
|
|
28
|
+
name,
|
|
29
|
+
options,
|
|
30
|
+
context,
|
|
31
|
+
});
|
|
32
|
+
this.spans.push(span);
|
|
33
|
+
return span;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
startActiveSpan<F extends (span: Span) => unknown>(
|
|
37
|
+
name: string,
|
|
38
|
+
arg1: unknown,
|
|
39
|
+
arg2?: unknown,
|
|
40
|
+
arg3?: F,
|
|
41
|
+
): ReturnType<any> {
|
|
42
|
+
if (typeof arg1 === 'function') {
|
|
43
|
+
const span = new MockSpan({
|
|
44
|
+
name,
|
|
45
|
+
});
|
|
46
|
+
this.spans.push(span);
|
|
47
|
+
return arg1(span);
|
|
48
|
+
}
|
|
49
|
+
if (typeof arg2 === 'function') {
|
|
50
|
+
const span = new MockSpan({
|
|
51
|
+
name,
|
|
52
|
+
options: arg1 as SpanOptions,
|
|
53
|
+
});
|
|
54
|
+
this.spans.push(span);
|
|
55
|
+
return arg2(span);
|
|
56
|
+
}
|
|
57
|
+
if (typeof arg3 === 'function') {
|
|
58
|
+
const span = new MockSpan({
|
|
59
|
+
name,
|
|
60
|
+
options: arg1 as SpanOptions,
|
|
61
|
+
context: arg2 as Context,
|
|
62
|
+
});
|
|
63
|
+
this.spans.push(span);
|
|
64
|
+
return arg3(span);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
class MockSpan implements Span {
|
|
70
|
+
name: string;
|
|
71
|
+
context?: Context;
|
|
72
|
+
options?: SpanOptions;
|
|
73
|
+
attributes: Attributes;
|
|
74
|
+
events: Array<{
|
|
75
|
+
name: string;
|
|
76
|
+
attributes: Attributes | undefined;
|
|
77
|
+
time?: [number, number];
|
|
78
|
+
}> = [];
|
|
79
|
+
status?: SpanStatus;
|
|
80
|
+
|
|
81
|
+
readonly _spanContext: SpanContext = new MockSpanContext();
|
|
82
|
+
|
|
83
|
+
constructor({
|
|
84
|
+
name,
|
|
85
|
+
options,
|
|
86
|
+
context,
|
|
87
|
+
}: {
|
|
88
|
+
name: string;
|
|
89
|
+
options?: SpanOptions;
|
|
90
|
+
context?: Context;
|
|
91
|
+
}) {
|
|
92
|
+
this.name = name;
|
|
93
|
+
this.context = context;
|
|
94
|
+
this.options = options;
|
|
95
|
+
this.attributes = options?.attributes ?? {};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
spanContext(): SpanContext {
|
|
99
|
+
return this._spanContext;
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
setAttribute(key: string, value: AttributeValue): this {
|
|
103
|
+
this.attributes = { ...this.attributes, [key]: value };
|
|
104
|
+
return this;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
setAttributes(attributes: Attributes): this {
|
|
108
|
+
this.attributes = { ...this.attributes, ...attributes };
|
|
109
|
+
return this;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
addEvent(name: string, attributes?: Attributes): this {
|
|
113
|
+
this.events.push({ name, attributes });
|
|
114
|
+
return this;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
addLink() {
|
|
118
|
+
return this;
|
|
119
|
+
}
|
|
120
|
+
addLinks() {
|
|
121
|
+
return this;
|
|
122
|
+
}
|
|
123
|
+
setStatus(status: SpanStatus) {
|
|
124
|
+
this.status = status;
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
updateName() {
|
|
128
|
+
return this;
|
|
129
|
+
}
|
|
130
|
+
end() {
|
|
131
|
+
return this;
|
|
132
|
+
}
|
|
133
|
+
isRecording() {
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
recordException(exception: Exception, time?: TimeInput) {
|
|
137
|
+
const error =
|
|
138
|
+
typeof exception === 'string' ? new Error(exception) : exception;
|
|
139
|
+
this.events.push({
|
|
140
|
+
name: 'exception',
|
|
141
|
+
attributes: {
|
|
142
|
+
'exception.type': error.constructor?.name || 'Error',
|
|
143
|
+
'exception.name': error.name || 'Error',
|
|
144
|
+
'exception.message': error.message || '',
|
|
145
|
+
'exception.stack': error.stack || '',
|
|
146
|
+
},
|
|
147
|
+
time: Array.isArray(time) ? time : [0, 0],
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
class MockSpanContext implements SpanContext {
|
|
153
|
+
traceId = 'test-trace-id';
|
|
154
|
+
spanId = 'test-span-id';
|
|
155
|
+
traceFlags = 0;
|
|
156
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TranscriptionModelV2 } from '@ai-sdk/provider';
|
|
2
|
+
import { notImplemented } from './not-implemented';
|
|
3
|
+
|
|
4
|
+
export class MockTranscriptionModelV2 implements TranscriptionModelV2 {
|
|
5
|
+
readonly specificationVersion = 'v2';
|
|
6
|
+
readonly provider: TranscriptionModelV2['provider'];
|
|
7
|
+
readonly modelId: TranscriptionModelV2['modelId'];
|
|
8
|
+
|
|
9
|
+
doGenerate: TranscriptionModelV2['doGenerate'];
|
|
10
|
+
|
|
11
|
+
constructor({
|
|
12
|
+
provider = 'mock-provider',
|
|
13
|
+
modelId = 'mock-model-id',
|
|
14
|
+
doGenerate = notImplemented,
|
|
15
|
+
}: {
|
|
16
|
+
provider?: TranscriptionModelV2['provider'];
|
|
17
|
+
modelId?: TranscriptionModelV2['modelId'];
|
|
18
|
+
doGenerate?: TranscriptionModelV2['doGenerate'];
|
|
19
|
+
} = {}) {
|
|
20
|
+
this.provider = provider;
|
|
21
|
+
this.modelId = modelId;
|
|
22
|
+
this.doGenerate = doGenerate;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TranscriptionModelV3 } from '@ai-sdk/provider';
|
|
2
|
+
import { notImplemented } from './not-implemented';
|
|
3
|
+
|
|
4
|
+
export class MockTranscriptionModelV3 implements TranscriptionModelV3 {
|
|
5
|
+
readonly specificationVersion = 'v3';
|
|
6
|
+
readonly provider: TranscriptionModelV3['provider'];
|
|
7
|
+
readonly modelId: TranscriptionModelV3['modelId'];
|
|
8
|
+
|
|
9
|
+
doGenerate: TranscriptionModelV3['doGenerate'];
|
|
10
|
+
|
|
11
|
+
constructor({
|
|
12
|
+
provider = 'mock-provider',
|
|
13
|
+
modelId = 'mock-model-id',
|
|
14
|
+
doGenerate = notImplemented,
|
|
15
|
+
}: {
|
|
16
|
+
provider?: TranscriptionModelV3['provider'];
|
|
17
|
+
modelId?: TranscriptionModelV3['modelId'];
|
|
18
|
+
doGenerate?: TranscriptionModelV3['doGenerate'];
|
|
19
|
+
} = {}) {
|
|
20
|
+
this.provider = provider;
|
|
21
|
+
this.modelId = modelId;
|
|
22
|
+
this.doGenerate = doGenerate;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TranscriptionModelV4 } from '@ai-sdk/provider';
|
|
2
|
+
import { notImplemented } from './not-implemented';
|
|
3
|
+
|
|
4
|
+
export class MockTranscriptionModelV4 implements TranscriptionModelV4 {
|
|
5
|
+
readonly specificationVersion = 'v4';
|
|
6
|
+
readonly provider: TranscriptionModelV4['provider'];
|
|
7
|
+
readonly modelId: TranscriptionModelV4['modelId'];
|
|
8
|
+
|
|
9
|
+
doGenerate: TranscriptionModelV4['doGenerate'];
|
|
10
|
+
|
|
11
|
+
constructor({
|
|
12
|
+
provider = 'mock-provider',
|
|
13
|
+
modelId = 'mock-model-id',
|
|
14
|
+
doGenerate = notImplemented,
|
|
15
|
+
}: {
|
|
16
|
+
provider?: TranscriptionModelV4['provider'];
|
|
17
|
+
modelId?: TranscriptionModelV4['modelId'];
|
|
18
|
+
doGenerate?: TranscriptionModelV4['doGenerate'];
|
|
19
|
+
} = {}) {
|
|
20
|
+
this.provider = provider;
|
|
21
|
+
this.modelId = modelId;
|
|
22
|
+
this.doGenerate = doGenerate;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Experimental_VideoModelV3 } from '@ai-sdk/provider';
|
|
2
|
+
import { notImplemented } from './not-implemented';
|
|
3
|
+
|
|
4
|
+
export class MockVideoModelV3 implements Experimental_VideoModelV3 {
|
|
5
|
+
readonly specificationVersion = 'v3';
|
|
6
|
+
readonly provider: Experimental_VideoModelV3['provider'];
|
|
7
|
+
readonly modelId: Experimental_VideoModelV3['modelId'];
|
|
8
|
+
readonly maxVideosPerCall: Experimental_VideoModelV3['maxVideosPerCall'];
|
|
9
|
+
|
|
10
|
+
doGenerate: Experimental_VideoModelV3['doGenerate'];
|
|
11
|
+
|
|
12
|
+
constructor({
|
|
13
|
+
provider = 'mock-provider',
|
|
14
|
+
modelId = 'mock-model-id',
|
|
15
|
+
maxVideosPerCall = 1,
|
|
16
|
+
doGenerate = notImplemented,
|
|
17
|
+
}: {
|
|
18
|
+
provider?: Experimental_VideoModelV3['provider'];
|
|
19
|
+
modelId?: Experimental_VideoModelV3['modelId'];
|
|
20
|
+
maxVideosPerCall?: Experimental_VideoModelV3['maxVideosPerCall'];
|
|
21
|
+
doGenerate?: Experimental_VideoModelV3['doGenerate'];
|
|
22
|
+
} = {}) {
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
this.modelId = modelId;
|
|
25
|
+
this.maxVideosPerCall = maxVideosPerCall;
|
|
26
|
+
this.doGenerate = doGenerate;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Experimental_VideoModelV4 } from '@ai-sdk/provider';
|
|
2
|
+
import { notImplemented } from './not-implemented';
|
|
3
|
+
|
|
4
|
+
export class MockVideoModelV4 implements Experimental_VideoModelV4 {
|
|
5
|
+
readonly specificationVersion = 'v4';
|
|
6
|
+
readonly provider: Experimental_VideoModelV4['provider'];
|
|
7
|
+
readonly modelId: Experimental_VideoModelV4['modelId'];
|
|
8
|
+
readonly maxVideosPerCall: Experimental_VideoModelV4['maxVideosPerCall'];
|
|
9
|
+
|
|
10
|
+
doGenerate: Experimental_VideoModelV4['doGenerate'];
|
|
11
|
+
|
|
12
|
+
constructor({
|
|
13
|
+
provider = 'mock-provider',
|
|
14
|
+
modelId = 'mock-model-id',
|
|
15
|
+
maxVideosPerCall = 1,
|
|
16
|
+
doGenerate = notImplemented,
|
|
17
|
+
}: {
|
|
18
|
+
provider?: Experimental_VideoModelV4['provider'];
|
|
19
|
+
modelId?: Experimental_VideoModelV4['modelId'];
|
|
20
|
+
maxVideosPerCall?: Experimental_VideoModelV4['maxVideosPerCall'];
|
|
21
|
+
doGenerate?: Experimental_VideoModelV4['doGenerate'];
|
|
22
|
+
} = {}) {
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
this.modelId = modelId;
|
|
25
|
+
this.maxVideosPerCall = maxVideosPerCall;
|
|
26
|
+
this.doGenerate = doGenerate;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { prepareHeaders } from '../util/prepare-headers';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Creates a Response object from a text stream.
|
|
5
|
+
* Each text chunk is encoded as UTF-8 and sent as a separate chunk.
|
|
6
|
+
* Sets a `Content-Type` header to `text/plain; charset=utf-8`.
|
|
7
|
+
*
|
|
8
|
+
* @param options - The options for creating the response.
|
|
9
|
+
* @param options.status - Optional HTTP status code (default: 200).
|
|
10
|
+
* @param options.statusText - Optional HTTP status text.
|
|
11
|
+
* @param options.headers - Optional response headers.
|
|
12
|
+
* @param options.textStream - The text stream to send.
|
|
13
|
+
* @returns A Response object with the text stream body.
|
|
14
|
+
*/
|
|
15
|
+
export function createTextStreamResponse({
|
|
16
|
+
status,
|
|
17
|
+
statusText,
|
|
18
|
+
headers,
|
|
19
|
+
textStream,
|
|
20
|
+
}: ResponseInit & {
|
|
21
|
+
textStream: ReadableStream<string>;
|
|
22
|
+
}): Response {
|
|
23
|
+
return new Response(textStream.pipeThrough(new TextEncoderStream()), {
|
|
24
|
+
status: status ?? 200,
|
|
25
|
+
statusText,
|
|
26
|
+
headers: prepareHeaders(headers, {
|
|
27
|
+
'content-type': 'text/plain; charset=utf-8',
|
|
28
|
+
}),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { ServerResponse } from 'node:http';
|
|
2
|
+
import { prepareHeaders } from '../util/prepare-headers';
|
|
3
|
+
import { writeToServerResponse } from '../util/write-to-server-response';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Writes a text stream to a Node.js ServerResponse object.
|
|
7
|
+
* Each text chunk is encoded as UTF-8 and written as a separate chunk.
|
|
8
|
+
* Sets a `Content-Type` header to `text/plain; charset=utf-8`.
|
|
9
|
+
*
|
|
10
|
+
* @param options - The options for piping the stream.
|
|
11
|
+
* @param options.response - The Node.js ServerResponse to write to.
|
|
12
|
+
* @param options.status - Optional HTTP status code.
|
|
13
|
+
* @param options.statusText - Optional HTTP status text.
|
|
14
|
+
* @param options.headers - Optional response headers.
|
|
15
|
+
* @param options.textStream - The text stream to pipe.
|
|
16
|
+
*/
|
|
17
|
+
export function pipeTextStreamToResponse({
|
|
18
|
+
response,
|
|
19
|
+
status,
|
|
20
|
+
statusText,
|
|
21
|
+
headers,
|
|
22
|
+
textStream,
|
|
23
|
+
}: {
|
|
24
|
+
response: ServerResponse;
|
|
25
|
+
textStream: ReadableStream<string>;
|
|
26
|
+
} & ResponseInit): void {
|
|
27
|
+
writeToServerResponse({
|
|
28
|
+
response,
|
|
29
|
+
status,
|
|
30
|
+
statusText,
|
|
31
|
+
headers: Object.fromEntries(
|
|
32
|
+
prepareHeaders(headers, {
|
|
33
|
+
'content-type': 'text/plain; charset=utf-8',
|
|
34
|
+
}).entries(),
|
|
35
|
+
),
|
|
36
|
+
stream: textStream.pipeThrough(new TextEncoderStream()),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { JSONObject } from '@ai-sdk/provider';
|
|
2
|
+
import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
|
|
3
|
+
import { Warning } from '../types/warning';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The result of a `transcribe` call.
|
|
7
|
+
* It contains the transcript and additional information.
|
|
8
|
+
*/
|
|
9
|
+
export interface TranscriptionResult {
|
|
10
|
+
/**
|
|
11
|
+
* The complete transcribed text from the audio.
|
|
12
|
+
*/
|
|
13
|
+
readonly text: string;
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Array of transcript segments with timing information.
|
|
17
|
+
* Each segment represents a portion of the transcribed text with start and end times.
|
|
18
|
+
*/
|
|
19
|
+
readonly segments: Array<{
|
|
20
|
+
/**
|
|
21
|
+
* The text content of this segment.
|
|
22
|
+
*/
|
|
23
|
+
readonly text: string;
|
|
24
|
+
/**
|
|
25
|
+
* The start time of this segment in seconds.
|
|
26
|
+
*/
|
|
27
|
+
readonly startSecond: number;
|
|
28
|
+
/**
|
|
29
|
+
* The end time of this segment in seconds.
|
|
30
|
+
*/
|
|
31
|
+
readonly endSecond: number;
|
|
32
|
+
}>;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The detected language of the audio content, as an ISO-639-1 code (e.g., 'en' for English).
|
|
36
|
+
* May be undefined if the language couldn't be detected.
|
|
37
|
+
*/
|
|
38
|
+
readonly language: string | undefined;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* The total duration of the audio file in seconds.
|
|
42
|
+
* May be undefined if the duration couldn't be determined.
|
|
43
|
+
*/
|
|
44
|
+
readonly durationInSeconds: number | undefined;
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Warnings for the call, e.g. unsupported settings.
|
|
48
|
+
*/
|
|
49
|
+
readonly warnings: Array<Warning>;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Response metadata from the provider. There may be multiple responses if we made multiple calls to the model.
|
|
53
|
+
*/
|
|
54
|
+
readonly responses: Array<TranscriptionModelResponseMetadata>;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Provider metadata from the provider.
|
|
58
|
+
*/
|
|
59
|
+
readonly providerMetadata: Record<string, JSONObject>;
|
|
60
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { JSONObject } from '@ai-sdk/provider';
|
|
2
|
+
import { ProviderOptions, withUserAgentSuffix } from '@ai-sdk/provider-utils';
|
|
3
|
+
import { NoTranscriptGeneratedError } from '../error/no-transcript-generated-error';
|
|
4
|
+
import { logWarnings } from '../logger/log-warnings';
|
|
5
|
+
import { DataContent } from '../prompt';
|
|
6
|
+
import { convertDataContentToUint8Array } from '../prompt/data-content';
|
|
7
|
+
import { TranscriptionModel } from '../types/transcription-model';
|
|
8
|
+
import { TranscriptionModelResponseMetadata } from '../types/transcription-model-response-metadata';
|
|
9
|
+
import {
|
|
10
|
+
audioMediaTypeSignatures,
|
|
11
|
+
detectMediaType,
|
|
12
|
+
} from '../util/detect-media-type';
|
|
13
|
+
import { createDownload } from '../util/download/create-download';
|
|
14
|
+
import { prepareRetries } from '../util/prepare-retries';
|
|
15
|
+
import { TranscriptionResult } from './transcribe-result';
|
|
16
|
+
import { VERSION } from '../version';
|
|
17
|
+
import { resolveTranscriptionModel } from '../model/resolve-model';
|
|
18
|
+
import { Warning } from '../types';
|
|
19
|
+
/**
|
|
20
|
+
* Generates transcripts using a transcription model.
|
|
21
|
+
*
|
|
22
|
+
* @param model - The transcription model to use.
|
|
23
|
+
* @param audio - The audio data to transcribe as DataContent (string | Uint8Array | ArrayBuffer | Buffer) or a URL.
|
|
24
|
+
* @param providerOptions - Additional provider-specific options that are passed through to the provider
|
|
25
|
+
* as body parameters.
|
|
26
|
+
* @param maxRetries - Maximum number of retries. Set to 0 to disable retries. Default: 2.
|
|
27
|
+
* @param abortSignal - An optional abort signal that can be used to cancel the call.
|
|
28
|
+
* @param headers - Additional HTTP headers to be sent with the request. Only applicable for HTTP-based providers.
|
|
29
|
+
*
|
|
30
|
+
* @returns A result object that contains the generated transcript.
|
|
31
|
+
*/
|
|
32
|
+
const defaultDownload = createDownload();
|
|
33
|
+
|
|
34
|
+
export async function transcribe({
|
|
35
|
+
model,
|
|
36
|
+
audio,
|
|
37
|
+
providerOptions = {},
|
|
38
|
+
maxRetries: maxRetriesArg,
|
|
39
|
+
abortSignal,
|
|
40
|
+
headers,
|
|
41
|
+
download: downloadFn = defaultDownload,
|
|
42
|
+
}: {
|
|
43
|
+
/**
|
|
44
|
+
* The transcription model to use.
|
|
45
|
+
*/
|
|
46
|
+
model: TranscriptionModel;
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* The audio data to transcribe.
|
|
50
|
+
*/
|
|
51
|
+
audio: DataContent | URL;
|
|
52
|
+
|
|
53
|
+
/**
|
|
54
|
+
* Additional provider-specific options that are passed through to the provider
|
|
55
|
+
* as body parameters.
|
|
56
|
+
*
|
|
57
|
+
* The outer record is keyed by the provider name, and the inner
|
|
58
|
+
* record is keyed by the provider-specific metadata key.
|
|
59
|
+
* ```ts
|
|
60
|
+
* {
|
|
61
|
+
* "openai": {
|
|
62
|
+
* "temperature": 0
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
providerOptions?: ProviderOptions;
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Maximum number of retries per transcript model call. Set to 0 to disable retries.
|
|
71
|
+
*
|
|
72
|
+
* @default 2
|
|
73
|
+
*/
|
|
74
|
+
maxRetries?: number;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Abort signal.
|
|
78
|
+
*/
|
|
79
|
+
abortSignal?: AbortSignal;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Additional headers to include in the request.
|
|
83
|
+
* Only applicable for HTTP-based providers.
|
|
84
|
+
*/
|
|
85
|
+
headers?: Record<string, string>;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Custom download function for fetching audio from URLs.
|
|
89
|
+
* Use `createDownload()` from `ai` to create a download function with custom size limits.
|
|
90
|
+
*
|
|
91
|
+
* @default createDownload() (2 GiB limit)
|
|
92
|
+
*/
|
|
93
|
+
download?: (options: {
|
|
94
|
+
url: URL;
|
|
95
|
+
abortSignal?: AbortSignal;
|
|
96
|
+
}) => Promise<{ data: Uint8Array; mediaType: string | undefined }>;
|
|
97
|
+
}): Promise<TranscriptionResult> {
|
|
98
|
+
const resolvedModel = resolveTranscriptionModel(model);
|
|
99
|
+
if (!resolvedModel) {
|
|
100
|
+
throw new Error('Model could not be resolved');
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
const { retry } = prepareRetries({
|
|
104
|
+
maxRetries: maxRetriesArg,
|
|
105
|
+
abortSignal,
|
|
106
|
+
});
|
|
107
|
+
|
|
108
|
+
const headersWithUserAgent = withUserAgentSuffix(
|
|
109
|
+
headers ?? {},
|
|
110
|
+
`ai/${VERSION}`,
|
|
111
|
+
);
|
|
112
|
+
|
|
113
|
+
const audioData =
|
|
114
|
+
audio instanceof URL
|
|
115
|
+
? (await downloadFn({ url: audio, abortSignal })).data
|
|
116
|
+
: convertDataContentToUint8Array(audio);
|
|
117
|
+
|
|
118
|
+
const result = await retry(() =>
|
|
119
|
+
resolvedModel.doGenerate({
|
|
120
|
+
audio: audioData,
|
|
121
|
+
abortSignal,
|
|
122
|
+
headers: headersWithUserAgent,
|
|
123
|
+
providerOptions,
|
|
124
|
+
mediaType:
|
|
125
|
+
detectMediaType({
|
|
126
|
+
data: audioData,
|
|
127
|
+
signatures: audioMediaTypeSignatures,
|
|
128
|
+
}) ?? 'audio/wav',
|
|
129
|
+
}),
|
|
130
|
+
);
|
|
131
|
+
|
|
132
|
+
logWarnings({
|
|
133
|
+
warnings: result.warnings,
|
|
134
|
+
provider: resolvedModel.provider,
|
|
135
|
+
model: resolvedModel.modelId,
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
if (!result.text) {
|
|
139
|
+
throw new NoTranscriptGeneratedError({ responses: [result.response] });
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return new DefaultTranscriptionResult({
|
|
143
|
+
text: result.text,
|
|
144
|
+
segments: result.segments,
|
|
145
|
+
language: result.language,
|
|
146
|
+
durationInSeconds: result.durationInSeconds,
|
|
147
|
+
warnings: result.warnings,
|
|
148
|
+
responses: [result.response],
|
|
149
|
+
providerMetadata: result.providerMetadata,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
class DefaultTranscriptionResult implements TranscriptionResult {
|
|
154
|
+
readonly text: string;
|
|
155
|
+
readonly segments: Array<{
|
|
156
|
+
text: string;
|
|
157
|
+
startSecond: number;
|
|
158
|
+
endSecond: number;
|
|
159
|
+
}>;
|
|
160
|
+
readonly language: string | undefined;
|
|
161
|
+
readonly durationInSeconds: number | undefined;
|
|
162
|
+
readonly warnings: Array<Warning>;
|
|
163
|
+
readonly responses: Array<TranscriptionModelResponseMetadata>;
|
|
164
|
+
readonly providerMetadata: Record<string, JSONObject>;
|
|
165
|
+
|
|
166
|
+
constructor(options: {
|
|
167
|
+
text: string;
|
|
168
|
+
segments: Array<{
|
|
169
|
+
text: string;
|
|
170
|
+
startSecond: number;
|
|
171
|
+
endSecond: number;
|
|
172
|
+
}>;
|
|
173
|
+
language: string | undefined;
|
|
174
|
+
durationInSeconds: number | undefined;
|
|
175
|
+
warnings: Array<Warning>;
|
|
176
|
+
responses: Array<TranscriptionModelResponseMetadata>;
|
|
177
|
+
providerMetadata: Record<string, JSONObject> | undefined;
|
|
178
|
+
}) {
|
|
179
|
+
this.text = options.text;
|
|
180
|
+
this.segments = options.segments;
|
|
181
|
+
this.language = options.language;
|
|
182
|
+
this.durationInSeconds = options.durationInSeconds;
|
|
183
|
+
this.warnings = options.warnings;
|
|
184
|
+
this.responses = options.responses;
|
|
185
|
+
this.providerMetadata = options.providerMetadata ?? {};
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { EmbeddingModelV4Middleware } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Middleware for embedding models.
|
|
5
|
+
* Accepts both V3 and V4 middleware types for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Uses EmbeddingModelV4Middleware as the base but relaxes specificationVersion
|
|
8
|
+
* to accept any string (including 'v3') and makes it optional.
|
|
9
|
+
*/
|
|
10
|
+
export type EmbeddingModelMiddleware = Omit<
|
|
11
|
+
EmbeddingModelV4Middleware,
|
|
12
|
+
'specificationVersion'
|
|
13
|
+
> & {
|
|
14
|
+
readonly specificationVersion?: string;
|
|
15
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EmbeddingModelV2,
|
|
3
|
+
EmbeddingModelV3,
|
|
4
|
+
EmbeddingModelV4,
|
|
5
|
+
EmbeddingModelV4Embedding,
|
|
6
|
+
} from '@ai-sdk/provider';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Embedding model that is used by the AI SDK.
|
|
10
|
+
*/
|
|
11
|
+
export type EmbeddingModel =
|
|
12
|
+
| string
|
|
13
|
+
| EmbeddingModelV4
|
|
14
|
+
| EmbeddingModelV3
|
|
15
|
+
| EmbeddingModelV2<string>;
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* Embedding.
|
|
19
|
+
*/
|
|
20
|
+
export type Embedding = EmbeddingModelV4Embedding;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ImageModelV4Middleware } from '@ai-sdk/provider';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Middleware for image models.
|
|
5
|
+
* Accepts both V3 and V4 middleware types for backward compatibility.
|
|
6
|
+
*
|
|
7
|
+
* Uses ImageModelV4Middleware as the base but relaxes specificationVersion
|
|
8
|
+
* to accept any string (including 'v3') and makes it optional.
|
|
9
|
+
*/
|
|
10
|
+
export type ImageModelMiddleware = Omit<
|
|
11
|
+
ImageModelV4Middleware,
|
|
12
|
+
'specificationVersion'
|
|
13
|
+
> & {
|
|
14
|
+
readonly specificationVersion?: string;
|
|
15
|
+
};
|