@deepgram/sdk 5.0.0-beta.3 → 5.0.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +50 -9
  2. package/dist/cjs/BaseClient.js +2 -2
  3. package/dist/cjs/CustomClient.js +7 -0
  4. package/dist/cjs/api/resources/agent/resources/v1/client/Client.d.ts +2 -0
  5. package/dist/cjs/api/resources/agent/resources/v1/client/Client.js +2 -2
  6. package/dist/cjs/api/resources/agent/resources/v1/types/AgentV1Settings.d.ts +2 -32
  7. package/dist/cjs/api/resources/agent/resources/v1/types/AgentV1UpdateSpeak.d.ts +2 -11
  8. package/dist/cjs/api/resources/listen/resources/v1/client/Client.d.ts +2 -0
  9. package/dist/cjs/api/resources/listen/resources/v1/client/Client.js +2 -2
  10. package/dist/cjs/api/resources/listen/resources/v2/client/Client.d.ts +2 -0
  11. package/dist/cjs/api/resources/listen/resources/v2/client/Client.js +2 -2
  12. package/dist/cjs/api/resources/speak/resources/v1/client/Client.d.ts +2 -0
  13. package/dist/cjs/api/resources/speak/resources/v1/client/Client.js +2 -2
  14. package/dist/cjs/api/types/OpenAiSpeakProvider.d.ts +27 -0
  15. package/dist/cjs/api/types/OpenAiSpeakProvider.js +21 -0
  16. package/dist/cjs/api/types/OpenAiThinkProvider.d.ts +23 -0
  17. package/dist/cjs/api/types/OpenAiThinkProvider.js +18 -0
  18. package/dist/cjs/api/types/SpeakSettingsV1Provider.d.ts +1 -1
  19. package/dist/cjs/api/types/ThinkSettingsV1.d.ts +2 -2
  20. package/dist/cjs/api/types/ThinkSettingsV1Provider.d.ts +19 -0
  21. package/dist/cjs/api/types/ThinkSettingsV1Provider.js +3 -0
  22. package/dist/cjs/api/types/index.d.ts +3 -1
  23. package/dist/cjs/api/types/index.js +3 -1
  24. package/dist/cjs/index.d.ts +2 -0
  25. package/dist/cjs/index.js +6 -0
  26. package/dist/cjs/middleware/adapters/express.d.ts +103 -0
  27. package/dist/cjs/middleware/adapters/express.js +141 -0
  28. package/dist/cjs/middleware/adapters/fastify.d.ts +32 -0
  29. package/dist/cjs/middleware/adapters/fastify.js +194 -0
  30. package/dist/cjs/middleware/adapters/http.d.ts +153 -0
  31. package/dist/cjs/middleware/adapters/http.js +192 -0
  32. package/dist/cjs/middleware/core/ProxyHandler.d.ts +35 -0
  33. package/dist/cjs/middleware/core/ProxyHandler.js +225 -0
  34. package/dist/cjs/middleware/core/TokenManager.d.ts +29 -0
  35. package/dist/cjs/middleware/core/TokenManager.js +110 -0
  36. package/dist/cjs/middleware/core/WebSocketProxy.d.ts +32 -0
  37. package/dist/cjs/middleware/core/WebSocketProxy.js +169 -0
  38. package/dist/cjs/middleware/core/jwt.d.ts +71 -0
  39. package/dist/cjs/middleware/core/jwt.js +136 -0
  40. package/dist/cjs/middleware/core/types.d.ts +37 -0
  41. package/dist/cjs/middleware/core/types.js +2 -0
  42. package/dist/cjs/middleware/index.d.ts +55 -0
  43. package/dist/cjs/middleware/index.js +75 -0
  44. package/dist/cjs/tests/manual/test-custom-baseurl.js +124 -0
  45. package/dist/cjs/version.d.ts +1 -1
  46. package/dist/cjs/version.js +1 -1
  47. package/dist/esm/BaseClient.mjs +2 -2
  48. package/dist/esm/CustomClient.mjs +7 -0
  49. package/dist/esm/api/resources/agent/resources/v1/client/Client.d.mts +2 -0
  50. package/dist/esm/api/resources/agent/resources/v1/client/Client.mjs +2 -2
  51. package/dist/esm/api/resources/agent/resources/v1/types/AgentV1Settings.d.mts +2 -32
  52. package/dist/esm/api/resources/agent/resources/v1/types/AgentV1UpdateSpeak.d.mts +2 -11
  53. package/dist/esm/api/resources/listen/resources/v1/client/Client.d.mts +2 -0
  54. package/dist/esm/api/resources/listen/resources/v1/client/Client.mjs +2 -2
  55. package/dist/esm/api/resources/listen/resources/v2/client/Client.d.mts +2 -0
  56. package/dist/esm/api/resources/listen/resources/v2/client/Client.mjs +2 -2
  57. package/dist/esm/api/resources/speak/resources/v1/client/Client.d.mts +2 -0
  58. package/dist/esm/api/resources/speak/resources/v1/client/Client.mjs +2 -2
  59. package/dist/esm/api/types/OpenAiSpeakProvider.d.mts +27 -0
  60. package/dist/esm/api/types/OpenAiSpeakProvider.mjs +18 -0
  61. package/dist/esm/api/types/OpenAiThinkProvider.d.mts +23 -0
  62. package/dist/esm/api/types/OpenAiThinkProvider.mjs +15 -0
  63. package/dist/esm/api/types/SpeakSettingsV1Provider.d.mts +1 -1
  64. package/dist/esm/api/types/ThinkSettingsV1.d.mts +2 -2
  65. package/dist/esm/api/types/ThinkSettingsV1Provider.d.mts +19 -0
  66. package/dist/esm/api/types/ThinkSettingsV1Provider.mjs +2 -0
  67. package/dist/esm/api/types/index.d.mts +3 -1
  68. package/dist/esm/api/types/index.mjs +3 -1
  69. package/dist/esm/index.d.mts +2 -0
  70. package/dist/esm/index.mjs +6 -0
  71. package/dist/esm/middleware/adapters/express.d.mts +103 -0
  72. package/dist/esm/middleware/adapters/express.mjs +136 -0
  73. package/dist/esm/middleware/adapters/fastify.d.mts +32 -0
  74. package/dist/esm/middleware/adapters/fastify.mjs +157 -0
  75. package/dist/esm/middleware/adapters/http.d.mts +153 -0
  76. package/dist/esm/middleware/adapters/http.mjs +187 -0
  77. package/dist/esm/middleware/core/ProxyHandler.d.mts +35 -0
  78. package/dist/esm/middleware/core/ProxyHandler.mjs +218 -0
  79. package/dist/esm/middleware/core/TokenManager.d.mts +29 -0
  80. package/dist/esm/middleware/core/TokenManager.mjs +106 -0
  81. package/dist/esm/middleware/core/WebSocketProxy.d.mts +32 -0
  82. package/dist/esm/middleware/core/WebSocketProxy.mjs +162 -0
  83. package/dist/esm/middleware/core/jwt.d.mts +71 -0
  84. package/dist/esm/middleware/core/jwt.mjs +99 -0
  85. package/dist/esm/middleware/core/types.d.mts +37 -0
  86. package/dist/esm/middleware/core/types.mjs +1 -0
  87. package/dist/esm/middleware/index.d.mts +55 -0
  88. package/dist/esm/middleware/index.mjs +59 -0
  89. package/dist/esm/version.d.mts +1 -1
  90. package/dist/esm/version.mjs +1 -1
  91. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SDK_VERSION = void 0;
4
- exports.SDK_VERSION = "0.0.283";
4
+ exports.SDK_VERSION = "0.0.320";
@@ -6,8 +6,8 @@ export function normalizeClientOptions(options) {
6
6
  const headers = mergeHeaders({
7
7
  "X-Fern-Language": "JavaScript",
8
8
  "X-Fern-SDK-Name": "",
9
- "X-Fern-SDK-Version": "0.0.283",
10
- "User-Agent": "/0.0.283",
9
+ "X-Fern-SDK-Version": "0.0.320",
10
+ "User-Agent": "/0.0.320",
11
11
  "X-Fern-Runtime": core.RUNTIME.type,
12
12
  "X-Fern-Runtime-Version": core.RUNTIME.version,
13
13
  }, options === null || options === void 0 ? void 0 : options.headers);
@@ -797,6 +797,13 @@ class WrappedSpeakV1Client extends SpeakV1Client {
797
797
  class WrappedSpeakV1Socket extends SpeakV1Socket {
798
798
  constructor(args) {
799
799
  super(args);
800
+ // CRITICAL: Remove the autogenerated handleMessage that tries to parse EVERYTHING as JSON!
801
+ // The autogenerated Socket class assumes all messages are text/JSON, but TTS sends binary audio.
802
+ // We must remove that broken handler immediately after the parent constructor runs.
803
+ const socketAny = this;
804
+ if (socketAny.handleMessage) {
805
+ this.socket.removeEventListener("message", socketAny.handleMessage);
806
+ }
800
807
  this.setupBinaryHandling();
801
808
  }
802
809
  setupBinaryHandling() {
@@ -6,6 +6,8 @@ export declare namespace V1Client {
6
6
  type Options = BaseClientOptions;
7
7
  interface ConnectArgs {
8
8
  Authorization: string;
9
+ /** Additional query parameters to send with the websocket connect request. */
10
+ queryParams?: Record<string, unknown>;
9
11
  /** Arbitrary headers to send with the websocket connect request. */
10
12
  headers?: Record<string, string>;
11
13
  /** Enable debug mode on the websocket. Defaults to false. */
@@ -25,12 +25,12 @@ export class V1Client {
25
25
  connect(args) {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
27
  var _a, _b;
28
- const { headers, debug, reconnectAttempts } = args;
28
+ const { queryParams, headers, debug, reconnectAttempts } = args;
29
29
  const _headers = mergeHeaders(mergeOnlyDefinedHeaders({ Authorization: args.Authorization }), headers);
30
30
  const socket = new core.ReconnectingWebSocket({
31
31
  url: core.url.join((_a = (yield core.Supplier.get(this._options.baseUrl))) !== null && _a !== void 0 ? _a : ((_b = (yield core.Supplier.get(this._options.environment))) !== null && _b !== void 0 ? _b : environments.DeepgramEnvironment.Production).agent, "/v1/agent/converse"),
32
32
  protocols: [],
33
- queryParameters: {},
33
+ queryParameters: queryParams !== null && queryParams !== void 0 ? queryParams : {},
34
34
  headers: _headers,
35
35
  options: { debug: debug !== null && debug !== void 0 ? debug : false, maxRetries: reconnectAttempts !== null && reconnectAttempts !== void 0 ? reconnectAttempts : 30 },
36
36
  });
@@ -122,37 +122,7 @@ export declare namespace AgentV1Settings {
122
122
  interface Listen {
123
123
  provider?: Deepgram.agent.AgentV1SettingsAgentListenProvider;
124
124
  }
125
- type Think = {
126
- provider: Record<string, unknown>;
127
- endpoint?: {
128
- url?: string | undefined;
129
- headers?: Record<string, string> | undefined;
130
- } | undefined;
131
- functions?: Record<string, unknown>[] | undefined;
132
- prompt?: string | undefined;
133
- context_length?: ("max" | number) | undefined;
134
- } | {
135
- provider: Record<string, unknown>;
136
- endpoint?: {
137
- url?: string | undefined;
138
- headers?: Record<string, string> | undefined;
139
- } | undefined;
140
- functions?: Record<string, unknown>[] | undefined;
141
- prompt?: string | undefined;
142
- context_length?: ("max" | number) | undefined;
143
- }[];
144
- type Speak = {
145
- provider: Record<string, unknown>;
146
- endpoint?: {
147
- url?: string | undefined;
148
- headers?: Record<string, string> | undefined;
149
- } | undefined;
150
- } | {
151
- provider: Record<string, unknown>;
152
- endpoint?: {
153
- url?: string | undefined;
154
- headers?: Record<string, string> | undefined;
155
- } | undefined;
156
- }[];
125
+ type Think = Deepgram.ThinkSettingsV1 | Deepgram.ThinkSettingsV1[];
126
+ type Speak = Deepgram.SpeakSettingsV1 | Deepgram.SpeakSettingsV1[];
157
127
  }
158
128
  }
@@ -1,18 +1,9 @@
1
+ import type * as Deepgram from "../../../../../index.mjs";
1
2
  export interface AgentV1UpdateSpeak {
2
3
  /** Message type identifier for updating the speak model */
3
4
  type: "UpdateSpeak";
4
5
  speak: AgentV1UpdateSpeak.Speak;
5
6
  }
6
7
  export declare namespace AgentV1UpdateSpeak {
7
- interface Speak {
8
- /** TTS provider configuration (Deepgram, ElevenLabs, Cartesia, OpenAI, or AWS Polly) */
9
- provider: Record<string, unknown>;
10
- endpoint?: Speak.Endpoint;
11
- }
12
- namespace Speak {
13
- interface Endpoint {
14
- url?: string;
15
- headers?: Record<string, string>;
16
- }
17
- }
8
+ type Speak = Deepgram.SpeakSettingsV1 | Deepgram.SpeakSettingsV1[];
18
9
  }
@@ -34,6 +34,8 @@ export declare namespace V1Client {
34
34
  vad_events?: string;
35
35
  version?: string;
36
36
  Authorization: string;
37
+ /** Additional query parameters to send with the websocket connect request. */
38
+ queryParams?: Record<string, unknown>;
37
39
  /** Arbitrary headers to send with the websocket connect request. */
38
40
  headers?: Record<string, string>;
39
41
  /** Enable debug mode on the websocket. Defaults to false. */
@@ -25,7 +25,7 @@ export class V1Client {
25
25
  connect(args) {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
27
  var _a, _b;
28
- const { callback, callback_method: callbackMethod, channels, detect_entities: detectEntities, diarize, dictation, encoding, endpointing, extra, interim_results: interimResults, keyterm, keywords, language, mip_opt_out: mipOptOut, model, multichannel, numerals, profanity_filter: profanityFilter, punctuate, redact, replace, sample_rate: sampleRate, search, smart_format: smartFormat, tag, utterance_end_ms: utteranceEndMs, vad_events: vadEvents, version, headers, debug, reconnectAttempts, } = args;
28
+ const { callback, callback_method: callbackMethod, channels, detect_entities: detectEntities, diarize, dictation, encoding, endpointing, extra, interim_results: interimResults, keyterm, keywords, language, mip_opt_out: mipOptOut, model, multichannel, numerals, profanity_filter: profanityFilter, punctuate, redact, replace, sample_rate: sampleRate, search, smart_format: smartFormat, tag, utterance_end_ms: utteranceEndMs, vad_events: vadEvents, version, queryParams, headers, debug, reconnectAttempts, } = args;
29
29
  const _queryParams = {
30
30
  callback,
31
31
  callback_method: callbackMethod,
@@ -60,7 +60,7 @@ export class V1Client {
60
60
  const socket = new core.ReconnectingWebSocket({
61
61
  url: core.url.join((_a = (yield core.Supplier.get(this._options.baseUrl))) !== null && _a !== void 0 ? _a : ((_b = (yield core.Supplier.get(this._options.environment))) !== null && _b !== void 0 ? _b : environments.DeepgramEnvironment.Production).production, "/v1/listen"),
62
62
  protocols: [],
63
- queryParameters: _queryParams,
63
+ queryParameters: Object.assign(Object.assign({}, _queryParams), queryParams),
64
64
  headers: _headers,
65
65
  options: { debug: debug !== null && debug !== void 0 ? debug : false, maxRetries: reconnectAttempts !== null && reconnectAttempts !== void 0 ? reconnectAttempts : 30 },
66
66
  });
@@ -14,6 +14,8 @@ export declare namespace V2Client {
14
14
  mip_opt_out?: string;
15
15
  tag?: string;
16
16
  Authorization: string;
17
+ /** Additional query parameters to send with the websocket connect request. */
18
+ queryParams?: Record<string, unknown>;
17
19
  /** Arbitrary headers to send with the websocket connect request. */
18
20
  headers?: Record<string, string>;
19
21
  /** Enable debug mode on the websocket. Defaults to false. */
@@ -20,7 +20,7 @@ export class V2Client {
20
20
  connect(args) {
21
21
  return __awaiter(this, void 0, void 0, function* () {
22
22
  var _a, _b;
23
- const { model, encoding, sample_rate: sampleRate, eager_eot_threshold: eagerEotThreshold, eot_threshold: eotThreshold, eot_timeout_ms: eotTimeoutMs, keyterm, mip_opt_out: mipOptOut, tag, headers, debug, reconnectAttempts, } = args;
23
+ const { model, encoding, sample_rate: sampleRate, eager_eot_threshold: eagerEotThreshold, eot_threshold: eotThreshold, eot_timeout_ms: eotTimeoutMs, keyterm, mip_opt_out: mipOptOut, tag, queryParams, headers, debug, reconnectAttempts, } = args;
24
24
  const _queryParams = {
25
25
  model,
26
26
  encoding,
@@ -36,7 +36,7 @@ export class V2Client {
36
36
  const socket = new core.ReconnectingWebSocket({
37
37
  url: core.url.join((_a = (yield core.Supplier.get(this._options.baseUrl))) !== null && _a !== void 0 ? _a : ((_b = (yield core.Supplier.get(this._options.environment))) !== null && _b !== void 0 ? _b : environments.DeepgramEnvironment.Production).production, "/v2/listen"),
38
38
  protocols: [],
39
- queryParameters: _queryParams,
39
+ queryParameters: Object.assign(Object.assign({}, _queryParams), queryParams),
40
40
  headers: _headers,
41
41
  options: { debug: debug !== null && debug !== void 0 ? debug : false, maxRetries: reconnectAttempts !== null && reconnectAttempts !== void 0 ? reconnectAttempts : 30 },
42
42
  });
@@ -10,6 +10,8 @@ export declare namespace V1Client {
10
10
  model?: string;
11
11
  sample_rate?: string;
12
12
  Authorization: string;
13
+ /** Additional query parameters to send with the websocket connect request. */
14
+ queryParams?: Record<string, unknown>;
13
15
  /** Arbitrary headers to send with the websocket connect request. */
14
16
  headers?: Record<string, string>;
15
17
  /** Enable debug mode on the websocket. Defaults to false. */
@@ -25,7 +25,7 @@ export class V1Client {
25
25
  connect(args) {
26
26
  return __awaiter(this, void 0, void 0, function* () {
27
27
  var _a, _b;
28
- const { encoding, mip_opt_out: mipOptOut, model, sample_rate: sampleRate, headers, debug, reconnectAttempts, } = args;
28
+ const { encoding, mip_opt_out: mipOptOut, model, sample_rate: sampleRate, queryParams, headers, debug, reconnectAttempts, } = args;
29
29
  const _queryParams = {
30
30
  encoding,
31
31
  mip_opt_out: mipOptOut,
@@ -36,7 +36,7 @@ export class V1Client {
36
36
  const socket = new core.ReconnectingWebSocket({
37
37
  url: core.url.join((_a = (yield core.Supplier.get(this._options.baseUrl))) !== null && _a !== void 0 ? _a : ((_b = (yield core.Supplier.get(this._options.environment))) !== null && _b !== void 0 ? _b : environments.DeepgramEnvironment.Production).production, "/v1/speak"),
38
38
  protocols: [],
39
- queryParameters: _queryParams,
39
+ queryParameters: Object.assign(Object.assign({}, _queryParams), queryParams),
40
40
  headers: _headers,
41
41
  options: { debug: debug !== null && debug !== void 0 ? debug : false, maxRetries: reconnectAttempts !== null && reconnectAttempts !== void 0 ? reconnectAttempts : 30 },
42
42
  });
@@ -0,0 +1,27 @@
1
+ export interface OpenAiSpeakProvider {
2
+ type: "open_ai";
3
+ /** The REST API version for the OpenAI text-to-speech API */
4
+ version?: "v1";
5
+ /** OpenAI TTS model */
6
+ model: OpenAiSpeakProvider.Model;
7
+ /** OpenAI voice */
8
+ voice: OpenAiSpeakProvider.Voice;
9
+ }
10
+ export declare namespace OpenAiSpeakProvider {
11
+ /** OpenAI TTS model */
12
+ const Model: {
13
+ readonly Tts1: "tts-1";
14
+ readonly Tts1Hd: "tts-1-hd";
15
+ };
16
+ type Model = (typeof Model)[keyof typeof Model] | string;
17
+ /** OpenAI voice */
18
+ const Voice: {
19
+ readonly Alloy: "alloy";
20
+ readonly Echo: "echo";
21
+ readonly Fable: "fable";
22
+ readonly Onyx: "onyx";
23
+ readonly Nova: "nova";
24
+ readonly Shimmer: "shimmer";
25
+ };
26
+ type Voice = (typeof Voice)[keyof typeof Voice] | string;
27
+ }
@@ -0,0 +1,18 @@
1
+ // This file was auto-generated by Fern from our API Definition.
2
+ export var OpenAiSpeakProvider;
3
+ (function (OpenAiSpeakProvider) {
4
+ /** OpenAI TTS model */
5
+ OpenAiSpeakProvider.Model = {
6
+ Tts1: "tts-1",
7
+ Tts1Hd: "tts-1-hd",
8
+ };
9
+ /** OpenAI voice */
10
+ OpenAiSpeakProvider.Voice = {
11
+ Alloy: "alloy",
12
+ Echo: "echo",
13
+ Fable: "fable",
14
+ Onyx: "onyx",
15
+ Nova: "nova",
16
+ Shimmer: "shimmer",
17
+ };
18
+ })(OpenAiSpeakProvider || (OpenAiSpeakProvider = {}));
@@ -0,0 +1,23 @@
1
+ export interface OpenAiThinkProvider {
2
+ type: "open_ai";
3
+ /** The REST API version for the OpenAI chat completions API */
4
+ version?: "v1";
5
+ /** OpenAI model to use */
6
+ model: OpenAiThinkProvider.Model;
7
+ /** OpenAI temperature (0-2) */
8
+ temperature?: number;
9
+ }
10
+ export declare namespace OpenAiThinkProvider {
11
+ /** OpenAI model to use */
12
+ const Model: {
13
+ readonly Gpt5: "gpt-5";
14
+ readonly Gpt5Mini: "gpt-5-mini";
15
+ readonly Gpt5Nano: "gpt-5-nano";
16
+ readonly Gpt41: "gpt-4.1";
17
+ readonly Gpt41Mini: "gpt-4.1-mini";
18
+ readonly Gpt41Nano: "gpt-4.1-nano";
19
+ readonly Gpt4O: "gpt-4o";
20
+ readonly Gpt4OMini: "gpt-4o-mini";
21
+ };
22
+ type Model = (typeof Model)[keyof typeof Model] | string;
23
+ }
@@ -0,0 +1,15 @@
1
+ // This file was auto-generated by Fern from our API Definition.
2
+ export var OpenAiThinkProvider;
3
+ (function (OpenAiThinkProvider) {
4
+ /** OpenAI model to use */
5
+ OpenAiThinkProvider.Model = {
6
+ Gpt5: "gpt-5",
7
+ Gpt5Mini: "gpt-5-mini",
8
+ Gpt5Nano: "gpt-5-nano",
9
+ Gpt41: "gpt-4.1",
10
+ Gpt41Mini: "gpt-4.1-mini",
11
+ Gpt41Nano: "gpt-4.1-nano",
12
+ Gpt4O: "gpt-4o",
13
+ Gpt4OMini: "gpt-4o-mini",
14
+ };
15
+ })(OpenAiThinkProvider || (OpenAiThinkProvider = {}));
@@ -10,7 +10,7 @@ export declare namespace SpeakSettingsV1Provider {
10
10
  interface Cartesia extends Deepgram.Cartesia {
11
11
  type: "cartesia";
12
12
  }
13
- interface OpenAi extends Deepgram.OpenAi {
13
+ interface OpenAi extends Deepgram.OpenAiSpeakProvider {
14
14
  type: "open_ai";
15
15
  }
16
16
  interface AwsPolly extends Deepgram.AwsPollySpeakProvider {
@@ -1,6 +1,6 @@
1
+ import type * as Deepgram from "../index.mjs";
1
2
  export interface ThinkSettingsV1 {
2
- /** Think provider configuration (OpenAI, AWS Bedrock, Anthropic, Google, or Groq) */
3
- provider: Record<string, unknown>;
3
+ provider: Deepgram.ThinkSettingsV1Provider;
4
4
  /** Optional for non-Deepgram LLM providers. When present, must include url field and headers object */
5
5
  endpoint?: ThinkSettingsV1.Endpoint;
6
6
  functions?: ThinkSettingsV1.Functions.Item[];
@@ -0,0 +1,19 @@
1
+ import type * as Deepgram from "../index.mjs";
2
+ export type ThinkSettingsV1Provider = Deepgram.ThinkSettingsV1Provider.OpenAi | Deepgram.ThinkSettingsV1Provider.AwsBedrock | Deepgram.ThinkSettingsV1Provider.Anthropic | Deepgram.ThinkSettingsV1Provider.Google | Deepgram.ThinkSettingsV1Provider.Groq;
3
+ export declare namespace ThinkSettingsV1Provider {
4
+ interface OpenAi extends Deepgram.OpenAiThinkProvider {
5
+ type: "open_ai";
6
+ }
7
+ interface AwsBedrock extends Deepgram.AwsBedrockThinkProvider {
8
+ type: "aws_bedrock";
9
+ }
10
+ interface Anthropic extends Deepgram.Anthropic {
11
+ type: "anthropic";
12
+ }
13
+ interface Google extends Deepgram.Google {
14
+ type: "google";
15
+ }
16
+ interface Groq extends Deepgram.Groq {
17
+ type: "groq";
18
+ }
19
+ }
@@ -0,0 +1,2 @@
1
+ // This file was auto-generated by Fern from our API Definition.
2
+ export {};
@@ -88,7 +88,8 @@ export * from "./ListProjectMembersV1Response.mjs";
88
88
  export * from "./ListProjectPurchasesV1Response.mjs";
89
89
  export * from "./ListProjectRequestsV1Response.mjs";
90
90
  export * from "./ListProjectsV1Response.mjs";
91
- export * from "./OpenAi.mjs";
91
+ export * from "./OpenAiSpeakProvider.mjs";
92
+ export * from "./OpenAiThinkProvider.mjs";
92
93
  export * from "./ProjectRequestResponse.mjs";
93
94
  export * from "./ReadV1Request.mjs";
94
95
  export * from "./ReadV1RequestText.mjs";
@@ -108,6 +109,7 @@ export * from "./SpeakV1Model.mjs";
108
109
  export * from "./SpeakV1Response.mjs";
109
110
  export * from "./SpeakV1SampleRate.mjs";
110
111
  export * from "./ThinkSettingsV1.mjs";
112
+ export * from "./ThinkSettingsV1Provider.mjs";
111
113
  export * from "./UpdateProjectMemberScopesV1Response.mjs";
112
114
  export * from "./UpdateProjectV1Response.mjs";
113
115
  export * from "./UsageBreakdownV1Response.mjs";
@@ -88,7 +88,8 @@ export * from "./ListProjectMembersV1Response.mjs";
88
88
  export * from "./ListProjectPurchasesV1Response.mjs";
89
89
  export * from "./ListProjectRequestsV1Response.mjs";
90
90
  export * from "./ListProjectsV1Response.mjs";
91
- export * from "./OpenAi.mjs";
91
+ export * from "./OpenAiSpeakProvider.mjs";
92
+ export * from "./OpenAiThinkProvider.mjs";
92
93
  export * from "./ProjectRequestResponse.mjs";
93
94
  export * from "./ReadV1Request.mjs";
94
95
  export * from "./ReadV1RequestText.mjs";
@@ -108,6 +109,7 @@ export * from "./SpeakV1Model.mjs";
108
109
  export * from "./SpeakV1Response.mjs";
109
110
  export * from "./SpeakV1SampleRate.mjs";
110
111
  export * from "./ThinkSettingsV1.mjs";
112
+ export * from "./ThinkSettingsV1Provider.mjs";
111
113
  export * from "./UpdateProjectMemberScopesV1Response.mjs";
112
114
  export * from "./UpdateProjectV1Response.mjs";
113
115
  export * from "./UsageBreakdownV1Response.mjs";
@@ -1,4 +1,6 @@
1
1
  export * as Deepgram from "./api/index.mjs";
2
+ export * from "./api/types/index.mjs";
3
+ export * from "./api/resources/index.mjs";
2
4
  export type { BaseClientOptions, BaseRequestOptions } from "./BaseClient.mjs";
3
5
  export { DeepgramClient as DefaultDeepgramClient } from "./Client.mjs";
4
6
  export { CustomDeepgramClient as DeepgramClient } from "./CustomClient.mjs";
@@ -1,4 +1,10 @@
1
+ // Export everything under Deepgram namespace for backwards compatibility
1
2
  export * as Deepgram from "./api/index.mjs";
3
+ // ALSO export all types directly for better discoverability and IDE autocomplete
4
+ // This allows: import { ListenV1Response } from "@deepgram/sdk"
5
+ // While still supporting: import { Deepgram } from "@deepgram/sdk"; type Response = Deepgram.ListenV1Response;
6
+ export * from "./api/types/index.mjs";
7
+ export * from "./api/resources/index.mjs";
2
8
  export { DeepgramClient as DefaultDeepgramClient } from "./Client.mjs";
3
9
  export { CustomDeepgramClient as DeepgramClient } from "./CustomClient.mjs";
4
10
  export { DeepgramEnvironment } from "./environments.mjs";
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Express middleware for proxying Deepgram API requests.
3
+ *
4
+ * @packageDocumentation
5
+ *
6
+ * **Peer Dependencies Required:**
7
+ * ```bash
8
+ * npm install express
9
+ * # or
10
+ * pnpm add express
11
+ * ```
12
+ *
13
+ * This module provides Express-compatible middleware for proxying requests to the
14
+ * Deepgram API, including REST endpoints and WebSocket connections.
15
+ */
16
+ import type { IncomingMessage, Server, ServerResponse } from "node:http";
17
+ import type { Duplex } from "node:stream";
18
+ import type { MiddlewareOptions } from "../core/types.mjs";
19
+ /**
20
+ * Express middleware type
21
+ */
22
+ export type ExpressMiddleware = (req: IncomingMessage, res: ServerResponse, next: (error?: Error) => void) => void | Promise<void>;
23
+ /**
24
+ * WebSocket upgrade handler type
25
+ */
26
+ export type UpgradeHandler = (req: IncomingMessage, socket: Duplex, head: Buffer) => void;
27
+ /**
28
+ * Create Express middleware for proxying Deepgram API requests
29
+ *
30
+ * @param options - Middleware configuration options
31
+ * @returns Express middleware function
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * import express from 'express';
36
+ * import { createDeepgramProxy, createWebSocketHandler } from '@deepgram/sdk';
37
+ *
38
+ * const app = express();
39
+ * const proxyOptions = {
40
+ * apiKey: process.env.DEEPGRAM_API_KEY!,
41
+ * enableTokenAuth: true
42
+ * };
43
+ *
44
+ * // REST API proxy
45
+ * app.use('/api/deepgram', createDeepgramProxy(proxyOptions));
46
+ *
47
+ * // WebSocket upgrade handler
48
+ * const server = app.listen(3000);
49
+ * server.on('upgrade', createWebSocketHandler(proxyOptions));
50
+ * ```
51
+ */
52
+ export declare function createDeepgramProxy(options: MiddlewareOptions): ExpressMiddleware;
53
+ /**
54
+ * Create WebSocket upgrade handler for Express
55
+ *
56
+ * This must be registered on the HTTP server, not the Express app.
57
+ *
58
+ * @param options - Middleware configuration options
59
+ * @returns Upgrade handler function
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * import express from 'express';
64
+ * import { createWebSocketHandler } from '@deepgram/sdk';
65
+ *
66
+ * const app = express();
67
+ * const server = app.listen(3000);
68
+ *
69
+ * // Register WebSocket handler on the server
70
+ * server.on('upgrade', createWebSocketHandler({
71
+ * apiKey: process.env.DEEPGRAM_API_KEY!
72
+ * }));
73
+ * ```
74
+ */
75
+ export declare function createWebSocketHandler(options: MiddlewareOptions): UpgradeHandler;
76
+ /**
77
+ * Combined helper that returns both middleware and upgrade handler
78
+ *
79
+ * @param options - Middleware configuration options
80
+ * @returns Object with middleware and upgrade handler
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * import express from 'express';
85
+ * import { createDeepgramMiddleware } from '@deepgram/sdk';
86
+ *
87
+ * const app = express();
88
+ * const { middleware, upgradeHandler } = createDeepgramMiddleware({
89
+ * apiKey: process.env.DEEPGRAM_API_KEY!,
90
+ * enableTokenAuth: true
91
+ * });
92
+ *
93
+ * app.use('/api/deepgram', middleware);
94
+ *
95
+ * const server = app.listen(3000);
96
+ * server.on('upgrade', upgradeHandler);
97
+ * ```
98
+ */
99
+ export declare function createDeepgramMiddleware(options: MiddlewareOptions): {
100
+ middleware: ExpressMiddleware;
101
+ upgradeHandler: UpgradeHandler;
102
+ server: (httpServer: Server) => void;
103
+ };
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Express middleware for proxying Deepgram API requests.
3
+ *
4
+ * @packageDocumentation
5
+ *
6
+ * **Peer Dependencies Required:**
7
+ * ```bash
8
+ * npm install express
9
+ * # or
10
+ * pnpm add express
11
+ * ```
12
+ *
13
+ * This module provides Express-compatible middleware for proxying requests to the
14
+ * Deepgram API, including REST endpoints and WebSocket connections.
15
+ */
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ import { ProxyHandler } from "../core/ProxyHandler.mjs";
26
+ import { TokenManager } from "../core/TokenManager.mjs";
27
+ import { WebSocketProxy } from "../core/WebSocketProxy.mjs";
28
+ /**
29
+ * Create Express middleware for proxying Deepgram API requests
30
+ *
31
+ * @param options - Middleware configuration options
32
+ * @returns Express middleware function
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * import express from 'express';
37
+ * import { createDeepgramProxy, createWebSocketHandler } from '@deepgram/sdk';
38
+ *
39
+ * const app = express();
40
+ * const proxyOptions = {
41
+ * apiKey: process.env.DEEPGRAM_API_KEY!,
42
+ * enableTokenAuth: true
43
+ * };
44
+ *
45
+ * // REST API proxy
46
+ * app.use('/api/deepgram', createDeepgramProxy(proxyOptions));
47
+ *
48
+ * // WebSocket upgrade handler
49
+ * const server = app.listen(3000);
50
+ * server.on('upgrade', createWebSocketHandler(proxyOptions));
51
+ * ```
52
+ */
53
+ export function createDeepgramProxy(options) {
54
+ const proxyHandler = new ProxyHandler(options);
55
+ const tokenManager = options.enableTokenAuth
56
+ ? new TokenManager(options)
57
+ : null;
58
+ return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
59
+ try {
60
+ // Handle token generation requests
61
+ if (options.enableTokenAuth &&
62
+ req.url === "/token" &&
63
+ req.method === "GET") {
64
+ yield tokenManager.handleTokenRequest(req, res);
65
+ return;
66
+ }
67
+ // Handle all other requests (proxy to Deepgram)
68
+ yield proxyHandler.handleRequest(req, res);
69
+ }
70
+ catch (error) {
71
+ next(error instanceof Error ? error : new Error(String(error)));
72
+ }
73
+ });
74
+ }
75
+ /**
76
+ * Create WebSocket upgrade handler for Express
77
+ *
78
+ * This must be registered on the HTTP server, not the Express app.
79
+ *
80
+ * @param options - Middleware configuration options
81
+ * @returns Upgrade handler function
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * import express from 'express';
86
+ * import { createWebSocketHandler } from '@deepgram/sdk';
87
+ *
88
+ * const app = express();
89
+ * const server = app.listen(3000);
90
+ *
91
+ * // Register WebSocket handler on the server
92
+ * server.on('upgrade', createWebSocketHandler({
93
+ * apiKey: process.env.DEEPGRAM_API_KEY!
94
+ * }));
95
+ * ```
96
+ */
97
+ export function createWebSocketHandler(options) {
98
+ const wsProxy = new WebSocketProxy(options);
99
+ return (req, socket, head) => {
100
+ wsProxy.handleUpgrade(req, socket, head);
101
+ };
102
+ }
103
+ /**
104
+ * Combined helper that returns both middleware and upgrade handler
105
+ *
106
+ * @param options - Middleware configuration options
107
+ * @returns Object with middleware and upgrade handler
108
+ *
109
+ * @example
110
+ * ```typescript
111
+ * import express from 'express';
112
+ * import { createDeepgramMiddleware } from '@deepgram/sdk';
113
+ *
114
+ * const app = express();
115
+ * const { middleware, upgradeHandler } = createDeepgramMiddleware({
116
+ * apiKey: process.env.DEEPGRAM_API_KEY!,
117
+ * enableTokenAuth: true
118
+ * });
119
+ *
120
+ * app.use('/api/deepgram', middleware);
121
+ *
122
+ * const server = app.listen(3000);
123
+ * server.on('upgrade', upgradeHandler);
124
+ * ```
125
+ */
126
+ export function createDeepgramMiddleware(options) {
127
+ const middleware = createDeepgramProxy(options);
128
+ const upgradeHandler = createWebSocketHandler(options);
129
+ return {
130
+ middleware,
131
+ upgradeHandler,
132
+ server: (httpServer) => {
133
+ httpServer.on("upgrade", upgradeHandler);
134
+ },
135
+ };
136
+ }