@ai-sdk/deepgram 2.0.0-beta.36 → 2.0.0-beta.38

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 CHANGED
@@ -1,5 +1,36 @@
1
1
  # @ai-sdk/deepgram
2
2
 
3
+ ## 2.0.0-beta.38
4
+
5
+ ### Patch Changes
6
+
7
+ - 457318b: chore(provider,ai): switch to SharedV3Warning and unified warnings
8
+ - Updated dependencies [457318b]
9
+ - @ai-sdk/provider@3.0.0-beta.20
10
+ - @ai-sdk/provider-utils@4.0.0-beta.37
11
+
12
+ ## 2.0.0-beta.37
13
+
14
+ ### Patch Changes
15
+
16
+ - 8d9e8ad: chore(provider): remove generics from EmbeddingModelV3
17
+
18
+ Before
19
+
20
+ ```ts
21
+ model.textEmbeddingModel('my-model-id');
22
+ ```
23
+
24
+ After
25
+
26
+ ```ts
27
+ model.embeddingModel('my-model-id');
28
+ ```
29
+
30
+ - Updated dependencies [8d9e8ad]
31
+ - @ai-sdk/provider@3.0.0-beta.19
32
+ - @ai-sdk/provider-utils@4.0.0-beta.36
33
+
3
34
  ## 2.0.0-beta.36
4
35
 
5
36
  ### Patch Changes
package/dist/index.js CHANGED
@@ -351,8 +351,8 @@ var DeepgramSpeechModel = class {
351
351
  if (["linear16", "mulaw", "alaw"].includes(newEncoding)) {
352
352
  if (!["wav", "none"].includes(deepgramOptions.container.toLowerCase())) {
353
353
  warnings.push({
354
- type: "unsupported-setting",
355
- setting: "providerOptions",
354
+ type: "unsupported",
355
+ feature: "providerOptions",
356
356
  details: `Encoding "${newEncoding}" only supports containers "wav" or "none". Container "${deepgramOptions.container}" was ignored.`
357
357
  });
358
358
  } else {
@@ -362,8 +362,8 @@ var DeepgramSpeechModel = class {
362
362
  queryParams.container = "ogg";
363
363
  } else if (["mp3", "flac", "aac"].includes(newEncoding)) {
364
364
  warnings.push({
365
- type: "unsupported-setting",
366
- setting: "providerOptions",
365
+ type: "unsupported",
366
+ feature: "providerOptions",
367
367
  details: `Encoding "${newEncoding}" does not support container parameter. Container "${deepgramOptions.container}" was ignored.`
368
368
  });
369
369
  delete queryParams.container;
@@ -415,8 +415,8 @@ var DeepgramSpeechModel = class {
415
415
  if (encoding === "linear16") {
416
416
  if (![8e3, 16e3, 24e3, 32e3, 48e3].includes(sampleRate)) {
417
417
  warnings.push({
418
- type: "unsupported-setting",
419
- setting: "providerOptions",
418
+ type: "unsupported",
419
+ feature: "providerOptions",
420
420
  details: `Encoding "linear16" only supports sample rates: 8000, 16000, 24000, 32000, 48000. Sample rate ${sampleRate} was ignored.`
421
421
  });
422
422
  } else {
@@ -425,8 +425,8 @@ var DeepgramSpeechModel = class {
425
425
  } else if (encoding === "mulaw" || encoding === "alaw") {
426
426
  if (![8e3, 16e3].includes(sampleRate)) {
427
427
  warnings.push({
428
- type: "unsupported-setting",
429
- setting: "providerOptions",
428
+ type: "unsupported",
429
+ feature: "providerOptions",
430
430
  details: `Encoding "${encoding}" only supports sample rates: 8000, 16000. Sample rate ${sampleRate} was ignored.`
431
431
  });
432
432
  } else {
@@ -435,8 +435,8 @@ var DeepgramSpeechModel = class {
435
435
  } else if (encoding === "flac") {
436
436
  if (![8e3, 16e3, 22050, 32e3, 48e3].includes(sampleRate)) {
437
437
  warnings.push({
438
- type: "unsupported-setting",
439
- setting: "providerOptions",
438
+ type: "unsupported",
439
+ feature: "providerOptions",
440
440
  details: `Encoding "flac" only supports sample rates: 8000, 16000, 22050, 32000, 48000. Sample rate ${sampleRate} was ignored.`
441
441
  });
442
442
  } else {
@@ -444,8 +444,8 @@ var DeepgramSpeechModel = class {
444
444
  }
445
445
  } else if (["mp3", "opus", "aac"].includes(encoding)) {
446
446
  warnings.push({
447
- type: "unsupported-setting",
448
- setting: "providerOptions",
447
+ type: "unsupported",
448
+ feature: "providerOptions",
449
449
  details: `Encoding "${encoding}" has a fixed sample rate and does not support sample_rate parameter. Sample rate ${sampleRate} was ignored.`
450
450
  });
451
451
  } else {
@@ -458,8 +458,8 @@ var DeepgramSpeechModel = class {
458
458
  if (encoding === "mp3") {
459
459
  if (![32e3, 48e3].includes(Number(bitRate))) {
460
460
  warnings.push({
461
- type: "unsupported-setting",
462
- setting: "providerOptions",
461
+ type: "unsupported",
462
+ feature: "providerOptions",
463
463
  details: `Encoding "mp3" only supports bit rates: 32000, 48000. Bit rate ${bitRate} was ignored.`
464
464
  });
465
465
  } else {
@@ -469,8 +469,8 @@ var DeepgramSpeechModel = class {
469
469
  const bitRateNum = Number(bitRate);
470
470
  if (bitRateNum < 4e3 || bitRateNum > 65e4) {
471
471
  warnings.push({
472
- type: "unsupported-setting",
473
- setting: "providerOptions",
472
+ type: "unsupported",
473
+ feature: "providerOptions",
474
474
  details: `Encoding "opus" supports bit rates between 4000 and 650000. Bit rate ${bitRate} was ignored.`
475
475
  });
476
476
  } else {
@@ -480,8 +480,8 @@ var DeepgramSpeechModel = class {
480
480
  const bitRateNum = Number(bitRate);
481
481
  if (bitRateNum < 4e3 || bitRateNum > 192e3) {
482
482
  warnings.push({
483
- type: "unsupported-setting",
484
- setting: "providerOptions",
483
+ type: "unsupported",
484
+ feature: "providerOptions",
485
485
  details: `Encoding "aac" supports bit rates between 4000 and 192000. Bit rate ${bitRate} was ignored.`
486
486
  });
487
487
  } else {
@@ -489,8 +489,8 @@ var DeepgramSpeechModel = class {
489
489
  }
490
490
  } else if (["linear16", "mulaw", "alaw", "flac"].includes(encoding)) {
491
491
  warnings.push({
492
- type: "unsupported-setting",
493
- setting: "providerOptions",
492
+ type: "unsupported",
493
+ feature: "providerOptions",
494
494
  details: `Encoding "${encoding}" does not support bit_rate parameter. Bit rate ${bitRate} was ignored.`
495
495
  });
496
496
  } else {
@@ -516,29 +516,29 @@ var DeepgramSpeechModel = class {
516
516
  }
517
517
  if (voice && voice !== this.modelId) {
518
518
  warnings.push({
519
- type: "unsupported-setting",
520
- setting: "voice",
519
+ type: "unsupported",
520
+ feature: "voice",
521
521
  details: `Deepgram TTS models embed the voice in the model ID. The voice parameter "${voice}" was ignored. Use the model ID to select a voice (e.g., "aura-2-helena-en").`
522
522
  });
523
523
  }
524
524
  if (speed != null) {
525
525
  warnings.push({
526
- type: "unsupported-setting",
527
- setting: "speed",
526
+ type: "unsupported",
527
+ feature: "speed",
528
528
  details: `Deepgram TTS REST API does not support speed adjustment. Speed parameter was ignored.`
529
529
  });
530
530
  }
531
531
  if (language) {
532
532
  warnings.push({
533
- type: "unsupported-setting",
534
- setting: "language",
533
+ type: "unsupported",
534
+ feature: "language",
535
535
  details: `Deepgram TTS models are language-specific via the model ID. Language parameter "${language}" was ignored. Select a model with the appropriate language suffix (e.g., "-en" for English).`
536
536
  });
537
537
  }
538
538
  if (instructions) {
539
539
  warnings.push({
540
- type: "unsupported-setting",
541
- setting: "instructions",
540
+ type: "unsupported",
541
+ feature: "instructions",
542
542
  details: `Deepgram TTS REST API does not support instructions. Instructions parameter was ignored.`
543
543
  });
544
544
  }
@@ -589,7 +589,7 @@ var DeepgramSpeechModel = class {
589
589
  };
590
590
 
591
591
  // src/version.ts
592
- var VERSION = true ? "2.0.0-beta.36" : "0.0.0-test";
592
+ var VERSION = true ? "2.0.0-beta.38" : "0.0.0-test";
593
593
 
594
594
  // src/deepgram-provider.ts
595
595
  function createDeepgram(options = {}) {
@@ -626,23 +626,23 @@ function createDeepgram(options = {}) {
626
626
  provider.transcriptionModel = createTranscriptionModel;
627
627
  provider.speech = createSpeechModel;
628
628
  provider.speechModel = createSpeechModel;
629
- provider.languageModel = () => {
629
+ provider.languageModel = (modelId) => {
630
630
  throw new import_provider.NoSuchModelError({
631
- modelId: "unknown",
631
+ modelId,
632
632
  modelType: "languageModel",
633
633
  message: "Deepgram does not provide language models"
634
634
  });
635
635
  };
636
- provider.textEmbeddingModel = () => {
636
+ provider.embeddingModel = (modelId) => {
637
637
  throw new import_provider.NoSuchModelError({
638
- modelId: "unknown",
639
- modelType: "textEmbeddingModel",
638
+ modelId,
639
+ modelType: "embeddingModel",
640
640
  message: "Deepgram does not provide text embedding models"
641
641
  });
642
642
  };
643
- provider.imageModel = () => {
643
+ provider.imageModel = (modelId) => {
644
644
  throw new import_provider.NoSuchModelError({
645
- modelId: "unknown",
645
+ modelId,
646
646
  modelType: "imageModel",
647
647
  message: "Deepgram does not provide image models"
648
648
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/deepgram-provider.ts","../src/deepgram-transcription-model.ts","../src/deepgram-error.ts","../src/deepgram-speech-model.ts","../src/version.ts"],"sourcesContent":["export { createDeepgram, deepgram } from './deepgram-provider';\nexport type {\n DeepgramProvider,\n DeepgramProviderSettings,\n} from './deepgram-provider';\nexport { DeepgramSpeechModel } from './deepgram-speech-model';\nexport type { DeepgramSpeechCallOptions } from './deepgram-speech-model';\nexport type { DeepgramSpeechModelId } from './deepgram-speech-options';\nexport { VERSION } from './version';\n","import {\n TranscriptionModelV3,\n SpeechModelV3,\n ProviderV3,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepgramTranscriptionModel } from './deepgram-transcription-model';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramSpeechModel } from './deepgram-speech-model';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\nimport { VERSION } from './version';\n\nexport interface DeepgramProvider extends ProviderV3 {\n (\n modelId: 'nova-3',\n settings?: {},\n ): {\n transcription: DeepgramTranscriptionModel;\n };\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: DeepgramTranscriptionModelId): TranscriptionModelV3;\n\n /**\nCreates a model for speech generation.\n */\n speech(modelId: DeepgramSpeechModelId): SpeechModelV3;\n}\n\nexport interface DeepgramProviderSettings {\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Deepgram provider instance.\n */\nexport function createDeepgram(\n options: DeepgramProviderSettings = {},\n): DeepgramProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: `Token ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPGRAM_API_KEY',\n description: 'Deepgram',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepgram/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: DeepgramTranscriptionModelId) =>\n new DeepgramTranscriptionModel(modelId, {\n provider: `deepgram.transcription`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: DeepgramSpeechModelId) =>\n new DeepgramSpeechModel(modelId, {\n provider: `deepgram.speech`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: DeepgramTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n // Required ProviderV3 methods that are not supported\n provider.languageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'languageModel',\n message: 'Deepgram does not provide language models',\n });\n };\n\n provider.textEmbeddingModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'textEmbeddingModel',\n message: 'Deepgram does not provide text embedding models',\n });\n };\n\n provider.imageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'imageModel',\n message: 'Deepgram does not provide image models',\n });\n };\n\n return provider as DeepgramProvider;\n}\n\n/**\nDefault Deepgram provider instance.\n */\nexport const deepgram = createDeepgram();\n","import {\n TranscriptionModelV3,\n TranscriptionModelV3CallOptions,\n TranscriptionModelV3CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n parseProviderOptions,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramTranscriptionAPITypes } from './deepgram-api-types';\n\n// https://developers.deepgram.com/docs/pre-recorded-audio#results\nconst deepgramProviderOptionsSchema = z.object({\n /** Language to use for transcription. If not specified, Deepgram will auto-detect the language. */\n language: z.string().nullish(),\n /** Whether to use smart formatting, which formats written-out numbers, dates, times, etc. */\n smartFormat: z.boolean().nullish(),\n /** Whether to add punctuation to the transcript. */\n punctuate: z.boolean().nullish(),\n /** Whether to format the transcript into paragraphs. */\n paragraphs: z.boolean().nullish(),\n /** Whether to generate a summary of the transcript. Use 'v2' for the latest version or false to disable. */\n summarize: z.union([z.literal('v2'), z.literal(false)]).nullish(),\n /** Whether to identify topics in the transcript. */\n topics: z.boolean().nullish(),\n /** Whether to identify intents in the transcript. */\n intents: z.boolean().nullish(),\n /** Whether to analyze sentiment in the transcript. */\n sentiment: z.boolean().nullish(),\n /** Whether to detect and tag named entities in the transcript. */\n detectEntities: z.boolean().nullish(),\n /** Specify terms or patterns to redact from the transcript. Can be a string or array of strings. */\n redact: z.union([z.string(), z.array(z.string())]).nullish(),\n /** String to replace redacted content with. */\n replace: z.string().nullish(),\n /** Term or phrase to search for in the transcript. */\n search: z.string().nullish(),\n /** Key term to identify in the transcript. */\n keyterm: z.string().nullish(),\n /** Whether to identify different speakers in the audio. */\n diarize: z.boolean().nullish(),\n /** Whether to segment the transcript into utterances. */\n utterances: z.boolean().nullish(),\n /** Minimum duration of silence (in seconds) to trigger a new utterance. */\n uttSplit: z.number().nullish(),\n /** Whether to include filler words (um, uh, etc.) in the transcript. */\n fillerWords: z.boolean().nullish(),\n});\n\nexport type DeepgramTranscriptionCallOptions = z.infer<\n typeof deepgramProviderOptionsSchema\n>;\n\ninterface DeepgramTranscriptionModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramTranscriptionModelId,\n private readonly config: DeepgramTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: TranscriptionModelV3CallWarning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramProviderOptionsSchema,\n });\n\n const body: DeepgramTranscriptionAPITypes = {\n model: this.modelId,\n diarize: true,\n };\n\n // Add provider-specific options\n if (deepgramOptions) {\n body.detect_entities = deepgramOptions.detectEntities ?? undefined;\n body.filler_words = deepgramOptions.fillerWords ?? undefined;\n body.language = deepgramOptions.language ?? undefined;\n body.punctuate = deepgramOptions.punctuate ?? undefined;\n body.redact = deepgramOptions.redact ?? undefined;\n body.search = deepgramOptions.search ?? undefined;\n body.smart_format = deepgramOptions.smartFormat ?? undefined;\n body.summarize = deepgramOptions.summarize ?? undefined;\n body.topics = deepgramOptions.topics ?? undefined;\n body.utterances = deepgramOptions.utterances ?? undefined;\n body.utt_split = deepgramOptions.uttSplit ?? undefined;\n\n if (typeof deepgramOptions.diarize === 'boolean') {\n body.diarize = deepgramOptions.diarize;\n }\n }\n\n // Convert body to URL query parameters\n const queryParams = new URLSearchParams();\n for (const [key, value] of Object.entries(body)) {\n if (value !== undefined) {\n queryParams.append(key, String(value));\n }\n }\n\n return {\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postToApi({\n url:\n this.config.url({\n path: '/v1/listen',\n modelId: this.modelId,\n }) +\n '?' +\n queryParams.toString(),\n headers: {\n ...combineHeaders(this.config.headers(), options.headers),\n 'Content-Type': options.mediaType,\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n deepgramTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text:\n response.results?.channels.at(0)?.alternatives.at(0)?.transcript ?? '',\n segments:\n response.results?.channels[0].alternatives[0].words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: undefined,\n durationInSeconds: response.metadata?.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst deepgramTranscriptionResponseSchema = z.object({\n metadata: z\n .object({\n duration: z.number(),\n })\n .nullish(),\n results: z\n .object({\n channels: z.array(\n z.object({\n alternatives: z.array(\n z.object({\n transcript: z.string(),\n words: z.array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n ),\n }),\n ),\n }),\n ),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const deepgramErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type DeepgramErrorData = z.infer<typeof deepgramErrorDataSchema>;\n\nexport const deepgramFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepgramErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV3, SpeechModelV3CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\n\n// https://developers.deepgram.com/reference/text-to-speech/speak-request\nconst deepgramSpeechProviderOptionsSchema = z.object({\n /** Bitrate of the audio in bits per second. Can be a number or predefined enum value. */\n bitRate: z.union([z.number(), z.string()]).nullish(),\n /** Container format for the output audio (mp3, wav, etc.). */\n container: z.string().nullish(),\n /** Encoding type for the audio output (linear16, mulaw, alaw, etc.). */\n encoding: z.string().nullish(),\n /** Sample rate for the output audio in Hz (8000, 16000, 24000, 44100, 48000). */\n sampleRate: z.number().nullish(),\n /** URL to which we'll make the callback request. */\n callback: z.string().url().nullish(),\n /** HTTP method by which the callback request will be made (POST or PUT). */\n callbackMethod: z.enum(['POST', 'PUT']).nullish(),\n /** Opts out requests from the Deepgram Model Improvement Program. */\n mipOptOut: z.boolean().nullish(),\n /** Label your requests for the purpose of identification during usage reporting. */\n tag: z.union([z.string(), z.array(z.string())]).nullish(),\n});\n\nexport type DeepgramSpeechCallOptions = z.infer<\n typeof deepgramSpeechProviderOptionsSchema\n>;\n\ninterface DeepgramSpeechModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramSpeechModel implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramSpeechModelId,\n private readonly config: DeepgramSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice,\n outputFormat = 'mp3',\n speed,\n language,\n instructions,\n providerOptions,\n }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n const warnings: SpeechModelV3CallWarning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody = {\n text,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {\n model: this.modelId,\n };\n\n // Map outputFormat to encoding/container/sample_rate\n // https://developers.deepgram.com/docs/tts-media-output-settings#audio-format-combinations\n if (outputFormat) {\n const formatLower = outputFormat.toLowerCase();\n\n // Common format mappings based on Deepgram's valid combinations\n const formatMap: Record<\n string,\n {\n encoding?: string;\n container?: string;\n sampleRate?: number;\n bitRate?: number;\n }\n > = {\n // MP3: no container, fixed 22050 sample rate, bitrate 32000/48000\n mp3: { encoding: 'mp3' }, // Don't set container or sample_rate for mp3\n // Linear16: wav/none container, configurable sample rate\n wav: { container: 'wav', encoding: 'linear16' },\n linear16: { encoding: 'linear16', container: 'wav' },\n // MuLaw: wav/none container, 8000/16000 sample rate\n mulaw: { encoding: 'mulaw', container: 'wav' },\n // ALaw: wav/none container, 8000/16000 sample rate\n alaw: { encoding: 'alaw', container: 'wav' },\n // Opus: ogg container, fixed 48000 sample rate\n opus: { encoding: 'opus', container: 'ogg' },\n ogg: { encoding: 'opus', container: 'ogg' },\n // FLAC: no container, configurable sample rate\n flac: { encoding: 'flac' },\n // AAC: no container, fixed 22050 sample rate\n aac: { encoding: 'aac' },\n // Raw audio (no container)\n pcm: { encoding: 'linear16', container: 'none' },\n };\n\n const mappedFormat = formatMap[formatLower];\n if (mappedFormat) {\n if (mappedFormat.encoding) {\n queryParams.encoding = mappedFormat.encoding;\n }\n // Only set container if specified and valid for the encoding\n if (mappedFormat.container) {\n queryParams.container = mappedFormat.container;\n }\n // Only set sample_rate if specified and valid for the encoding\n if (mappedFormat.sampleRate) {\n queryParams.sample_rate = String(mappedFormat.sampleRate);\n }\n // Set bitrate for formats that support it\n if (mappedFormat.bitRate) {\n queryParams.bit_rate = String(mappedFormat.bitRate);\n }\n } else {\n // Try to parse format like \"wav_44100\" or \"linear16_24000\"\n const parts = formatLower.split('_');\n if (parts.length >= 2) {\n const firstPart = parts[0];\n const secondPart = parts[1];\n const sampleRate = parseInt(secondPart, 10);\n\n // Check if first part is an encoding\n if (\n [\n 'linear16',\n 'mulaw',\n 'alaw',\n 'mp3',\n 'opus',\n 'flac',\n 'aac',\n ].includes(firstPart)\n ) {\n queryParams.encoding = firstPart;\n\n // Set container based on encoding\n if (['linear16', 'mulaw', 'alaw'].includes(firstPart)) {\n // These can use wav or none, default to wav\n queryParams.container = 'wav';\n } else if (firstPart === 'opus') {\n queryParams.container = 'ogg';\n }\n // mp3, flac, aac don't use container\n\n // Set sample rate if valid for encoding\n if (!isNaN(sampleRate)) {\n if (\n firstPart === 'linear16' &&\n [8000, 16000, 24000, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'mulaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'alaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'flac' &&\n [8000, 16000, 22050, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n }\n // mp3, opus, aac have fixed sample rates, don't set\n }\n } else if (['wav', 'ogg'].includes(firstPart)) {\n // First part is container\n if (firstPart === 'wav') {\n queryParams.container = 'wav';\n queryParams.encoding = 'linear16'; // Default encoding for wav\n } else if (firstPart === 'ogg') {\n queryParams.container = 'ogg';\n queryParams.encoding = 'opus'; // Default encoding for ogg\n }\n if (!isNaN(sampleRate)) {\n queryParams.sample_rate = String(sampleRate);\n }\n }\n }\n }\n }\n\n // Add provider-specific options - map camelCase to snake_case\n // Validate combinations according to Deepgram's spec\n if (deepgramOptions) {\n if (deepgramOptions.encoding) {\n const newEncoding = deepgramOptions.encoding.toLowerCase();\n\n // If encoding changes, we may need to clear incompatible parameters\n queryParams.encoding = newEncoding;\n\n // Validate container based on encoding\n if (deepgramOptions.container) {\n // Validate container is valid for this encoding\n if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n if (\n !['wav', 'none'].includes(deepgramOptions.container.toLowerCase())\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${newEncoding}\" only supports containers \"wav\" or \"none\". Container \"${deepgramOptions.container}\" was ignored.`,\n });\n } else {\n queryParams.container = deepgramOptions.container.toLowerCase();\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n } else if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${newEncoding}\" does not support container parameter. Container \"${deepgramOptions.container}\" was ignored.`,\n });\n // Remove container if it was set by outputFormat\n delete queryParams.container;\n }\n } else {\n // No container specified in providerOptions\n // If encoding changed to one that doesn't support container, remove it\n if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n delete queryParams.container;\n } else if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n // Set default container if not already set\n if (!queryParams.container) {\n queryParams.container = 'wav'; // Default for these encodings\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n }\n }\n\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n // Fixed sample rate encodings (mp3, opus, aac) don't support sample_rate parameter\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n // Lossless encodings without bitrate support (linear16, mulaw, alaw, flac) don't support bit_rate\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n } else if (deepgramOptions.container) {\n // Container specified without encoding - set default encoding\n const container = deepgramOptions.container.toLowerCase();\n const oldEncoding = queryParams.encoding?.toLowerCase();\n let newEncoding: string | undefined;\n\n if (container === 'wav') {\n queryParams.container = 'wav';\n newEncoding = 'linear16'; // Default encoding for wav\n } else if (container === 'ogg') {\n queryParams.container = 'ogg';\n newEncoding = 'opus'; // Default encoding for ogg\n } else if (container === 'none') {\n queryParams.container = 'none';\n newEncoding = 'linear16'; // Default encoding for raw audio\n }\n\n // If encoding changed, clean up incompatible parameters\n if (newEncoding && newEncoding !== oldEncoding) {\n queryParams.encoding = newEncoding;\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n }\n }\n\n if (deepgramOptions.sampleRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const sampleRate = deepgramOptions.sampleRate;\n\n // Validate sample rate based on encoding\n if (encoding === 'linear16') {\n if (![8000, 16000, 24000, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"linear16\" only supports sample rates: 8000, 16000, 24000, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'mulaw' || encoding === 'alaw') {\n if (![8000, 16000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${encoding}\" only supports sample rates: 8000, 16000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'flac') {\n if (![8000, 16000, 22050, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"flac\" only supports sample rates: 8000, 16000, 22050, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (['mp3', 'opus', 'aac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${encoding}\" has a fixed sample rate and does not support sample_rate parameter. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it (will be validated when encoding is set)\n queryParams.sample_rate = String(sampleRate);\n }\n }\n\n if (deepgramOptions.bitRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const bitRate = deepgramOptions.bitRate;\n\n // Validate bitrate based on encoding\n if (encoding === 'mp3') {\n if (![32000, 48000].includes(Number(bitRate))) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"mp3\" only supports bit rates: 32000, 48000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'opus') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 650000) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"opus\" supports bit rates between 4000 and 650000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'aac') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 192000) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"aac\" supports bit rates between 4000 and 192000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (['linear16', 'mulaw', 'alaw', 'flac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${encoding}\" does not support bit_rate parameter. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it\n queryParams.bit_rate = String(bitRate);\n }\n }\n\n if (deepgramOptions.callback) {\n queryParams.callback = deepgramOptions.callback;\n }\n if (deepgramOptions.callbackMethod) {\n queryParams.callback_method = deepgramOptions.callbackMethod;\n }\n if (deepgramOptions.mipOptOut != null) {\n queryParams.mip_opt_out = String(deepgramOptions.mipOptOut);\n }\n if (deepgramOptions.tag) {\n if (Array.isArray(deepgramOptions.tag)) {\n queryParams.tag = deepgramOptions.tag.join(',');\n } else {\n queryParams.tag = deepgramOptions.tag;\n }\n }\n }\n\n // Handle voice parameter - Deepgram embeds voice in model ID\n // If voice is provided and different from model, warn user\n if (voice && voice !== this.modelId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'voice',\n details: `Deepgram TTS models embed the voice in the model ID. The voice parameter \"${voice}\" was ignored. Use the model ID to select a voice (e.g., \"aura-2-helena-en\").`,\n });\n }\n\n // Handle speed - not supported in Deepgram REST API\n if (speed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'speed',\n details: `Deepgram TTS REST API does not support speed adjustment. Speed parameter was ignored.`,\n });\n }\n\n // Handle language - Deepgram models are language-specific via model ID\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `Deepgram TTS models are language-specific via the model ID. Language parameter \"${language}\" was ignored. Select a model with the appropriate language suffix (e.g., \"-en\" for English).`,\n });\n }\n\n // Handle instructions - not supported in Deepgram REST API\n if (instructions) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'instructions',\n details: `Deepgram TTS REST API does not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: '/v1/speak',\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/deepgram-provider.ts","../src/deepgram-transcription-model.ts","../src/deepgram-error.ts","../src/deepgram-speech-model.ts","../src/version.ts"],"sourcesContent":["export { createDeepgram, deepgram } from './deepgram-provider';\nexport type {\n DeepgramProvider,\n DeepgramProviderSettings,\n} from './deepgram-provider';\nexport { DeepgramSpeechModel } from './deepgram-speech-model';\nexport type { DeepgramSpeechCallOptions } from './deepgram-speech-model';\nexport type { DeepgramSpeechModelId } from './deepgram-speech-options';\nexport { VERSION } from './version';\n","import {\n TranscriptionModelV3,\n SpeechModelV3,\n ProviderV3,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepgramTranscriptionModel } from './deepgram-transcription-model';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramSpeechModel } from './deepgram-speech-model';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\nimport { VERSION } from './version';\n\nexport interface DeepgramProvider extends ProviderV3 {\n (\n modelId: 'nova-3',\n settings?: {},\n ): {\n transcription: DeepgramTranscriptionModel;\n };\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: DeepgramTranscriptionModelId): TranscriptionModelV3;\n\n /**\nCreates a model for speech generation.\n */\n speech(modelId: DeepgramSpeechModelId): SpeechModelV3;\n}\n\nexport interface DeepgramProviderSettings {\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Deepgram provider instance.\n */\nexport function createDeepgram(\n options: DeepgramProviderSettings = {},\n): DeepgramProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: `Token ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPGRAM_API_KEY',\n description: 'Deepgram',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepgram/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: DeepgramTranscriptionModelId) =>\n new DeepgramTranscriptionModel(modelId, {\n provider: `deepgram.transcription`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: DeepgramSpeechModelId) =>\n new DeepgramSpeechModel(modelId, {\n provider: `deepgram.speech`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: DeepgramTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n // Required ProviderV3 methods that are not supported\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n message: 'Deepgram does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message: 'Deepgram does not provide text embedding models',\n });\n };\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message: 'Deepgram does not provide image models',\n });\n };\n\n return provider as DeepgramProvider;\n}\n\n/**\nDefault Deepgram provider instance.\n */\nexport const deepgram = createDeepgram();\n","import { SharedV3Warning, TranscriptionModelV3 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramTranscriptionAPITypes } from './deepgram-api-types';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\n\n// https://developers.deepgram.com/docs/pre-recorded-audio#results\nconst deepgramProviderOptionsSchema = z.object({\n /** Language to use for transcription. If not specified, Deepgram will auto-detect the language. */\n language: z.string().nullish(),\n /** Whether to use smart formatting, which formats written-out numbers, dates, times, etc. */\n smartFormat: z.boolean().nullish(),\n /** Whether to add punctuation to the transcript. */\n punctuate: z.boolean().nullish(),\n /** Whether to format the transcript into paragraphs. */\n paragraphs: z.boolean().nullish(),\n /** Whether to generate a summary of the transcript. Use 'v2' for the latest version or false to disable. */\n summarize: z.union([z.literal('v2'), z.literal(false)]).nullish(),\n /** Whether to identify topics in the transcript. */\n topics: z.boolean().nullish(),\n /** Whether to identify intents in the transcript. */\n intents: z.boolean().nullish(),\n /** Whether to analyze sentiment in the transcript. */\n sentiment: z.boolean().nullish(),\n /** Whether to detect and tag named entities in the transcript. */\n detectEntities: z.boolean().nullish(),\n /** Specify terms or patterns to redact from the transcript. Can be a string or array of strings. */\n redact: z.union([z.string(), z.array(z.string())]).nullish(),\n /** String to replace redacted content with. */\n replace: z.string().nullish(),\n /** Term or phrase to search for in the transcript. */\n search: z.string().nullish(),\n /** Key term to identify in the transcript. */\n keyterm: z.string().nullish(),\n /** Whether to identify different speakers in the audio. */\n diarize: z.boolean().nullish(),\n /** Whether to segment the transcript into utterances. */\n utterances: z.boolean().nullish(),\n /** Minimum duration of silence (in seconds) to trigger a new utterance. */\n uttSplit: z.number().nullish(),\n /** Whether to include filler words (um, uh, etc.) in the transcript. */\n fillerWords: z.boolean().nullish(),\n});\n\nexport type DeepgramTranscriptionCallOptions = z.infer<\n typeof deepgramProviderOptionsSchema\n>;\n\ninterface DeepgramTranscriptionModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramTranscriptionModelId,\n private readonly config: DeepgramTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramProviderOptionsSchema,\n });\n\n const body: DeepgramTranscriptionAPITypes = {\n model: this.modelId,\n diarize: true,\n };\n\n // Add provider-specific options\n if (deepgramOptions) {\n body.detect_entities = deepgramOptions.detectEntities ?? undefined;\n body.filler_words = deepgramOptions.fillerWords ?? undefined;\n body.language = deepgramOptions.language ?? undefined;\n body.punctuate = deepgramOptions.punctuate ?? undefined;\n body.redact = deepgramOptions.redact ?? undefined;\n body.search = deepgramOptions.search ?? undefined;\n body.smart_format = deepgramOptions.smartFormat ?? undefined;\n body.summarize = deepgramOptions.summarize ?? undefined;\n body.topics = deepgramOptions.topics ?? undefined;\n body.utterances = deepgramOptions.utterances ?? undefined;\n body.utt_split = deepgramOptions.uttSplit ?? undefined;\n\n if (typeof deepgramOptions.diarize === 'boolean') {\n body.diarize = deepgramOptions.diarize;\n }\n }\n\n // Convert body to URL query parameters\n const queryParams = new URLSearchParams();\n for (const [key, value] of Object.entries(body)) {\n if (value !== undefined) {\n queryParams.append(key, String(value));\n }\n }\n\n return {\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postToApi({\n url:\n this.config.url({\n path: '/v1/listen',\n modelId: this.modelId,\n }) +\n '?' +\n queryParams.toString(),\n headers: {\n ...combineHeaders(this.config.headers(), options.headers),\n 'Content-Type': options.mediaType,\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n deepgramTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text:\n response.results?.channels.at(0)?.alternatives.at(0)?.transcript ?? '',\n segments:\n response.results?.channels[0].alternatives[0].words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: undefined,\n durationInSeconds: response.metadata?.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst deepgramTranscriptionResponseSchema = z.object({\n metadata: z\n .object({\n duration: z.number(),\n })\n .nullish(),\n results: z\n .object({\n channels: z.array(\n z.object({\n alternatives: z.array(\n z.object({\n transcript: z.string(),\n words: z.array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n ),\n }),\n ),\n }),\n ),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const deepgramErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type DeepgramErrorData = z.infer<typeof deepgramErrorDataSchema>;\n\nexport const deepgramFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepgramErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\n\n// https://developers.deepgram.com/reference/text-to-speech/speak-request\nconst deepgramSpeechProviderOptionsSchema = z.object({\n /** Bitrate of the audio in bits per second. Can be a number or predefined enum value. */\n bitRate: z.union([z.number(), z.string()]).nullish(),\n /** Container format for the output audio (mp3, wav, etc.). */\n container: z.string().nullish(),\n /** Encoding type for the audio output (linear16, mulaw, alaw, etc.). */\n encoding: z.string().nullish(),\n /** Sample rate for the output audio in Hz (8000, 16000, 24000, 44100, 48000). */\n sampleRate: z.number().nullish(),\n /** URL to which we'll make the callback request. */\n callback: z.string().url().nullish(),\n /** HTTP method by which the callback request will be made (POST or PUT). */\n callbackMethod: z.enum(['POST', 'PUT']).nullish(),\n /** Opts out requests from the Deepgram Model Improvement Program. */\n mipOptOut: z.boolean().nullish(),\n /** Label your requests for the purpose of identification during usage reporting. */\n tag: z.union([z.string(), z.array(z.string())]).nullish(),\n});\n\nexport type DeepgramSpeechCallOptions = z.infer<\n typeof deepgramSpeechProviderOptionsSchema\n>;\n\ninterface DeepgramSpeechModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramSpeechModel implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramSpeechModelId,\n private readonly config: DeepgramSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice,\n outputFormat = 'mp3',\n speed,\n language,\n instructions,\n providerOptions,\n }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody = {\n text,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {\n model: this.modelId,\n };\n\n // Map outputFormat to encoding/container/sample_rate\n // https://developers.deepgram.com/docs/tts-media-output-settings#audio-format-combinations\n if (outputFormat) {\n const formatLower = outputFormat.toLowerCase();\n\n // Common format mappings based on Deepgram's valid combinations\n const formatMap: Record<\n string,\n {\n encoding?: string;\n container?: string;\n sampleRate?: number;\n bitRate?: number;\n }\n > = {\n // MP3: no container, fixed 22050 sample rate, bitrate 32000/48000\n mp3: { encoding: 'mp3' }, // Don't set container or sample_rate for mp3\n // Linear16: wav/none container, configurable sample rate\n wav: { container: 'wav', encoding: 'linear16' },\n linear16: { encoding: 'linear16', container: 'wav' },\n // MuLaw: wav/none container, 8000/16000 sample rate\n mulaw: { encoding: 'mulaw', container: 'wav' },\n // ALaw: wav/none container, 8000/16000 sample rate\n alaw: { encoding: 'alaw', container: 'wav' },\n // Opus: ogg container, fixed 48000 sample rate\n opus: { encoding: 'opus', container: 'ogg' },\n ogg: { encoding: 'opus', container: 'ogg' },\n // FLAC: no container, configurable sample rate\n flac: { encoding: 'flac' },\n // AAC: no container, fixed 22050 sample rate\n aac: { encoding: 'aac' },\n // Raw audio (no container)\n pcm: { encoding: 'linear16', container: 'none' },\n };\n\n const mappedFormat = formatMap[formatLower];\n if (mappedFormat) {\n if (mappedFormat.encoding) {\n queryParams.encoding = mappedFormat.encoding;\n }\n // Only set container if specified and valid for the encoding\n if (mappedFormat.container) {\n queryParams.container = mappedFormat.container;\n }\n // Only set sample_rate if specified and valid for the encoding\n if (mappedFormat.sampleRate) {\n queryParams.sample_rate = String(mappedFormat.sampleRate);\n }\n // Set bitrate for formats that support it\n if (mappedFormat.bitRate) {\n queryParams.bit_rate = String(mappedFormat.bitRate);\n }\n } else {\n // Try to parse format like \"wav_44100\" or \"linear16_24000\"\n const parts = formatLower.split('_');\n if (parts.length >= 2) {\n const firstPart = parts[0];\n const secondPart = parts[1];\n const sampleRate = parseInt(secondPart, 10);\n\n // Check if first part is an encoding\n if (\n [\n 'linear16',\n 'mulaw',\n 'alaw',\n 'mp3',\n 'opus',\n 'flac',\n 'aac',\n ].includes(firstPart)\n ) {\n queryParams.encoding = firstPart;\n\n // Set container based on encoding\n if (['linear16', 'mulaw', 'alaw'].includes(firstPart)) {\n // These can use wav or none, default to wav\n queryParams.container = 'wav';\n } else if (firstPart === 'opus') {\n queryParams.container = 'ogg';\n }\n // mp3, flac, aac don't use container\n\n // Set sample rate if valid for encoding\n if (!isNaN(sampleRate)) {\n if (\n firstPart === 'linear16' &&\n [8000, 16000, 24000, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'mulaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'alaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'flac' &&\n [8000, 16000, 22050, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n }\n // mp3, opus, aac have fixed sample rates, don't set\n }\n } else if (['wav', 'ogg'].includes(firstPart)) {\n // First part is container\n if (firstPart === 'wav') {\n queryParams.container = 'wav';\n queryParams.encoding = 'linear16'; // Default encoding for wav\n } else if (firstPart === 'ogg') {\n queryParams.container = 'ogg';\n queryParams.encoding = 'opus'; // Default encoding for ogg\n }\n if (!isNaN(sampleRate)) {\n queryParams.sample_rate = String(sampleRate);\n }\n }\n }\n }\n }\n\n // Add provider-specific options - map camelCase to snake_case\n // Validate combinations according to Deepgram's spec\n if (deepgramOptions) {\n if (deepgramOptions.encoding) {\n const newEncoding = deepgramOptions.encoding.toLowerCase();\n\n // If encoding changes, we may need to clear incompatible parameters\n queryParams.encoding = newEncoding;\n\n // Validate container based on encoding\n if (deepgramOptions.container) {\n // Validate container is valid for this encoding\n if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n if (\n !['wav', 'none'].includes(deepgramOptions.container.toLowerCase())\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${newEncoding}\" only supports containers \"wav\" or \"none\". Container \"${deepgramOptions.container}\" was ignored.`,\n });\n } else {\n queryParams.container = deepgramOptions.container.toLowerCase();\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n } else if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${newEncoding}\" does not support container parameter. Container \"${deepgramOptions.container}\" was ignored.`,\n });\n // Remove container if it was set by outputFormat\n delete queryParams.container;\n }\n } else {\n // No container specified in providerOptions\n // If encoding changed to one that doesn't support container, remove it\n if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n delete queryParams.container;\n } else if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n // Set default container if not already set\n if (!queryParams.container) {\n queryParams.container = 'wav'; // Default for these encodings\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n }\n }\n\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n // Fixed sample rate encodings (mp3, opus, aac) don't support sample_rate parameter\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n // Lossless encodings without bitrate support (linear16, mulaw, alaw, flac) don't support bit_rate\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n } else if (deepgramOptions.container) {\n // Container specified without encoding - set default encoding\n const container = deepgramOptions.container.toLowerCase();\n const oldEncoding = queryParams.encoding?.toLowerCase();\n let newEncoding: string | undefined;\n\n if (container === 'wav') {\n queryParams.container = 'wav';\n newEncoding = 'linear16'; // Default encoding for wav\n } else if (container === 'ogg') {\n queryParams.container = 'ogg';\n newEncoding = 'opus'; // Default encoding for ogg\n } else if (container === 'none') {\n queryParams.container = 'none';\n newEncoding = 'linear16'; // Default encoding for raw audio\n }\n\n // If encoding changed, clean up incompatible parameters\n if (newEncoding && newEncoding !== oldEncoding) {\n queryParams.encoding = newEncoding;\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n }\n }\n\n if (deepgramOptions.sampleRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const sampleRate = deepgramOptions.sampleRate;\n\n // Validate sample rate based on encoding\n if (encoding === 'linear16') {\n if (![8000, 16000, 24000, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"linear16\" only supports sample rates: 8000, 16000, 24000, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'mulaw' || encoding === 'alaw') {\n if (![8000, 16000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${encoding}\" only supports sample rates: 8000, 16000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'flac') {\n if (![8000, 16000, 22050, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"flac\" only supports sample rates: 8000, 16000, 22050, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (['mp3', 'opus', 'aac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${encoding}\" has a fixed sample rate and does not support sample_rate parameter. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it (will be validated when encoding is set)\n queryParams.sample_rate = String(sampleRate);\n }\n }\n\n if (deepgramOptions.bitRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const bitRate = deepgramOptions.bitRate;\n\n // Validate bitrate based on encoding\n if (encoding === 'mp3') {\n if (![32000, 48000].includes(Number(bitRate))) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"mp3\" only supports bit rates: 32000, 48000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'opus') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 650000) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"opus\" supports bit rates between 4000 and 650000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'aac') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 192000) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"aac\" supports bit rates between 4000 and 192000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (['linear16', 'mulaw', 'alaw', 'flac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${encoding}\" does not support bit_rate parameter. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it\n queryParams.bit_rate = String(bitRate);\n }\n }\n\n if (deepgramOptions.callback) {\n queryParams.callback = deepgramOptions.callback;\n }\n if (deepgramOptions.callbackMethod) {\n queryParams.callback_method = deepgramOptions.callbackMethod;\n }\n if (deepgramOptions.mipOptOut != null) {\n queryParams.mip_opt_out = String(deepgramOptions.mipOptOut);\n }\n if (deepgramOptions.tag) {\n if (Array.isArray(deepgramOptions.tag)) {\n queryParams.tag = deepgramOptions.tag.join(',');\n } else {\n queryParams.tag = deepgramOptions.tag;\n }\n }\n }\n\n // Handle voice parameter - Deepgram embeds voice in model ID\n // If voice is provided and different from model, warn user\n if (voice && voice !== this.modelId) {\n warnings.push({\n type: 'unsupported',\n feature: 'voice',\n details: `Deepgram TTS models embed the voice in the model ID. The voice parameter \"${voice}\" was ignored. Use the model ID to select a voice (e.g., \"aura-2-helena-en\").`,\n });\n }\n\n // Handle speed - not supported in Deepgram REST API\n if (speed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'speed',\n details: `Deepgram TTS REST API does not support speed adjustment. Speed parameter was ignored.`,\n });\n }\n\n // Handle language - Deepgram models are language-specific via model ID\n if (language) {\n warnings.push({\n type: 'unsupported',\n feature: 'language',\n details: `Deepgram TTS models are language-specific via the model ID. Language parameter \"${language}\" was ignored. Select a model with the appropriate language suffix (e.g., \"-en\" for English).`,\n });\n }\n\n // Handle instructions - not supported in Deepgram REST API\n if (instructions) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details: `Deepgram TTS REST API does not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: '/v1/speak',\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["import_provider_utils","import_provider_utils","import_v4","import_provider_utils","import_v4"]}
package/dist/index.mjs CHANGED
@@ -337,8 +337,8 @@ var DeepgramSpeechModel = class {
337
337
  if (["linear16", "mulaw", "alaw"].includes(newEncoding)) {
338
338
  if (!["wav", "none"].includes(deepgramOptions.container.toLowerCase())) {
339
339
  warnings.push({
340
- type: "unsupported-setting",
341
- setting: "providerOptions",
340
+ type: "unsupported",
341
+ feature: "providerOptions",
342
342
  details: `Encoding "${newEncoding}" only supports containers "wav" or "none". Container "${deepgramOptions.container}" was ignored.`
343
343
  });
344
344
  } else {
@@ -348,8 +348,8 @@ var DeepgramSpeechModel = class {
348
348
  queryParams.container = "ogg";
349
349
  } else if (["mp3", "flac", "aac"].includes(newEncoding)) {
350
350
  warnings.push({
351
- type: "unsupported-setting",
352
- setting: "providerOptions",
351
+ type: "unsupported",
352
+ feature: "providerOptions",
353
353
  details: `Encoding "${newEncoding}" does not support container parameter. Container "${deepgramOptions.container}" was ignored.`
354
354
  });
355
355
  delete queryParams.container;
@@ -401,8 +401,8 @@ var DeepgramSpeechModel = class {
401
401
  if (encoding === "linear16") {
402
402
  if (![8e3, 16e3, 24e3, 32e3, 48e3].includes(sampleRate)) {
403
403
  warnings.push({
404
- type: "unsupported-setting",
405
- setting: "providerOptions",
404
+ type: "unsupported",
405
+ feature: "providerOptions",
406
406
  details: `Encoding "linear16" only supports sample rates: 8000, 16000, 24000, 32000, 48000. Sample rate ${sampleRate} was ignored.`
407
407
  });
408
408
  } else {
@@ -411,8 +411,8 @@ var DeepgramSpeechModel = class {
411
411
  } else if (encoding === "mulaw" || encoding === "alaw") {
412
412
  if (![8e3, 16e3].includes(sampleRate)) {
413
413
  warnings.push({
414
- type: "unsupported-setting",
415
- setting: "providerOptions",
414
+ type: "unsupported",
415
+ feature: "providerOptions",
416
416
  details: `Encoding "${encoding}" only supports sample rates: 8000, 16000. Sample rate ${sampleRate} was ignored.`
417
417
  });
418
418
  } else {
@@ -421,8 +421,8 @@ var DeepgramSpeechModel = class {
421
421
  } else if (encoding === "flac") {
422
422
  if (![8e3, 16e3, 22050, 32e3, 48e3].includes(sampleRate)) {
423
423
  warnings.push({
424
- type: "unsupported-setting",
425
- setting: "providerOptions",
424
+ type: "unsupported",
425
+ feature: "providerOptions",
426
426
  details: `Encoding "flac" only supports sample rates: 8000, 16000, 22050, 32000, 48000. Sample rate ${sampleRate} was ignored.`
427
427
  });
428
428
  } else {
@@ -430,8 +430,8 @@ var DeepgramSpeechModel = class {
430
430
  }
431
431
  } else if (["mp3", "opus", "aac"].includes(encoding)) {
432
432
  warnings.push({
433
- type: "unsupported-setting",
434
- setting: "providerOptions",
433
+ type: "unsupported",
434
+ feature: "providerOptions",
435
435
  details: `Encoding "${encoding}" has a fixed sample rate and does not support sample_rate parameter. Sample rate ${sampleRate} was ignored.`
436
436
  });
437
437
  } else {
@@ -444,8 +444,8 @@ var DeepgramSpeechModel = class {
444
444
  if (encoding === "mp3") {
445
445
  if (![32e3, 48e3].includes(Number(bitRate))) {
446
446
  warnings.push({
447
- type: "unsupported-setting",
448
- setting: "providerOptions",
447
+ type: "unsupported",
448
+ feature: "providerOptions",
449
449
  details: `Encoding "mp3" only supports bit rates: 32000, 48000. Bit rate ${bitRate} was ignored.`
450
450
  });
451
451
  } else {
@@ -455,8 +455,8 @@ var DeepgramSpeechModel = class {
455
455
  const bitRateNum = Number(bitRate);
456
456
  if (bitRateNum < 4e3 || bitRateNum > 65e4) {
457
457
  warnings.push({
458
- type: "unsupported-setting",
459
- setting: "providerOptions",
458
+ type: "unsupported",
459
+ feature: "providerOptions",
460
460
  details: `Encoding "opus" supports bit rates between 4000 and 650000. Bit rate ${bitRate} was ignored.`
461
461
  });
462
462
  } else {
@@ -466,8 +466,8 @@ var DeepgramSpeechModel = class {
466
466
  const bitRateNum = Number(bitRate);
467
467
  if (bitRateNum < 4e3 || bitRateNum > 192e3) {
468
468
  warnings.push({
469
- type: "unsupported-setting",
470
- setting: "providerOptions",
469
+ type: "unsupported",
470
+ feature: "providerOptions",
471
471
  details: `Encoding "aac" supports bit rates between 4000 and 192000. Bit rate ${bitRate} was ignored.`
472
472
  });
473
473
  } else {
@@ -475,8 +475,8 @@ var DeepgramSpeechModel = class {
475
475
  }
476
476
  } else if (["linear16", "mulaw", "alaw", "flac"].includes(encoding)) {
477
477
  warnings.push({
478
- type: "unsupported-setting",
479
- setting: "providerOptions",
478
+ type: "unsupported",
479
+ feature: "providerOptions",
480
480
  details: `Encoding "${encoding}" does not support bit_rate parameter. Bit rate ${bitRate} was ignored.`
481
481
  });
482
482
  } else {
@@ -502,29 +502,29 @@ var DeepgramSpeechModel = class {
502
502
  }
503
503
  if (voice && voice !== this.modelId) {
504
504
  warnings.push({
505
- type: "unsupported-setting",
506
- setting: "voice",
505
+ type: "unsupported",
506
+ feature: "voice",
507
507
  details: `Deepgram TTS models embed the voice in the model ID. The voice parameter "${voice}" was ignored. Use the model ID to select a voice (e.g., "aura-2-helena-en").`
508
508
  });
509
509
  }
510
510
  if (speed != null) {
511
511
  warnings.push({
512
- type: "unsupported-setting",
513
- setting: "speed",
512
+ type: "unsupported",
513
+ feature: "speed",
514
514
  details: `Deepgram TTS REST API does not support speed adjustment. Speed parameter was ignored.`
515
515
  });
516
516
  }
517
517
  if (language) {
518
518
  warnings.push({
519
- type: "unsupported-setting",
520
- setting: "language",
519
+ type: "unsupported",
520
+ feature: "language",
521
521
  details: `Deepgram TTS models are language-specific via the model ID. Language parameter "${language}" was ignored. Select a model with the appropriate language suffix (e.g., "-en" for English).`
522
522
  });
523
523
  }
524
524
  if (instructions) {
525
525
  warnings.push({
526
- type: "unsupported-setting",
527
- setting: "instructions",
526
+ type: "unsupported",
527
+ feature: "instructions",
528
528
  details: `Deepgram TTS REST API does not support instructions. Instructions parameter was ignored.`
529
529
  });
530
530
  }
@@ -575,7 +575,7 @@ var DeepgramSpeechModel = class {
575
575
  };
576
576
 
577
577
  // src/version.ts
578
- var VERSION = true ? "2.0.0-beta.36" : "0.0.0-test";
578
+ var VERSION = true ? "2.0.0-beta.38" : "0.0.0-test";
579
579
 
580
580
  // src/deepgram-provider.ts
581
581
  function createDeepgram(options = {}) {
@@ -612,23 +612,23 @@ function createDeepgram(options = {}) {
612
612
  provider.transcriptionModel = createTranscriptionModel;
613
613
  provider.speech = createSpeechModel;
614
614
  provider.speechModel = createSpeechModel;
615
- provider.languageModel = () => {
615
+ provider.languageModel = (modelId) => {
616
616
  throw new NoSuchModelError({
617
- modelId: "unknown",
617
+ modelId,
618
618
  modelType: "languageModel",
619
619
  message: "Deepgram does not provide language models"
620
620
  });
621
621
  };
622
- provider.textEmbeddingModel = () => {
622
+ provider.embeddingModel = (modelId) => {
623
623
  throw new NoSuchModelError({
624
- modelId: "unknown",
625
- modelType: "textEmbeddingModel",
624
+ modelId,
625
+ modelType: "embeddingModel",
626
626
  message: "Deepgram does not provide text embedding models"
627
627
  });
628
628
  };
629
- provider.imageModel = () => {
629
+ provider.imageModel = (modelId) => {
630
630
  throw new NoSuchModelError({
631
- modelId: "unknown",
631
+ modelId,
632
632
  modelType: "imageModel",
633
633
  message: "Deepgram does not provide image models"
634
634
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/deepgram-provider.ts","../src/deepgram-transcription-model.ts","../src/deepgram-error.ts","../src/deepgram-speech-model.ts","../src/version.ts"],"sourcesContent":["import {\n TranscriptionModelV3,\n SpeechModelV3,\n ProviderV3,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepgramTranscriptionModel } from './deepgram-transcription-model';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramSpeechModel } from './deepgram-speech-model';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\nimport { VERSION } from './version';\n\nexport interface DeepgramProvider extends ProviderV3 {\n (\n modelId: 'nova-3',\n settings?: {},\n ): {\n transcription: DeepgramTranscriptionModel;\n };\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: DeepgramTranscriptionModelId): TranscriptionModelV3;\n\n /**\nCreates a model for speech generation.\n */\n speech(modelId: DeepgramSpeechModelId): SpeechModelV3;\n}\n\nexport interface DeepgramProviderSettings {\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Deepgram provider instance.\n */\nexport function createDeepgram(\n options: DeepgramProviderSettings = {},\n): DeepgramProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: `Token ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPGRAM_API_KEY',\n description: 'Deepgram',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepgram/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: DeepgramTranscriptionModelId) =>\n new DeepgramTranscriptionModel(modelId, {\n provider: `deepgram.transcription`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: DeepgramSpeechModelId) =>\n new DeepgramSpeechModel(modelId, {\n provider: `deepgram.speech`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: DeepgramTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n // Required ProviderV3 methods that are not supported\n provider.languageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'languageModel',\n message: 'Deepgram does not provide language models',\n });\n };\n\n provider.textEmbeddingModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'textEmbeddingModel',\n message: 'Deepgram does not provide text embedding models',\n });\n };\n\n provider.imageModel = () => {\n throw new NoSuchModelError({\n modelId: 'unknown',\n modelType: 'imageModel',\n message: 'Deepgram does not provide image models',\n });\n };\n\n return provider as DeepgramProvider;\n}\n\n/**\nDefault Deepgram provider instance.\n */\nexport const deepgram = createDeepgram();\n","import {\n TranscriptionModelV3,\n TranscriptionModelV3CallOptions,\n TranscriptionModelV3CallWarning,\n} from '@ai-sdk/provider';\nimport {\n combineHeaders,\n convertBase64ToUint8Array,\n createJsonResponseHandler,\n parseProviderOptions,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramTranscriptionAPITypes } from './deepgram-api-types';\n\n// https://developers.deepgram.com/docs/pre-recorded-audio#results\nconst deepgramProviderOptionsSchema = z.object({\n /** Language to use for transcription. If not specified, Deepgram will auto-detect the language. */\n language: z.string().nullish(),\n /** Whether to use smart formatting, which formats written-out numbers, dates, times, etc. */\n smartFormat: z.boolean().nullish(),\n /** Whether to add punctuation to the transcript. */\n punctuate: z.boolean().nullish(),\n /** Whether to format the transcript into paragraphs. */\n paragraphs: z.boolean().nullish(),\n /** Whether to generate a summary of the transcript. Use 'v2' for the latest version or false to disable. */\n summarize: z.union([z.literal('v2'), z.literal(false)]).nullish(),\n /** Whether to identify topics in the transcript. */\n topics: z.boolean().nullish(),\n /** Whether to identify intents in the transcript. */\n intents: z.boolean().nullish(),\n /** Whether to analyze sentiment in the transcript. */\n sentiment: z.boolean().nullish(),\n /** Whether to detect and tag named entities in the transcript. */\n detectEntities: z.boolean().nullish(),\n /** Specify terms or patterns to redact from the transcript. Can be a string or array of strings. */\n redact: z.union([z.string(), z.array(z.string())]).nullish(),\n /** String to replace redacted content with. */\n replace: z.string().nullish(),\n /** Term or phrase to search for in the transcript. */\n search: z.string().nullish(),\n /** Key term to identify in the transcript. */\n keyterm: z.string().nullish(),\n /** Whether to identify different speakers in the audio. */\n diarize: z.boolean().nullish(),\n /** Whether to segment the transcript into utterances. */\n utterances: z.boolean().nullish(),\n /** Minimum duration of silence (in seconds) to trigger a new utterance. */\n uttSplit: z.number().nullish(),\n /** Whether to include filler words (um, uh, etc.) in the transcript. */\n fillerWords: z.boolean().nullish(),\n});\n\nexport type DeepgramTranscriptionCallOptions = z.infer<\n typeof deepgramProviderOptionsSchema\n>;\n\ninterface DeepgramTranscriptionModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramTranscriptionModelId,\n private readonly config: DeepgramTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: TranscriptionModelV3CallWarning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramProviderOptionsSchema,\n });\n\n const body: DeepgramTranscriptionAPITypes = {\n model: this.modelId,\n diarize: true,\n };\n\n // Add provider-specific options\n if (deepgramOptions) {\n body.detect_entities = deepgramOptions.detectEntities ?? undefined;\n body.filler_words = deepgramOptions.fillerWords ?? undefined;\n body.language = deepgramOptions.language ?? undefined;\n body.punctuate = deepgramOptions.punctuate ?? undefined;\n body.redact = deepgramOptions.redact ?? undefined;\n body.search = deepgramOptions.search ?? undefined;\n body.smart_format = deepgramOptions.smartFormat ?? undefined;\n body.summarize = deepgramOptions.summarize ?? undefined;\n body.topics = deepgramOptions.topics ?? undefined;\n body.utterances = deepgramOptions.utterances ?? undefined;\n body.utt_split = deepgramOptions.uttSplit ?? undefined;\n\n if (typeof deepgramOptions.diarize === 'boolean') {\n body.diarize = deepgramOptions.diarize;\n }\n }\n\n // Convert body to URL query parameters\n const queryParams = new URLSearchParams();\n for (const [key, value] of Object.entries(body)) {\n if (value !== undefined) {\n queryParams.append(key, String(value));\n }\n }\n\n return {\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postToApi({\n url:\n this.config.url({\n path: '/v1/listen',\n modelId: this.modelId,\n }) +\n '?' +\n queryParams.toString(),\n headers: {\n ...combineHeaders(this.config.headers(), options.headers),\n 'Content-Type': options.mediaType,\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n deepgramTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text:\n response.results?.channels.at(0)?.alternatives.at(0)?.transcript ?? '',\n segments:\n response.results?.channels[0].alternatives[0].words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: undefined,\n durationInSeconds: response.metadata?.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst deepgramTranscriptionResponseSchema = z.object({\n metadata: z\n .object({\n duration: z.number(),\n })\n .nullish(),\n results: z\n .object({\n channels: z.array(\n z.object({\n alternatives: z.array(\n z.object({\n transcript: z.string(),\n words: z.array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n ),\n }),\n ),\n }),\n ),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const deepgramErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type DeepgramErrorData = z.infer<typeof deepgramErrorDataSchema>;\n\nexport const deepgramFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepgramErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV3, SpeechModelV3CallWarning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\n\n// https://developers.deepgram.com/reference/text-to-speech/speak-request\nconst deepgramSpeechProviderOptionsSchema = z.object({\n /** Bitrate of the audio in bits per second. Can be a number or predefined enum value. */\n bitRate: z.union([z.number(), z.string()]).nullish(),\n /** Container format for the output audio (mp3, wav, etc.). */\n container: z.string().nullish(),\n /** Encoding type for the audio output (linear16, mulaw, alaw, etc.). */\n encoding: z.string().nullish(),\n /** Sample rate for the output audio in Hz (8000, 16000, 24000, 44100, 48000). */\n sampleRate: z.number().nullish(),\n /** URL to which we'll make the callback request. */\n callback: z.string().url().nullish(),\n /** HTTP method by which the callback request will be made (POST or PUT). */\n callbackMethod: z.enum(['POST', 'PUT']).nullish(),\n /** Opts out requests from the Deepgram Model Improvement Program. */\n mipOptOut: z.boolean().nullish(),\n /** Label your requests for the purpose of identification during usage reporting. */\n tag: z.union([z.string(), z.array(z.string())]).nullish(),\n});\n\nexport type DeepgramSpeechCallOptions = z.infer<\n typeof deepgramSpeechProviderOptionsSchema\n>;\n\ninterface DeepgramSpeechModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramSpeechModel implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramSpeechModelId,\n private readonly config: DeepgramSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice,\n outputFormat = 'mp3',\n speed,\n language,\n instructions,\n providerOptions,\n }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n const warnings: SpeechModelV3CallWarning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody = {\n text,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {\n model: this.modelId,\n };\n\n // Map outputFormat to encoding/container/sample_rate\n // https://developers.deepgram.com/docs/tts-media-output-settings#audio-format-combinations\n if (outputFormat) {\n const formatLower = outputFormat.toLowerCase();\n\n // Common format mappings based on Deepgram's valid combinations\n const formatMap: Record<\n string,\n {\n encoding?: string;\n container?: string;\n sampleRate?: number;\n bitRate?: number;\n }\n > = {\n // MP3: no container, fixed 22050 sample rate, bitrate 32000/48000\n mp3: { encoding: 'mp3' }, // Don't set container or sample_rate for mp3\n // Linear16: wav/none container, configurable sample rate\n wav: { container: 'wav', encoding: 'linear16' },\n linear16: { encoding: 'linear16', container: 'wav' },\n // MuLaw: wav/none container, 8000/16000 sample rate\n mulaw: { encoding: 'mulaw', container: 'wav' },\n // ALaw: wav/none container, 8000/16000 sample rate\n alaw: { encoding: 'alaw', container: 'wav' },\n // Opus: ogg container, fixed 48000 sample rate\n opus: { encoding: 'opus', container: 'ogg' },\n ogg: { encoding: 'opus', container: 'ogg' },\n // FLAC: no container, configurable sample rate\n flac: { encoding: 'flac' },\n // AAC: no container, fixed 22050 sample rate\n aac: { encoding: 'aac' },\n // Raw audio (no container)\n pcm: { encoding: 'linear16', container: 'none' },\n };\n\n const mappedFormat = formatMap[formatLower];\n if (mappedFormat) {\n if (mappedFormat.encoding) {\n queryParams.encoding = mappedFormat.encoding;\n }\n // Only set container if specified and valid for the encoding\n if (mappedFormat.container) {\n queryParams.container = mappedFormat.container;\n }\n // Only set sample_rate if specified and valid for the encoding\n if (mappedFormat.sampleRate) {\n queryParams.sample_rate = String(mappedFormat.sampleRate);\n }\n // Set bitrate for formats that support it\n if (mappedFormat.bitRate) {\n queryParams.bit_rate = String(mappedFormat.bitRate);\n }\n } else {\n // Try to parse format like \"wav_44100\" or \"linear16_24000\"\n const parts = formatLower.split('_');\n if (parts.length >= 2) {\n const firstPart = parts[0];\n const secondPart = parts[1];\n const sampleRate = parseInt(secondPart, 10);\n\n // Check if first part is an encoding\n if (\n [\n 'linear16',\n 'mulaw',\n 'alaw',\n 'mp3',\n 'opus',\n 'flac',\n 'aac',\n ].includes(firstPart)\n ) {\n queryParams.encoding = firstPart;\n\n // Set container based on encoding\n if (['linear16', 'mulaw', 'alaw'].includes(firstPart)) {\n // These can use wav or none, default to wav\n queryParams.container = 'wav';\n } else if (firstPart === 'opus') {\n queryParams.container = 'ogg';\n }\n // mp3, flac, aac don't use container\n\n // Set sample rate if valid for encoding\n if (!isNaN(sampleRate)) {\n if (\n firstPart === 'linear16' &&\n [8000, 16000, 24000, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'mulaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'alaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'flac' &&\n [8000, 16000, 22050, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n }\n // mp3, opus, aac have fixed sample rates, don't set\n }\n } else if (['wav', 'ogg'].includes(firstPart)) {\n // First part is container\n if (firstPart === 'wav') {\n queryParams.container = 'wav';\n queryParams.encoding = 'linear16'; // Default encoding for wav\n } else if (firstPart === 'ogg') {\n queryParams.container = 'ogg';\n queryParams.encoding = 'opus'; // Default encoding for ogg\n }\n if (!isNaN(sampleRate)) {\n queryParams.sample_rate = String(sampleRate);\n }\n }\n }\n }\n }\n\n // Add provider-specific options - map camelCase to snake_case\n // Validate combinations according to Deepgram's spec\n if (deepgramOptions) {\n if (deepgramOptions.encoding) {\n const newEncoding = deepgramOptions.encoding.toLowerCase();\n\n // If encoding changes, we may need to clear incompatible parameters\n queryParams.encoding = newEncoding;\n\n // Validate container based on encoding\n if (deepgramOptions.container) {\n // Validate container is valid for this encoding\n if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n if (\n !['wav', 'none'].includes(deepgramOptions.container.toLowerCase())\n ) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${newEncoding}\" only supports containers \"wav\" or \"none\". Container \"${deepgramOptions.container}\" was ignored.`,\n });\n } else {\n queryParams.container = deepgramOptions.container.toLowerCase();\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n } else if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${newEncoding}\" does not support container parameter. Container \"${deepgramOptions.container}\" was ignored.`,\n });\n // Remove container if it was set by outputFormat\n delete queryParams.container;\n }\n } else {\n // No container specified in providerOptions\n // If encoding changed to one that doesn't support container, remove it\n if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n delete queryParams.container;\n } else if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n // Set default container if not already set\n if (!queryParams.container) {\n queryParams.container = 'wav'; // Default for these encodings\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n }\n }\n\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n // Fixed sample rate encodings (mp3, opus, aac) don't support sample_rate parameter\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n // Lossless encodings without bitrate support (linear16, mulaw, alaw, flac) don't support bit_rate\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n } else if (deepgramOptions.container) {\n // Container specified without encoding - set default encoding\n const container = deepgramOptions.container.toLowerCase();\n const oldEncoding = queryParams.encoding?.toLowerCase();\n let newEncoding: string | undefined;\n\n if (container === 'wav') {\n queryParams.container = 'wav';\n newEncoding = 'linear16'; // Default encoding for wav\n } else if (container === 'ogg') {\n queryParams.container = 'ogg';\n newEncoding = 'opus'; // Default encoding for ogg\n } else if (container === 'none') {\n queryParams.container = 'none';\n newEncoding = 'linear16'; // Default encoding for raw audio\n }\n\n // If encoding changed, clean up incompatible parameters\n if (newEncoding && newEncoding !== oldEncoding) {\n queryParams.encoding = newEncoding;\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n }\n }\n\n if (deepgramOptions.sampleRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const sampleRate = deepgramOptions.sampleRate;\n\n // Validate sample rate based on encoding\n if (encoding === 'linear16') {\n if (![8000, 16000, 24000, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"linear16\" only supports sample rates: 8000, 16000, 24000, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'mulaw' || encoding === 'alaw') {\n if (![8000, 16000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${encoding}\" only supports sample rates: 8000, 16000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'flac') {\n if (![8000, 16000, 22050, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"flac\" only supports sample rates: 8000, 16000, 22050, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (['mp3', 'opus', 'aac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${encoding}\" has a fixed sample rate and does not support sample_rate parameter. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it (will be validated when encoding is set)\n queryParams.sample_rate = String(sampleRate);\n }\n }\n\n if (deepgramOptions.bitRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const bitRate = deepgramOptions.bitRate;\n\n // Validate bitrate based on encoding\n if (encoding === 'mp3') {\n if (![32000, 48000].includes(Number(bitRate))) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"mp3\" only supports bit rates: 32000, 48000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'opus') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 650000) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"opus\" supports bit rates between 4000 and 650000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'aac') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 192000) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"aac\" supports bit rates between 4000 and 192000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (['linear16', 'mulaw', 'alaw', 'flac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'providerOptions',\n details: `Encoding \"${encoding}\" does not support bit_rate parameter. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it\n queryParams.bit_rate = String(bitRate);\n }\n }\n\n if (deepgramOptions.callback) {\n queryParams.callback = deepgramOptions.callback;\n }\n if (deepgramOptions.callbackMethod) {\n queryParams.callback_method = deepgramOptions.callbackMethod;\n }\n if (deepgramOptions.mipOptOut != null) {\n queryParams.mip_opt_out = String(deepgramOptions.mipOptOut);\n }\n if (deepgramOptions.tag) {\n if (Array.isArray(deepgramOptions.tag)) {\n queryParams.tag = deepgramOptions.tag.join(',');\n } else {\n queryParams.tag = deepgramOptions.tag;\n }\n }\n }\n\n // Handle voice parameter - Deepgram embeds voice in model ID\n // If voice is provided and different from model, warn user\n if (voice && voice !== this.modelId) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'voice',\n details: `Deepgram TTS models embed the voice in the model ID. The voice parameter \"${voice}\" was ignored. Use the model ID to select a voice (e.g., \"aura-2-helena-en\").`,\n });\n }\n\n // Handle speed - not supported in Deepgram REST API\n if (speed != null) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'speed',\n details: `Deepgram TTS REST API does not support speed adjustment. Speed parameter was ignored.`,\n });\n }\n\n // Handle language - Deepgram models are language-specific via model ID\n if (language) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'language',\n details: `Deepgram TTS models are language-specific via the model ID. Language parameter \"${language}\" was ignored. Select a model with the appropriate language suffix (e.g., \"-en\" for English).`,\n });\n }\n\n // Handle instructions - not supported in Deepgram REST API\n if (instructions) {\n warnings.push({\n type: 'unsupported-setting',\n setting: 'instructions',\n details: `Deepgram TTS REST API does not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: '/v1/speak',\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":["z","z","combineHeaders","parseProviderOptions","z","z","parseProviderOptions","combineHeaders"]}
1
+ {"version":3,"sources":["../src/deepgram-provider.ts","../src/deepgram-transcription-model.ts","../src/deepgram-error.ts","../src/deepgram-speech-model.ts","../src/version.ts"],"sourcesContent":["import {\n TranscriptionModelV3,\n SpeechModelV3,\n ProviderV3,\n NoSuchModelError,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepgramTranscriptionModel } from './deepgram-transcription-model';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramSpeechModel } from './deepgram-speech-model';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\nimport { VERSION } from './version';\n\nexport interface DeepgramProvider extends ProviderV3 {\n (\n modelId: 'nova-3',\n settings?: {},\n ): {\n transcription: DeepgramTranscriptionModel;\n };\n\n /**\nCreates a model for transcription.\n */\n transcription(modelId: DeepgramTranscriptionModelId): TranscriptionModelV3;\n\n /**\nCreates a model for speech generation.\n */\n speech(modelId: DeepgramSpeechModelId): SpeechModelV3;\n}\n\nexport interface DeepgramProviderSettings {\n /**\nAPI key for authenticating requests.\n */\n apiKey?: string;\n\n /**\nCustom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\nCreate an Deepgram provider instance.\n */\nexport function createDeepgram(\n options: DeepgramProviderSettings = {},\n): DeepgramProvider {\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n authorization: `Token ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPGRAM_API_KEY',\n description: 'Deepgram',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepgram/${VERSION}`,\n );\n\n const createTranscriptionModel = (modelId: DeepgramTranscriptionModelId) =>\n new DeepgramTranscriptionModel(modelId, {\n provider: `deepgram.transcription`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const createSpeechModel = (modelId: DeepgramSpeechModelId) =>\n new DeepgramSpeechModel(modelId, {\n provider: `deepgram.speech`,\n url: ({ path }) => `https://api.deepgram.com${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n });\n\n const provider = function (modelId: DeepgramTranscriptionModelId) {\n return {\n transcription: createTranscriptionModel(modelId),\n };\n };\n\n provider.specificationVersion = 'v3' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n // Required ProviderV3 methods that are not supported\n provider.languageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'languageModel',\n message: 'Deepgram does not provide language models',\n });\n };\n\n provider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'embeddingModel',\n message: 'Deepgram does not provide text embedding models',\n });\n };\n\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({\n modelId,\n modelType: 'imageModel',\n message: 'Deepgram does not provide image models',\n });\n };\n\n return provider as DeepgramProvider;\n}\n\n/**\nDefault Deepgram provider instance.\n */\nexport const deepgram = createDeepgram();\n","import { SharedV3Warning, TranscriptionModelV3 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramTranscriptionAPITypes } from './deepgram-api-types';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\n\n// https://developers.deepgram.com/docs/pre-recorded-audio#results\nconst deepgramProviderOptionsSchema = z.object({\n /** Language to use for transcription. If not specified, Deepgram will auto-detect the language. */\n language: z.string().nullish(),\n /** Whether to use smart formatting, which formats written-out numbers, dates, times, etc. */\n smartFormat: z.boolean().nullish(),\n /** Whether to add punctuation to the transcript. */\n punctuate: z.boolean().nullish(),\n /** Whether to format the transcript into paragraphs. */\n paragraphs: z.boolean().nullish(),\n /** Whether to generate a summary of the transcript. Use 'v2' for the latest version or false to disable. */\n summarize: z.union([z.literal('v2'), z.literal(false)]).nullish(),\n /** Whether to identify topics in the transcript. */\n topics: z.boolean().nullish(),\n /** Whether to identify intents in the transcript. */\n intents: z.boolean().nullish(),\n /** Whether to analyze sentiment in the transcript. */\n sentiment: z.boolean().nullish(),\n /** Whether to detect and tag named entities in the transcript. */\n detectEntities: z.boolean().nullish(),\n /** Specify terms or patterns to redact from the transcript. Can be a string or array of strings. */\n redact: z.union([z.string(), z.array(z.string())]).nullish(),\n /** String to replace redacted content with. */\n replace: z.string().nullish(),\n /** Term or phrase to search for in the transcript. */\n search: z.string().nullish(),\n /** Key term to identify in the transcript. */\n keyterm: z.string().nullish(),\n /** Whether to identify different speakers in the audio. */\n diarize: z.boolean().nullish(),\n /** Whether to segment the transcript into utterances. */\n utterances: z.boolean().nullish(),\n /** Minimum duration of silence (in seconds) to trigger a new utterance. */\n uttSplit: z.number().nullish(),\n /** Whether to include filler words (um, uh, etc.) in the transcript. */\n fillerWords: z.boolean().nullish(),\n});\n\nexport type DeepgramTranscriptionCallOptions = z.infer<\n typeof deepgramProviderOptionsSchema\n>;\n\ninterface DeepgramTranscriptionModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramTranscriptionModel implements TranscriptionModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramTranscriptionModelId,\n private readonly config: DeepgramTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramProviderOptionsSchema,\n });\n\n const body: DeepgramTranscriptionAPITypes = {\n model: this.modelId,\n diarize: true,\n };\n\n // Add provider-specific options\n if (deepgramOptions) {\n body.detect_entities = deepgramOptions.detectEntities ?? undefined;\n body.filler_words = deepgramOptions.fillerWords ?? undefined;\n body.language = deepgramOptions.language ?? undefined;\n body.punctuate = deepgramOptions.punctuate ?? undefined;\n body.redact = deepgramOptions.redact ?? undefined;\n body.search = deepgramOptions.search ?? undefined;\n body.smart_format = deepgramOptions.smartFormat ?? undefined;\n body.summarize = deepgramOptions.summarize ?? undefined;\n body.topics = deepgramOptions.topics ?? undefined;\n body.utterances = deepgramOptions.utterances ?? undefined;\n body.utt_split = deepgramOptions.uttSplit ?? undefined;\n\n if (typeof deepgramOptions.diarize === 'boolean') {\n body.diarize = deepgramOptions.diarize;\n }\n }\n\n // Convert body to URL query parameters\n const queryParams = new URLSearchParams();\n for (const [key, value] of Object.entries(body)) {\n if (value !== undefined) {\n queryParams.append(key, String(value));\n }\n }\n\n return {\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<TranscriptionModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: response,\n responseHeaders,\n rawValue: rawResponse,\n } = await postToApi({\n url:\n this.config.url({\n path: '/v1/listen',\n modelId: this.modelId,\n }) +\n '?' +\n queryParams.toString(),\n headers: {\n ...combineHeaders(this.config.headers(), options.headers),\n 'Content-Type': options.mediaType,\n },\n body: {\n content: options.audio,\n values: options.audio,\n },\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createJsonResponseHandler(\n deepgramTranscriptionResponseSchema,\n ),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n text:\n response.results?.channels.at(0)?.alternatives.at(0)?.transcript ?? '',\n segments:\n response.results?.channels[0].alternatives[0].words?.map(word => ({\n text: word.word,\n startSecond: word.start,\n endSecond: word.end,\n })) ?? [],\n language: undefined,\n durationInSeconds: response.metadata?.duration ?? undefined,\n warnings,\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n\nconst deepgramTranscriptionResponseSchema = z.object({\n metadata: z\n .object({\n duration: z.number(),\n })\n .nullish(),\n results: z\n .object({\n channels: z.array(\n z.object({\n alternatives: z.array(\n z.object({\n transcript: z.string(),\n words: z.array(\n z.object({\n word: z.string(),\n start: z.number(),\n end: z.number(),\n }),\n ),\n }),\n ),\n }),\n ),\n })\n .nullish(),\n});\n","import { z } from 'zod/v4';\nimport { createJsonErrorResponseHandler } from '@ai-sdk/provider-utils';\n\nexport const deepgramErrorDataSchema = z.object({\n error: z.object({\n message: z.string(),\n code: z.number(),\n }),\n});\n\nexport type DeepgramErrorData = z.infer<typeof deepgramErrorDataSchema>;\n\nexport const deepgramFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepgramErrorDataSchema,\n errorToMessage: data => data.error.message,\n});\n","import { SpeechModelV3, SharedV3Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { DeepgramSpeechModelId } from './deepgram-speech-options';\n\n// https://developers.deepgram.com/reference/text-to-speech/speak-request\nconst deepgramSpeechProviderOptionsSchema = z.object({\n /** Bitrate of the audio in bits per second. Can be a number or predefined enum value. */\n bitRate: z.union([z.number(), z.string()]).nullish(),\n /** Container format for the output audio (mp3, wav, etc.). */\n container: z.string().nullish(),\n /** Encoding type for the audio output (linear16, mulaw, alaw, etc.). */\n encoding: z.string().nullish(),\n /** Sample rate for the output audio in Hz (8000, 16000, 24000, 44100, 48000). */\n sampleRate: z.number().nullish(),\n /** URL to which we'll make the callback request. */\n callback: z.string().url().nullish(),\n /** HTTP method by which the callback request will be made (POST or PUT). */\n callbackMethod: z.enum(['POST', 'PUT']).nullish(),\n /** Opts out requests from the Deepgram Model Improvement Program. */\n mipOptOut: z.boolean().nullish(),\n /** Label your requests for the purpose of identification during usage reporting. */\n tag: z.union([z.string(), z.array(z.string())]).nullish(),\n});\n\nexport type DeepgramSpeechCallOptions = z.infer<\n typeof deepgramSpeechProviderOptionsSchema\n>;\n\ninterface DeepgramSpeechModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramSpeechModel implements SpeechModelV3 {\n readonly specificationVersion = 'v3';\n\n get provider(): string {\n return this.config.provider;\n }\n\n constructor(\n readonly modelId: DeepgramSpeechModelId,\n private readonly config: DeepgramSpeechModelConfig,\n ) {}\n\n private async getArgs({\n text,\n voice,\n outputFormat = 'mp3',\n speed,\n language,\n instructions,\n providerOptions,\n }: Parameters<SpeechModelV3['doGenerate']>[0]) {\n const warnings: SharedV3Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramSpeechProviderOptionsSchema,\n });\n\n // Create request body\n const requestBody = {\n text,\n };\n\n // Prepare query parameters\n const queryParams: Record<string, string> = {\n model: this.modelId,\n };\n\n // Map outputFormat to encoding/container/sample_rate\n // https://developers.deepgram.com/docs/tts-media-output-settings#audio-format-combinations\n if (outputFormat) {\n const formatLower = outputFormat.toLowerCase();\n\n // Common format mappings based on Deepgram's valid combinations\n const formatMap: Record<\n string,\n {\n encoding?: string;\n container?: string;\n sampleRate?: number;\n bitRate?: number;\n }\n > = {\n // MP3: no container, fixed 22050 sample rate, bitrate 32000/48000\n mp3: { encoding: 'mp3' }, // Don't set container or sample_rate for mp3\n // Linear16: wav/none container, configurable sample rate\n wav: { container: 'wav', encoding: 'linear16' },\n linear16: { encoding: 'linear16', container: 'wav' },\n // MuLaw: wav/none container, 8000/16000 sample rate\n mulaw: { encoding: 'mulaw', container: 'wav' },\n // ALaw: wav/none container, 8000/16000 sample rate\n alaw: { encoding: 'alaw', container: 'wav' },\n // Opus: ogg container, fixed 48000 sample rate\n opus: { encoding: 'opus', container: 'ogg' },\n ogg: { encoding: 'opus', container: 'ogg' },\n // FLAC: no container, configurable sample rate\n flac: { encoding: 'flac' },\n // AAC: no container, fixed 22050 sample rate\n aac: { encoding: 'aac' },\n // Raw audio (no container)\n pcm: { encoding: 'linear16', container: 'none' },\n };\n\n const mappedFormat = formatMap[formatLower];\n if (mappedFormat) {\n if (mappedFormat.encoding) {\n queryParams.encoding = mappedFormat.encoding;\n }\n // Only set container if specified and valid for the encoding\n if (mappedFormat.container) {\n queryParams.container = mappedFormat.container;\n }\n // Only set sample_rate if specified and valid for the encoding\n if (mappedFormat.sampleRate) {\n queryParams.sample_rate = String(mappedFormat.sampleRate);\n }\n // Set bitrate for formats that support it\n if (mappedFormat.bitRate) {\n queryParams.bit_rate = String(mappedFormat.bitRate);\n }\n } else {\n // Try to parse format like \"wav_44100\" or \"linear16_24000\"\n const parts = formatLower.split('_');\n if (parts.length >= 2) {\n const firstPart = parts[0];\n const secondPart = parts[1];\n const sampleRate = parseInt(secondPart, 10);\n\n // Check if first part is an encoding\n if (\n [\n 'linear16',\n 'mulaw',\n 'alaw',\n 'mp3',\n 'opus',\n 'flac',\n 'aac',\n ].includes(firstPart)\n ) {\n queryParams.encoding = firstPart;\n\n // Set container based on encoding\n if (['linear16', 'mulaw', 'alaw'].includes(firstPart)) {\n // These can use wav or none, default to wav\n queryParams.container = 'wav';\n } else if (firstPart === 'opus') {\n queryParams.container = 'ogg';\n }\n // mp3, flac, aac don't use container\n\n // Set sample rate if valid for encoding\n if (!isNaN(sampleRate)) {\n if (\n firstPart === 'linear16' &&\n [8000, 16000, 24000, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'mulaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'alaw' &&\n [8000, 16000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n } else if (\n firstPart === 'flac' &&\n [8000, 16000, 22050, 32000, 48000].includes(sampleRate)\n ) {\n queryParams.sample_rate = String(sampleRate);\n }\n // mp3, opus, aac have fixed sample rates, don't set\n }\n } else if (['wav', 'ogg'].includes(firstPart)) {\n // First part is container\n if (firstPart === 'wav') {\n queryParams.container = 'wav';\n queryParams.encoding = 'linear16'; // Default encoding for wav\n } else if (firstPart === 'ogg') {\n queryParams.container = 'ogg';\n queryParams.encoding = 'opus'; // Default encoding for ogg\n }\n if (!isNaN(sampleRate)) {\n queryParams.sample_rate = String(sampleRate);\n }\n }\n }\n }\n }\n\n // Add provider-specific options - map camelCase to snake_case\n // Validate combinations according to Deepgram's spec\n if (deepgramOptions) {\n if (deepgramOptions.encoding) {\n const newEncoding = deepgramOptions.encoding.toLowerCase();\n\n // If encoding changes, we may need to clear incompatible parameters\n queryParams.encoding = newEncoding;\n\n // Validate container based on encoding\n if (deepgramOptions.container) {\n // Validate container is valid for this encoding\n if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n if (\n !['wav', 'none'].includes(deepgramOptions.container.toLowerCase())\n ) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${newEncoding}\" only supports containers \"wav\" or \"none\". Container \"${deepgramOptions.container}\" was ignored.`,\n });\n } else {\n queryParams.container = deepgramOptions.container.toLowerCase();\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n } else if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${newEncoding}\" does not support container parameter. Container \"${deepgramOptions.container}\" was ignored.`,\n });\n // Remove container if it was set by outputFormat\n delete queryParams.container;\n }\n } else {\n // No container specified in providerOptions\n // If encoding changed to one that doesn't support container, remove it\n if (['mp3', 'flac', 'aac'].includes(newEncoding)) {\n delete queryParams.container;\n } else if (['linear16', 'mulaw', 'alaw'].includes(newEncoding)) {\n // Set default container if not already set\n if (!queryParams.container) {\n queryParams.container = 'wav'; // Default for these encodings\n }\n } else if (newEncoding === 'opus') {\n // opus requires ogg container, override any previous container setting\n queryParams.container = 'ogg';\n }\n }\n\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n // Fixed sample rate encodings (mp3, opus, aac) don't support sample_rate parameter\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n // Lossless encodings without bitrate support (linear16, mulaw, alaw, flac) don't support bit_rate\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n } else if (deepgramOptions.container) {\n // Container specified without encoding - set default encoding\n const container = deepgramOptions.container.toLowerCase();\n const oldEncoding = queryParams.encoding?.toLowerCase();\n let newEncoding: string | undefined;\n\n if (container === 'wav') {\n queryParams.container = 'wav';\n newEncoding = 'linear16'; // Default encoding for wav\n } else if (container === 'ogg') {\n queryParams.container = 'ogg';\n newEncoding = 'opus'; // Default encoding for ogg\n } else if (container === 'none') {\n queryParams.container = 'none';\n newEncoding = 'linear16'; // Default encoding for raw audio\n }\n\n // If encoding changed, clean up incompatible parameters\n if (newEncoding && newEncoding !== oldEncoding) {\n queryParams.encoding = newEncoding;\n // Clean up sample_rate and bit_rate if they're incompatible with the new encoding\n if (['mp3', 'opus', 'aac'].includes(newEncoding)) {\n delete queryParams.sample_rate;\n }\n if (['linear16', 'mulaw', 'alaw', 'flac'].includes(newEncoding)) {\n delete queryParams.bit_rate;\n }\n }\n }\n\n if (deepgramOptions.sampleRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const sampleRate = deepgramOptions.sampleRate;\n\n // Validate sample rate based on encoding\n if (encoding === 'linear16') {\n if (![8000, 16000, 24000, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"linear16\" only supports sample rates: 8000, 16000, 24000, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'mulaw' || encoding === 'alaw') {\n if (![8000, 16000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${encoding}\" only supports sample rates: 8000, 16000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (encoding === 'flac') {\n if (![8000, 16000, 22050, 32000, 48000].includes(sampleRate)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"flac\" only supports sample rates: 8000, 16000, 22050, 32000, 48000. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n queryParams.sample_rate = String(sampleRate);\n }\n } else if (['mp3', 'opus', 'aac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${encoding}\" has a fixed sample rate and does not support sample_rate parameter. Sample rate ${sampleRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it (will be validated when encoding is set)\n queryParams.sample_rate = String(sampleRate);\n }\n }\n\n if (deepgramOptions.bitRate != null) {\n const encoding = queryParams.encoding?.toLowerCase() || '';\n const bitRate = deepgramOptions.bitRate;\n\n // Validate bitrate based on encoding\n if (encoding === 'mp3') {\n if (![32000, 48000].includes(Number(bitRate))) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"mp3\" only supports bit rates: 32000, 48000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'opus') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 650000) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"opus\" supports bit rates between 4000 and 650000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (encoding === 'aac') {\n const bitRateNum = Number(bitRate);\n if (bitRateNum < 4000 || bitRateNum > 192000) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"aac\" supports bit rates between 4000 and 192000. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n queryParams.bit_rate = String(bitRate);\n }\n } else if (['linear16', 'mulaw', 'alaw', 'flac'].includes(encoding)) {\n warnings.push({\n type: 'unsupported',\n feature: 'providerOptions',\n details: `Encoding \"${encoding}\" does not support bit_rate parameter. Bit rate ${bitRate} was ignored.`,\n });\n } else {\n // No encoding set yet, allow it\n queryParams.bit_rate = String(bitRate);\n }\n }\n\n if (deepgramOptions.callback) {\n queryParams.callback = deepgramOptions.callback;\n }\n if (deepgramOptions.callbackMethod) {\n queryParams.callback_method = deepgramOptions.callbackMethod;\n }\n if (deepgramOptions.mipOptOut != null) {\n queryParams.mip_opt_out = String(deepgramOptions.mipOptOut);\n }\n if (deepgramOptions.tag) {\n if (Array.isArray(deepgramOptions.tag)) {\n queryParams.tag = deepgramOptions.tag.join(',');\n } else {\n queryParams.tag = deepgramOptions.tag;\n }\n }\n }\n\n // Handle voice parameter - Deepgram embeds voice in model ID\n // If voice is provided and different from model, warn user\n if (voice && voice !== this.modelId) {\n warnings.push({\n type: 'unsupported',\n feature: 'voice',\n details: `Deepgram TTS models embed the voice in the model ID. The voice parameter \"${voice}\" was ignored. Use the model ID to select a voice (e.g., \"aura-2-helena-en\").`,\n });\n }\n\n // Handle speed - not supported in Deepgram REST API\n if (speed != null) {\n warnings.push({\n type: 'unsupported',\n feature: 'speed',\n details: `Deepgram TTS REST API does not support speed adjustment. Speed parameter was ignored.`,\n });\n }\n\n // Handle language - Deepgram models are language-specific via model ID\n if (language) {\n warnings.push({\n type: 'unsupported',\n feature: 'language',\n details: `Deepgram TTS models are language-specific via the model ID. Language parameter \"${language}\" was ignored. Select a model with the appropriate language suffix (e.g., \"-en\" for English).`,\n });\n }\n\n // Handle instructions - not supported in Deepgram REST API\n if (instructions) {\n warnings.push({\n type: 'unsupported',\n feature: 'instructions',\n details: `Deepgram TTS REST API does not support instructions. Instructions parameter was ignored.`,\n });\n }\n\n return {\n requestBody,\n queryParams,\n warnings,\n };\n }\n\n async doGenerate(\n options: Parameters<SpeechModelV3['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV3['doGenerate']>>> {\n const currentDate = this.config._internal?.currentDate?.() ?? new Date();\n const { requestBody, queryParams, warnings } = await this.getArgs(options);\n\n const {\n value: audio,\n responseHeaders,\n rawValue: rawResponse,\n } = await postJsonToApi({\n url: (() => {\n const baseUrl = this.config.url({\n path: '/v1/speak',\n modelId: this.modelId,\n });\n const queryString = new URLSearchParams(queryParams).toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n })(),\n headers: combineHeaders(this.config.headers(), options.headers),\n body: requestBody,\n failedResponseHandler: deepgramFailedResponseHandler,\n successfulResponseHandler: createBinaryResponseHandler(),\n abortSignal: options.abortSignal,\n fetch: this.config.fetch,\n });\n\n return {\n audio,\n warnings,\n request: {\n body: JSON.stringify(requestBody),\n },\n response: {\n timestamp: currentDate,\n modelId: this.modelId,\n headers: responseHeaders,\n body: rawResponse,\n },\n };\n }\n}\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":";AAAA;AAAA,EAIE;AAAA,OACK;AACP;AAAA,EAEE;AAAA,EACA;AAAA,OACK;;;ACTP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAAA,UAAS;;;ACPlB,SAAS,SAAS;AAClB,SAAS,sCAAsC;AAExC,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,OAAO,EAAE,OAAO;AAAA,IACd,SAAS,EAAE,OAAO;AAAA,IAClB,MAAM,EAAE,OAAO;AAAA,EACjB,CAAC;AACH,CAAC;AAIM,IAAM,gCAAgC,+BAA+B;AAAA,EAC1E,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK,MAAM;AACrC,CAAC;;;ADDD,IAAM,gCAAgCC,GAAE,OAAO;AAAA;AAAA,EAE7C,UAAUA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE7B,aAAaA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAEjC,WAAWA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAE/B,YAAYA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAEhC,WAAWA,GAAE,MAAM,CAACA,GAAE,QAAQ,IAAI,GAAGA,GAAE,QAAQ,KAAK,CAAC,CAAC,EAAE,QAAQ;AAAA;AAAA,EAEhE,QAAQA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAE5B,SAASA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAE7B,WAAWA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAE/B,gBAAgBA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAEpC,QAAQA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ;AAAA;AAAA,EAE3D,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE5B,QAAQA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE3B,SAASA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE5B,SAASA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAE7B,YAAYA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAEhC,UAAUA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE7B,aAAaA,GAAE,QAAQ,EAAE,QAAQ;AACnC,CAAC;AAYM,IAAM,6BAAN,MAAiE;AAAA,EAOtE,YACW,SACQ,QACjB;AAFS;AACQ;AARnB,SAAS,uBAAuB;AAAA,EAS7B;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,EACF,GAAsD;AA3ExD;AA4EI,UAAM,WAA8B,CAAC;AAGrC,UAAM,kBAAkB,MAAM,qBAAqB;AAAA,MACjD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,OAAsC;AAAA,MAC1C,OAAO,KAAK;AAAA,MACZ,SAAS;AAAA,IACX;AAGA,QAAI,iBAAiB;AACnB,WAAK,mBAAkB,qBAAgB,mBAAhB,YAAkC;AACzD,WAAK,gBAAe,qBAAgB,gBAAhB,YAA+B;AACnD,WAAK,YAAW,qBAAgB,aAAhB,YAA4B;AAC5C,WAAK,aAAY,qBAAgB,cAAhB,YAA6B;AAC9C,WAAK,UAAS,qBAAgB,WAAhB,YAA0B;AACxC,WAAK,UAAS,qBAAgB,WAAhB,YAA0B;AACxC,WAAK,gBAAe,qBAAgB,gBAAhB,YAA+B;AACnD,WAAK,aAAY,qBAAgB,cAAhB,YAA6B;AAC9C,WAAK,UAAS,qBAAgB,WAAhB,YAA0B;AACxC,WAAK,cAAa,qBAAgB,eAAhB,YAA8B;AAChD,WAAK,aAAY,qBAAgB,aAAhB,YAA4B;AAE7C,UAAI,OAAO,gBAAgB,YAAY,WAAW;AAChD,aAAK,UAAU,gBAAgB;AAAA,MACjC;AAAA,IACF;AAGA,UAAM,cAAc,IAAI,gBAAgB;AACxC,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,IAAI,GAAG;AAC/C,UAAI,UAAU,QAAW;AACvB,oBAAY,OAAO,KAAK,OAAO,KAAK,CAAC;AAAA,MACvC;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SACkE;AA7HtE;AA8HI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,aAAa,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAE5D,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,UAAU;AAAA,IACZ,IAAI,MAAM,UAAU;AAAA,MAClB,KACE,KAAK,OAAO,IAAI;AAAA,QACd,MAAM;AAAA,QACN,SAAS,KAAK;AAAA,MAChB,CAAC,IACD,MACA,YAAY,SAAS;AAAA,MACvB,SAAS;AAAA,QACP,GAAG,eAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,QACxD,gBAAgB,QAAQ;AAAA,MAC1B;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,QAAQ;AAAA,QACjB,QAAQ,QAAQ;AAAA,MAClB;AAAA,MACA,uBAAuB;AAAA,MACvB,2BAA2B;AAAA,QACzB;AAAA,MACF;AAAA,MACA,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL,OACE,gCAAS,YAAT,mBAAkB,SAAS,GAAG,OAA9B,mBAAkC,aAAa,GAAG,OAAlD,mBAAsD,eAAtD,YAAoE;AAAA,MACtE,WACE,0BAAS,YAAT,mBAAkB,SAAS,GAAG,aAAa,GAAG,UAA9C,mBAAqD,IAAI,WAAS;AAAA,QAChE,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,MAClB,QAJA,YAIO,CAAC;AAAA,MACV,UAAU;AAAA,MACV,oBAAmB,oBAAS,aAAT,mBAAmB,aAAnB,YAA+B;AAAA,MAClD;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;AAEA,IAAM,sCAAsCA,GAAE,OAAO;AAAA,EACnD,UAAUA,GACP,OAAO;AAAA,IACN,UAAUA,GAAE,OAAO;AAAA,EACrB,CAAC,EACA,QAAQ;AAAA,EACX,SAASA,GACN,OAAO;AAAA,IACN,UAAUA,GAAE;AAAA,MACVA,GAAE,OAAO;AAAA,QACP,cAAcA,GAAE;AAAA,UACdA,GAAE,OAAO;AAAA,YACP,YAAYA,GAAE,OAAO;AAAA,YACrB,OAAOA,GAAE;AAAA,cACPA,GAAE,OAAO;AAAA,gBACP,MAAMA,GAAE,OAAO;AAAA,gBACf,OAAOA,GAAE,OAAO;AAAA,gBAChB,KAAKA,GAAE,OAAO;AAAA,cAChB,CAAC;AAAA,YACH;AAAA,UACF,CAAC;AAAA,QACH;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC,EACA,QAAQ;AACb,CAAC;;;AE5MD;AAAA,EACE,kBAAAC;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAAC,UAAS;AAMlB,IAAM,sCAAsCC,GAAE,OAAO;AAAA;AAAA,EAEnD,SAASA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,OAAO,CAAC,CAAC,EAAE,QAAQ;AAAA;AAAA,EAEnD,WAAWA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE9B,UAAUA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE7B,YAAYA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE/B,UAAUA,GAAE,OAAO,EAAE,IAAI,EAAE,QAAQ;AAAA;AAAA,EAEnC,gBAAgBA,GAAE,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,QAAQ;AAAA;AAAA,EAEhD,WAAWA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAE/B,KAAKA,GAAE,MAAM,CAACA,GAAE,OAAO,GAAGA,GAAE,MAAMA,GAAE,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ;AAC1D,CAAC;AAYM,IAAM,sBAAN,MAAmD;AAAA,EAOxD,YACW,SACQ,QACjB;AAFS;AACQ;AARnB,SAAS,uBAAuB;AAAA,EAS7B;AAAA,EAPH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+C;AA9DjD;AA+DI,UAAM,WAA8B,CAAC;AAGrC,UAAM,kBAAkB,MAAMC,sBAAqB;AAAA,MACjD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAGD,UAAM,cAAc;AAAA,MAClB;AAAA,IACF;AAGA,UAAM,cAAsC;AAAA,MAC1C,OAAO,KAAK;AAAA,IACd;AAIA,QAAI,cAAc;AAChB,YAAM,cAAc,aAAa,YAAY;AAG7C,YAAM,YAQF;AAAA;AAAA,QAEF,KAAK,EAAE,UAAU,MAAM;AAAA;AAAA;AAAA,QAEvB,KAAK,EAAE,WAAW,OAAO,UAAU,WAAW;AAAA,QAC9C,UAAU,EAAE,UAAU,YAAY,WAAW,MAAM;AAAA;AAAA,QAEnD,OAAO,EAAE,UAAU,SAAS,WAAW,MAAM;AAAA;AAAA,QAE7C,MAAM,EAAE,UAAU,QAAQ,WAAW,MAAM;AAAA;AAAA,QAE3C,MAAM,EAAE,UAAU,QAAQ,WAAW,MAAM;AAAA,QAC3C,KAAK,EAAE,UAAU,QAAQ,WAAW,MAAM;AAAA;AAAA,QAE1C,MAAM,EAAE,UAAU,OAAO;AAAA;AAAA,QAEzB,KAAK,EAAE,UAAU,MAAM;AAAA;AAAA,QAEvB,KAAK,EAAE,UAAU,YAAY,WAAW,OAAO;AAAA,MACjD;AAEA,YAAM,eAAe,UAAU,WAAW;AAC1C,UAAI,cAAc;AAChB,YAAI,aAAa,UAAU;AACzB,sBAAY,WAAW,aAAa;AAAA,QACtC;AAEA,YAAI,aAAa,WAAW;AAC1B,sBAAY,YAAY,aAAa;AAAA,QACvC;AAEA,YAAI,aAAa,YAAY;AAC3B,sBAAY,cAAc,OAAO,aAAa,UAAU;AAAA,QAC1D;AAEA,YAAI,aAAa,SAAS;AACxB,sBAAY,WAAW,OAAO,aAAa,OAAO;AAAA,QACpD;AAAA,MACF,OAAO;AAEL,cAAM,QAAQ,YAAY,MAAM,GAAG;AACnC,YAAI,MAAM,UAAU,GAAG;AACrB,gBAAM,YAAY,MAAM,CAAC;AACzB,gBAAM,aAAa,MAAM,CAAC;AAC1B,gBAAM,aAAa,SAAS,YAAY,EAAE;AAG1C,cACE;AAAA,YACE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACF,EAAE,SAAS,SAAS,GACpB;AACA,wBAAY,WAAW;AAGvB,gBAAI,CAAC,YAAY,SAAS,MAAM,EAAE,SAAS,SAAS,GAAG;AAErD,0BAAY,YAAY;AAAA,YAC1B,WAAW,cAAc,QAAQ;AAC/B,0BAAY,YAAY;AAAA,YAC1B;AAIA,gBAAI,CAAC,MAAM,UAAU,GAAG;AACtB,kBACE,cAAc,cACd,CAAC,KAAM,MAAO,MAAO,MAAO,IAAK,EAAE,SAAS,UAAU,GACtD;AACA,4BAAY,cAAc,OAAO,UAAU;AAAA,cAC7C,WACE,cAAc,WACd,CAAC,KAAM,IAAK,EAAE,SAAS,UAAU,GACjC;AACA,4BAAY,cAAc,OAAO,UAAU;AAAA,cAC7C,WACE,cAAc,UACd,CAAC,KAAM,IAAK,EAAE,SAAS,UAAU,GACjC;AACA,4BAAY,cAAc,OAAO,UAAU;AAAA,cAC7C,WACE,cAAc,UACd,CAAC,KAAM,MAAO,OAAO,MAAO,IAAK,EAAE,SAAS,UAAU,GACtD;AACA,4BAAY,cAAc,OAAO,UAAU;AAAA,cAC7C;AAAA,YAEF;AAAA,UACF,WAAW,CAAC,OAAO,KAAK,EAAE,SAAS,SAAS,GAAG;AAE7C,gBAAI,cAAc,OAAO;AACvB,0BAAY,YAAY;AACxB,0BAAY,WAAW;AAAA,YACzB,WAAW,cAAc,OAAO;AAC9B,0BAAY,YAAY;AACxB,0BAAY,WAAW;AAAA,YACzB;AACA,gBAAI,CAAC,MAAM,UAAU,GAAG;AACtB,0BAAY,cAAc,OAAO,UAAU;AAAA,YAC7C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAIA,QAAI,iBAAiB;AACnB,UAAI,gBAAgB,UAAU;AAC5B,cAAM,cAAc,gBAAgB,SAAS,YAAY;AAGzD,oBAAY,WAAW;AAGvB,YAAI,gBAAgB,WAAW;AAE7B,cAAI,CAAC,YAAY,SAAS,MAAM,EAAE,SAAS,WAAW,GAAG;AACvD,gBACE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,gBAAgB,UAAU,YAAY,CAAC,GACjE;AACA,uBAAS,KAAK;AAAA,gBACZ,MAAM;AAAA,gBACN,SAAS;AAAA,gBACT,SAAS,aAAa,WAAW,0DAA0D,gBAAgB,SAAS;AAAA,cACtH,CAAC;AAAA,YACH,OAAO;AACL,0BAAY,YAAY,gBAAgB,UAAU,YAAY;AAAA,YAChE;AAAA,UACF,WAAW,gBAAgB,QAAQ;AAEjC,wBAAY,YAAY;AAAA,UAC1B,WAAW,CAAC,OAAO,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;AACvD,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,aAAa,WAAW,sDAAsD,gBAAgB,SAAS;AAAA,YAClH,CAAC;AAED,mBAAO,YAAY;AAAA,UACrB;AAAA,QACF,OAAO;AAGL,cAAI,CAAC,OAAO,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;AAChD,mBAAO,YAAY;AAAA,UACrB,WAAW,CAAC,YAAY,SAAS,MAAM,EAAE,SAAS,WAAW,GAAG;AAE9D,gBAAI,CAAC,YAAY,WAAW;AAC1B,0BAAY,YAAY;AAAA,YAC1B;AAAA,UACF,WAAW,gBAAgB,QAAQ;AAEjC,wBAAY,YAAY;AAAA,UAC1B;AAAA,QACF;AAIA,YAAI,CAAC,OAAO,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;AAChD,iBAAO,YAAY;AAAA,QACrB;AAEA,YAAI,CAAC,YAAY,SAAS,QAAQ,MAAM,EAAE,SAAS,WAAW,GAAG;AAC/D,iBAAO,YAAY;AAAA,QACrB;AAAA,MACF,WAAW,gBAAgB,WAAW;AAEpC,cAAM,YAAY,gBAAgB,UAAU,YAAY;AACxD,cAAM,eAAc,iBAAY,aAAZ,mBAAsB;AAC1C,YAAI;AAEJ,YAAI,cAAc,OAAO;AACvB,sBAAY,YAAY;AACxB,wBAAc;AAAA,QAChB,WAAW,cAAc,OAAO;AAC9B,sBAAY,YAAY;AACxB,wBAAc;AAAA,QAChB,WAAW,cAAc,QAAQ;AAC/B,sBAAY,YAAY;AACxB,wBAAc;AAAA,QAChB;AAGA,YAAI,eAAe,gBAAgB,aAAa;AAC9C,sBAAY,WAAW;AAEvB,cAAI,CAAC,OAAO,QAAQ,KAAK,EAAE,SAAS,WAAW,GAAG;AAChD,mBAAO,YAAY;AAAA,UACrB;AACA,cAAI,CAAC,YAAY,SAAS,QAAQ,MAAM,EAAE,SAAS,WAAW,GAAG;AAC/D,mBAAO,YAAY;AAAA,UACrB;AAAA,QACF;AAAA,MACF;AAEA,UAAI,gBAAgB,cAAc,MAAM;AACtC,cAAM,aAAW,iBAAY,aAAZ,mBAAsB,kBAAiB;AACxD,cAAM,aAAa,gBAAgB;AAGnC,YAAI,aAAa,YAAY;AAC3B,cAAI,CAAC,CAAC,KAAM,MAAO,MAAO,MAAO,IAAK,EAAE,SAAS,UAAU,GAAG;AAC5D,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,iGAAiG,UAAU;AAAA,YACtH,CAAC;AAAA,UACH,OAAO;AACL,wBAAY,cAAc,OAAO,UAAU;AAAA,UAC7C;AAAA,QACF,WAAW,aAAa,WAAW,aAAa,QAAQ;AACtD,cAAI,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,UAAU,GAAG;AACvC,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,aAAa,QAAQ,0DAA0D,UAAU;AAAA,YACpG,CAAC;AAAA,UACH,OAAO;AACL,wBAAY,cAAc,OAAO,UAAU;AAAA,UAC7C;AAAA,QACF,WAAW,aAAa,QAAQ;AAC9B,cAAI,CAAC,CAAC,KAAM,MAAO,OAAO,MAAO,IAAK,EAAE,SAAS,UAAU,GAAG;AAC5D,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,6FAA6F,UAAU;AAAA,YAClH,CAAC;AAAA,UACH,OAAO;AACL,wBAAY,cAAc,OAAO,UAAU;AAAA,UAC7C;AAAA,QACF,WAAW,CAAC,OAAO,QAAQ,KAAK,EAAE,SAAS,QAAQ,GAAG;AACpD,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,aAAa,QAAQ,qFAAqF,UAAU;AAAA,UAC/H,CAAC;AAAA,QACH,OAAO;AAEL,sBAAY,cAAc,OAAO,UAAU;AAAA,QAC7C;AAAA,MACF;AAEA,UAAI,gBAAgB,WAAW,MAAM;AACnC,cAAM,aAAW,iBAAY,aAAZ,mBAAsB,kBAAiB;AACxD,cAAM,UAAU,gBAAgB;AAGhC,YAAI,aAAa,OAAO;AACtB,cAAI,CAAC,CAAC,MAAO,IAAK,EAAE,SAAS,OAAO,OAAO,CAAC,GAAG;AAC7C,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,kEAAkE,OAAO;AAAA,YACpF,CAAC;AAAA,UACH,OAAO;AACL,wBAAY,WAAW,OAAO,OAAO;AAAA,UACvC;AAAA,QACF,WAAW,aAAa,QAAQ;AAC9B,gBAAM,aAAa,OAAO,OAAO;AACjC,cAAI,aAAa,OAAQ,aAAa,MAAQ;AAC5C,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,wEAAwE,OAAO;AAAA,YAC1F,CAAC;AAAA,UACH,OAAO;AACL,wBAAY,WAAW,OAAO,OAAO;AAAA,UACvC;AAAA,QACF,WAAW,aAAa,OAAO;AAC7B,gBAAM,aAAa,OAAO,OAAO;AACjC,cAAI,aAAa,OAAQ,aAAa,OAAQ;AAC5C,qBAAS,KAAK;AAAA,cACZ,MAAM;AAAA,cACN,SAAS;AAAA,cACT,SAAS,uEAAuE,OAAO;AAAA,YACzF,CAAC;AAAA,UACH,OAAO;AACL,wBAAY,WAAW,OAAO,OAAO;AAAA,UACvC;AAAA,QACF,WAAW,CAAC,YAAY,SAAS,QAAQ,MAAM,EAAE,SAAS,QAAQ,GAAG;AACnE,mBAAS,KAAK;AAAA,YACZ,MAAM;AAAA,YACN,SAAS;AAAA,YACT,SAAS,aAAa,QAAQ,mDAAmD,OAAO;AAAA,UAC1F,CAAC;AAAA,QACH,OAAO;AAEL,sBAAY,WAAW,OAAO,OAAO;AAAA,QACvC;AAAA,MACF;AAEA,UAAI,gBAAgB,UAAU;AAC5B,oBAAY,WAAW,gBAAgB;AAAA,MACzC;AACA,UAAI,gBAAgB,gBAAgB;AAClC,oBAAY,kBAAkB,gBAAgB;AAAA,MAChD;AACA,UAAI,gBAAgB,aAAa,MAAM;AACrC,oBAAY,cAAc,OAAO,gBAAgB,SAAS;AAAA,MAC5D;AACA,UAAI,gBAAgB,KAAK;AACvB,YAAI,MAAM,QAAQ,gBAAgB,GAAG,GAAG;AACtC,sBAAY,MAAM,gBAAgB,IAAI,KAAK,GAAG;AAAA,QAChD,OAAO;AACL,sBAAY,MAAM,gBAAgB;AAAA,QACpC;AAAA,MACF;AAAA,IACF;AAIA,QAAI,SAAS,UAAU,KAAK,SAAS;AACnC,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,6EAA6E,KAAK;AAAA,MAC7F,CAAC;AAAA,IACH;AAGA,QAAI,SAAS,MAAM;AACjB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAGA,QAAI,UAAU;AACZ,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,mFAAmF,QAAQ;AAAA,MACtG,CAAC;AAAA,IACH;AAGA,QAAI,cAAc;AAChB,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,MACX,CAAC;AAAA,IACH;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAM,WACJ,SAC2D;AA1c/D;AA2cI,UAAM,eAAc,sBAAK,OAAO,cAAZ,mBAAuB,gBAAvB,4CAA0C,oBAAI,KAAK;AACvE,UAAM,EAAE,aAAa,aAAa,SAAS,IAAI,MAAM,KAAK,QAAQ,OAAO;AAEzE,UAAM;AAAA,MACJ,OAAO;AAAA,MACP;AAAA,MACA,UAAU;AAAA,IACZ,IAAI,MAAM,cAAc;AAAA,MACtB,MAAM,MAAM;AACV,cAAM,UAAU,KAAK,OAAO,IAAI;AAAA,UAC9B,MAAM;AAAA,UACN,SAAS,KAAK;AAAA,QAChB,CAAC;AACD,cAAM,cAAc,IAAI,gBAAgB,WAAW,EAAE,SAAS;AAC9D,eAAO,cAAc,GAAG,OAAO,IAAI,WAAW,KAAK;AAAA,MACrD,GAAG;AAAA,MACH,SAASC,gBAAe,KAAK,OAAO,QAAQ,GAAG,QAAQ,OAAO;AAAA,MAC9D,MAAM;AAAA,MACN,uBAAuB;AAAA,MACvB,2BAA2B,4BAA4B;AAAA,MACvD,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAED,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,SAAS;AAAA,QACP,MAAM,KAAK,UAAU,WAAW;AAAA,MAClC;AAAA,MACA,UAAU;AAAA,QACR,WAAW;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AC/eO,IAAM,UACX,OACI,kBACA;;;AJoDC,SAAS,eACd,UAAoC,CAAC,GACnB;AAClB,QAAM,aAAa,MACjB;AAAA,IACE;AAAA,MACE,eAAe,SAAS,WAAW;AAAA,QACjC,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC,CAAC;AAAA,MACF,GAAG,QAAQ;AAAA,IACb;AAAA,IACA,mBAAmB,OAAO;AAAA,EAC5B;AAEF,QAAM,2BAA2B,CAAC,YAChC,IAAI,2BAA2B,SAAS;AAAA,IACtC,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,KAAK,MAAM,2BAA2B,IAAI;AAAA,IAClD,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,oBAAoB,CAAC,YACzB,IAAI,oBAAoB,SAAS;AAAA,IAC/B,UAAU;AAAA,IACV,KAAK,CAAC,EAAE,KAAK,MAAM,2BAA2B,IAAI;AAAA,IAClD,SAAS;AAAA,IACT,OAAO,QAAQ;AAAA,EACjB,CAAC;AAEH,QAAM,WAAW,SAAU,SAAuC;AAChE,WAAO;AAAA,MACL,eAAe,yBAAyB,OAAO;AAAA,IACjD;AAAA,EACF;AAEA,WAAS,uBAAuB;AAChC,WAAS,gBAAgB;AACzB,WAAS,qBAAqB;AAC9B,WAAS,SAAS;AAClB,WAAS,cAAc;AAGvB,WAAS,gBAAgB,CAAC,YAAoB;AAC5C,UAAM,IAAI,iBAAiB;AAAA,MACzB;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAAS,iBAAiB,CAAC,YAAoB;AAC7C,UAAM,IAAI,iBAAiB;AAAA,MACzB;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iBAAiB;AAAA,MACzB;AAAA,MACA,WAAW;AAAA,MACX,SAAS;AAAA,IACX,CAAC;AAAA,EACH;AAEA,SAAO;AACT;AAKO,IAAM,WAAW,eAAe;","names":["z","z","combineHeaders","parseProviderOptions","z","z","parseProviderOptions","combineHeaders"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/deepgram",
3
- "version": "2.0.0-beta.36",
3
+ "version": "2.0.0-beta.38",
4
4
  "license": "Apache-2.0",
5
5
  "sideEffects": false,
6
6
  "main": "./dist/index.js",
@@ -20,8 +20,8 @@
20
20
  }
21
21
  },
22
22
  "dependencies": {
23
- "@ai-sdk/provider": "3.0.0-beta.18",
24
- "@ai-sdk/provider-utils": "4.0.0-beta.35"
23
+ "@ai-sdk/provider": "3.0.0-beta.20",
24
+ "@ai-sdk/provider-utils": "4.0.0-beta.37"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "20.17.24",