@ai-sdk/deepgram 3.1.18 → 3.1.21
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 +24 -0
- package/dist/index.js +38 -42
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,29 @@
|
|
|
1
1
|
# @ai-sdk/deepgram
|
|
2
2
|
|
|
3
|
+
## 3.1.21
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [e3605f6]
|
|
8
|
+
- Updated dependencies [525efc5]
|
|
9
|
+
- @ai-sdk/provider-utils@5.0.50
|
|
10
|
+
- @ai-sdk/provider@4.0.19
|
|
11
|
+
|
|
12
|
+
## 3.1.20
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- Updated dependencies [af9597b]
|
|
17
|
+
- Updated dependencies [bc49f78]
|
|
18
|
+
- @ai-sdk/provider-utils@5.0.49
|
|
19
|
+
|
|
20
|
+
## 3.1.19
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- Updated dependencies [be877ff]
|
|
25
|
+
- @ai-sdk/provider-utils@5.0.48
|
|
26
|
+
|
|
3
27
|
## 3.1.18
|
|
4
28
|
|
|
5
29
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -95,7 +95,6 @@ var DeepgramTranscriptionModel = class _DeepgramTranscriptionModel {
|
|
|
95
95
|
async getArgs({
|
|
96
96
|
providerOptions
|
|
97
97
|
}) {
|
|
98
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r;
|
|
99
98
|
const warnings = [];
|
|
100
99
|
const deepgramOptions = await parseProviderOptions({
|
|
101
100
|
provider: "deepgram",
|
|
@@ -106,24 +105,24 @@ var DeepgramTranscriptionModel = class _DeepgramTranscriptionModel {
|
|
|
106
105
|
model: this.modelId
|
|
107
106
|
};
|
|
108
107
|
if (deepgramOptions) {
|
|
109
|
-
body.detect_entities =
|
|
110
|
-
body.detect_language =
|
|
111
|
-
body.diarize =
|
|
112
|
-
body.filler_words =
|
|
113
|
-
body.intents =
|
|
114
|
-
body.keyterm =
|
|
115
|
-
body.language =
|
|
116
|
-
body.paragraphs =
|
|
117
|
-
body.punctuate =
|
|
118
|
-
body.redact =
|
|
119
|
-
body.replace =
|
|
120
|
-
body.search =
|
|
121
|
-
body.sentiment =
|
|
122
|
-
body.smart_format =
|
|
123
|
-
body.summarize =
|
|
124
|
-
body.topics =
|
|
125
|
-
body.utterances =
|
|
126
|
-
body.utt_split =
|
|
108
|
+
body.detect_entities = deepgramOptions.detectEntities ?? void 0;
|
|
109
|
+
body.detect_language = deepgramOptions.detectLanguage ?? void 0;
|
|
110
|
+
body.diarize = deepgramOptions.diarize ?? void 0;
|
|
111
|
+
body.filler_words = deepgramOptions.fillerWords ?? void 0;
|
|
112
|
+
body.intents = deepgramOptions.intents ?? void 0;
|
|
113
|
+
body.keyterm = deepgramOptions.keyterm ?? void 0;
|
|
114
|
+
body.language = deepgramOptions.language ?? void 0;
|
|
115
|
+
body.paragraphs = deepgramOptions.paragraphs ?? void 0;
|
|
116
|
+
body.punctuate = deepgramOptions.punctuate ?? void 0;
|
|
117
|
+
body.redact = deepgramOptions.redact ?? void 0;
|
|
118
|
+
body.replace = deepgramOptions.replace ?? void 0;
|
|
119
|
+
body.search = deepgramOptions.search ?? void 0;
|
|
120
|
+
body.sentiment = deepgramOptions.sentiment ?? void 0;
|
|
121
|
+
body.smart_format = deepgramOptions.smartFormat ?? void 0;
|
|
122
|
+
body.summarize = deepgramOptions.summarize ?? void 0;
|
|
123
|
+
body.topics = deepgramOptions.topics ?? void 0;
|
|
124
|
+
body.utterances = deepgramOptions.utterances ?? void 0;
|
|
125
|
+
body.utt_split = deepgramOptions.uttSplit ?? void 0;
|
|
127
126
|
}
|
|
128
127
|
const queryParams = new URLSearchParams();
|
|
129
128
|
for (const [key, value] of Object.entries(body)) {
|
|
@@ -137,8 +136,7 @@ var DeepgramTranscriptionModel = class _DeepgramTranscriptionModel {
|
|
|
137
136
|
};
|
|
138
137
|
}
|
|
139
138
|
async doGenerate(options) {
|
|
140
|
-
|
|
141
|
-
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
139
|
+
const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
|
|
142
140
|
const { queryParams, warnings } = await this.getArgs(options);
|
|
143
141
|
const {
|
|
144
142
|
value: response,
|
|
@@ -150,7 +148,7 @@ var DeepgramTranscriptionModel = class _DeepgramTranscriptionModel {
|
|
|
150
148
|
modelId: this.modelId
|
|
151
149
|
}) + "?" + queryParams.toString(),
|
|
152
150
|
headers: {
|
|
153
|
-
...combineHeaders(
|
|
151
|
+
...combineHeaders(this.config.headers?.(), options.headers),
|
|
154
152
|
"Content-Type": options.mediaType
|
|
155
153
|
},
|
|
156
154
|
body: {
|
|
@@ -165,14 +163,14 @@ var DeepgramTranscriptionModel = class _DeepgramTranscriptionModel {
|
|
|
165
163
|
fetch: this.config.fetch
|
|
166
164
|
});
|
|
167
165
|
return {
|
|
168
|
-
text:
|
|
169
|
-
segments:
|
|
166
|
+
text: response.results?.channels.at(0)?.alternatives.at(0)?.transcript ?? "",
|
|
167
|
+
segments: response.results?.channels[0].alternatives[0].words?.map((word) => ({
|
|
170
168
|
text: word.word,
|
|
171
169
|
startSecond: word.start,
|
|
172
170
|
endSecond: word.end
|
|
173
|
-
}))
|
|
174
|
-
language:
|
|
175
|
-
durationInSeconds:
|
|
171
|
+
})) ?? [],
|
|
172
|
+
language: response.results?.channels.at(0)?.detected_language ?? void 0,
|
|
173
|
+
durationInSeconds: response.metadata?.duration ?? void 0,
|
|
176
174
|
warnings,
|
|
177
175
|
response: {
|
|
178
176
|
timestamp: currentDate,
|
|
@@ -269,7 +267,6 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
269
267
|
instructions,
|
|
270
268
|
providerOptions
|
|
271
269
|
}) {
|
|
272
|
-
var _a, _b, _c;
|
|
273
270
|
const warnings = [];
|
|
274
271
|
const deepgramOptions = await parseProviderOptions2({
|
|
275
272
|
provider: "deepgram",
|
|
@@ -278,7 +275,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
278
275
|
});
|
|
279
276
|
let upstreamModelId = this.modelId;
|
|
280
277
|
if (VOICE_FAMILY_IDS.has(this.modelId)) {
|
|
281
|
-
const trimmedVoice = voice
|
|
278
|
+
const trimmedVoice = voice?.trim();
|
|
282
279
|
if (!trimmedVoice) {
|
|
283
280
|
throw new Error(
|
|
284
281
|
`Deepgram speech model "${this.modelId}" requires a \`voice\` to be set (e.g. voice: 'thalia').`
|
|
@@ -427,7 +424,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
427
424
|
}
|
|
428
425
|
} else if (deepgramOptions.container) {
|
|
429
426
|
const container = deepgramOptions.container.toLowerCase();
|
|
430
|
-
const oldEncoding =
|
|
427
|
+
const oldEncoding = queryParams.encoding?.toLowerCase();
|
|
431
428
|
let newEncoding;
|
|
432
429
|
if (container === "wav") {
|
|
433
430
|
queryParams.container = "wav";
|
|
@@ -450,7 +447,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
450
447
|
}
|
|
451
448
|
}
|
|
452
449
|
if (deepgramOptions.sampleRate != null) {
|
|
453
|
-
const encoding =
|
|
450
|
+
const encoding = queryParams.encoding?.toLowerCase() || "";
|
|
454
451
|
const sampleRate = deepgramOptions.sampleRate;
|
|
455
452
|
if (encoding === "linear16") {
|
|
456
453
|
if (![8e3, 16e3, 24e3, 32e3, 48e3].includes(sampleRate)) {
|
|
@@ -493,7 +490,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
493
490
|
}
|
|
494
491
|
}
|
|
495
492
|
if (deepgramOptions.bitRate != null) {
|
|
496
|
-
const encoding =
|
|
493
|
+
const encoding = queryParams.encoding?.toLowerCase() || "";
|
|
497
494
|
const bitRate = deepgramOptions.bitRate;
|
|
498
495
|
if (encoding === "mp3") {
|
|
499
496
|
if (![32e3, 48e3].includes(Number(bitRate))) {
|
|
@@ -585,8 +582,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
585
582
|
};
|
|
586
583
|
}
|
|
587
584
|
async doGenerate(options) {
|
|
588
|
-
|
|
589
|
-
const currentDate = (_c = (_b = (_a = this.config._internal) == null ? void 0 : _a.currentDate) == null ? void 0 : _b.call(_a)) != null ? _c : /* @__PURE__ */ new Date();
|
|
585
|
+
const currentDate = this.config._internal?.currentDate?.() ?? /* @__PURE__ */ new Date();
|
|
590
586
|
const { requestBody, queryParams, warnings } = await this.getArgs(options);
|
|
591
587
|
const {
|
|
592
588
|
value: audio,
|
|
@@ -601,7 +597,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
601
597
|
const queryString = new URLSearchParams(queryParams).toString();
|
|
602
598
|
return queryString ? `${baseUrl}?${queryString}` : baseUrl;
|
|
603
599
|
})(),
|
|
604
|
-
headers: combineHeaders2(
|
|
600
|
+
headers: combineHeaders2(this.config.headers?.(), options.headers),
|
|
605
601
|
body: requestBody,
|
|
606
602
|
failedResponseHandler: deepgramFailedResponseHandler,
|
|
607
603
|
successfulResponseHandler: createBinaryResponseHandler(),
|
|
@@ -609,7 +605,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
609
605
|
fetch: this.config.fetch
|
|
610
606
|
});
|
|
611
607
|
const headerNumber = (name) => {
|
|
612
|
-
const value = responseHeaders
|
|
608
|
+
const value = responseHeaders?.[name];
|
|
613
609
|
if (value == null) {
|
|
614
610
|
return void 0;
|
|
615
611
|
}
|
|
@@ -619,7 +615,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
619
615
|
const charCount = headerNumber("dg-char-count");
|
|
620
616
|
const breaksApplied = headerNumber("dg-breaks-applied");
|
|
621
617
|
const pronunciationsApplied = headerNumber("dg-pronunciations-applied");
|
|
622
|
-
const additionalModelUuids =
|
|
618
|
+
const additionalModelUuids = responseHeaders?.["dg-additional-model-uuids"]?.split(",");
|
|
623
619
|
return {
|
|
624
620
|
audio,
|
|
625
621
|
warnings,
|
|
@@ -634,16 +630,16 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
634
630
|
},
|
|
635
631
|
providerMetadata: {
|
|
636
632
|
deepgram: {
|
|
637
|
-
...
|
|
638
|
-
...
|
|
633
|
+
...responseHeaders?.["dg-model-name"] ? { modelName: responseHeaders["dg-model-name"] } : {},
|
|
634
|
+
...responseHeaders?.["dg-model-uuid"] ? { modelUuid: responseHeaders["dg-model-uuid"] } : {},
|
|
639
635
|
...additionalModelUuids ? { additionalModelUuids } : {},
|
|
640
636
|
...charCount != null ? { charCount } : {},
|
|
641
637
|
...breaksApplied != null ? { breaksApplied } : {},
|
|
642
638
|
...pronunciationsApplied != null ? { pronunciationsApplied } : {},
|
|
643
|
-
...
|
|
639
|
+
...responseHeaders?.["dg-pronunciation-warnings"] ? {
|
|
644
640
|
pronunciationWarnings: responseHeaders["dg-pronunciation-warnings"]
|
|
645
641
|
} : {},
|
|
646
|
-
...
|
|
642
|
+
...responseHeaders?.["dg-request-id"] ? { requestId: responseHeaders["dg-request-id"] } : {}
|
|
647
643
|
}
|
|
648
644
|
}
|
|
649
645
|
};
|
|
@@ -651,7 +647,7 @@ var DeepgramSpeechModel = class _DeepgramSpeechModel {
|
|
|
651
647
|
};
|
|
652
648
|
|
|
653
649
|
// src/version.ts
|
|
654
|
-
var VERSION = true ? "3.1.
|
|
650
|
+
var VERSION = true ? "3.1.21" : "0.0.0-test";
|
|
655
651
|
|
|
656
652
|
// src/deepgram-provider.ts
|
|
657
653
|
function createDeepgram(options = {}) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deepgram-provider.ts","../src/deepgram-transcription-model.ts","../src/deepgram-error.ts","../src/deepgram-transcription-model-options.ts","../src/deepgram-speech-model.ts","../src/deepgram-speech-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type TranscriptionModelV4,\n type SpeechModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { DeepgramTranscriptionModel } from './deepgram-transcription-model';\nimport type { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramSpeechModel } from './deepgram-speech-model';\nimport type { DeepgramSpeechModelId } from './deepgram-speech-options';\nimport { VERSION } from './version';\n\nexport interface DeepgramProvider extends ProviderV4 {\n (\n modelId: DeepgramTranscriptionModelId,\n settings?: {},\n ): {\n transcription: DeepgramTranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: DeepgramTranscriptionModelId): TranscriptionModelV4;\n\n /**\n * Creates a model for speech generation.\n */\n speech(modelId: DeepgramSpeechModelId): SpeechModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface DeepgramProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create 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 = 'v4' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n // Required ProviderV4 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 provider.textEmbeddingModel = provider.embeddingModel;\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/**\n * Default Deepgram provider instance.\n */\nexport const deepgram = createDeepgram();\n","import type { SharedV4Warning, TranscriptionModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { DeepgramTranscriptionAPITypes } from './deepgram-api-types';\nimport type { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { deepgramTranscriptionModelOptionsSchema } from './deepgram-transcription-model-options';\nimport type { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\n\ninterface DeepgramTranscriptionModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: DeepgramTranscriptionModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: DeepgramTranscriptionModelId;\n config: DeepgramTranscriptionModelConfig;\n }) {\n return new DeepgramTranscriptionModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: DeepgramTranscriptionModelId,\n private readonly config: DeepgramTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramTranscriptionModelOptionsSchema,\n });\n\n const body: DeepgramTranscriptionAPITypes = {\n model: this.modelId,\n };\n\n // Add provider-specific options\n if (deepgramOptions) {\n body.detect_entities = deepgramOptions.detectEntities ?? undefined;\n body.detect_language = deepgramOptions.detectLanguage ?? undefined;\n body.diarize = deepgramOptions.diarize ?? undefined;\n body.filler_words = deepgramOptions.fillerWords ?? undefined;\n body.intents = deepgramOptions.intents ?? undefined;\n body.keyterm = deepgramOptions.keyterm ?? undefined;\n body.language = deepgramOptions.language ?? undefined;\n body.paragraphs = deepgramOptions.paragraphs ?? undefined;\n body.punctuate = deepgramOptions.punctuate ?? undefined;\n body.redact = deepgramOptions.redact ?? undefined;\n body.replace = deepgramOptions.replace ?? undefined;\n body.search = deepgramOptions.search ?? undefined;\n body.sentiment = deepgramOptions.sentiment ?? 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\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<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['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:\n response.results?.channels.at(0)?.detected_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 detected_language: z.string().nullish(),\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\n// Error shape returned by the Deepgram APIs, e.g.\n// {\"err_code\":\"INVALID_QUERY_PARAMETER\",\"err_msg\":\"Invalid 'model' value of ...\",\"request_id\":\"...\"}\nexport const deepgramErrorDataSchema = z.object({\n err_code: z.string(),\n err_msg: z.string(),\n request_id: z.string().optional(),\n});\n\nexport type DeepgramErrorData = z.infer<typeof deepgramErrorDataSchema>;\n\nexport const deepgramFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepgramErrorDataSchema,\n errorToMessage: data => data.err_msg,\n});\n","import { z } from 'zod/v4';\n\n// https://developers.deepgram.com/docs/pre-recorded-audio#results\nexport const deepgramTranscriptionModelOptionsSchema = z.object({\n /** Language to use for transcription. If not specified, Deepgram defaults to English. Use `detectLanguage: true` to enable automatic language detection. */\n language: z.string().nullish(),\n /** Whether to enable automatic language detection. When true, Deepgram will detect the language of the audio. */\n detectLanguage: z.boolean().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 DeepgramTranscriptionModelOptions = z.infer<\n typeof deepgramTranscriptionModelOptionsSchema\n>;\n","import type { SpeechModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport type { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { deepgramSpeechModelOptionsSchema } from './deepgram-speech-model-options';\nimport type { DeepgramSpeechModelId } from './deepgram-speech-options';\n\ninterface DeepgramSpeechModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Deepgram embeds voice and language in the model ID\n// (`<family>-<voice>-<language>`, e.g. `aura-2-thalia-en`). Bare family IDs\n// compose the upstream model ID from the voice and language call options.\nconst VOICE_FAMILY_IDS = new Set<string>(['aura', 'aura-2']);\n\nexport class DeepgramSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: DeepgramSpeechModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: DeepgramSpeechModelId;\n config: DeepgramSpeechModelConfig;\n }) {\n return new DeepgramSpeechModel(options.modelId, options.config);\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<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramSpeechModelOptionsSchema,\n });\n\n // Compose the upstream model ID from voice/language when a bare voice\n // family ID is used; full voice IDs (e.g. `aura-2-thalia-en`) pass through.\n let upstreamModelId: string = this.modelId;\n if (VOICE_FAMILY_IDS.has(this.modelId)) {\n const trimmedVoice = voice?.trim();\n if (!trimmedVoice) {\n throw new Error(\n `Deepgram speech model \"${this.modelId}\" requires a \\`voice\\` to be set (e.g. voice: 'thalia').`,\n );\n }\n if (language === 'auto') {\n warnings.push({\n type: 'compatibility',\n feature: 'language',\n details: `Deepgram TTS models do not support automatic language detection. Language \"en\" was used instead.`,\n });\n }\n upstreamModelId = `${this.modelId}-${trimmedVoice}-${language && language !== 'auto' ? language : 'en'}`;\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: upstreamModelId,\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 - only relevant for full voice model IDs, where\n // the voice is embedded in the model ID and a voice param cannot compose.\n if (upstreamModelId === this.modelId && 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 // Map speed to Deepgram's speed query parameter. Deepgram does not\n // support it for all languages and validates the value upstream.\n if (speed != null) {\n queryParams.speed = String(speed);\n }\n\n // Handle language - full voice model IDs are already language-specific;\n // language was already consumed when composing from a voice family ID.\n if (upstreamModelId === this.modelId && 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<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['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 // Deepgram returns usage and model details in response headers\n // (dg-project-id deliberately excluded: account identifier).\n const headerNumber = (name: string): number | undefined => {\n const value = responseHeaders?.[name];\n if (value == null) {\n return undefined;\n }\n const parsed = Number(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n };\n const charCount = headerNumber('dg-char-count');\n const breaksApplied = headerNumber('dg-breaks-applied');\n const pronunciationsApplied = headerNumber('dg-pronunciations-applied');\n const additionalModelUuids =\n responseHeaders?.['dg-additional-model-uuids']?.split(',');\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 providerMetadata: {\n deepgram: {\n ...(responseHeaders?.['dg-model-name']\n ? { modelName: responseHeaders['dg-model-name'] }\n : {}),\n ...(responseHeaders?.['dg-model-uuid']\n ? { modelUuid: responseHeaders['dg-model-uuid'] }\n : {}),\n ...(additionalModelUuids ? { additionalModelUuids } : {}),\n ...(charCount != null ? { charCount } : {}),\n ...(breaksApplied != null ? { breaksApplied } : {}),\n ...(pronunciationsApplied != null ? { pronunciationsApplied } : {}),\n ...(responseHeaders?.['dg-pronunciation-warnings']\n ? {\n pronunciationWarnings:\n responseHeaders['dg-pronunciation-warnings'],\n }\n : {}),\n ...(responseHeaders?.['dg-request-id']\n ? { requestId: responseHeaders['dg-request-id'] }\n : {}),\n },\n },\n };\n }\n}\n","import { z } from 'zod/v4';\n\n// https://developers.deepgram.com/reference/text-to-speech/speak-request\nexport const deepgramSpeechModelOptionsSchema = 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 DeepgramSpeechModelOptions = z.infer<\n typeof deepgramSpeechModelOptionsSchema\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","z","combineHeaders","parseProviderOptions","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","combineHeaders"]}
|
|
1
|
+
{"version":3,"sources":["../src/deepgram-provider.ts","../src/deepgram-transcription-model.ts","../src/deepgram-error.ts","../src/deepgram-transcription-model-options.ts","../src/deepgram-speech-model.ts","../src/deepgram-speech-model-options.ts","../src/version.ts"],"sourcesContent":["import {\n NoSuchModelError,\n type TranscriptionModelV4,\n type SpeechModelV4,\n type ProviderV4,\n} from '@ai-sdk/provider';\nimport {\n loadApiKey,\n withUserAgentSuffix,\n type FetchFunction,\n} from '@ai-sdk/provider-utils';\nimport { DeepgramTranscriptionModel } from './deepgram-transcription-model';\nimport type { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\nimport { DeepgramSpeechModel } from './deepgram-speech-model';\nimport type { DeepgramSpeechModelId } from './deepgram-speech-options';\nimport { VERSION } from './version';\n\nexport interface DeepgramProvider extends ProviderV4 {\n (\n modelId: DeepgramTranscriptionModelId,\n settings?: {},\n ): {\n transcription: DeepgramTranscriptionModel;\n };\n\n /**\n * Creates a model for transcription.\n */\n transcription(modelId: DeepgramTranscriptionModelId): TranscriptionModelV4;\n\n /**\n * Creates a model for speech generation.\n */\n speech(modelId: DeepgramSpeechModelId): SpeechModelV4;\n\n /**\n * @deprecated Use `embeddingModel` instead.\n */\n textEmbeddingModel(modelId: string): never;\n}\n\nexport interface DeepgramProviderSettings {\n /**\n * API key for authenticating requests.\n */\n apiKey?: string;\n\n /**\n * Custom headers to include in the requests.\n */\n headers?: Record<string, string>;\n\n /**\n * Custom fetch implementation. You can use it as a middleware to intercept requests,\n * or to provide a custom fetch implementation for e.g. testing.\n */\n fetch?: FetchFunction;\n}\n\n/**\n * Create 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 = 'v4' as const;\n provider.transcription = createTranscriptionModel;\n provider.transcriptionModel = createTranscriptionModel;\n provider.speech = createSpeechModel;\n provider.speechModel = createSpeechModel;\n\n // Required ProviderV4 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 provider.textEmbeddingModel = provider.embeddingModel;\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/**\n * Default Deepgram provider instance.\n */\nexport const deepgram = createDeepgram();\n","import type { SharedV4Warning, TranscriptionModelV4 } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createJsonResponseHandler,\n parseProviderOptions,\n postToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\nimport type { DeepgramTranscriptionAPITypes } from './deepgram-api-types';\nimport type { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { deepgramTranscriptionModelOptionsSchema } from './deepgram-transcription-model-options';\nimport type { DeepgramTranscriptionModelId } from './deepgram-transcription-options';\n\ninterface DeepgramTranscriptionModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\nexport class DeepgramTranscriptionModel implements TranscriptionModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: DeepgramTranscriptionModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: DeepgramTranscriptionModelId;\n config: DeepgramTranscriptionModelConfig;\n }) {\n return new DeepgramTranscriptionModel(options.modelId, options.config);\n }\n\n constructor(\n readonly modelId: DeepgramTranscriptionModelId,\n private readonly config: DeepgramTranscriptionModelConfig,\n ) {}\n\n private async getArgs({\n providerOptions,\n }: Parameters<TranscriptionModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramTranscriptionModelOptionsSchema,\n });\n\n const body: DeepgramTranscriptionAPITypes = {\n model: this.modelId,\n };\n\n // Add provider-specific options\n if (deepgramOptions) {\n body.detect_entities = deepgramOptions.detectEntities ?? undefined;\n body.detect_language = deepgramOptions.detectLanguage ?? undefined;\n body.diarize = deepgramOptions.diarize ?? undefined;\n body.filler_words = deepgramOptions.fillerWords ?? undefined;\n body.intents = deepgramOptions.intents ?? undefined;\n body.keyterm = deepgramOptions.keyterm ?? undefined;\n body.language = deepgramOptions.language ?? undefined;\n body.paragraphs = deepgramOptions.paragraphs ?? undefined;\n body.punctuate = deepgramOptions.punctuate ?? undefined;\n body.redact = deepgramOptions.redact ?? undefined;\n body.replace = deepgramOptions.replace ?? undefined;\n body.search = deepgramOptions.search ?? undefined;\n body.sentiment = deepgramOptions.sentiment ?? 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\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<TranscriptionModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<TranscriptionModelV4['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:\n response.results?.channels.at(0)?.detected_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 detected_language: z.string().nullish(),\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\n// Error shape returned by the Deepgram APIs, e.g.\n// {\"err_code\":\"INVALID_QUERY_PARAMETER\",\"err_msg\":\"Invalid 'model' value of ...\",\"request_id\":\"...\"}\nexport const deepgramErrorDataSchema = z.object({\n err_code: z.string(),\n err_msg: z.string(),\n request_id: z.string().optional(),\n});\n\nexport type DeepgramErrorData = z.infer<typeof deepgramErrorDataSchema>;\n\nexport const deepgramFailedResponseHandler = createJsonErrorResponseHandler({\n errorSchema: deepgramErrorDataSchema,\n errorToMessage: data => data.err_msg,\n});\n","import { z } from 'zod/v4';\n\n// https://developers.deepgram.com/docs/pre-recorded-audio#results\nexport const deepgramTranscriptionModelOptionsSchema = z.object({\n /** Language to use for transcription. If not specified, Deepgram defaults to English. Use `detectLanguage: true` to enable automatic language detection. */\n language: z.string().nullish(),\n /** Whether to enable automatic language detection. When true, Deepgram will detect the language of the audio. */\n detectLanguage: z.boolean().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 DeepgramTranscriptionModelOptions = z.infer<\n typeof deepgramTranscriptionModelOptionsSchema\n>;\n","import type { SpeechModelV4, SharedV4Warning } from '@ai-sdk/provider';\nimport {\n combineHeaders,\n createBinaryResponseHandler,\n parseProviderOptions,\n postJsonToApi,\n serializeModelOptions,\n WORKFLOW_SERIALIZE,\n WORKFLOW_DESERIALIZE,\n} from '@ai-sdk/provider-utils';\nimport type { DeepgramConfig } from './deepgram-config';\nimport { deepgramFailedResponseHandler } from './deepgram-error';\nimport { deepgramSpeechModelOptionsSchema } from './deepgram-speech-model-options';\nimport type { DeepgramSpeechModelId } from './deepgram-speech-options';\n\ninterface DeepgramSpeechModelConfig extends DeepgramConfig {\n _internal?: {\n currentDate?: () => Date;\n };\n}\n\n// Deepgram embeds voice and language in the model ID\n// (`<family>-<voice>-<language>`, e.g. `aura-2-thalia-en`). Bare family IDs\n// compose the upstream model ID from the voice and language call options.\nconst VOICE_FAMILY_IDS = new Set<string>(['aura', 'aura-2']);\n\nexport class DeepgramSpeechModel implements SpeechModelV4 {\n readonly specificationVersion = 'v4';\n\n get provider(): string {\n return this.config.provider;\n }\n\n static [WORKFLOW_SERIALIZE](model: DeepgramSpeechModel) {\n return serializeModelOptions({\n modelId: model.modelId,\n config: model.config,\n });\n }\n\n static [WORKFLOW_DESERIALIZE](options: {\n modelId: DeepgramSpeechModelId;\n config: DeepgramSpeechModelConfig;\n }) {\n return new DeepgramSpeechModel(options.modelId, options.config);\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<SpeechModelV4['doGenerate']>[0]) {\n const warnings: SharedV4Warning[] = [];\n\n // Parse provider options\n const deepgramOptions = await parseProviderOptions({\n provider: 'deepgram',\n providerOptions,\n schema: deepgramSpeechModelOptionsSchema,\n });\n\n // Compose the upstream model ID from voice/language when a bare voice\n // family ID is used; full voice IDs (e.g. `aura-2-thalia-en`) pass through.\n let upstreamModelId: string = this.modelId;\n if (VOICE_FAMILY_IDS.has(this.modelId)) {\n const trimmedVoice = voice?.trim();\n if (!trimmedVoice) {\n throw new Error(\n `Deepgram speech model \"${this.modelId}\" requires a \\`voice\\` to be set (e.g. voice: 'thalia').`,\n );\n }\n if (language === 'auto') {\n warnings.push({\n type: 'compatibility',\n feature: 'language',\n details: `Deepgram TTS models do not support automatic language detection. Language \"en\" was used instead.`,\n });\n }\n upstreamModelId = `${this.modelId}-${trimmedVoice}-${language && language !== 'auto' ? language : 'en'}`;\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: upstreamModelId,\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 - only relevant for full voice model IDs, where\n // the voice is embedded in the model ID and a voice param cannot compose.\n if (upstreamModelId === this.modelId && 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 // Map speed to Deepgram's speed query parameter. Deepgram does not\n // support it for all languages and validates the value upstream.\n if (speed != null) {\n queryParams.speed = String(speed);\n }\n\n // Handle language - full voice model IDs are already language-specific;\n // language was already consumed when composing from a voice family ID.\n if (upstreamModelId === this.modelId && 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<SpeechModelV4['doGenerate']>[0],\n ): Promise<Awaited<ReturnType<SpeechModelV4['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 // Deepgram returns usage and model details in response headers\n // (dg-project-id deliberately excluded: account identifier).\n const headerNumber = (name: string): number | undefined => {\n const value = responseHeaders?.[name];\n if (value == null) {\n return undefined;\n }\n const parsed = Number(value);\n return Number.isNaN(parsed) ? undefined : parsed;\n };\n const charCount = headerNumber('dg-char-count');\n const breaksApplied = headerNumber('dg-breaks-applied');\n const pronunciationsApplied = headerNumber('dg-pronunciations-applied');\n const additionalModelUuids =\n responseHeaders?.['dg-additional-model-uuids']?.split(',');\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 providerMetadata: {\n deepgram: {\n ...(responseHeaders?.['dg-model-name']\n ? { modelName: responseHeaders['dg-model-name'] }\n : {}),\n ...(responseHeaders?.['dg-model-uuid']\n ? { modelUuid: responseHeaders['dg-model-uuid'] }\n : {}),\n ...(additionalModelUuids ? { additionalModelUuids } : {}),\n ...(charCount != null ? { charCount } : {}),\n ...(breaksApplied != null ? { breaksApplied } : {}),\n ...(pronunciationsApplied != null ? { pronunciationsApplied } : {}),\n ...(responseHeaders?.['dg-pronunciation-warnings']\n ? {\n pronunciationWarnings:\n responseHeaders['dg-pronunciation-warnings'],\n }\n : {}),\n ...(responseHeaders?.['dg-request-id']\n ? { requestId: responseHeaders['dg-request-id'] }\n : {}),\n },\n },\n };\n }\n}\n","import { z } from 'zod/v4';\n\n// https://developers.deepgram.com/reference/text-to-speech/speak-request\nexport const deepgramSpeechModelOptionsSchema = 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 DeepgramSpeechModelOptions = z.infer<\n typeof deepgramSpeechModelOptionsSchema\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,EACE;AAAA,OAIK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OAEK;;;ACTP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,KAAAA,UAAS;;;ACVlB,SAAS,SAAS;AAClB,SAAS,sCAAsC;AAIxC,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,UAAU,EAAE,OAAO;AAAA,EACnB,SAAS,EAAE,OAAO;AAAA,EAClB,YAAY,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAIM,IAAM,gCAAgC,+BAA+B;AAAA,EAC1E,aAAa;AAAA,EACb,gBAAgB,UAAQ,KAAK;AAC/B,CAAC;;;AChBD,SAAS,KAAAC,UAAS;AAGX,IAAM,0CAA0CA,GAAE,OAAO;AAAA;AAAA,EAE9D,UAAUA,GAAE,OAAO,EAAE,QAAQ;AAAA;AAAA,EAE7B,gBAAgBA,GAAE,QAAQ,EAAE,QAAQ;AAAA;AAAA,EAEpC,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;;;AFjBM,IAAM,6BAAN,MAAM,4BAA2D;AAAA,EAqBtE,YACW,SACQ,QACjB;AAFS;AACQ;AAtBnB,SAAS,uBAAuB;AAAA,EAuB7B;AAAA,EArBH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,QAAQ,kBAAkB,EAAE,OAAmC;AAC7D,WAAO,sBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQ,oBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,4BAA2B,QAAQ,SAAS,QAAQ,MAAM;AAAA,EACvE;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,EACF,GAAsD;AACpD,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,IACd;AAGA,QAAI,iBAAiB;AACnB,WAAK,kBAAkB,gBAAgB,kBAAkB;AACzD,WAAK,kBAAkB,gBAAgB,kBAAkB;AACzD,WAAK,UAAU,gBAAgB,WAAW;AAC1C,WAAK,eAAe,gBAAgB,eAAe;AACnD,WAAK,UAAU,gBAAgB,WAAW;AAC1C,WAAK,UAAU,gBAAgB,WAAW;AAC1C,WAAK,WAAW,gBAAgB,YAAY;AAC5C,WAAK,aAAa,gBAAgB,cAAc;AAChD,WAAK,YAAY,gBAAgB,aAAa;AAC9C,WAAK,SAAS,gBAAgB,UAAU;AACxC,WAAK,UAAU,gBAAgB,WAAW;AAC1C,WAAK,SAAS,gBAAgB,UAAU;AACxC,WAAK,YAAY,gBAAgB,aAAa;AAC9C,WAAK,eAAe,gBAAgB,eAAe;AACnD,WAAK,YAAY,gBAAgB,aAAa;AAC9C,WAAK,SAAS,gBAAgB,UAAU;AACxC,WAAK,aAAa,gBAAgB,cAAc;AAChD,WAAK,YAAY,gBAAgB,YAAY;AAAA,IAC/C;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;AAClE,UAAM,cAAc,KAAK,OAAO,WAAW,cAAc,KAAK,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,UAAU,GAAG,QAAQ,OAAO;AAAA,QAC1D,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,MACE,SAAS,SAAS,SAAS,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,GAAG,cAAc;AAAA,MACtE,UACE,SAAS,SAAS,SAAS,CAAC,EAAE,aAAa,CAAC,EAAE,OAAO,IAAI,WAAS;AAAA,QAChE,MAAM,KAAK;AAAA,QACX,aAAa,KAAK;AAAA,QAClB,WAAW,KAAK;AAAA,MAClB,EAAE,KAAK,CAAC;AAAA,MACV,UACE,SAAS,SAAS,SAAS,GAAG,CAAC,GAAG,qBAAqB;AAAA,MACzD,mBAAmB,SAAS,UAAU,YAAY;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,sCAAsCC,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,mBAAmBA,GAAE,OAAO,EAAE,QAAQ;AAAA,QACtC,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;;;AGxLD;AAAA,EACE,kBAAAC;AAAA,EACA;AAAA,EACA,wBAAAC;AAAA,EACA;AAAA,EACA,yBAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,wBAAAC;AAAA,OACK;;;ACTP,SAAS,KAAAC,UAAS;AAGX,IAAM,mCAAmCA,GAAE,OAAO;AAAA;AAAA,EAEvD,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;;;ADID,IAAM,mBAAmB,oBAAI,IAAY,CAAC,QAAQ,QAAQ,CAAC;AAEpD,IAAM,sBAAN,MAAM,qBAA6C;AAAA,EAqBxD,YACW,SACQ,QACjB;AAFS;AACQ;AAtBnB,SAAS,uBAAuB;AAAA,EAuB7B;AAAA,EArBH,IAAI,WAAmB;AACrB,WAAO,KAAK,OAAO;AAAA,EACrB;AAAA,EAEA,QAAQC,mBAAkB,EAAE,OAA4B;AACtD,WAAOC,uBAAsB;AAAA,MAC3B,SAAS,MAAM;AAAA,MACf,QAAQ,MAAM;AAAA,IAChB,CAAC;AAAA,EACH;AAAA,EAEA,QAAQC,qBAAoB,EAAE,SAG3B;AACD,WAAO,IAAI,qBAAoB,QAAQ,SAAS,QAAQ,MAAM;AAAA,EAChE;AAAA,EAOA,MAAc,QAAQ;AAAA,IACpB;AAAA,IACA;AAAA,IACA,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAA+C;AAC7C,UAAM,WAA8B,CAAC;AAGrC,UAAM,kBAAkB,MAAMC,sBAAqB;AAAA,MACjD,UAAU;AAAA,MACV;AAAA,MACA,QAAQ;AAAA,IACV,CAAC;AAID,QAAI,kBAA0B,KAAK;AACnC,QAAI,iBAAiB,IAAI,KAAK,OAAO,GAAG;AACtC,YAAM,eAAe,OAAO,KAAK;AACjC,UAAI,CAAC,cAAc;AACjB,cAAM,IAAI;AAAA,UACR,0BAA0B,KAAK,OAAO;AAAA,QACxC;AAAA,MACF;AACA,UAAI,aAAa,QAAQ;AACvB,iBAAS,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS;AAAA,QACX,CAAC;AAAA,MACH;AACA,wBAAkB,GAAG,KAAK,OAAO,IAAI,YAAY,IAAI,YAAY,aAAa,SAAS,WAAW,IAAI;AAAA,IACxG;AAGA,UAAM,cAAc;AAAA,MAClB;AAAA,IACF;AAGA,UAAM,cAAsC;AAAA,MAC1C,OAAO;AAAA,IACT;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,cAAc,YAAY,UAAU,YAAY;AACtD,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,WAAW,YAAY,UAAU,YAAY,KAAK;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,WAAW,YAAY,UAAU,YAAY,KAAK;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,oBAAoB,KAAK,WAAW,SAAS,UAAU,KAAK,SAAS;AACvE,eAAS,KAAK;AAAA,QACZ,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS,6EAA6E,KAAK;AAAA,MAC7F,CAAC;AAAA,IACH;AAIA,QAAI,SAAS,MAAM;AACjB,kBAAY,QAAQ,OAAO,KAAK;AAAA,IAClC;AAIA,QAAI,oBAAoB,KAAK,WAAW,UAAU;AAChD,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;AAC3D,UAAM,cAAc,KAAK,OAAO,WAAW,cAAc,KAAK,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,UAAU,GAAG,QAAQ,OAAO;AAAA,MAChE,MAAM;AAAA,MACN,uBAAuB;AAAA,MACvB,2BAA2B,4BAA4B;AAAA,MACvD,aAAa,QAAQ;AAAA,MACrB,OAAO,KAAK,OAAO;AAAA,IACrB,CAAC;AAID,UAAM,eAAe,CAAC,SAAqC;AACzD,YAAM,QAAQ,kBAAkB,IAAI;AACpC,UAAI,SAAS,MAAM;AACjB,eAAO;AAAA,MACT;AACA,YAAM,SAAS,OAAO,KAAK;AAC3B,aAAO,OAAO,MAAM,MAAM,IAAI,SAAY;AAAA,IAC5C;AACA,UAAM,YAAY,aAAa,eAAe;AAC9C,UAAM,gBAAgB,aAAa,mBAAmB;AACtD,UAAM,wBAAwB,aAAa,2BAA2B;AACtE,UAAM,uBACJ,kBAAkB,2BAA2B,GAAG,MAAM,GAAG;AAE3D,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,MACA,kBAAkB;AAAA,QAChB,UAAU;AAAA,UACR,GAAI,kBAAkB,eAAe,IACjC,EAAE,WAAW,gBAAgB,eAAe,EAAE,IAC9C,CAAC;AAAA,UACL,GAAI,kBAAkB,eAAe,IACjC,EAAE,WAAW,gBAAgB,eAAe,EAAE,IAC9C,CAAC;AAAA,UACL,GAAI,uBAAuB,EAAE,qBAAqB,IAAI,CAAC;AAAA,UACvD,GAAI,aAAa,OAAO,EAAE,UAAU,IAAI,CAAC;AAAA,UACzC,GAAI,iBAAiB,OAAO,EAAE,cAAc,IAAI,CAAC;AAAA,UACjD,GAAI,yBAAyB,OAAO,EAAE,sBAAsB,IAAI,CAAC;AAAA,UACjE,GAAI,kBAAkB,2BAA2B,IAC7C;AAAA,YACE,uBACE,gBAAgB,2BAA2B;AAAA,UAC/C,IACA,CAAC;AAAA,UACL,GAAI,kBAAkB,eAAe,IACjC,EAAE,WAAW,gBAAgB,eAAe,EAAE,IAC9C,CAAC;AAAA,QACP;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;;;AEtiBO,IAAM,UACX,OACI,WACA;;;ANyDC,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;AACA,WAAS,qBAAqB,SAAS;AAEvC,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","z","combineHeaders","parseProviderOptions","serializeModelOptions","WORKFLOW_SERIALIZE","WORKFLOW_DESERIALIZE","z","WORKFLOW_SERIALIZE","serializeModelOptions","WORKFLOW_DESERIALIZE","parseProviderOptions","combineHeaders"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/deepgram",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.21",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@ai-sdk/provider": "4.0.
|
|
33
|
-
"@ai-sdk/provider-utils": "5.0.
|
|
32
|
+
"@ai-sdk/provider": "4.0.19",
|
|
33
|
+
"@ai-sdk/provider-utils": "5.0.50"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@ai-sdk/test-server": "2.0.
|
|
36
|
+
"@ai-sdk/test-server": "2.0.2",
|
|
37
37
|
"@types/node": "22.19.19",
|
|
38
38
|
"@vercel/ai-tsconfig": "0.0.0",
|
|
39
39
|
"tsup": "^8.5.1",
|