@elevenlabs/client 0.15.1 → 1.0.0-rc.0

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 (160) hide show
  1. package/README.md +20 -836
  2. package/dist/BaseConversation.d.ts +10 -8
  3. package/dist/BaseConversation.d.ts.map +1 -0
  4. package/dist/BaseConversation.js +392 -0
  5. package/dist/BaseConversation.js.map +1 -0
  6. package/dist/InputController.d.ts +13 -0
  7. package/dist/InputController.d.ts.map +1 -0
  8. package/dist/InputController.js +2 -0
  9. package/dist/InputController.js.map +1 -0
  10. package/dist/OutputController.d.ts +12 -0
  11. package/dist/OutputController.d.ts.map +1 -0
  12. package/dist/OutputController.js +2 -0
  13. package/dist/OutputController.js.map +1 -0
  14. package/dist/TextConversation.d.ts +7 -0
  15. package/dist/TextConversation.d.ts.map +1 -0
  16. package/dist/TextConversation.js +53 -0
  17. package/dist/TextConversation.js.map +1 -0
  18. package/dist/VoiceConversation.d.ts +14 -12
  19. package/dist/VoiceConversation.d.ts.map +1 -0
  20. package/dist/VoiceConversation.js +225 -0
  21. package/dist/VoiceConversation.js.map +1 -0
  22. package/dist/index.d.ts +11 -6
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +20 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/internal.d.ts +8 -0
  27. package/dist/internal.d.ts.map +1 -0
  28. package/dist/internal.js +6 -0
  29. package/dist/internal.js.map +1 -0
  30. package/dist/lib.iife.js +23493 -0
  31. package/dist/lib.iife.js.map +1 -0
  32. package/dist/platform/VoiceSessionSetup.d.ts +35 -0
  33. package/dist/platform/VoiceSessionSetup.d.ts.map +1 -0
  34. package/dist/platform/VoiceSessionSetup.js +74 -0
  35. package/dist/platform/VoiceSessionSetup.js.map +1 -0
  36. package/dist/scribe/connection.d.ts +1 -0
  37. package/dist/scribe/connection.d.ts.map +1 -0
  38. package/dist/scribe/connection.js +363 -0
  39. package/dist/scribe/connection.js.map +1 -0
  40. package/dist/scribe/index.d.ts +1 -0
  41. package/dist/scribe/index.d.ts.map +1 -0
  42. package/dist/scribe/index.js +8 -0
  43. package/dist/scribe/index.js.map +1 -0
  44. package/dist/scribe/scribe.d.ts +1 -0
  45. package/dist/scribe/scribe.d.ts.map +1 -0
  46. package/dist/scribe/scribe.js +193 -0
  47. package/dist/scribe/scribe.js.map +1 -0
  48. package/dist/sourceInfo.d.ts +7 -0
  49. package/dist/sourceInfo.d.ts.map +1 -0
  50. package/dist/sourceInfo.js +9 -0
  51. package/dist/sourceInfo.js.map +1 -0
  52. package/dist/utils/BaseConnection.d.ts +2 -8
  53. package/dist/utils/BaseConnection.d.ts.map +1 -0
  54. package/dist/utils/BaseConnection.js +73 -0
  55. package/dist/utils/BaseConnection.js.map +1 -0
  56. package/dist/utils/ConnectionFactory.d.ts +1 -0
  57. package/dist/utils/ConnectionFactory.d.ts.map +1 -0
  58. package/dist/utils/ConnectionFactory.js +26 -0
  59. package/dist/utils/ConnectionFactory.js.map +1 -0
  60. package/dist/utils/WebRTCConnection.d.ts +6 -1
  61. package/dist/utils/WebRTCConnection.d.ts.map +1 -0
  62. package/dist/utils/WebRTCConnection.js +494 -0
  63. package/dist/utils/WebRTCConnection.js.map +1 -0
  64. package/dist/utils/WebSocketConnection.d.ts +8 -3
  65. package/dist/utils/WebSocketConnection.d.ts.map +1 -0
  66. package/dist/utils/WebSocketConnection.js +155 -0
  67. package/dist/utils/WebSocketConnection.js.map +1 -0
  68. package/dist/utils/applyDelay.d.ts +1 -0
  69. package/dist/utils/applyDelay.d.ts.map +1 -0
  70. package/dist/utils/applyDelay.js +18 -0
  71. package/dist/utils/applyDelay.js.map +1 -0
  72. package/dist/utils/attachConnectionToOutput.d.ts +5 -0
  73. package/dist/utils/attachConnectionToOutput.d.ts.map +1 -0
  74. package/dist/utils/attachConnectionToOutput.js +11 -0
  75. package/dist/utils/attachConnectionToOutput.js.map +1 -0
  76. package/dist/utils/attachInputToConnection.d.ts +6 -0
  77. package/dist/utils/attachInputToConnection.d.ts.map +1 -0
  78. package/dist/utils/attachInputToConnection.js +16 -0
  79. package/dist/utils/attachInputToConnection.js.map +1 -0
  80. package/dist/utils/audio.d.ts +1 -0
  81. package/dist/utils/audio.d.ts.map +1 -0
  82. package/dist/utils/audio.js +16 -0
  83. package/dist/utils/audio.js.map +1 -0
  84. package/dist/utils/audioConcatProcessor.generated.d.ts +1 -0
  85. package/dist/utils/audioConcatProcessor.generated.d.ts.map +1 -0
  86. package/{worklets/audioConcatProcessor.js → dist/utils/audioConcatProcessor.generated.js} +12 -18
  87. package/dist/utils/audioConcatProcessor.generated.js.map +1 -0
  88. package/dist/utils/compatibility.d.ts +1 -0
  89. package/dist/utils/compatibility.d.ts.map +1 -0
  90. package/dist/utils/compatibility.js +16 -0
  91. package/dist/utils/compatibility.js.map +1 -0
  92. package/dist/utils/connection.d.ts +11 -0
  93. package/dist/utils/connection.d.ts.map +1 -0
  94. package/dist/utils/connection.js +14 -0
  95. package/dist/utils/connection.js.map +1 -0
  96. package/dist/utils/createWorkletModuleLoader.d.ts +1 -0
  97. package/dist/utils/createWorkletModuleLoader.d.ts.map +1 -0
  98. package/dist/utils/createWorkletModuleLoader.js +43 -0
  99. package/dist/utils/createWorkletModuleLoader.js.map +1 -0
  100. package/dist/utils/errors.d.ts +1 -0
  101. package/dist/utils/errors.d.ts.map +1 -0
  102. package/dist/utils/errors.js +11 -0
  103. package/dist/utils/errors.js.map +1 -0
  104. package/dist/utils/events.d.ts +2 -3
  105. package/dist/utils/events.d.ts.map +1 -0
  106. package/dist/utils/events.js +4 -0
  107. package/dist/utils/events.js.map +1 -0
  108. package/dist/utils/input.d.ts +22 -11
  109. package/dist/utils/input.d.ts.map +1 -0
  110. package/dist/utils/input.js +181 -0
  111. package/dist/utils/input.js.map +1 -0
  112. package/dist/utils/location.d.ts +5 -0
  113. package/dist/utils/location.d.ts.map +1 -0
  114. package/dist/utils/location.js +31 -0
  115. package/dist/utils/location.js.map +1 -0
  116. package/dist/utils/mergeOptions.d.ts +11 -0
  117. package/dist/utils/mergeOptions.d.ts.map +1 -0
  118. package/dist/utils/mergeOptions.js +38 -0
  119. package/dist/utils/mergeOptions.js.map +1 -0
  120. package/dist/utils/output.d.ts +36 -10
  121. package/dist/utils/output.d.ts.map +1 -0
  122. package/dist/utils/output.js +127 -0
  123. package/dist/utils/output.js.map +1 -0
  124. package/dist/utils/overrides.d.ts +1 -0
  125. package/dist/utils/overrides.d.ts.map +1 -0
  126. package/dist/utils/overrides.js +40 -0
  127. package/dist/utils/overrides.js.map +1 -0
  128. package/dist/utils/postOverallFeedback.d.ts +1 -0
  129. package/dist/utils/postOverallFeedback.d.ts.map +1 -0
  130. package/dist/utils/postOverallFeedback.js +19 -0
  131. package/dist/utils/postOverallFeedback.js.map +1 -0
  132. package/dist/utils/rawAudioProcessor.generated.d.ts +1 -0
  133. package/dist/utils/rawAudioProcessor.generated.d.ts.map +1 -0
  134. package/{worklets/rawAudioProcessor.js → dist/utils/rawAudioProcessor.generated.js} +7 -1
  135. package/dist/utils/rawAudioProcessor.generated.js.map +1 -0
  136. package/dist/utils/scribeAudioProcessor.generated.d.ts +1 -0
  137. package/dist/utils/scribeAudioProcessor.generated.d.ts.map +1 -0
  138. package/{worklets/scribeAudioProcessor.js → dist/utils/scribeAudioProcessor.generated.js} +7 -1
  139. package/dist/utils/scribeAudioProcessor.generated.js.map +1 -0
  140. package/dist/version.d.ts +2 -1
  141. package/dist/version.d.ts.map +1 -0
  142. package/dist/version.js +3 -0
  143. package/dist/version.js.map +1 -0
  144. package/package.json +21 -15
  145. package/.turbo/turbo-build.log +0 -13
  146. package/.turbo/turbo-generate-version.log +0 -4
  147. package/.turbo/turbo-generate-worklets.log +0 -9
  148. package/.turbo/turbo-lint$colon$es.log +0 -6
  149. package/.turbo/turbo-lint$colon$prettier.log +0 -6
  150. package/CHANGELOG.md +0 -42
  151. package/dist/lib.cjs +0 -2
  152. package/dist/lib.cjs.map +0 -1
  153. package/dist/lib.modern.js +0 -2
  154. package/dist/lib.modern.js.map +0 -1
  155. package/dist/lib.module.js +0 -2
  156. package/dist/lib.module.js.map +0 -1
  157. package/dist/lib.umd.js +0 -2
  158. package/dist/lib.umd.js.map +0 -1
  159. package/dist/utils/addLibsamplerateModule.d.ts +0 -1
  160. package/scripts/generateWorklets.js +0 -59
@@ -4,6 +4,7 @@ import type { AgentAudioEvent, AgentChatResponsePartEvent, AgentResponseEvent, C
4
4
  import type { InputConfig } from "./utils/input";
5
5
  import type { OutputConfig } from "./utils/output";
6
6
  export type { Role, Mode, Status, Callbacks } from "@elevenlabs/types";
7
+ export { CALLBACK_KEYS } from "@elevenlabs/types";
7
8
  /** Allows self-hosting the worklets to avoid whitelisting blob: and data: in the CSP script-src */
8
9
  export type AudioWorkletConfig = {
9
10
  workletPaths?: {
@@ -18,7 +19,7 @@ export type ClientToolsConfig = {
18
19
  clientTools: Record<string, (parameters: any) => Promise<string | number | void> | string | number | void>;
19
20
  };
20
21
  export declare function isTextOnly(options: PartialOptions): boolean | undefined;
21
- export declare class BaseConversation {
22
+ export declare abstract class BaseConversation {
22
23
  protected readonly options: Options;
23
24
  protected readonly connection: BaseConnection;
24
25
  protected lastInterruptTimestamp: number;
@@ -55,17 +56,18 @@ export declare class BaseConversation {
55
56
  private onError;
56
57
  getId(): string;
57
58
  isOpen(): boolean;
58
- setVolume: ({ volume }: {
59
+ abstract setVolume(options: {
59
60
  volume: number;
60
- }) => void;
61
- setMicMuted(isMuted: boolean): void;
62
- getInputByteFrequencyData(): Uint8Array;
63
- getOutputByteFrequencyData(): Uint8Array;
64
- getInputVolume(): number;
65
- getOutputVolume(): number;
61
+ }): void;
62
+ abstract setMicMuted(isMuted: boolean): void;
63
+ abstract getInputByteFrequencyData(): Uint8Array;
64
+ abstract getOutputByteFrequencyData(): Uint8Array;
65
+ abstract getInputVolume(): number;
66
+ abstract getOutputVolume(): number;
66
67
  sendFeedback(like: boolean): void;
67
68
  sendContextualUpdate(text: string): void;
68
69
  sendUserMessage(text: string): void;
69
70
  sendUserActivity(): void;
70
71
  sendMCPToolApprovalResult(toolCallId: string, isApproved: boolean): void;
71
72
  }
73
+ //# sourceMappingURL=BaseConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConversation.d.ts","sourceRoot":"","sources":["../src/BaseConversation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,392 @@
1
+ export { CALLBACK_KEYS } from "@elevenlabs/types";
2
+ export function isTextOnly(options) {
3
+ const { textOnly: textOnlyOverride } = options.overrides?.conversation ?? {};
4
+ const { textOnly } = options;
5
+ if (typeof textOnly === "boolean") {
6
+ if (typeof textOnlyOverride === "boolean" &&
7
+ textOnly !== textOnlyOverride) {
8
+ console.warn(`Conflicting textOnly options provided: ${textOnly} via options.textOnly (will be used) and ${textOnlyOverride} via options.overrides.conversation.textOnly (will be ignored)`);
9
+ }
10
+ return textOnly;
11
+ }
12
+ else if (typeof textOnlyOverride === "boolean") {
13
+ return textOnlyOverride;
14
+ }
15
+ else {
16
+ return undefined;
17
+ }
18
+ }
19
+ export class BaseConversation {
20
+ options;
21
+ connection;
22
+ lastInterruptTimestamp = 0;
23
+ mode = "listening";
24
+ status = "connecting";
25
+ volume = 1;
26
+ currentEventId = 1;
27
+ lastFeedbackEventId = 0;
28
+ canSendFeedback = false;
29
+ static getFullOptions(partialOptions) {
30
+ const textOnly = isTextOnly(partialOptions);
31
+ return {
32
+ clientTools: {},
33
+ onConnect: () => { },
34
+ onDebug: () => { },
35
+ onDisconnect: () => { },
36
+ onError: () => { },
37
+ onMessage: () => { },
38
+ onAudio: () => { },
39
+ onModeChange: () => { },
40
+ onStatusChange: () => { },
41
+ onCanSendFeedbackChange: () => { },
42
+ onInterruption: () => { },
43
+ ...partialOptions,
44
+ textOnly,
45
+ overrides: {
46
+ ...partialOptions.overrides,
47
+ conversation: {
48
+ ...partialOptions.overrides?.conversation,
49
+ textOnly,
50
+ },
51
+ },
52
+ };
53
+ }
54
+ constructor(options, connection) {
55
+ this.options = options;
56
+ this.connection = connection;
57
+ if (this.options.onConnect) {
58
+ this.options.onConnect({ conversationId: connection.conversationId });
59
+ }
60
+ this.connection.onMessage(this.onMessage);
61
+ this.connection.onDisconnect(this.endSessionWithDetails);
62
+ this.connection.onModeChange(mode => this.updateMode(mode));
63
+ this.updateStatus("connected");
64
+ }
65
+ endSession() {
66
+ return this.endSessionWithDetails({ reason: "user" });
67
+ }
68
+ endSessionWithDetails = async (details) => {
69
+ if (this.status !== "connected" && this.status !== "connecting")
70
+ return;
71
+ this.updateStatus("disconnecting");
72
+ await this.handleEndSession();
73
+ this.updateStatus("disconnected");
74
+ if (this.options.onDisconnect) {
75
+ this.options.onDisconnect(details);
76
+ }
77
+ };
78
+ async handleEndSession() {
79
+ this.connection.close();
80
+ }
81
+ updateMode(mode) {
82
+ if (mode !== this.mode) {
83
+ this.mode = mode;
84
+ if (this.options.onModeChange) {
85
+ this.options.onModeChange({ mode });
86
+ }
87
+ }
88
+ }
89
+ updateStatus(status) {
90
+ if (status !== this.status) {
91
+ this.status = status;
92
+ if (this.options.onStatusChange) {
93
+ this.options.onStatusChange({ status });
94
+ }
95
+ }
96
+ }
97
+ updateCanSendFeedback() {
98
+ const canSendFeedback = this.currentEventId !== this.lastFeedbackEventId;
99
+ if (this.canSendFeedback !== canSendFeedback) {
100
+ this.canSendFeedback = canSendFeedback;
101
+ if (this.options.onCanSendFeedbackChange) {
102
+ this.options.onCanSendFeedbackChange({ canSendFeedback });
103
+ }
104
+ }
105
+ }
106
+ handleInterruption(event) {
107
+ if (event.interruption_event) {
108
+ this.lastInterruptTimestamp = event.interruption_event.event_id;
109
+ if (this.options.onInterruption) {
110
+ this.options.onInterruption({
111
+ event_id: event.interruption_event.event_id,
112
+ });
113
+ }
114
+ }
115
+ }
116
+ handleAgentResponse(event) {
117
+ if (this.options.onMessage) {
118
+ this.options.onMessage({
119
+ source: "ai",
120
+ role: "agent",
121
+ message: event.agent_response_event.agent_response,
122
+ event_id: event.agent_response_event.event_id,
123
+ });
124
+ }
125
+ }
126
+ handleUserTranscript(event) {
127
+ if (this.options.onMessage) {
128
+ this.options.onMessage({
129
+ source: "user",
130
+ role: "user",
131
+ message: event.user_transcription_event.user_transcript,
132
+ event_id: event.user_transcription_event.event_id,
133
+ });
134
+ }
135
+ }
136
+ handleTentativeAgentResponse(event) {
137
+ if (this.options.onDebug) {
138
+ this.options.onDebug({
139
+ type: "tentative_agent_response",
140
+ response: event.tentative_agent_response_internal_event
141
+ .tentative_agent_response,
142
+ });
143
+ }
144
+ }
145
+ handleVadScore(event) {
146
+ if (this.options.onVadScore) {
147
+ this.options.onVadScore({
148
+ vadScore: event.vad_score_event.vad_score,
149
+ });
150
+ }
151
+ }
152
+ async handleClientToolCall(event) {
153
+ if (Object.prototype.hasOwnProperty.call(this.options.clientTools, event.client_tool_call.tool_name)) {
154
+ try {
155
+ const result = (await this.options.clientTools[event.client_tool_call.tool_name](event.client_tool_call.parameters)) ?? "Client tool execution successful."; // default client-tool call response
156
+ // The API expects result to be a string, so we need to convert it if it's not already a string
157
+ const formattedResult = typeof result === "object" ? JSON.stringify(result) : String(result);
158
+ this.connection.sendMessage({
159
+ type: "client_tool_result",
160
+ tool_call_id: event.client_tool_call.tool_call_id,
161
+ result: formattedResult,
162
+ is_error: false,
163
+ });
164
+ }
165
+ catch (e) {
166
+ this.onError(`Client tool execution failed with following error: ${e?.message}`, {
167
+ clientToolName: event.client_tool_call.tool_name,
168
+ });
169
+ this.connection.sendMessage({
170
+ type: "client_tool_result",
171
+ tool_call_id: event.client_tool_call.tool_call_id,
172
+ result: `Client tool execution failed: ${e?.message}`,
173
+ is_error: true,
174
+ });
175
+ }
176
+ }
177
+ else {
178
+ if (this.options.onUnhandledClientToolCall) {
179
+ this.options.onUnhandledClientToolCall(event.client_tool_call);
180
+ return;
181
+ }
182
+ this.onError(`Client tool with name ${event.client_tool_call.tool_name} is not defined on client`, {
183
+ clientToolName: event.client_tool_call.tool_name,
184
+ });
185
+ this.connection.sendMessage({
186
+ type: "client_tool_result",
187
+ tool_call_id: event.client_tool_call.tool_call_id,
188
+ result: `Client tool with name ${event.client_tool_call.tool_name} is not defined on client`,
189
+ is_error: true,
190
+ });
191
+ }
192
+ }
193
+ handleAudio(event) { }
194
+ handleMCPToolCall(event) {
195
+ if (this.options.onMCPToolCall) {
196
+ this.options.onMCPToolCall(event.mcp_tool_call);
197
+ }
198
+ }
199
+ handleMCPConnectionStatus(event) {
200
+ if (this.options.onMCPConnectionStatus) {
201
+ this.options.onMCPConnectionStatus(event.mcp_connection_status);
202
+ }
203
+ }
204
+ handleAgentToolRequest(event) {
205
+ if (this.options.onAgentToolRequest) {
206
+ this.options.onAgentToolRequest(event.agent_tool_request);
207
+ }
208
+ }
209
+ handleAgentToolResponse(event) {
210
+ if (event.agent_tool_response.tool_name === "end_call") {
211
+ this.endSessionWithDetails({
212
+ reason: "agent",
213
+ context: new CloseEvent("end_call", { reason: "Agent ended the call" }),
214
+ });
215
+ }
216
+ if (this.options.onAgentToolResponse) {
217
+ this.options.onAgentToolResponse(event.agent_tool_response);
218
+ }
219
+ }
220
+ handleConversationMetadata(event) {
221
+ if (this.options.onConversationMetadata) {
222
+ this.options.onConversationMetadata(event.conversation_initiation_metadata_event);
223
+ }
224
+ }
225
+ handleAsrInitiationMetadata(event) {
226
+ if (this.options.onAsrInitiationMetadata) {
227
+ this.options.onAsrInitiationMetadata(event.asr_initiation_metadata_event);
228
+ }
229
+ }
230
+ handleAgentChatResponsePart(event) {
231
+ if (this.options.onAgentChatResponsePart) {
232
+ this.options.onAgentChatResponsePart(event.text_response_part);
233
+ }
234
+ }
235
+ handleErrorEvent(event) {
236
+ const errorType = event.error_event.error_type;
237
+ const message = event.error_event.message || event.error_event.reason || "Unknown error";
238
+ if (errorType === "max_duration_exceeded") {
239
+ this.endSessionWithDetails({
240
+ reason: "error",
241
+ message: message,
242
+ context: new Event("max_duration_exceeded"),
243
+ });
244
+ return;
245
+ }
246
+ this.onError(`Server error: ${message}`, {
247
+ errorType,
248
+ code: event.error_event.code,
249
+ debugMessage: event.error_event.debug_message,
250
+ details: event.error_event.details,
251
+ });
252
+ }
253
+ onMessage = async (parsedEvent) => {
254
+ switch (parsedEvent.type) {
255
+ case "interruption": {
256
+ this.handleInterruption(parsedEvent);
257
+ return;
258
+ }
259
+ case "agent_response": {
260
+ this.handleAgentResponse(parsedEvent);
261
+ return;
262
+ }
263
+ case "user_transcript": {
264
+ this.handleUserTranscript(parsedEvent);
265
+ return;
266
+ }
267
+ case "internal_tentative_agent_response": {
268
+ this.handleTentativeAgentResponse(parsedEvent);
269
+ return;
270
+ }
271
+ case "client_tool_call": {
272
+ try {
273
+ await this.handleClientToolCall(parsedEvent);
274
+ }
275
+ catch (error) {
276
+ this.onError(`Unexpected error in client tool call handling: ${error instanceof Error ? error.message : String(error)}`, {
277
+ clientToolName: parsedEvent.client_tool_call.tool_name,
278
+ toolCallId: parsedEvent.client_tool_call.tool_call_id,
279
+ });
280
+ }
281
+ return;
282
+ }
283
+ case "audio": {
284
+ this.handleAudio(parsedEvent);
285
+ return;
286
+ }
287
+ case "vad_score": {
288
+ this.handleVadScore(parsedEvent);
289
+ return;
290
+ }
291
+ case "ping": {
292
+ this.connection.sendMessage({
293
+ type: "pong",
294
+ event_id: parsedEvent.ping_event.event_id,
295
+ });
296
+ // parsedEvent.ping_event.ping_ms can be used on client side, for example
297
+ // to warn if ping is too high that experience might be degraded.
298
+ return;
299
+ }
300
+ case "mcp_tool_call": {
301
+ this.handleMCPToolCall(parsedEvent);
302
+ return;
303
+ }
304
+ case "mcp_connection_status": {
305
+ this.handleMCPConnectionStatus(parsedEvent);
306
+ return;
307
+ }
308
+ case "agent_tool_request": {
309
+ this.handleAgentToolRequest(parsedEvent);
310
+ return;
311
+ }
312
+ case "agent_tool_response": {
313
+ this.handleAgentToolResponse(parsedEvent);
314
+ return;
315
+ }
316
+ case "conversation_initiation_metadata": {
317
+ this.handleConversationMetadata(parsedEvent);
318
+ return;
319
+ }
320
+ case "asr_initiation_metadata": {
321
+ this.handleAsrInitiationMetadata(parsedEvent);
322
+ return;
323
+ }
324
+ case "agent_chat_response_part": {
325
+ this.handleAgentChatResponsePart(parsedEvent);
326
+ return;
327
+ }
328
+ case "error": {
329
+ this.handleErrorEvent(parsedEvent);
330
+ return;
331
+ }
332
+ default: {
333
+ if (this.options.onDebug) {
334
+ this.options.onDebug(parsedEvent);
335
+ }
336
+ return;
337
+ }
338
+ }
339
+ };
340
+ onError(message, context) {
341
+ console.error(message, context);
342
+ if (this.options.onError) {
343
+ this.options.onError(message, context);
344
+ }
345
+ }
346
+ getId() {
347
+ return this.connection.conversationId;
348
+ }
349
+ isOpen() {
350
+ return this.status === "connected";
351
+ }
352
+ sendFeedback(like) {
353
+ if (!this.canSendFeedback) {
354
+ console.warn(this.lastFeedbackEventId === 0
355
+ ? "Cannot send feedback: the conversation has not started yet."
356
+ : "Cannot send feedback: feedback has already been sent for the current response.");
357
+ return;
358
+ }
359
+ this.connection.sendMessage({
360
+ type: "feedback",
361
+ score: like ? "like" : "dislike",
362
+ event_id: this.currentEventId,
363
+ });
364
+ this.lastFeedbackEventId = this.currentEventId;
365
+ this.updateCanSendFeedback();
366
+ }
367
+ sendContextualUpdate(text) {
368
+ this.connection.sendMessage({
369
+ type: "contextual_update",
370
+ text,
371
+ });
372
+ }
373
+ sendUserMessage(text) {
374
+ this.connection.sendMessage({
375
+ type: "user_message",
376
+ text,
377
+ });
378
+ }
379
+ sendUserActivity() {
380
+ this.connection.sendMessage({
381
+ type: "user_activity",
382
+ });
383
+ }
384
+ sendMCPToolApprovalResult(toolCallId, isApproved) {
385
+ this.connection.sendMessage({
386
+ type: "mcp_tool_approval_result",
387
+ tool_call_id: toolCallId,
388
+ is_approved: isApproved,
389
+ });
390
+ }
391
+ }
392
+ //# sourceMappingURL=BaseConversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseConversation.js","sourceRoot":"","sources":["../src/BaseConversation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { FormatConfig } from "./utils/BaseConnection";
2
+ export type InputDeviceConfig = {
3
+ inputDeviceId?: string;
4
+ preferHeadphonesForIosDevices?: boolean;
5
+ };
6
+ export interface InputController {
7
+ close(): Promise<void>;
8
+ setDevice(config?: Partial<FormatConfig> & InputDeviceConfig): Promise<void>;
9
+ setMuted(isMuted: boolean): Promise<void>;
10
+ isMuted(): boolean;
11
+ getAnalyser(): AnalyserNode | undefined;
12
+ }
13
+ //# sourceMappingURL=InputController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputController.d.ts","sourceRoot":"","sources":["../src/InputController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6BAA6B,CAAC,EAAE,OAAO,CAAC;CACzC,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7E,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,IAAI,OAAO,CAAC;IACnB,WAAW,IAAI,YAAY,GAAG,SAAS,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=InputController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputController.js","sourceRoot":"","sources":["../src/InputController.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { FormatConfig } from "./utils/BaseConnection";
2
+ export type OutputDeviceConfig = {
3
+ outputDeviceId?: string;
4
+ };
5
+ export interface OutputController {
6
+ close(): Promise<void>;
7
+ setDevice(config?: Partial<FormatConfig> & OutputDeviceConfig): Promise<void>;
8
+ setVolume(volume: number): void;
9
+ interrupt(resetDuration?: number): void;
10
+ getAnalyser(): AnalyserNode | undefined;
11
+ }
12
+ //# sourceMappingURL=OutputController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputController.d.ts","sourceRoot":"","sources":["../src/OutputController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,kBAAkB,GAAG;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,WAAW,IAAI,YAAY,GAAG,SAAS,CAAC;CACzC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=OutputController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputController.js","sourceRoot":"","sources":["../src/OutputController.ts"],"names":[],"mappings":""}
@@ -1,4 +1,11 @@
1
1
  import { BaseConversation, type PartialOptions } from "./BaseConversation";
2
2
  export declare class TextConversation extends BaseConversation {
3
+ setVolume(): void;
4
+ setMicMuted(): void;
5
+ getInputByteFrequencyData(): Uint8Array;
6
+ getOutputByteFrequencyData(): Uint8Array;
7
+ getInputVolume(): number;
8
+ getOutputVolume(): number;
3
9
  static startSession(options: PartialOptions): Promise<TextConversation>;
4
10
  }
11
+ //# sourceMappingURL=TextConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextConversation.d.ts","sourceRoot":"","sources":["../src/TextConversation.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAI3E,qBAAa,gBAAiB,SAAQ,gBAAgB;IAC7C,SAAS,IAAI,IAAI;IAIjB,WAAW,IAAI,IAAI;IAInB,yBAAyB,IAAI,UAAU;IAIvC,0BAA0B,IAAI,UAAU;IAIxC,cAAc,IAAI,MAAM;IAIxB,eAAe,IAAI,MAAM;WAIZ,YAAY,CAC9B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,gBAAgB,CAAC;CA6B7B"}
@@ -0,0 +1,53 @@
1
+ import { createConnection } from "./utils/ConnectionFactory";
2
+ import { applyDelay } from "./utils/applyDelay";
3
+ import { BaseConversation } from "./BaseConversation";
4
+ const EMPTY_FREQUENCY_DATA = new Uint8Array(0);
5
+ export class TextConversation extends BaseConversation {
6
+ setVolume() {
7
+ throw new Error("setVolume is not supported in text conversations");
8
+ }
9
+ setMicMuted() {
10
+ throw new Error("setMicMuted is not supported in text conversations");
11
+ }
12
+ getInputByteFrequencyData() {
13
+ return EMPTY_FREQUENCY_DATA;
14
+ }
15
+ getOutputByteFrequencyData() {
16
+ return EMPTY_FREQUENCY_DATA;
17
+ }
18
+ getInputVolume() {
19
+ return 0;
20
+ }
21
+ getOutputVolume() {
22
+ return 0;
23
+ }
24
+ static async startSession(options) {
25
+ const fullOptions = BaseConversation.getFullOptions(options);
26
+ if (fullOptions.onStatusChange) {
27
+ fullOptions.onStatusChange({ status: "connecting" });
28
+ }
29
+ if (fullOptions.onCanSendFeedbackChange) {
30
+ fullOptions.onCanSendFeedbackChange({ canSendFeedback: false });
31
+ }
32
+ if (fullOptions.onModeChange) {
33
+ fullOptions.onModeChange({ mode: "listening" });
34
+ }
35
+ if (fullOptions.onCanSendFeedbackChange) {
36
+ fullOptions.onCanSendFeedbackChange({ canSendFeedback: false });
37
+ }
38
+ let connection = null;
39
+ try {
40
+ await applyDelay(fullOptions.connectionDelay);
41
+ connection = await createConnection(fullOptions);
42
+ return new TextConversation(fullOptions, connection);
43
+ }
44
+ catch (error) {
45
+ if (fullOptions.onStatusChange) {
46
+ fullOptions.onStatusChange({ status: "disconnected" });
47
+ }
48
+ connection?.close();
49
+ throw error;
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=TextConversation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TextConversation.js","sourceRoot":"","sources":["../src/TextConversation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAuB,MAAM,oBAAoB,CAAC;AAE3E,MAAM,oBAAoB,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IAC7C,SAAS;QACd,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAEM,WAAW;QAChB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAEM,yBAAyB;QAC9B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAEM,0BAA0B;QAC/B,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAEM,cAAc;QACnB,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,eAAe;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,YAAY,CAC9B,OAAuB;QAEvB,MAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAE7D,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;YAC/B,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,WAAW,CAAC,uBAAuB,EAAE,CAAC;YACxC,WAAW,CAAC,uBAAuB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;YAC7B,WAAW,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,WAAW,CAAC,uBAAuB,EAAE,CAAC;YACxC,WAAW,CAAC,uBAAuB,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,UAAU,GAA0B,IAAI,CAAC;QAC7C,IAAI,CAAC;YACH,MAAM,UAAU,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;YAC9C,UAAU,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACjD,OAAO,IAAI,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,WAAW,CAAC,cAAc,EAAE,CAAC;gBAC/B,WAAW,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,UAAU,EAAE,KAAK,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,34 +1,36 @@
1
- import { Input, type InputConfig } from "./utils/input";
2
- import { Output } from "./utils/output";
1
+ import type { InputConfig } from "./utils/input";
2
+ import type { OutputConfig, PlaybackEventTarget } from "./utils/output";
3
3
  import type { BaseConnection, FormatConfig } from "./utils/BaseConnection";
4
4
  import type { AgentAudioEvent, InterruptionEvent } from "./utils/events";
5
5
  import { BaseConversation, type Options, type PartialOptions } from "./BaseConversation";
6
+ import type { InputController } from "./InputController";
7
+ import type { OutputController } from "./OutputController";
6
8
  export declare class VoiceConversation extends BaseConversation {
7
- input: Input;
8
- output: Output;
9
- wakeLock: WakeLockSentinel | null;
9
+ private input;
10
+ private output;
11
+ private playbackEventTarget;
12
+ private cleanUp;
13
+ private wakeLock;
10
14
  private static requestWakeLock;
11
15
  static startSession(options: PartialOptions): Promise<VoiceConversation>;
12
16
  private inputFrequencyData?;
13
17
  private outputFrequencyData?;
14
18
  private visibilityChangeHandler;
15
- protected constructor(options: Options, connection: BaseConnection, input: Input, output: Output, wakeLock: WakeLockSentinel | null);
19
+ private handlePlaybackEvent;
20
+ protected constructor(options: Options, connection: BaseConnection, input: InputController, output: OutputController, playbackEventTarget: PlaybackEventTarget | null, cleanUp: () => void, wakeLock: WakeLockSentinel | null);
16
21
  protected handleEndSession(): Promise<void>;
17
22
  protected handleInterruption(event: InterruptionEvent): void;
18
23
  protected handleAudio(event: AgentAudioEvent): void;
19
- private onInputWorkletMessage;
20
- private onOutputWorkletMessage;
21
- private addAudioBase64Chunk;
22
- private fadeOutAudio;
23
24
  private calculateVolume;
24
25
  setMicMuted(isMuted: boolean): void;
25
26
  getInputByteFrequencyData(): Uint8Array<ArrayBuffer>;
26
27
  getOutputByteFrequencyData(): Uint8Array<ArrayBuffer>;
27
28
  getInputVolume(): number;
28
29
  getOutputVolume(): number;
29
- changeInputDevice({ sampleRate, format, preferHeadphonesForIosDevices, inputDeviceId, }: FormatConfig & InputConfig): Promise<Input>;
30
- changeOutputDevice({ sampleRate, format, outputDeviceId, }: FormatConfig): Promise<Output>;
30
+ changeInputDevice({ sampleRate, format, preferHeadphonesForIosDevices, inputDeviceId, }: FormatConfig & InputConfig): Promise<void>;
31
+ changeOutputDevice({ sampleRate, format, outputDeviceId, }: FormatConfig & OutputConfig): Promise<void>;
31
32
  setVolume: ({ volume }: {
32
33
  volume: number;
33
34
  }) => void;
34
35
  }
36
+ //# sourceMappingURL=VoiceConversation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoiceConversation.d.ts","sourceRoot":"","sources":["../src/VoiceConversation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EACV,YAAY,EACZ,mBAAmB,EAEpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3E,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEzE,OAAO,EACL,gBAAgB,EAChB,KAAK,OAAO,EACZ,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,qBAAa,iBAAkB,SAAQ,gBAAgB;IA2FnD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,mBAAmB;IAC3B,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,QAAQ;mBA9FG,eAAe;WAYhB,YAAY,CAC9B,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,iBAAiB,CAAC;IA+D7B,OAAO,CAAC,kBAAkB,CAAC,CAA0B;IACrD,OAAO,CAAC,mBAAmB,CAAC,CAA0B;IACtD,OAAO,CAAC,uBAAuB,CAA6B;IAE5D,OAAO,CAAC,mBAAmB,CAIzB;IAEF,SAAS,aACP,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,cAAc,EAClB,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gBAAgB,EACxB,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,EAC/C,OAAO,EAAE,MAAM,IAAI,EACnB,QAAQ,EAAE,gBAAgB,GAAG,IAAI;cAuBlB,gBAAgB;cAsBtB,kBAAkB,CAAC,KAAK,EAAE,iBAAiB;cAM3C,WAAW,CAAC,KAAK,EAAE,eAAe;IAoBrD,OAAO,CAAC,eAAe,CAcrB;IAEK,WAAW,CAAC,OAAO,EAAE,OAAO;IAM5B,yBAAyB,IAAI,UAAU,CAAC,WAAW,CAAC;IAYpD,0BAA0B,IAAI,UAAU,CAAC,WAAW,CAAC;IAuBrD,cAAc;IAId,eAAe;IAIT,iBAAiB,CAAC,EAC7B,UAAU,EACV,MAAM,EACN,6BAA6B,EAC7B,aAAa,GACd,EAAE,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAchC,kBAAkB,CAAC,EAC9B,UAAU,EACV,MAAM,EACN,cAAc,GACf,EAAE,YAAY,GAAG,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAavC,SAAS,GAAI,YAAY;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,UAShD;CACH"}