ai 7.0.162 → 7.0.164

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.
Files changed (69) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/dist/index.d.ts +166 -41
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +539 -112
  5. package/dist/index.js.map +1 -1
  6. package/dist/internal/index.d.ts +43 -10
  7. package/dist/internal/index.d.ts.map +1 -1
  8. package/dist/internal/index.js +209 -24
  9. package/dist/internal/index.js.map +1 -1
  10. package/dist/test/index.d.ts +3 -1
  11. package/dist/test/index.d.ts.map +1 -1
  12. package/dist/test/index.js +2 -1
  13. package/dist/test/index.js.map +1 -1
  14. package/docs/02-foundations/02-providers-and-models.mdx +2 -0
  15. package/docs/03-agents/04-loop-control.mdx +34 -0
  16. package/docs/03-agents/06-memory.mdx +42 -0
  17. package/docs/03-ai-sdk-core/05-generating-text.mdx +1 -0
  18. package/docs/03-ai-sdk-core/16-mcp-tools.mdx +12 -0
  19. package/docs/03-ai-sdk-core/36-realtime.mdx +74 -1
  20. package/docs/03-ai-sdk-core/36-transcription.mdx +51 -4
  21. package/docs/03-ai-sdk-core/40-middleware.mdx +7 -2
  22. package/docs/03-ai-sdk-core/60-telemetry.mdx +37 -4
  23. package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +13 -0
  24. package/docs/06-advanced/04-caching.mdx +13 -4
  25. package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +33 -28
  26. package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +58 -1
  27. package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +17 -2
  28. package/docs/07-reference/01-ai-sdk-core/13-generate-video.mdx +8 -1
  29. package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +23 -0
  30. package/docs/07-reference/02-ai-sdk-ui/05-use-realtime.mdx +37 -8
  31. package/docs/07-reference/04-ai-sdk-workflow/01-workflow-agent.mdx +1 -49
  32. package/docs/08-migration-guides/23-migration-guide-7-0.mdx +36 -34
  33. package/package.json +12 -12
  34. package/src/generate-object/generate-object.ts +2 -1
  35. package/src/generate-object/stream-object.ts +7 -3
  36. package/src/generate-text/generate-text.ts +23 -3
  37. package/src/generate-text/is-output-chunk.ts +1 -0
  38. package/src/generate-text/language-model-events.ts +3 -0
  39. package/src/generate-text/output.ts +90 -37
  40. package/src/generate-text/smooth-stream.ts +5 -0
  41. package/src/generate-text/steering.ts +5 -4
  42. package/src/generate-text/stream-language-model-call.ts +16 -1
  43. package/src/generate-text/stream-text-result.ts +29 -1
  44. package/src/generate-text/stream-text.ts +25 -1
  45. package/src/generate-text/to-response-messages.ts +6 -2
  46. package/src/generate-video/generate-video-result.ts +11 -2
  47. package/src/generate-video/generate-video.ts +26 -2
  48. package/src/model/as-transcription-model-v4.ts +25 -0
  49. package/src/prompt/convert-to-language-model-prompt.ts +86 -14
  50. package/src/realtime/index.ts +3 -0
  51. package/src/realtime/realtime-attempt.ts +1 -0
  52. package/src/realtime/realtime-session.ts +142 -21
  53. package/src/telemetry/create-telemetry-dispatcher.ts +8 -1
  54. package/src/telemetry/filter-telemetry-event.ts +165 -0
  55. package/src/telemetry/get-request-origin.ts +25 -0
  56. package/src/telemetry/tracing-channel-publisher.ts +19 -4
  57. package/src/test/mock-transcription-model-v4.ts +4 -0
  58. package/src/transcribe/transcribe-result.ts +20 -0
  59. package/src/transcribe/transcribe.ts +107 -20
  60. package/src/transcribe/transcription-events.ts +28 -8
  61. package/src/types/language-model-request-metadata.ts +3 -0
  62. package/src/types/realtime-model.ts +9 -0
  63. package/src/ui/convert-to-model-messages.ts +36 -28
  64. package/src/ui/index.ts +1 -0
  65. package/src/ui/process-ui-message-stream.ts +10 -0
  66. package/src/ui/ui-messages.ts +20 -0
  67. package/src/ui/validate-ui-messages.ts +21 -0
  68. package/src/ui-message-stream/to-ui-message-chunk.ts +72 -1
  69. package/src/ui-message-stream/ui-message-chunks.ts +31 -0
@@ -263,11 +263,13 @@ export declare class MockTranscriptionModelV4 implements TranscriptionModelV4 {
263
263
  readonly modelId: TranscriptionModelV4['modelId'];
264
264
  doGenerate: TranscriptionModelV4['doGenerate'];
265
265
  doStream: TranscriptionModelV4['doStream'];
266
- constructor({ provider, modelId, doGenerate, doStream }?: {
266
+ doGenerateFromUrl: TranscriptionModelV4['doGenerateFromUrl'];
267
+ constructor({ provider, modelId, doGenerate, doStream, doGenerateFromUrl }?: {
267
268
  provider?: TranscriptionModelV4['provider'];
268
269
  modelId?: TranscriptionModelV4['modelId'];
269
270
  doGenerate?: TranscriptionModelV4['doGenerate'];
270
271
  doStream?: TranscriptionModelV4['doStream'];
272
+ doGenerateFromUrl?: TranscriptionModelV4['doGenerateFromUrl'];
271
273
  });
272
274
  }
273
275
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["DecisionModelV4","simulateReadableStream","originalSimulateReadableStream"],"sources":["../../src/test/decision-mock-model-v4.ts","../../src/util/simulate-readable-stream.ts","../../src/test/mock-embedding-model-v3.ts","../../src/test/mock-embedding-model-v4.ts","../../src/test/mock-image-model-v3.ts","../../src/test/mock-image-model-v4.ts","../../src/test/mock-language-model-v3.ts","../../src/test/mock-language-model-v4.ts","../../src/test/mock-provider-v3.ts","../../src/test/mock-provider-v4.ts","../../src/test/mock-speech-model-v3.ts","../../src/test/mock-speech-model-v4.ts","../../src/test/mock-speech-translation-model-v4.ts","../../src/test/mock-streaming-speech-model-v4.ts","../../src/test/mock-transcription-model-v3.ts","../../src/test/mock-transcription-model-v4.ts","../../src/test/mock-reranking-model-v3.ts","../../src/test/mock-reranking-model-v4.ts","../../src/test/mock-video-model-v3.ts","../../src/test/mock-video-model-v4.ts","../../src/test/mock-values.ts","../../test/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":["DecisionModelV4","simulateReadableStream","originalSimulateReadableStream"],"sources":["../../src/test/decision-mock-model-v4.ts","../../src/util/simulate-readable-stream.ts","../../src/test/mock-embedding-model-v3.ts","../../src/test/mock-embedding-model-v4.ts","../../src/test/mock-image-model-v3.ts","../../src/test/mock-image-model-v4.ts","../../src/test/mock-language-model-v3.ts","../../src/test/mock-language-model-v4.ts","../../src/test/mock-provider-v3.ts","../../src/test/mock-provider-v4.ts","../../src/test/mock-speech-model-v3.ts","../../src/test/mock-speech-model-v4.ts","../../src/test/mock-speech-translation-model-v4.ts","../../src/test/mock-streaming-speech-model-v4.ts","../../src/test/mock-transcription-model-v3.ts","../../src/test/mock-transcription-model-v4.ts","../../src/test/mock-reranking-model-v3.ts","../../src/test/mock-reranking-model-v4.ts","../../src/test/mock-video-model-v3.ts","../../src/test/mock-video-model-v4.ts","../../src/test/mock-values.ts","../../test/index.ts"],"mappings":"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"}
@@ -312,12 +312,13 @@ var MockTranscriptionModelV3 = class {
312
312
  //#endregion
313
313
  //#region src/test/mock-transcription-model-v4.ts
314
314
  var MockTranscriptionModelV4 = class {
315
- constructor({ provider = "mock-provider", modelId = "mock-model-id", doGenerate = notImplemented, doStream } = {}) {
315
+ constructor({ provider = "mock-provider", modelId = "mock-model-id", doGenerate = notImplemented, doStream, doGenerateFromUrl } = {}) {
316
316
  this.specificationVersion = "v4";
317
317
  this.provider = provider;
318
318
  this.modelId = modelId;
319
319
  this.doGenerate = doGenerate;
320
320
  this.doStream = doStream;
321
+ this.doGenerateFromUrl = doGenerateFromUrl;
321
322
  }
322
323
  };
323
324
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["simulateReadableStream","delay","delayFunction","originalSimulateReadableStream"],"sources":["../../src/test/not-implemented.ts","../../src/test/decision-mock-model-v4.ts","../../src/util/simulate-readable-stream.ts","../../src/test/mock-embedding-model-v3.ts","../../src/test/mock-embedding-model-v4.ts","../../src/test/mock-image-model-v3.ts","../../src/test/mock-image-model-v4.ts","../../src/test/mock-language-model-v3.ts","../../src/test/mock-language-model-v4.ts","../../src/test/mock-provider-v3.ts","../../src/test/mock-provider-v4.ts","../../src/test/mock-speech-model-v3.ts","../../src/test/mock-speech-model-v4.ts","../../src/test/mock-speech-translation-model-v4.ts","../../src/test/mock-streaming-speech-model-v4.ts","../../src/test/mock-transcription-model-v3.ts","../../src/test/mock-transcription-model-v4.ts","../../src/test/mock-reranking-model-v3.ts","../../src/test/mock-reranking-model-v4.ts","../../src/test/mock-video-model-v3.ts","../../src/test/mock-video-model-v4.ts","../../src/test/mock-values.ts","../../test/index.ts"],"sourcesContent":["export function notImplemented(): never {\n throw new Error('Not implemented');\n}\n","import type { Experimental_DecisionModelV4 as DecisionModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class DecisionMockModelV4 implements DecisionModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: string;\n readonly modelId: string;\n readonly supportedQuestionTypes: DecisionModelV4['supportedQuestionTypes'];\n doDecide: DecisionModelV4['doDecide'];\n\n /** @deprecated Use `doDecide` instead. */\n doEvaluate(options: Parameters<DecisionModelV4['doDecide']>[0]) {\n return this.doDecide(options);\n }\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedQuestionTypes = ['choice', 'score', 'boolean'],\n doDecide,\n doEvaluate,\n }: {\n provider?: string;\n modelId?: string;\n supportedQuestionTypes?: DecisionModelV4['supportedQuestionTypes'];\n doDecide?: DecisionModelV4['doDecide'];\n /** @deprecated Use `doDecide` instead. */\n doEvaluate?: DecisionModelV4['doDecide'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.supportedQuestionTypes = supportedQuestionTypes;\n this.doDecide = doDecide ?? doEvaluate ?? notImplemented;\n }\n}\n","import { delay as delayFunction } from '@ai-sdk/provider-utils';\n\n/**\n * Creates a ReadableStream that emits the provided values with an optional delay between each value.\n *\n * @param options - The configuration options\n * @param options.chunks - Array of values to be emitted by the stream\n * @param options.initialDelayInMs - Optional initial delay in milliseconds before emitting the first value (default: 0). Can be set to `null` to skip the initial delay. The difference between `initialDelayInMs: null` and `initialDelayInMs: 0` is that `initialDelayInMs: null` will emit the values without any delay, while `initialDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @param options.chunkDelayInMs - Optional delay in milliseconds between emitting each value (default: 0). Can be set to `null` to skip the delay. The difference between `chunkDelayInMs: null` and `chunkDelayInMs: 0` is that `chunkDelayInMs: null` will emit the values without any delay, while `chunkDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @returns A ReadableStream that emits the provided values\n */\nexport function simulateReadableStream<T>({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal,\n}: {\n chunks: T[];\n initialDelayInMs?: number | null;\n chunkDelayInMs?: number | null;\n _internal?: {\n delay?: (ms: number | null) => Promise<void>;\n };\n}): ReadableStream<T> {\n const delay = _internal?.delay ?? delayFunction;\n\n let index = 0;\n\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n },\n });\n}\n","import type { EmbeddingModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV3 implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly provider: EmbeddingModelV3['provider'];\n readonly modelId: EmbeddingModelV3['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV3['maxEmbeddingsPerCall'];\n readonly supportsParallelCalls: EmbeddingModelV3['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV3['doEmbed'];\n\n doEmbedCalls: Parameters<EmbeddingModelV3['doEmbed']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV3['provider'];\n modelId?: EmbeddingModelV3['modelId'];\n maxEmbeddingsPerCall?: EmbeddingModelV3['maxEmbeddingsPerCall'] | null;\n supportsParallelCalls?: EmbeddingModelV3['supportsParallelCalls'];\n doEmbed?:\n | EmbeddingModelV3['doEmbed']\n | Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n | Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = async options => {\n this.doEmbedCalls.push(options);\n\n if (typeof doEmbed === 'function') {\n return doEmbed(options);\n } else if (Array.isArray(doEmbed)) {\n return doEmbed[this.doEmbedCalls.length - 1];\n } else {\n return doEmbed;\n }\n };\n }\n}\n","import type { EmbeddingModelV4 } from '@ai-sdk/provider';\nimport { EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL } from '@ai-sdk/provider-utils';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV4 implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly provider: EmbeddingModelV4['provider'];\n readonly modelId: EmbeddingModelV4['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV4['maxEmbeddingsPerCall'];\n readonly [EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL]:\n | PromiseLike<number | undefined>\n | number\n | undefined;\n readonly supportsParallelCalls: EmbeddingModelV4['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV4['doEmbed'];\n\n doEmbedCalls: Parameters<EmbeddingModelV4['doEmbed']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n maxInputBytesPerCall,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV4['provider'];\n modelId?: EmbeddingModelV4['modelId'];\n maxEmbeddingsPerCall?: EmbeddingModelV4['maxEmbeddingsPerCall'] | null;\n maxInputBytesPerCall?: PromiseLike<number | undefined> | number | undefined;\n supportsParallelCalls?: EmbeddingModelV4['supportsParallelCalls'];\n doEmbed?:\n | EmbeddingModelV4['doEmbed']\n | Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n | Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this[EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL] =\n maxInputBytesPerCall;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = async options => {\n this.doEmbedCalls.push(options);\n\n if (typeof doEmbed === 'function') {\n return doEmbed(options);\n } else if (Array.isArray(doEmbed)) {\n return doEmbed[this.doEmbedCalls.length - 1];\n } else {\n return doEmbed;\n }\n };\n }\n}\n","import type { ImageModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV3 implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: ImageModelV3['provider'];\n readonly modelId: ImageModelV3['modelId'];\n readonly maxImagesPerCall: ImageModelV3['maxImagesPerCall'];\n\n doGenerate: ImageModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV3['provider'];\n modelId?: ImageModelV3['modelId'];\n maxImagesPerCall?: ImageModelV3['maxImagesPerCall'];\n doGenerate?: ImageModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import type { ImageModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV4 implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: ImageModelV4['provider'];\n readonly modelId: ImageModelV4['modelId'];\n readonly maxImagesPerCall: ImageModelV4['maxImagesPerCall'];\n readonly supportsFileInputs: ImageModelV4['supportsFileInputs'];\n readonly supportsMaskInputs: ImageModelV4['supportsMaskInputs'];\n\n doGenerate: ImageModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n supportsFileInputs,\n supportsMaskInputs,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV4['provider'];\n modelId?: ImageModelV4['modelId'];\n maxImagesPerCall?: ImageModelV4['maxImagesPerCall'];\n supportsFileInputs?: ImageModelV4['supportsFileInputs'];\n supportsMaskInputs?: ImageModelV4['supportsMaskInputs'];\n doGenerate?: ImageModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.supportsFileInputs = supportsFileInputs;\n this.supportsMaskInputs = supportsMaskInputs;\n this.doGenerate = doGenerate;\n }\n}\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n} from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV3 implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n private _supportedUrls: () => LanguageModelV3['supportedUrls'];\n\n readonly provider: LanguageModelV3['provider'];\n readonly modelId: LanguageModelV3['modelId'];\n\n doGenerate: LanguageModelV3['doGenerate'];\n doStream: LanguageModelV3['doStream'];\n\n doGenerateCalls: LanguageModelV3CallOptions[] = [];\n doStreamCalls: LanguageModelV3CallOptions[] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV3['provider'];\n modelId?: LanguageModelV3['modelId'];\n supportedUrls?:\n | LanguageModelV3['supportedUrls']\n | (() => LanguageModelV3['supportedUrls']);\n doGenerate?:\n | LanguageModelV3['doGenerate']\n | LanguageModelV3GenerateResult\n | LanguageModelV3GenerateResult[];\n doStream?:\n | LanguageModelV3['doStream']\n | LanguageModelV3StreamResult\n | LanguageModelV3StreamResult[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return await doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length - 1];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return await doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length - 1];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => await supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamResult,\n} from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV4 implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n private _supportedUrls: () => LanguageModelV4['supportedUrls'];\n\n readonly provider: LanguageModelV4['provider'];\n readonly modelId: LanguageModelV4['modelId'];\n\n doGenerate: LanguageModelV4['doGenerate'];\n doStream: LanguageModelV4['doStream'];\n\n doGenerateCalls: LanguageModelV4CallOptions[] = [];\n doStreamCalls: LanguageModelV4CallOptions[] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV4['provider'];\n modelId?: LanguageModelV4['modelId'];\n supportedUrls?:\n | LanguageModelV4['supportedUrls']\n | (() => LanguageModelV4['supportedUrls']);\n doGenerate?:\n | LanguageModelV4['doGenerate']\n | LanguageModelV4GenerateResult\n | LanguageModelV4GenerateResult[];\n doStream?:\n | LanguageModelV4['doStream']\n | LanguageModelV4StreamResult\n | LanguageModelV4StreamResult[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return await doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length - 1];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return await doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length - 1];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => await supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import {\n NoSuchModelError,\n type EmbeddingModelV3,\n type ImageModelV3,\n type LanguageModelV3,\n type ProviderV3,\n type SpeechModelV3,\n type TranscriptionModelV3,\n type RerankingModelV3,\n} from '@ai-sdk/provider';\nexport class MockProviderV3 implements ProviderV3 {\n readonly specificationVersion = 'v3' as const;\n\n languageModel: ProviderV3['languageModel'];\n embeddingModel: ProviderV3['embeddingModel'];\n imageModel: ProviderV3['imageModel'];\n transcriptionModel: ProviderV3['transcriptionModel'];\n speechModel: ProviderV3['speechModel'];\n rerankingModel: ProviderV3['rerankingModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n }: {\n languageModels?: Record<string, LanguageModelV3>;\n embeddingModels?: Record<string, EmbeddingModelV3>;\n imageModels?: Record<string, ImageModelV3>;\n transcriptionModels?: Record<string, TranscriptionModelV3>;\n speechModels?: Record<string, SpeechModelV3>;\n rerankingModels?: Record<string, RerankingModelV3>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.embeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string): SpeechModelV3 => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n this.rerankingModel = (modelId: string) => {\n if (!rerankingModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' });\n }\n return rerankingModels[modelId];\n };\n }\n}\n","import {\n NoSuchModelError,\n type EmbeddingModelV4,\n type ImageModelV4,\n type LanguageModelV4,\n type ProviderV4,\n type SpeechModelV4,\n type TranscriptionModelV4,\n type RerankingModelV4,\n} from '@ai-sdk/provider';\nexport class MockProviderV4 implements ProviderV4 {\n readonly specificationVersion = 'v4' as const;\n\n languageModel: ProviderV4['languageModel'];\n embeddingModel: ProviderV4['embeddingModel'];\n imageModel: ProviderV4['imageModel'];\n transcriptionModel: ProviderV4['transcriptionModel'];\n speechModel: ProviderV4['speechModel'];\n rerankingModel: ProviderV4['rerankingModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n }: {\n languageModels?: Record<string, LanguageModelV4>;\n embeddingModels?: Record<string, EmbeddingModelV4>;\n imageModels?: Record<string, ImageModelV4>;\n transcriptionModels?: Record<string, TranscriptionModelV4>;\n speechModels?: Record<string, SpeechModelV4>;\n rerankingModels?: Record<string, RerankingModelV4>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.embeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string): SpeechModelV4 => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n this.rerankingModel = (modelId: string) => {\n if (!rerankingModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' });\n }\n return rerankingModels[modelId];\n };\n }\n}\n","import type { SpeechModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV3 implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: SpeechModelV3['provider'];\n readonly modelId: SpeechModelV3['modelId'];\n\n doGenerate: SpeechModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV3['provider'];\n modelId?: SpeechModelV3['modelId'];\n doGenerate?: SpeechModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import type { SpeechModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV4 implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: SpeechModelV4['provider'];\n readonly modelId: SpeechModelV4['modelId'];\n\n doGenerate: SpeechModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV4['provider'];\n modelId?: SpeechModelV4['modelId'];\n doGenerate?: SpeechModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import type { Experimental_SpeechTranslationModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechTranslationModelV4 implements Experimental_SpeechTranslationModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_SpeechTranslationModelV4['provider'];\n readonly modelId: Experimental_SpeechTranslationModelV4['modelId'];\n\n doStream: Experimental_SpeechTranslationModelV4['doStream'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doStream = notImplemented,\n }: {\n provider?: Experimental_SpeechTranslationModelV4['provider'];\n modelId?: Experimental_SpeechTranslationModelV4['modelId'];\n doStream?: Experimental_SpeechTranslationModelV4['doStream'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doStream = doStream;\n }\n}\n","import type { Experimental_StreamingSpeechModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockStreamingSpeechModelV4 implements Experimental_StreamingSpeechModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_StreamingSpeechModelV4['provider'];\n readonly modelId: Experimental_StreamingSpeechModelV4['modelId'];\n\n doGenerate: Experimental_StreamingSpeechModelV4['doGenerate'];\n doStream: Experimental_StreamingSpeechModelV4['doStream'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: Experimental_StreamingSpeechModelV4['provider'];\n modelId?: Experimental_StreamingSpeechModelV4['modelId'];\n doGenerate?: Experimental_StreamingSpeechModelV4['doGenerate'];\n doStream?: Experimental_StreamingSpeechModelV4['doStream'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n this.doStream = doStream;\n }\n}\n","import type { TranscriptionModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV3 implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: TranscriptionModelV3['provider'];\n readonly modelId: TranscriptionModelV3['modelId'];\n\n doGenerate: TranscriptionModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: TranscriptionModelV3['provider'];\n modelId?: TranscriptionModelV3['modelId'];\n doGenerate?: TranscriptionModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import type { TranscriptionModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV4 implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: TranscriptionModelV4['provider'];\n readonly modelId: TranscriptionModelV4['modelId'];\n\n doGenerate: TranscriptionModelV4['doGenerate'];\n doStream: TranscriptionModelV4['doStream'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n doStream,\n }: {\n provider?: TranscriptionModelV4['provider'];\n modelId?: TranscriptionModelV4['modelId'];\n doGenerate?: TranscriptionModelV4['doGenerate'];\n doStream?: TranscriptionModelV4['doStream'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n this.doStream = doStream;\n }\n}\n","import type { RerankingModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockRerankingModelV3 implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly provider: RerankingModelV3['provider'];\n readonly modelId: RerankingModelV3['modelId'];\n\n doRerank: RerankingModelV3['doRerank'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doRerank = notImplemented,\n }: {\n provider?: RerankingModelV3['provider'];\n modelId?: RerankingModelV3['modelId'];\n doRerank?: RerankingModelV3['doRerank'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doRerank = doRerank;\n }\n}\n","import type { RerankingModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockRerankingModelV4 implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly provider: RerankingModelV4['provider'];\n readonly modelId: RerankingModelV4['modelId'];\n\n doRerank: RerankingModelV4['doRerank'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doRerank = notImplemented,\n }: {\n provider?: RerankingModelV4['provider'];\n modelId?: RerankingModelV4['modelId'];\n doRerank?: RerankingModelV4['doRerank'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doRerank = doRerank;\n }\n}\n","import type { Experimental_VideoModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockVideoModelV3 implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: Experimental_VideoModelV3['provider'];\n readonly modelId: Experimental_VideoModelV3['modelId'];\n readonly maxVideosPerCall: Experimental_VideoModelV3['maxVideosPerCall'];\n\n doGenerate: Experimental_VideoModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxVideosPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: Experimental_VideoModelV3['provider'];\n modelId?: Experimental_VideoModelV3['modelId'];\n maxVideosPerCall?: Experimental_VideoModelV3['maxVideosPerCall'];\n doGenerate?: Experimental_VideoModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxVideosPerCall = maxVideosPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import type { Experimental_VideoModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockVideoModelV4 implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_VideoModelV4['provider'];\n readonly modelId: Experimental_VideoModelV4['modelId'];\n readonly maxVideosPerCall: Experimental_VideoModelV4['maxVideosPerCall'];\n\n doGenerate: Experimental_VideoModelV4['doGenerate'];\n handleWebhookOption: Experimental_VideoModelV4['handleWebhookOption'];\n doStart: Experimental_VideoModelV4['doStart'];\n doStatus: Experimental_VideoModelV4['doStatus'];\n\n constructor(\n options: {\n provider?: Experimental_VideoModelV4['provider'];\n modelId?: Experimental_VideoModelV4['modelId'];\n maxVideosPerCall?: Experimental_VideoModelV4['maxVideosPerCall'];\n doGenerate?: Experimental_VideoModelV4['doGenerate'];\n handleWebhookOption?: Experimental_VideoModelV4['handleWebhookOption'];\n doStart?: Experimental_VideoModelV4['doStart'];\n doStatus?: Experimental_VideoModelV4['doStatus'];\n } = {},\n ) {\n this.provider = options.provider ?? 'mock-provider';\n this.modelId = options.modelId ?? 'mock-model-id';\n this.maxVideosPerCall = options.maxVideosPerCall ?? 1;\n this.doGenerate =\n 'doGenerate' in options ? options.doGenerate : notImplemented;\n this.handleWebhookOption = options.handleWebhookOption;\n this.doStart = options.doStart;\n this.doStatus = options.doStatus;\n }\n}\n","export function mockValues<T>(...values: T[]): () => T {\n let counter = 0;\n return () => values[counter++] ?? values[values.length - 1];\n}\n","import { DecisionMockModelV4 } from '../src/test/decision-mock-model-v4';\n\nimport { simulateReadableStream as originalSimulateReadableStream } from '../src/util/simulate-readable-stream';\n\nexport {\n convertArrayToAsyncIterable,\n convertArrayToReadableStream,\n convertReadableStreamToArray,\n mockId,\n} from '@ai-sdk/provider-utils/test';\nexport { MockEmbeddingModelV3 } from '../src/test/mock-embedding-model-v3';\nexport { MockEmbeddingModelV4 } from '../src/test/mock-embedding-model-v4';\nexport { DecisionMockModelV4 as Experimental_DecisionMockModelV4 } from '../src/test/decision-mock-model-v4';\nexport { MockImageModelV3 } from '../src/test/mock-image-model-v3';\nexport { MockImageModelV4 } from '../src/test/mock-image-model-v4';\nexport { MockLanguageModelV3 } from '../src/test/mock-language-model-v3';\nexport { MockLanguageModelV4 } from '../src/test/mock-language-model-v4';\nexport { MockProviderV3 } from '../src/test/mock-provider-v3';\nexport { MockProviderV4 } from '../src/test/mock-provider-v4';\nexport { MockSpeechModelV3 } from '../src/test/mock-speech-model-v3';\nexport { MockSpeechModelV4 } from '../src/test/mock-speech-model-v4';\nexport { MockSpeechTranslationModelV4 as Experimental_MockSpeechTranslationModelV4 } from '../src/test/mock-speech-translation-model-v4';\nexport { MockStreamingSpeechModelV4 as Experimental_MockStreamingSpeechModelV4 } from '../src/test/mock-streaming-speech-model-v4';\nexport { MockTranscriptionModelV3 } from '../src/test/mock-transcription-model-v3';\nexport { MockTranscriptionModelV4 } from '../src/test/mock-transcription-model-v4';\nexport { MockRerankingModelV3 } from '../src/test/mock-reranking-model-v3';\nexport { MockRerankingModelV4 } from '../src/test/mock-reranking-model-v4';\nexport { MockVideoModelV3 } from '../src/test/mock-video-model-v3';\nexport { MockVideoModelV4 } from '../src/test/mock-video-model-v4';\nexport { mockValues } from '../src/test/mock-values';\n\n/**\n * @deprecated Use `simulateReadableStream` from `ai` instead.\n */\nexport const simulateReadableStream = originalSimulateReadableStream;\n\n/** @deprecated Use `Experimental_DecisionMockModelV4` instead. */\nexport const Experimental_EvaluationMockModelV4 = DecisionMockModelV4;\n/** @deprecated Use `Experimental_DecisionMockModelV4` instead. */\nexport type Experimental_EvaluationMockModelV4 = DecisionMockModelV4;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["simulateReadableStream","delay","delayFunction","originalSimulateReadableStream"],"sources":["../../src/test/not-implemented.ts","../../src/test/decision-mock-model-v4.ts","../../src/util/simulate-readable-stream.ts","../../src/test/mock-embedding-model-v3.ts","../../src/test/mock-embedding-model-v4.ts","../../src/test/mock-image-model-v3.ts","../../src/test/mock-image-model-v4.ts","../../src/test/mock-language-model-v3.ts","../../src/test/mock-language-model-v4.ts","../../src/test/mock-provider-v3.ts","../../src/test/mock-provider-v4.ts","../../src/test/mock-speech-model-v3.ts","../../src/test/mock-speech-model-v4.ts","../../src/test/mock-speech-translation-model-v4.ts","../../src/test/mock-streaming-speech-model-v4.ts","../../src/test/mock-transcription-model-v3.ts","../../src/test/mock-transcription-model-v4.ts","../../src/test/mock-reranking-model-v3.ts","../../src/test/mock-reranking-model-v4.ts","../../src/test/mock-video-model-v3.ts","../../src/test/mock-video-model-v4.ts","../../src/test/mock-values.ts","../../test/index.ts"],"sourcesContent":["export function notImplemented(): never {\n throw new Error('Not implemented');\n}\n","import type { Experimental_DecisionModelV4 as DecisionModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class DecisionMockModelV4 implements DecisionModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: string;\n readonly modelId: string;\n readonly supportedQuestionTypes: DecisionModelV4['supportedQuestionTypes'];\n doDecide: DecisionModelV4['doDecide'];\n\n /** @deprecated Use `doDecide` instead. */\n doEvaluate(options: Parameters<DecisionModelV4['doDecide']>[0]) {\n return this.doDecide(options);\n }\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedQuestionTypes = ['choice', 'score', 'boolean'],\n doDecide,\n doEvaluate,\n }: {\n provider?: string;\n modelId?: string;\n supportedQuestionTypes?: DecisionModelV4['supportedQuestionTypes'];\n doDecide?: DecisionModelV4['doDecide'];\n /** @deprecated Use `doDecide` instead. */\n doEvaluate?: DecisionModelV4['doDecide'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.supportedQuestionTypes = supportedQuestionTypes;\n this.doDecide = doDecide ?? doEvaluate ?? notImplemented;\n }\n}\n","import { delay as delayFunction } from '@ai-sdk/provider-utils';\n\n/**\n * Creates a ReadableStream that emits the provided values with an optional delay between each value.\n *\n * @param options - The configuration options\n * @param options.chunks - Array of values to be emitted by the stream\n * @param options.initialDelayInMs - Optional initial delay in milliseconds before emitting the first value (default: 0). Can be set to `null` to skip the initial delay. The difference between `initialDelayInMs: null` and `initialDelayInMs: 0` is that `initialDelayInMs: null` will emit the values without any delay, while `initialDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @param options.chunkDelayInMs - Optional delay in milliseconds between emitting each value (default: 0). Can be set to `null` to skip the delay. The difference between `chunkDelayInMs: null` and `chunkDelayInMs: 0` is that `chunkDelayInMs: null` will emit the values without any delay, while `chunkDelayInMs: 0` will emit the values with a delay of 0 milliseconds.\n * @returns A ReadableStream that emits the provided values\n */\nexport function simulateReadableStream<T>({\n chunks,\n initialDelayInMs = 0,\n chunkDelayInMs = 0,\n _internal,\n}: {\n chunks: T[];\n initialDelayInMs?: number | null;\n chunkDelayInMs?: number | null;\n _internal?: {\n delay?: (ms: number | null) => Promise<void>;\n };\n}): ReadableStream<T> {\n const delay = _internal?.delay ?? delayFunction;\n\n let index = 0;\n\n return new ReadableStream({\n async pull(controller) {\n if (index < chunks.length) {\n await delay(index === 0 ? initialDelayInMs : chunkDelayInMs);\n controller.enqueue(chunks[index++]);\n } else {\n controller.close();\n }\n },\n });\n}\n","import type { EmbeddingModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV3 implements EmbeddingModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly provider: EmbeddingModelV3['provider'];\n readonly modelId: EmbeddingModelV3['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV3['maxEmbeddingsPerCall'];\n readonly supportsParallelCalls: EmbeddingModelV3['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV3['doEmbed'];\n\n doEmbedCalls: Parameters<EmbeddingModelV3['doEmbed']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV3['provider'];\n modelId?: EmbeddingModelV3['modelId'];\n maxEmbeddingsPerCall?: EmbeddingModelV3['maxEmbeddingsPerCall'] | null;\n supportsParallelCalls?: EmbeddingModelV3['supportsParallelCalls'];\n doEmbed?:\n | EmbeddingModelV3['doEmbed']\n | Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>\n | Awaited<ReturnType<EmbeddingModelV3['doEmbed']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = async options => {\n this.doEmbedCalls.push(options);\n\n if (typeof doEmbed === 'function') {\n return doEmbed(options);\n } else if (Array.isArray(doEmbed)) {\n return doEmbed[this.doEmbedCalls.length - 1];\n } else {\n return doEmbed;\n }\n };\n }\n}\n","import type { EmbeddingModelV4 } from '@ai-sdk/provider';\nimport { EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL } from '@ai-sdk/provider-utils';\nimport { notImplemented } from './not-implemented';\n\nexport class MockEmbeddingModelV4 implements EmbeddingModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly provider: EmbeddingModelV4['provider'];\n readonly modelId: EmbeddingModelV4['modelId'];\n readonly maxEmbeddingsPerCall: EmbeddingModelV4['maxEmbeddingsPerCall'];\n readonly [EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL]:\n | PromiseLike<number | undefined>\n | number\n | undefined;\n readonly supportsParallelCalls: EmbeddingModelV4['supportsParallelCalls'];\n\n doEmbed: EmbeddingModelV4['doEmbed'];\n\n doEmbedCalls: Parameters<EmbeddingModelV4['doEmbed']>[0][] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxEmbeddingsPerCall = 1,\n maxInputBytesPerCall,\n supportsParallelCalls = false,\n doEmbed = notImplemented,\n }: {\n provider?: EmbeddingModelV4['provider'];\n modelId?: EmbeddingModelV4['modelId'];\n maxEmbeddingsPerCall?: EmbeddingModelV4['maxEmbeddingsPerCall'] | null;\n maxInputBytesPerCall?: PromiseLike<number | undefined> | number | undefined;\n supportsParallelCalls?: EmbeddingModelV4['supportsParallelCalls'];\n doEmbed?:\n | EmbeddingModelV4['doEmbed']\n | Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>\n | Awaited<ReturnType<EmbeddingModelV4['doEmbed']>>[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxEmbeddingsPerCall = maxEmbeddingsPerCall ?? undefined;\n this[EXPERIMENTAL_EMBEDDING_MODEL_MAX_INPUT_BYTES_PER_CALL] =\n maxInputBytesPerCall;\n this.supportsParallelCalls = supportsParallelCalls;\n this.doEmbed = async options => {\n this.doEmbedCalls.push(options);\n\n if (typeof doEmbed === 'function') {\n return doEmbed(options);\n } else if (Array.isArray(doEmbed)) {\n return doEmbed[this.doEmbedCalls.length - 1];\n } else {\n return doEmbed;\n }\n };\n }\n}\n","import type { ImageModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV3 implements ImageModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: ImageModelV3['provider'];\n readonly modelId: ImageModelV3['modelId'];\n readonly maxImagesPerCall: ImageModelV3['maxImagesPerCall'];\n\n doGenerate: ImageModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV3['provider'];\n modelId?: ImageModelV3['modelId'];\n maxImagesPerCall?: ImageModelV3['maxImagesPerCall'];\n doGenerate?: ImageModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import type { ImageModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockImageModelV4 implements ImageModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: ImageModelV4['provider'];\n readonly modelId: ImageModelV4['modelId'];\n readonly maxImagesPerCall: ImageModelV4['maxImagesPerCall'];\n readonly supportsFileInputs: ImageModelV4['supportsFileInputs'];\n readonly supportsMaskInputs: ImageModelV4['supportsMaskInputs'];\n\n doGenerate: ImageModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxImagesPerCall = 1,\n supportsFileInputs,\n supportsMaskInputs,\n doGenerate = notImplemented,\n }: {\n provider?: ImageModelV4['provider'];\n modelId?: ImageModelV4['modelId'];\n maxImagesPerCall?: ImageModelV4['maxImagesPerCall'];\n supportsFileInputs?: ImageModelV4['supportsFileInputs'];\n supportsMaskInputs?: ImageModelV4['supportsMaskInputs'];\n doGenerate?: ImageModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxImagesPerCall = maxImagesPerCall;\n this.supportsFileInputs = supportsFileInputs;\n this.supportsMaskInputs = supportsMaskInputs;\n this.doGenerate = doGenerate;\n }\n}\n","import type {\n LanguageModelV3,\n LanguageModelV3CallOptions,\n LanguageModelV3GenerateResult,\n LanguageModelV3StreamResult,\n} from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV3 implements LanguageModelV3 {\n readonly specificationVersion = 'v3';\n\n private _supportedUrls: () => LanguageModelV3['supportedUrls'];\n\n readonly provider: LanguageModelV3['provider'];\n readonly modelId: LanguageModelV3['modelId'];\n\n doGenerate: LanguageModelV3['doGenerate'];\n doStream: LanguageModelV3['doStream'];\n\n doGenerateCalls: LanguageModelV3CallOptions[] = [];\n doStreamCalls: LanguageModelV3CallOptions[] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV3['provider'];\n modelId?: LanguageModelV3['modelId'];\n supportedUrls?:\n | LanguageModelV3['supportedUrls']\n | (() => LanguageModelV3['supportedUrls']);\n doGenerate?:\n | LanguageModelV3['doGenerate']\n | LanguageModelV3GenerateResult\n | LanguageModelV3GenerateResult[];\n doStream?:\n | LanguageModelV3['doStream']\n | LanguageModelV3StreamResult\n | LanguageModelV3StreamResult[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return await doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length - 1];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return await doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length - 1];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => await supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import type {\n LanguageModelV4,\n LanguageModelV4CallOptions,\n LanguageModelV4GenerateResult,\n LanguageModelV4StreamResult,\n} from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockLanguageModelV4 implements LanguageModelV4 {\n readonly specificationVersion = 'v4';\n\n private _supportedUrls: () => LanguageModelV4['supportedUrls'];\n\n readonly provider: LanguageModelV4['provider'];\n readonly modelId: LanguageModelV4['modelId'];\n\n doGenerate: LanguageModelV4['doGenerate'];\n doStream: LanguageModelV4['doStream'];\n\n doGenerateCalls: LanguageModelV4CallOptions[] = [];\n doStreamCalls: LanguageModelV4CallOptions[] = [];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n supportedUrls = {},\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: LanguageModelV4['provider'];\n modelId?: LanguageModelV4['modelId'];\n supportedUrls?:\n | LanguageModelV4['supportedUrls']\n | (() => LanguageModelV4['supportedUrls']);\n doGenerate?:\n | LanguageModelV4['doGenerate']\n | LanguageModelV4GenerateResult\n | LanguageModelV4GenerateResult[];\n doStream?:\n | LanguageModelV4['doStream']\n | LanguageModelV4StreamResult\n | LanguageModelV4StreamResult[];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = async options => {\n this.doGenerateCalls.push(options);\n\n if (typeof doGenerate === 'function') {\n return await doGenerate(options);\n } else if (Array.isArray(doGenerate)) {\n return doGenerate[this.doGenerateCalls.length - 1];\n } else {\n return doGenerate;\n }\n };\n this.doStream = async options => {\n this.doStreamCalls.push(options);\n\n if (typeof doStream === 'function') {\n return await doStream(options);\n } else if (Array.isArray(doStream)) {\n return doStream[this.doStreamCalls.length - 1];\n } else {\n return doStream;\n }\n };\n this._supportedUrls =\n typeof supportedUrls === 'function'\n ? supportedUrls\n : async () => await supportedUrls;\n }\n\n get supportedUrls() {\n return this._supportedUrls();\n }\n}\n","import {\n NoSuchModelError,\n type EmbeddingModelV3,\n type ImageModelV3,\n type LanguageModelV3,\n type ProviderV3,\n type SpeechModelV3,\n type TranscriptionModelV3,\n type RerankingModelV3,\n} from '@ai-sdk/provider';\nexport class MockProviderV3 implements ProviderV3 {\n readonly specificationVersion = 'v3' as const;\n\n languageModel: ProviderV3['languageModel'];\n embeddingModel: ProviderV3['embeddingModel'];\n imageModel: ProviderV3['imageModel'];\n transcriptionModel: ProviderV3['transcriptionModel'];\n speechModel: ProviderV3['speechModel'];\n rerankingModel: ProviderV3['rerankingModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n }: {\n languageModels?: Record<string, LanguageModelV3>;\n embeddingModels?: Record<string, EmbeddingModelV3>;\n imageModels?: Record<string, ImageModelV3>;\n transcriptionModels?: Record<string, TranscriptionModelV3>;\n speechModels?: Record<string, SpeechModelV3>;\n rerankingModels?: Record<string, RerankingModelV3>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.embeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string): SpeechModelV3 => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n this.rerankingModel = (modelId: string) => {\n if (!rerankingModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' });\n }\n return rerankingModels[modelId];\n };\n }\n}\n","import {\n NoSuchModelError,\n type EmbeddingModelV4,\n type ImageModelV4,\n type LanguageModelV4,\n type ProviderV4,\n type SpeechModelV4,\n type TranscriptionModelV4,\n type RerankingModelV4,\n} from '@ai-sdk/provider';\nexport class MockProviderV4 implements ProviderV4 {\n readonly specificationVersion = 'v4' as const;\n\n languageModel: ProviderV4['languageModel'];\n embeddingModel: ProviderV4['embeddingModel'];\n imageModel: ProviderV4['imageModel'];\n transcriptionModel: ProviderV4['transcriptionModel'];\n speechModel: ProviderV4['speechModel'];\n rerankingModel: ProviderV4['rerankingModel'];\n\n constructor({\n languageModels,\n embeddingModels,\n imageModels,\n transcriptionModels,\n speechModels,\n rerankingModels,\n }: {\n languageModels?: Record<string, LanguageModelV4>;\n embeddingModels?: Record<string, EmbeddingModelV4>;\n imageModels?: Record<string, ImageModelV4>;\n transcriptionModels?: Record<string, TranscriptionModelV4>;\n speechModels?: Record<string, SpeechModelV4>;\n rerankingModels?: Record<string, RerankingModelV4>;\n } = {}) {\n this.languageModel = (modelId: string) => {\n if (!languageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'languageModel' });\n }\n return languageModels[modelId];\n };\n this.embeddingModel = (modelId: string) => {\n if (!embeddingModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n });\n }\n return embeddingModels[modelId];\n };\n this.imageModel = (modelId: string) => {\n if (!imageModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n }\n return imageModels[modelId];\n };\n this.transcriptionModel = (modelId: string) => {\n if (!transcriptionModels?.[modelId]) {\n throw new NoSuchModelError({\n modelId,\n modelType: 'transcriptionModel',\n });\n }\n return transcriptionModels[modelId];\n };\n this.speechModel = (modelId: string): SpeechModelV4 => {\n if (!speechModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'speechModel' });\n }\n return speechModels[modelId];\n };\n this.rerankingModel = (modelId: string) => {\n if (!rerankingModels?.[modelId]) {\n throw new NoSuchModelError({ modelId, modelType: 'rerankingModel' });\n }\n return rerankingModels[modelId];\n };\n }\n}\n","import type { SpeechModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV3 implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: SpeechModelV3['provider'];\n readonly modelId: SpeechModelV3['modelId'];\n\n doGenerate: SpeechModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV3['provider'];\n modelId?: SpeechModelV3['modelId'];\n doGenerate?: SpeechModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import type { SpeechModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechModelV4 implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: SpeechModelV4['provider'];\n readonly modelId: SpeechModelV4['modelId'];\n\n doGenerate: SpeechModelV4['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: SpeechModelV4['provider'];\n modelId?: SpeechModelV4['modelId'];\n doGenerate?: SpeechModelV4['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import type { Experimental_SpeechTranslationModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockSpeechTranslationModelV4 implements Experimental_SpeechTranslationModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_SpeechTranslationModelV4['provider'];\n readonly modelId: Experimental_SpeechTranslationModelV4['modelId'];\n\n doStream: Experimental_SpeechTranslationModelV4['doStream'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doStream = notImplemented,\n }: {\n provider?: Experimental_SpeechTranslationModelV4['provider'];\n modelId?: Experimental_SpeechTranslationModelV4['modelId'];\n doStream?: Experimental_SpeechTranslationModelV4['doStream'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doStream = doStream;\n }\n}\n","import type { Experimental_StreamingSpeechModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockStreamingSpeechModelV4 implements Experimental_StreamingSpeechModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_StreamingSpeechModelV4['provider'];\n readonly modelId: Experimental_StreamingSpeechModelV4['modelId'];\n\n doGenerate: Experimental_StreamingSpeechModelV4['doGenerate'];\n doStream: Experimental_StreamingSpeechModelV4['doStream'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n doStream = notImplemented,\n }: {\n provider?: Experimental_StreamingSpeechModelV4['provider'];\n modelId?: Experimental_StreamingSpeechModelV4['modelId'];\n doGenerate?: Experimental_StreamingSpeechModelV4['doGenerate'];\n doStream?: Experimental_StreamingSpeechModelV4['doStream'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n this.doStream = doStream;\n }\n}\n","import type { TranscriptionModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV3 implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: TranscriptionModelV3['provider'];\n readonly modelId: TranscriptionModelV3['modelId'];\n\n doGenerate: TranscriptionModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n }: {\n provider?: TranscriptionModelV3['provider'];\n modelId?: TranscriptionModelV3['modelId'];\n doGenerate?: TranscriptionModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n }\n}\n","import type { TranscriptionModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockTranscriptionModelV4 implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: TranscriptionModelV4['provider'];\n readonly modelId: TranscriptionModelV4['modelId'];\n\n doGenerate: TranscriptionModelV4['doGenerate'];\n doStream: TranscriptionModelV4['doStream'];\n doGenerateFromUrl: TranscriptionModelV4['doGenerateFromUrl'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doGenerate = notImplemented,\n doStream,\n doGenerateFromUrl,\n }: {\n provider?: TranscriptionModelV4['provider'];\n modelId?: TranscriptionModelV4['modelId'];\n doGenerate?: TranscriptionModelV4['doGenerate'];\n doStream?: TranscriptionModelV4['doStream'];\n doGenerateFromUrl?: TranscriptionModelV4['doGenerateFromUrl'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doGenerate = doGenerate;\n this.doStream = doStream;\n this.doGenerateFromUrl = doGenerateFromUrl;\n }\n}\n","import type { RerankingModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockRerankingModelV3 implements RerankingModelV3 {\n readonly specificationVersion = 'v3';\n\n readonly provider: RerankingModelV3['provider'];\n readonly modelId: RerankingModelV3['modelId'];\n\n doRerank: RerankingModelV3['doRerank'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doRerank = notImplemented,\n }: {\n provider?: RerankingModelV3['provider'];\n modelId?: RerankingModelV3['modelId'];\n doRerank?: RerankingModelV3['doRerank'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doRerank = doRerank;\n }\n}\n","import type { RerankingModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockRerankingModelV4 implements RerankingModelV4 {\n readonly specificationVersion = 'v4';\n\n readonly provider: RerankingModelV4['provider'];\n readonly modelId: RerankingModelV4['modelId'];\n\n doRerank: RerankingModelV4['doRerank'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n doRerank = notImplemented,\n }: {\n provider?: RerankingModelV4['provider'];\n modelId?: RerankingModelV4['modelId'];\n doRerank?: RerankingModelV4['doRerank'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.doRerank = doRerank;\n }\n}\n","import type { Experimental_VideoModelV3 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockVideoModelV3 implements Experimental_VideoModelV3 {\n readonly specificationVersion = 'v3';\n readonly provider: Experimental_VideoModelV3['provider'];\n readonly modelId: Experimental_VideoModelV3['modelId'];\n readonly maxVideosPerCall: Experimental_VideoModelV3['maxVideosPerCall'];\n\n doGenerate: Experimental_VideoModelV3['doGenerate'];\n\n constructor({\n provider = 'mock-provider',\n modelId = 'mock-model-id',\n maxVideosPerCall = 1,\n doGenerate = notImplemented,\n }: {\n provider?: Experimental_VideoModelV3['provider'];\n modelId?: Experimental_VideoModelV3['modelId'];\n maxVideosPerCall?: Experimental_VideoModelV3['maxVideosPerCall'];\n doGenerate?: Experimental_VideoModelV3['doGenerate'];\n } = {}) {\n this.provider = provider;\n this.modelId = modelId;\n this.maxVideosPerCall = maxVideosPerCall;\n this.doGenerate = doGenerate;\n }\n}\n","import type { Experimental_VideoModelV4 } from '@ai-sdk/provider';\nimport { notImplemented } from './not-implemented';\n\nexport class MockVideoModelV4 implements Experimental_VideoModelV4 {\n readonly specificationVersion = 'v4';\n readonly provider: Experimental_VideoModelV4['provider'];\n readonly modelId: Experimental_VideoModelV4['modelId'];\n readonly maxVideosPerCall: Experimental_VideoModelV4['maxVideosPerCall'];\n\n doGenerate: Experimental_VideoModelV4['doGenerate'];\n handleWebhookOption: Experimental_VideoModelV4['handleWebhookOption'];\n doStart: Experimental_VideoModelV4['doStart'];\n doStatus: Experimental_VideoModelV4['doStatus'];\n\n constructor(\n options: {\n provider?: Experimental_VideoModelV4['provider'];\n modelId?: Experimental_VideoModelV4['modelId'];\n maxVideosPerCall?: Experimental_VideoModelV4['maxVideosPerCall'];\n doGenerate?: Experimental_VideoModelV4['doGenerate'];\n handleWebhookOption?: Experimental_VideoModelV4['handleWebhookOption'];\n doStart?: Experimental_VideoModelV4['doStart'];\n doStatus?: Experimental_VideoModelV4['doStatus'];\n } = {},\n ) {\n this.provider = options.provider ?? 'mock-provider';\n this.modelId = options.modelId ?? 'mock-model-id';\n this.maxVideosPerCall = options.maxVideosPerCall ?? 1;\n this.doGenerate =\n 'doGenerate' in options ? options.doGenerate : notImplemented;\n this.handleWebhookOption = options.handleWebhookOption;\n this.doStart = options.doStart;\n this.doStatus = options.doStatus;\n }\n}\n","export function mockValues<T>(...values: T[]): () => T {\n let counter = 0;\n return () => values[counter++] ?? values[values.length - 1];\n}\n","import { DecisionMockModelV4 } from '../src/test/decision-mock-model-v4';\n\nimport { simulateReadableStream as originalSimulateReadableStream } from '../src/util/simulate-readable-stream';\n\nexport {\n convertArrayToAsyncIterable,\n convertArrayToReadableStream,\n convertReadableStreamToArray,\n mockId,\n} from '@ai-sdk/provider-utils/test';\nexport { MockEmbeddingModelV3 } from '../src/test/mock-embedding-model-v3';\nexport { MockEmbeddingModelV4 } from '../src/test/mock-embedding-model-v4';\nexport { DecisionMockModelV4 as Experimental_DecisionMockModelV4 } from '../src/test/decision-mock-model-v4';\nexport { MockImageModelV3 } from '../src/test/mock-image-model-v3';\nexport { MockImageModelV4 } from '../src/test/mock-image-model-v4';\nexport { MockLanguageModelV3 } from '../src/test/mock-language-model-v3';\nexport { MockLanguageModelV4 } from '../src/test/mock-language-model-v4';\nexport { MockProviderV3 } from '../src/test/mock-provider-v3';\nexport { MockProviderV4 } from '../src/test/mock-provider-v4';\nexport { MockSpeechModelV3 } from '../src/test/mock-speech-model-v3';\nexport { MockSpeechModelV4 } from '../src/test/mock-speech-model-v4';\nexport { MockSpeechTranslationModelV4 as Experimental_MockSpeechTranslationModelV4 } from '../src/test/mock-speech-translation-model-v4';\nexport { MockStreamingSpeechModelV4 as Experimental_MockStreamingSpeechModelV4 } from '../src/test/mock-streaming-speech-model-v4';\nexport { MockTranscriptionModelV3 } from '../src/test/mock-transcription-model-v3';\nexport { MockTranscriptionModelV4 } from '../src/test/mock-transcription-model-v4';\nexport { MockRerankingModelV3 } from '../src/test/mock-reranking-model-v3';\nexport { MockRerankingModelV4 } from '../src/test/mock-reranking-model-v4';\nexport { MockVideoModelV3 } from '../src/test/mock-video-model-v3';\nexport { MockVideoModelV4 } from '../src/test/mock-video-model-v4';\nexport { mockValues } from '../src/test/mock-values';\n\n/**\n * @deprecated Use `simulateReadableStream` from `ai` instead.\n */\nexport const simulateReadableStream = originalSimulateReadableStream;\n\n/** @deprecated Use `Experimental_DecisionMockModelV4` instead. */\nexport const Experimental_EvaluationMockModelV4 = DecisionMockModelV4;\n/** @deprecated Use `Experimental_DecisionMockModelV4` instead. */\nexport type Experimental_EvaluationMockModelV4 = DecisionMockModelV4;\n"],"mappings":"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"}
@@ -75,6 +75,7 @@ The open-source community has created the following providers:
75
75
  - [Letta Provider](/providers/community-providers/letta) (`@letta-ai/vercel-ai-sdk-provider`)
76
76
  - [Hindsight Provider](/providers/community-providers/hindsight) (`@vectorize-io/hindsight-ai-sdk`)
77
77
  - [Supermemory Provider](/providers/community-providers/supermemory) (`@supermemory/tools`)
78
+ - [Redis Agent Memory Provider](/providers/community-providers/redis-agent-memory) (`@redis/vercel-ai-sdk`)
78
79
  - [Spark Provider](/providers/community-providers/spark) (`spark-ai-provider`)
79
80
  - [AnthropicVertex Provider](/providers/community-providers/anthropic-vertex-ai) (`anthropic-vertex-ai`)
80
81
  - [LangDB Provider](/providers/community-providers/langdb) (`@langdb/vercel-provider`)
@@ -98,6 +99,7 @@ The open-source community has created the following providers:
98
99
  - [Neon AI Gateway Provider](/providers/community-providers/neon-ai-gateway) (`@neon/ai-sdk-provider`)
99
100
  - [Interfaze Provider](/providers/community-providers/interfaze) (`@interfaze-ai/ai-sdk`)
100
101
  - [Telnyx Provider](/providers/community-providers/telnyx) (`@telnyx/ai-sdk-provider`)
102
+ - [ZeroGPU Provider](/providers/community-providers/zerogpu) (`@zerogpu/ai-sdk-provider`)
101
103
 
102
104
  ## Self-Hosted Models
103
105
 
@@ -547,6 +547,40 @@ const messages = [
547
547
  ];
548
548
  ```
549
549
 
550
+ ### Showing Steering Messages in the UI
551
+
552
+ `streamText` streams a `steering-message` part when a steering or queued message is added to the run. It comes before the `start-step` part of the step that received the message:
553
+
554
+ ```ts
555
+ for await (const part of result.fullStream) {
556
+ if (part.type === 'steering-message') {
557
+ console.log(part.id, part.message, part.stepNumber);
558
+ }
559
+ }
560
+ ```
561
+
562
+ `toUIMessageStream()` sends it to the client, and `useChat` adds it to the assistant message as a `steering-message` part at that position. Render it like a user message:
563
+
564
+ ```tsx
565
+ {
566
+ message.parts.map((part, index) => {
567
+ switch (part.type) {
568
+ case 'steering-message':
569
+ return (
570
+ <div key={index} className="user-message">
571
+ {part.parts.map(content =>
572
+ content.type === 'text' ? content.text : null,
573
+ )}
574
+ </div>
575
+ );
576
+ // ...
577
+ }
578
+ });
579
+ }
580
+ ```
581
+
582
+ `convertToModelMessages` turns the part back into a user message between the steps, so saved chats keep the steering messages in the order the model saw them. Pass the id of your UI message to `steer()` or `queue()` to match the part to the message that the user sent.
583
+
550
584
  ## Access Step Information
551
585
 
552
586
  Both `stopWhen` and `prepareStep` receive detailed information about the current execution:
@@ -258,6 +258,48 @@ MongoDB memory works with any AI SDK model and embedding provider, with no vendo
258
258
 
259
259
  **When to use memory providers**: these providers are a good fit when you want memory without building any storage infrastructure. The tradeoff is that the provider controls memory behavior, so you have less visibility into what gets stored and how it is retrieved. You also take on a dependency on an external service.
260
260
 
261
+ ### Redis Agent Memory
262
+
263
+ [Redis Agent Memory](https://redis.io/agent-memory/) is a managed memory layer that combines session history with long-term memories. The [`ai-sdk-redis-agent-memory`](https://www.npmjs.com/package/ai-sdk-redis-agent-memory) package wraps a model you have already configured, restores the user's session and recalls relevant long-term memories before each call, and records the conversation afterwards. The model does not need memory tools. It also exposes memory tools for agents that should manage their own memory.
264
+
265
+ ```bash
266
+ pnpm add @redis/vercel-ai-sdk
267
+ ```
268
+
269
+ ```ts
270
+ import { anthropic } from '@ai-sdk/anthropic';
271
+ import { createRedisAgentMemory } from '@redis/vercel-ai-sdk';
272
+ import { ToolLoopAgent } from 'ai';
273
+
274
+ // Create the memory factory once at module/server level
275
+ const memory = createRedisAgentMemory({
276
+ serverUrl: process.env.AGENT_MEMORY_URL,
277
+ storeId: process.env.AGENT_MEMORY_STORE_ID,
278
+ apiKey: process.env.AGENT_MEMORY_API_KEY,
279
+ model: anthropic('claude-sonnet-4-5'),
280
+ });
281
+
282
+ // Create a new memory model for each request, scoped to a user and session
283
+ const agent = new ToolLoopAgent({
284
+ model: memory.model({
285
+ scope: { userId: 'user-123', sessionId: 'session-456' },
286
+ assistantId: 'assistant',
287
+ }),
288
+ });
289
+
290
+ const result = await agent.generate({
291
+ prompt: 'Remember that my favorite editor is Neovim',
292
+ });
293
+ ```
294
+
295
+ Recalled memories and restored history are injected as bounded, untrusted context, and the user message and each text-producing step are recorded. Set `historyMode: 'application'` if your application already manages conversation history and you only want long-term recall.
296
+
297
+ To let the model manage memory itself, pass `memory.tools({ scope })` as `tools` instead. This gives the model operations such as `search_memories` and `create_memories`.
298
+
299
+ The package requires AI SDK 7. It accepts configured model objects, not model-name strings. Writes are best effort, so use collision-resistant session IDs tied to your authenticated user and serialize requests for the same session.
300
+
301
+ See the [Redis Agent Memory provider documentation](/providers/community-providers/redis-agent-memory) for full setup and configuration.
302
+
261
303
  ## Custom Tool
262
304
 
263
305
  Building your own memory tool from scratch is the most flexible approach. You control the storage format, the interface, and the retrieval logic. This requires the most upfront work but gives you full ownership of how memory works, with no provider lock-in and no external dependencies.
@@ -282,6 +282,7 @@ When using `streamText`, you can provide an `onChunk` callback that is triggered
282
282
  It receives all stream part types from `stream`, including:
283
283
 
284
284
  - `start`
285
+ - `steering-message`
285
286
  - `start-step`
286
287
  - `text-start`
287
288
  - `text-delta`
@@ -185,6 +185,18 @@ transports by providing an `authProvider`.
185
185
 
186
186
  </Note>
187
187
 
188
+ ### OAuth Resource Binding
189
+
190
+ The MCP client includes the OAuth `resource` parameter in authorization,
191
+ authorization-code exchange, and token refresh requests. It uses the validated
192
+ resource from protected resource metadata when available. If metadata is
193
+ unavailable, it uses the configured MCP server URL with its fragment removed.
194
+
195
+ To customize resource validation and selection, implement
196
+ `OAuthClientProvider.validateResourceURL`. Return a `URL` to select a resource,
197
+ or throw to reject it. Returning `undefined` uses the canonical MCP server URL;
198
+ it does not omit the `resource` parameter.
199
+
188
200
  ### Shared OAuth Credential Storage
189
201
 
190
202
  When multiple MCP clients or replicas share OAuth credentials, a rotating refresh
@@ -16,6 +16,11 @@ For OpenAI Live's continuous JSON/PCM16 WSS relay runtime and application-handle
16
16
  client delegation, see
17
17
  [`experimental_useRealtime`](/docs/reference/ai-sdk-ui/use-realtime#continuous-conversations).
18
18
 
19
+ For Mistral's managed microphone-to-speaker conversations, use
20
+ [`mistral.experimental_realtime()`](/providers/ai-sdk-providers/mistral#realtime-voice-agents)
21
+ with `api.provider`. Its provider-owned LiveKit transport handles audio, and
22
+ your server creates and closes the sessions.
23
+
19
24
  The typical flow is:
20
25
 
21
26
  1. The browser calls your setup endpoint.
@@ -31,6 +36,70 @@ turn-based tool loop below. See the
31
36
  [`experimental_useRealtime` reference](/docs/reference/ai-sdk-ui/use-realtime)
32
37
  for SDP setup, server-owned permissions, capture ownership, and graceful close.
33
38
 
39
+ ## Server-owned connections
40
+
41
+ A trusted server can own the WebSocket instead of minting a browser token. Check
42
+ `model.capabilities?.connections` for `server-websocket` and obtain the server-only
43
+ settings with `await model.getServerWebSocketConfig?.({ intent: 'conversation' })`.
44
+ OpenAI Realtime, Google, xAI and AI Gateway support this connection, alongside the
45
+ existing OpenAI Live adapter. Returned headers can contain long-lived credentials;
46
+ keep the descriptor on your server. The application owns socket lifetime,
47
+ authorization, buffering, and reconnect policy.
48
+
49
+ ```ts
50
+ import { openai } from '@ai-sdk/openai';
51
+ import { WebSocket } from 'ws';
52
+
53
+ const model = openai.experimental_realtime('gpt-realtime-2.1', {
54
+ api: 'realtime',
55
+ });
56
+ const options = { intent: 'conversation' } as const;
57
+ const { url, headers, protocols } =
58
+ await model.getServerWebSocketConfig(options);
59
+ const socket = new WebSocket(url, protocols, { headers });
60
+ ```
61
+
62
+ Feed incoming JSON to a fresh `model.createServerEventParser()` when the model
63
+ provides it, using one parser for each connection and discarding it on disconnect.
64
+ Stateless models can use `model.parseServerEvent(raw)` directly. Serialize outgoing normalized events with
65
+ `await model.serializeClientEvent(event, options)`. Use the same `intent` when
66
+ building a session configuration with `model.buildSessionConfig(config, options)`.
67
+ A complete Node example is in
68
+ [`server.ts`](https://github.com/vercel/ai/blob/main/examples/ai-functions/src/realtime/openai/server.ts).
69
+
70
+ The default intent is `conversation`. OpenAI Realtime also supports
71
+ `transcription`, which selects its dedicated endpoint and session shape. Set
72
+ `inputAudioTranscription.model` explicitly when the factory model is a conversation
73
+ model; otherwise the factory model ID is used for transcription. Instructions,
74
+ voice, tools and output settings are rejected in transcription sessions. Google,
75
+ xAI, AI Gateway and OpenAI Live reject a non-conversation intent. Google Live
76
+ translation remains a session provider option, rather than a connection intent.
77
+
78
+ ### Usage snapshots
79
+
80
+ Normalized completion events can carry optional `usage` with gross `inputTokens`
81
+ and `outputTokens`, available text/audio buckets, cached input portions, and
82
+ `seconds` for duration-billed transcription. Cached counts are subsets of gross
83
+ input counts. Modality buckets are subsets of totals, so do not add them to those
84
+ totals. Unknown counts remain absent, and totals can include other modalities.
85
+ The public types are `Experimental_RealtimeServerConnection`,
86
+ `Experimental_RealtimeSessionIntent` and `Experimental_RealtimeUsage` from `ai`.
87
+
88
+ OpenAI Realtime and xAI expose reported usage on `response-done` and input
89
+ transcription completions. AI Gateway passes through normalized usage only when
90
+ the Gateway route includes it in its events.
91
+ OpenAI Live retains its existing duration snapshots on `session-usage` and
92
+ `session-closed`.
93
+
94
+ Google attaches usage to `response-done` only when the same wire frame contains
95
+ `turnComplete` and `usageMetadata`. Otherwise it emits an existing `custom` event
96
+ with `rawType: 'usageMetadata'` and typed `usage`. Google gross input totals include
97
+ reported tool-use prompt counts, and gross output totals include reported thinking
98
+ counts. These are provider snapshots;
99
+ they do not repeat completion, imply a response association, or represent increments
100
+ to sum. A later snapshot can revise an earlier one. The original provider payload
101
+ remains available in `raw`.
102
+
34
103
  ## Setup Endpoint
35
104
 
36
105
  Create a setup endpoint that returns a short-lived token for the realtime
@@ -269,7 +338,7 @@ realtime.addToolOutput(toolCallId, {
269
338
 
270
339
  ## Supported Providers
271
340
 
272
- Realtime models are available on providers that expose realtime WebSocket APIs:
341
+ The following providers support the token-based WebSocket flow above:
273
342
 
274
343
  ```ts
275
344
  import { openai } from '@ai-sdk/openai';
@@ -297,3 +366,7 @@ secret on your server. The browser uses that token to open the Gateway
297
366
  WebSocket; the SDK handles the Gateway-specific WebSocket subprotocols for you.
298
367
  See the [AI Gateway realtime docs](/providers/ai-sdk-providers/ai-gateway#realtime)
299
368
  for Gateway-specific token and provider option details.
369
+
370
+ [Mistral voice agents](/providers/ai-sdk-providers/mistral#realtime-voice-agents)
371
+ use `mistral.experimental_realtime('mistral-small-latest')` with a managed session
372
+ endpoint (`api.provider`). LiveKit is handled internally by the Mistral provider.
@@ -26,10 +26,50 @@ To access the generated transcript:
26
26
  ```ts
27
27
  const text = transcript.text; // transcript text e.g. "Hello, world!"
28
28
  const segments = transcript.segments; // array of segments with start and end times, if available
29
+ const words = transcript.words; // word timings, when the provider returns them separately from segments
29
30
  const language = transcript.language; // language of the transcript e.g. "en", if available
30
31
  const durationInSeconds = transcript.durationInSeconds; // duration of the transcript in seconds, if available
31
32
  ```
32
33
 
34
+ ## Word and segment timings
35
+
36
+ Request word timings for highlighting and segment timings for captions with
37
+ `timestampGranularities`:
38
+
39
+ ```ts
40
+ const transcript = await transcribe({
41
+ model: openai.transcription('whisper-1'),
42
+ audio: await readFile('audio.mp3'),
43
+ timestampGranularities: ['word', 'segment'],
44
+ });
45
+
46
+ console.log(transcript.words);
47
+ console.log(transcript.segments);
48
+ console.log(transcript.warnings);
49
+ ```
50
+
51
+ The OpenAI, Azure Speech, Vertex Gemini, and xAI adapters support this option.
52
+ Explicit provider settings take precedence over the shared request. These
53
+ adapters warn when a requested granularity is unavailable or disabled by a
54
+ provider setting. Other adapters can be updated independently; use their
55
+ provider options for timing controls until they support the shared option.
56
+
57
+ `words` is optional and contains timings only when exposed by the adapter.
58
+ Timings can also be returned by default, without an explicit request.
59
+ `segments` keeps its existing provider-specific behavior: Vertex Gemini and
60
+ xAI return words there, and OpenAI falls back to words when no segments are
61
+ returned. The SDK does not construct caption segments from word timings.
62
+
63
+ Omitting `timestampGranularities` keeps provider defaults. An empty array
64
+ requests no additional timing detail; it does not suppress timings returned by
65
+ default. Older V2 and V3 model adapters warn that they do not support the shared
66
+ option.
67
+
68
+ AI Gateway currently warns that it does not forward this shared timing option.
69
+ Use provider-specific timing controls in `providerOptions`, or use a direct
70
+ provider model instance. Gateway exposes `words` when its response includes
71
+ normalized word timings.
72
+
33
73
  ## Telemetry
34
74
 
35
75
  `transcribe` and `experimental_streamTranscribe` accept the standard
@@ -60,8 +100,8 @@ the transcription finishes. Use `recordInputs: false` or
60
100
  `recordOutputs: false` to prevent integrations from recording sensitive input
61
101
  or output fields.
62
102
 
63
- For URL audio, the downloaded media type is passed to the provider and reported
64
- on successful telemetry events. If downloading or decoding input audio fails,
103
+ For URL audio downloaded by the SDK, the downloaded media type is passed to the provider and reported
104
+ on successful telemetry events. When a provider fetches a URL natively, audio byte length and media type are undefined because the SDK does not inspect the audio. If downloading or decoding input audio fails,
65
105
  the start event is still emitted before the correlated error event, but its
66
106
  audio byte length and media type can be undefined because preparation did not
67
107
  complete.
@@ -135,6 +175,11 @@ The `audio` stream must contain raw audio chunks. `Uint8Array` chunks are raw by
135
175
  the provider.
136
176
  </Note>
137
177
 
178
+ Deepgram Nova models support streaming through
179
+ `deepgram.transcription('nova-3')`; see the
180
+ [Deepgram streaming documentation](/providers/ai-sdk-providers/deepgram#streaming-transcription)
181
+ for audio formats and provider options.
182
+
138
183
  OpenAI streaming transcription uses `openai.transcription('gpt-realtime-whisper')`.
139
184
  Cartesia uses `cartesia.transcription('ink-2')` for streaming-only Ink 2
140
185
  transcription. ElevenLabs uses
@@ -192,8 +237,10 @@ const transcript = await transcribe({
192
237
 
193
238
  ### Download Size Limits
194
239
 
195
- When `audio` is a URL, the SDK downloads the file with a default **2 GiB** size limit.
196
- You can customize this using `createDownload`:
240
+ When `audio` is an HTTP(S) URL and the model supports native URL transcription (such as Groq), the provider fetches it directly. Provider size limits apply; the SDK does not download or inspect the audio. The URL must be accessible to the provider. Providers can decline unsupported URLs and fall back to local downloading.
241
+
242
+ Otherwise, the SDK downloads the file with a default **2 GiB** size limit.
243
+ You can customize this using `createDownload`. Supplying `download` always uses local downloading, including for models with native URL support:
197
244
 
198
245
  ```ts highlight="1,7"
199
246
  import { transcribe, createDownload } from 'ai';
@@ -405,6 +405,7 @@ export const yourLogMiddleware: LanguageModelV4Middleware = {
405
405
  ### Caching
406
406
 
407
407
  This example shows how to build a simple cache for the generated text of a language model call.
408
+ The cache key includes the provider, model ID, and call parameters so responses are only reused for the same model and request.
408
409
 
409
410
  ```ts
410
411
  import type { LanguageModelV4Middleware } from '@ai-sdk/provider';
@@ -414,8 +415,12 @@ const cache = new Map<string, any>();
414
415
  export const yourCacheMiddleware: LanguageModelV4Middleware = {
415
416
  specificationVersion: 'v4',
416
417
 
417
- wrapGenerate: async ({ doGenerate, params }) => {
418
- const cacheKey = JSON.stringify(params);
418
+ wrapGenerate: async ({ doGenerate, params, model }) => {
419
+ const cacheKey = JSON.stringify({
420
+ provider: model.provider,
421
+ modelId: model.modelId,
422
+ params,
423
+ });
419
424
 
420
425
  if (cache.has(cacheKey)) {
421
426
  return cache.get(cacheKey);