@elevenlabs/react 0.12.3 → 0.13.1

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.
@@ -1,28 +1,29 @@
1
1
 
2
- > @elevenlabs/react@0.12.3 prebuild /home/runner/work/packages/packages/packages/react
2
+ > @elevenlabs/react@0.13.1 prebuild /home/runner/work/packages/packages/packages/react
3
3
  > npm run generate-version
4
4
 
5
5
  npm warn Unknown env config "shared-workspace-lockfile". This will stop working in the next major version of npm.
6
6
  npm warn Unknown env config "prefer-workspace-packages". This will stop working in the next major version of npm.
7
7
  npm warn Unknown env config "verify-deps-before-run". This will stop working in the next major version of npm.
8
8
  npm warn Unknown env config "node-version". This will stop working in the next major version of npm.
9
+ npm warn Unknown env config "npm-globalconfig". This will stop working in the next major version of npm.
9
10
  npm warn Unknown env config "link-workspace-packages". This will stop working in the next major version of npm.
10
11
  npm warn Unknown env config "_jsr-registry". This will stop working in the next major version of npm.
11
12
 
12
- > @elevenlabs/react@0.12.3 generate-version
13
+ > @elevenlabs/react@0.13.1 generate-version
13
14
  > printf "// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"%s\";\n" "$npm_package_version" > src/version.ts
14
15
 
15
16
 
16
- > @elevenlabs/react@0.12.3 build /home/runner/work/packages/packages/packages/react
17
+ > @elevenlabs/react@0.13.1 build /home/runner/work/packages/packages/packages/react
17
18
  > BROWSERSLIST_ENV=modern microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react src/index.ts
18
19
 
19
20
  No name was provided for external module '@elevenlabs/client' in output.globals – guessing 'client'
20
21
  Build "@elevenlabs/react" to dist:
21
- 3.79 kB: lib.cjs.gz
22
- 3.31 kB: lib.cjs.br
23
- 3.42 kB: lib.modern.js.gz
24
- 2.97 kB: lib.modern.js.br
25
- 3.74 kB: lib.module.js.gz
26
- 3.26 kB: lib.module.js.br
27
- 3.84 kB: lib.umd.js.gz
28
- 3.34 kB: lib.umd.js.br
22
+ 3.81 kB: lib.cjs.gz
23
+ 3.32 kB: lib.cjs.br
24
+ 3.44 kB: lib.modern.js.gz
25
+ 2.98 kB: lib.modern.js.br
26
+ 3.76 kB: lib.module.js.gz
27
+ 3.28 kB: lib.module.js.br
28
+ 3.86 kB: lib.umd.js.gz
29
+ 3.36 kB: lib.umd.js.br
@@ -1,4 +1,4 @@
1
1
 
2
- > @elevenlabs/react@0.12.3 generate-version /home/runner/work/packages/packages/packages/react
2
+ > @elevenlabs/react@0.13.1 generate-version /home/runner/work/packages/packages/packages/react
3
3
  > printf "// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"%s\";\n" "$npm_package_version" > src/version.ts
4
4
 
@@ -0,0 +1,20 @@
1
+
2
+ > @elevenlabs/react@0.13.1 lint /home/runner/work/packages/packages/packages/react
3
+ > pnpm run check-types && pnpm run lint:es && pnpm run lint:prettier
4
+
5
+
6
+ > @elevenlabs/react@0.13.1 check-types /home/runner/work/packages/packages/packages/react
7
+ > tsc --noEmit --skipLibCheck
8
+
9
+
10
+ > @elevenlabs/react@0.13.1 lint:es /home/runner/work/packages/packages/packages/react
11
+ > pnpm exec eslint .
12
+
13
+ (node:3545) ESLintEmptyConfigWarning: Running ESLint with an empty config (from /home/runner/work/packages/packages/packages/react/eslint.config.cjs). Please double-check that this is what you want. If you want to run ESLint with an empty config, export [{}] to remove this warning.
14
+ (Use `node --trace-warnings ...` to show where the warning was created)
15
+
16
+ > @elevenlabs/react@0.13.1 lint:prettier /home/runner/work/packages/packages/packages/react
17
+ > prettier 'src/**/*.ts' --check
18
+
19
+ Checking formatting...
20
+ All matched files use Prettier code style!
package/CHANGELOG.md ADDED
@@ -0,0 +1,8 @@
1
+ # @elevenlabs/react
2
+
3
+ ## 0.13.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [73cbdae]
8
+ - @elevenlabs/client@0.13.1
package/README.md CHANGED
@@ -26,7 +26,7 @@ pnpm install @elevenlabs/react
26
26
 
27
27
  ### useConversation
28
28
 
29
- React hook for managing WebSocket and WebRTC connections and audio usage for ElevenLabs Conversational AI.
29
+ React hook for managing WebSocket and WebRTC connections and audio usage for ElevenLabs Agents Platform.
30
30
 
31
31
  #### Initialize conversation
32
32
 
@@ -36,7 +36,7 @@ First, initialize the Conversation instance.
36
36
  const conversation = useConversation();
37
37
  ```
38
38
 
39
- Note that Conversational AI requires microphone access.
39
+ Note that Agents Platform requires microphone access.
40
40
  Consider explaining and allowing microphone access in your apps UI before the Conversation kicks off. The microphone may also be blocked for the current page by default, resulting in the allow prompt not showing up at all. You should handle such use case in your application and display appropriate message to the user:
41
41
 
42
42
  ```js
@@ -59,27 +59,31 @@ const conversation = useConversation({
59
59
  });
60
60
  ```
61
61
 
62
- - **clientTools** - object definition for client tools that can be invoked by agent. [See below](#client-tools) for details.
63
- - **overrides** - object definition conversations settings overrides. [See below](#conversation-overrides) for details.
64
- - **textOnly** - whether the conversation should run in text-only mode. [See below](#text-only) for details.
65
- - **onConnect** - handler called when the conversation connection is established.
66
- - **onDisconnect** - handler called when the conversation connection has ended.
67
- - **onMessage** - handler called when a new message is received. These can be tentative or final transcriptions of user voice, replies produced by LLM, or debug message when a debug option is enabled.
68
- - **onError** - handler called when a error is encountered.
69
- - **onStatusChange** - handler called whenever connection status changes. Can be `connected`, `connecting` and `disconnected` (initial).
70
- - **onModeChange** - handler called when a status changes, eg. agent switches from `speaking` to `listening`, or the other way around.
71
- - **onCanSendFeedbackChange** - handler called when sending feedback becomes available or unavailable.
72
- - **onUnhandledClientToolCall** - handler called when a client tool is invoked but no corresponding client tool was defined.
73
- - **onDebug** - handler called for debugging events, including tentative agent responses and internal events. Useful for development and troubleshooting.
74
- - **onAudio** - handler called when audio data is received from the agent. Provides access to raw audio events for custom processing.
75
- - **onInterruption** - handler called when the conversation is interrupted, typically when the user starts speaking while the agent is talking.
76
- - **onVadScore** - handler called with voice activity detection scores, indicating the likelihood of speech in the audio input.
77
- - **onMCPToolCall** - handler called when an MCP (Model Context Protocol) tool is invoked by the agent.
78
- - **onMCPConnectionStatus** - handler called when the MCP connection status changes, useful for monitoring MCP server connectivity.
79
- - **onAgentToolRequest** - handler called when the agent begins tool execution.
80
- - **onAgentToolResponse** - handler called when the agent receives a response from a tool execution.
81
- - **onConversationMetadata** - handler called with conversation initiation metadata, providing information about the conversation setup.
82
- - **onAsrInitiationMetadata** - handler called with ASR (Automatic Speech Recognition) initiation metadata, containing configuration details for speech recognition.
62
+ | Property | Description |
63
+ |----------|-------------|
64
+ | **clientTools** | Object definition for client tools that can be invoked by the agent. [See below](#client-tools) for details. |
65
+ | **overrides** | Object definition for conversation settings overrides. [See below](#conversation-overrides) for details. |
66
+ | **textOnly** | Whether the conversation should run in text-only mode. [See below](#text-only) for details. |
67
+ | **onConnect** | Handler called when the conversation connection is established. |
68
+ | **onDisconnect** | Handler called when the conversation connection has ended. |
69
+ | **onMessage** | Handler called when a new message is received. These can be tentative or final transcriptions of user voice, replies produced by LLM, or debug messages when a debug option is enabled. |
70
+ | **onError** | Handler called when an error is encountered. |
71
+ | **onStatusChange** | Handler called whenever connection status changes. Can be `connected`, `connecting`, or `disconnected` (initial). |
72
+ | **onModeChange** | Handler called when a status changes, e.g., agent switches from `speaking` to `listening`, or vice versa. |
73
+ | **onCanSendFeedbackChange** | Handler called when sending feedback becomes available or unavailable. |
74
+ | **onUnhandledClientToolCall** | Handler called when a client tool is invoked but no corresponding client tool was defined. |
75
+ | **onDebug** | Handler called for debugging events, including tentative agent responses and internal events. Useful for development and troubleshooting. |
76
+ | **onAudio** | Handler called when audio data is received from the agent. Provides access to raw audio events for custom processing. |
77
+ | **onInterruption** | Handler called when the conversation is interrupted, typically when the user starts speaking while the agent is talking. |
78
+ | **onVadScore** | Handler called with voice activity detection scores, indicating the likelihood of speech in the audio input. |
79
+ | **onMCPToolCall** | Handler called when an MCP (Model Context Protocol) tool is invoked by the agent. |
80
+ | **onMCPConnectionStatus** | Handler called when the MCP connection status changes, useful for monitoring MCP server connectivity. |
81
+ | **onAgentToolRequest** | Handler called when the agent begins tool execution. |
82
+ | **onAgentToolResponse** | Handler called when the agent receives a response from a tool execution. |
83
+ | **onConversationMetadata** | Handler called with conversation initiation metadata, providing information about the conversation setup. |
84
+ | **onAsrInitiationMetadata** | Handler called with ASR (Automatic Speech Recognition) initiation metadata, containing configuration details for speech recognition. |
85
+ | **onAudioAlignment** | Handler called with character-level timing data for synthesized audio. Provides arrays of characters, start times, and durations for text-to-speech synchronization. |
86
+
83
87
 
84
88
  ##### Client Tools
85
89
 
@@ -115,12 +119,16 @@ const conversation = useConversation({
115
119
  agent: {
116
120
  prompt: {
117
121
  prompt: "My custom prompt",
122
+ llm: "gemini-2.5-flash",
118
123
  },
119
124
  firstMessage: "My custom first message",
120
125
  language: "en",
121
126
  },
122
127
  tts: {
123
128
  voiceId: "custom voice id",
129
+ speed: 1.0,
130
+ stability: 0.5,
131
+ similarityBoost: 0.8,
124
132
  },
125
133
  conversation: {
126
134
  textOnly: true,
@@ -216,7 +224,7 @@ The SDK automatically routes both WebSocket and WebRTC connections to the approp
216
224
 
217
225
  ##### startConversation
218
226
 
219
- `startConversation` method kicks off the WebSocket or WebRTC connection and starts using the microphone to communicate with the ElevenLabs Conversational AI agent. The method accepts an options object, with the `signedUrl`, `conversationToken` or `agentId` option being required.
227
+ `startConversation` method kicks off the WebSocket or WebRTC connection and starts using the microphone to communicate with the ElevenLabs agent. The method accepts an options object, with the `signedUrl`, `conversationToken` or `agentId` option being required.
220
228
 
221
229
  Agent ID can be acquired through [ElevenLabs UI](https://elevenlabs.io/app/conversational-ai) and is always necessary.
222
230
 
@@ -533,6 +541,7 @@ React hook for managing real-time speech-to-text transcription with ElevenLabs S
533
541
  #### Quick Start
534
542
 
535
543
  ```tsx
544
+ import { useEffect } from "react";
536
545
  import { useScribe } from "@elevenlabs/react";
537
546
 
538
547
  function MyComponent() {
@@ -546,23 +555,42 @@ function MyComponent() {
546
555
  },
547
556
  });
548
557
 
558
+ // Start recording
549
559
  const handleStart = async () => {
550
- const token = await fetchTokenFromServer();
551
- await scribe.connect({
552
- token,
553
- microphone: {
554
- echoCancellation: true,
555
- noiseSuppression: true,
556
- },
557
- });
560
+ try {
561
+ const token = await fetchTokenFromServer();
562
+ await scribe.connect({
563
+ token,
564
+ microphone: {
565
+ echoCancellation: true,
566
+ noiseSuppression: true,
567
+ },
568
+ });
569
+ } catch (err) {
570
+ console.error("Failed to start recording:", err);
571
+ }
572
+ };
573
+
574
+ // Stop recording
575
+ const handleDisconnect = () => {
576
+ scribe.disconnect();
558
577
  };
559
578
 
579
+ // Disconnect on unmount
580
+ useEffect(() => {
581
+ return () => {
582
+ if (scribe.isConnected) {
583
+ scribe.disconnect();
584
+ }
585
+ };
586
+ }, [scribe]);
587
+
560
588
  return (
561
589
  <div>
562
590
  <button onClick={handleStart} disabled={scribe.isConnected}>
563
591
  Start Recording
564
592
  </button>
565
- <button onClick={scribe.disconnect} disabled={!scribe.isConnected}>
593
+ <button onClick={handleDisconnect} disabled={!scribe.isConnected}>
566
594
  Stop
567
595
  </button>
568
596
 
@@ -932,11 +960,13 @@ const scribe = useScribe({
932
960
  #### Complete Example
933
961
 
934
962
  ```tsx
935
- import { useScribe, AudioFormat, CommitStrategy } from "@elevenlabs/react";
936
- import { useState } from "react";
963
+ import { useScribe, CommitStrategy } from "@elevenlabs/react";
964
+ import { useState, useEffect } from "react";
965
+
966
+ type Mode = "microphone" | "file"
937
967
 
938
968
  function ScribeDemo() {
939
- const [mode, setMode] = useState<"microphone" | "file">("microphone");
969
+ const [mode, setMode] = useState<Mode>("microphone");
940
970
 
941
971
  const scribe = useScribe({
942
972
  modelId: "scribe_v2_realtime",
@@ -957,6 +987,16 @@ function ScribeDemo() {
957
987
  });
958
988
  };
959
989
 
990
+ const handleDisconnect = () => scribe.disconnect();
991
+
992
+ const handleClearTranscripts = () => scribe.clearTranscripts();
993
+
994
+ useEffect(() => {
995
+ return () => {
996
+ handleDisconnect();
997
+ };
998
+ }, []);
999
+
960
1000
  return (
961
1001
  <div>
962
1002
  <h1>Scribe Demo</h1>
@@ -972,9 +1012,9 @@ function ScribeDemo() {
972
1012
  {!scribe.isConnected ? (
973
1013
  <button onClick={startMicrophone}>Start Recording</button>
974
1014
  ) : (
975
- <button onClick={scribe.disconnect}>Stop</button>
1015
+ <button onClick={handleDisconnect}>Stop</button>
976
1016
  )}
977
- <button onClick={scribe.clearTranscripts}>Clear</button>
1017
+ <button onClick={handleClearTranscripts}>Clear</button>
978
1018
  </div>
979
1019
 
980
1020
  {/* Live Transcript */}
package/dist/index.d.ts CHANGED
@@ -12,7 +12,7 @@ export type Location = "us" | "global" | "eu-residency" | "in-residency";
12
12
  export declare function parseLocation(location?: string): Location;
13
13
  export declare function getOriginForLocation(location: Location): string;
14
14
  export declare function getLivekitUrlForLocation(location: Location): string;
15
- export type { Role, Mode, Status, SessionConfig, DisconnectionDetails, Language, VadScoreEvent, InputConfig, FormatConfig, VoiceConversation, TextConversation, Callbacks, } from "@elevenlabs/client";
15
+ export type { Role, Mode, Status, SessionConfig, DisconnectionDetails, Language, VadScoreEvent, AudioAlignmentEvent, InputConfig, FormatConfig, VoiceConversation, TextConversation, Callbacks, } from "@elevenlabs/client";
16
16
  export { postOverallFeedback } from "@elevenlabs/client";
17
17
  export { useScribe, AudioFormat, CommitStrategy, RealtimeEvents, } from "./scribe";
18
18
  export type { ScribeStatus, TranscriptSegment, WordTimestamp, ScribeCallbacks, ScribeHookOptions, UseScribeReturn, RealtimeConnection, } from "./scribe";
@@ -23,7 +23,7 @@ export type ControlledState = {
23
23
  micMuted?: boolean;
24
24
  volume?: number;
25
25
  };
26
- export type HookCallbacks = Pick<Callbacks, "onConnect" | "onDisconnect" | "onError" | "onMessage" | "onAudio" | "onModeChange" | "onStatusChange" | "onCanSendFeedbackChange" | "onDebug" | "onUnhandledClientToolCall" | "onVadScore" | "onInterruption" | "onAgentToolResponse" | "onAgentToolRequest" | "onConversationMetadata" | "onMCPToolCall" | "onMCPConnectionStatus" | "onAsrInitiationMetadata" | "onAgentChatResponsePart">;
26
+ export type HookCallbacks = Pick<Callbacks, "onConnect" | "onDisconnect" | "onError" | "onMessage" | "onAudio" | "onModeChange" | "onStatusChange" | "onCanSendFeedbackChange" | "onDebug" | "onUnhandledClientToolCall" | "onVadScore" | "onInterruption" | "onAgentToolResponse" | "onAgentToolRequest" | "onConversationMetadata" | "onMCPToolCall" | "onMCPConnectionStatus" | "onAsrInitiationMetadata" | "onAgentChatResponsePart" | "onAudioAlignment">;
27
27
  export declare function useConversation<T extends HookOptions & ControlledState>(props?: T): {
28
28
  startSession: T extends SessionConfig ? (options?: HookOptions) => Promise<string> : (options: SessionConfig & HookOptions) => Promise<string>;
29
29
  endSession: () => Promise<void>;
package/dist/lib.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("react"),n=require("@elevenlabs/client");function r(){return r=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},r.apply(null,arguments)}var t=["micMuted","volume","serverLocation"];function o(e){switch(void 0===e&&(e="us"),e){case"eu-residency":case"in-residency":case"us":case"global":return e;default:return console.warn("[ConversationalAI] Invalid server-location: "+e+'. Defaulting to "us"'),"us"}}function i(e){return{us:"wss://api.elevenlabs.io","eu-residency":"wss://api.eu.residency.elevenlabs.io","in-residency":"wss://api.in.residency.elevenlabs.io",global:"wss://api.elevenlabs.io"}[e]}function u(e){return{us:"wss://livekit.rtc.elevenlabs.io","eu-residency":"wss://livekit.rtc.eu.residency.elevenlabs.io","in-residency":"wss://livekit.rtc.in.residency.elevenlabs.io",global:"wss://livekit.rtc.elevenlabs.io"}[e]}Object.defineProperty(exports,"AudioFormat",{enumerable:!0,get:function(){return n.AudioFormat}}),Object.defineProperty(exports,"CommitStrategy",{enumerable:!0,get:function(){return n.CommitStrategy}}),Object.defineProperty(exports,"RealtimeEvents",{enumerable:!0,get:function(){return n.RealtimeEvents}}),Object.defineProperty(exports,"postOverallFeedback",{enumerable:!0,get:function(){return n.postOverallFeedback}}),exports.getLivekitUrlForLocation=u,exports.getOriginForLocation=i,exports.parseLocation=o,exports.useConversation=function(l){void 0===l&&(l={});var c=l.micMuted,a=l.volume,s=l.serverLocation,d=function(e,n){if(null==e)return{};var r={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;r[t]=e[t]}return r}(l,t),v=e.useRef(null),m=e.useRef(null),f=e.useRef(!1),h=e.useState("disconnected"),E=h[0],g=h[1],p=e.useState(!1),S=p[0],C=p[1],T=e.useState("listening"),R=T[0],b=T[1],M=e.useRef(c),I=e.useRef(a);return M.current=c,I.current=a,e.useEffect(function(){var e;void 0!==c&&(null==v||null==(e=v.current)||e.setMicMuted(c))},[c]),e.useEffect(function(){var e;void 0!==a&&(null==v||null==(e=v.current)||e.setVolume({volume:a}))},[a]),e.useEffect(function(){return function(){var e;f.current=!0,m.current?m.current.then(function(e){return e.endSession()}):null==(e=v.current)||e.endSession()}},[]),{startSession:function(e){try{var t,l,c=function(t){return l?t:(f.current=!1,function(t,l){try{var c=(w=i(A=o((null==e?void 0:e.serverLocation)||s)),O=u(A),m.current=n.Conversation.startSession(r({},null!=d?d:{},null!=e?e:{},{origin:w,livekitUrl:(null==e?void 0:e.livekitUrl)||(null==d?void 0:d.livekitUrl)||O,overrides:r({},null!=(a=null==d?void 0:d.overrides)?a:{},null!=(h=null==e?void 0:e.overrides)?h:{},{client:r({},null!=(E=null==d||null==(p=d.overrides)?void 0:p.client)?E:{},null!=(S=null==e||null==(T=e.overrides)?void 0:T.client)?S:{},{source:(null==e||null==(R=e.overrides)||null==(R=R.client)?void 0:R.source)||(null==d||null==(D=d.overrides)||null==(D=D.client)?void 0:D.source)||"react_sdk",version:(null==e||null==(P=e.overrides)||null==(P=P.client)?void 0:P.version)||(null==d||null==(y=d.overrides)||null==(y=y.client)?void 0:y.version)||"0.12.3"})}),onConnect:(null==e?void 0:e.onConnect)||(null==d?void 0:d.onConnect),onDisconnect:(null==e?void 0:e.onDisconnect)||(null==d?void 0:d.onDisconnect),onError:(null==e?void 0:e.onError)||(null==d?void 0:d.onError),onMessage:(null==e?void 0:e.onMessage)||(null==d?void 0:d.onMessage),onAudio:(null==e?void 0:e.onAudio)||(null==d?void 0:d.onAudio),onDebug:(null==e?void 0:e.onDebug)||(null==d?void 0:d.onDebug),onUnhandledClientToolCall:(null==e?void 0:e.onUnhandledClientToolCall)||(null==d?void 0:d.onUnhandledClientToolCall),onVadScore:(null==e?void 0:e.onVadScore)||(null==d?void 0:d.onVadScore),onInterruption:(null==e?void 0:e.onInterruption)||(null==d?void 0:d.onInterruption),onAgentToolRequest:(null==e?void 0:e.onAgentToolRequest)||(null==d?void 0:d.onAgentToolRequest),onAgentToolResponse:(null==e?void 0:e.onAgentToolResponse)||(null==d?void 0:d.onAgentToolResponse),onConversationMetadata:(null==e?void 0:e.onConversationMetadata)||(null==d?void 0:d.onConversationMetadata),onMCPToolCall:(null==e?void 0:e.onMCPToolCall)||(null==d?void 0:d.onMCPToolCall),onMCPConnectionStatus:(null==e?void 0:e.onMCPConnectionStatus)||(null==d?void 0:d.onMCPConnectionStatus),onAsrInitiationMetadata:(null==e?void 0:e.onAsrInitiationMetadata)||(null==d?void 0:d.onAsrInitiationMetadata),onAgentChatResponsePart:(null==e?void 0:e.onAgentChatResponsePart)||(null==d?void 0:d.onAgentChatResponsePart),onModeChange:function(n){var r,t=n.mode;b(t),null==(r=(null==e?void 0:e.onModeChange)||(null==d?void 0:d.onModeChange))||r({mode:t})},onStatusChange:function(n){var r,t=n.status;g(t),null==(r=(null==e?void 0:e.onStatusChange)||(null==d?void 0:d.onStatusChange))||r({status:t})},onCanSendFeedbackChange:function(n){var r,t=n.canSendFeedback;C(t),null==(r=(null==e?void 0:e.onCanSendFeedbackChange)||(null==d?void 0:d.onCanSendFeedbackChange))||r({canSendFeedback:t})}})),Promise.resolve(m.current).then(function(e){function n(e){return void 0!==M.current&&v.current.setMicMuted(M.current),void 0!==I.current&&v.current.setVolume({volume:I.current}),v.current.getId()}v.current=e;var r=function(){if(f.current)return Promise.resolve(v.current.endSession()).then(function(){throw v.current=null,m.current=null,new Error("Session cancelled during connection")})}();return r&&r.then?r.then(n):n()}))}catch(e){return l(!0,e)}var a,h,E,p,S,T,R,D,P,y,A,w,O;return c&&c.then?c.then(l.bind(null,!1),l.bind(null,!0)):l(!1,c)}(0,function(e,n){if(m.current=null,e)throw n;return n}))};if(null!=(t=v.current)&&t.isOpen())return Promise.resolve(v.current.getId());var a=function(){if(m.current)return Promise.resolve(m.current).then(function(e){var n=e.getId();return l=1,n})}();return Promise.resolve(a&&a.then?a.then(c):c(a))}catch(e){return Promise.reject(e)}},endSession:function(){try{f.current=!0;var e=m.current,n=v.current;v.current=null;var r=e?Promise.resolve(e).then(function(e){return Promise.resolve(e.endSession()).then(function(){})}):Promise.resolve(null==n?void 0:n.endSession()).then(function(){});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},setVolume:function(e){var n;null==(n=v.current)||n.setVolume({volume:e.volume})},getInputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getOutputByteFrequencyData()},getInputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getInputVolume())?e:0},getOutputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getOutputVolume())?e:0},sendFeedback:function(e){var n;null==(n=v.current)||n.sendFeedback(e)},getId:function(){var e;return null==(e=v.current)?void 0:e.getId()},sendContextualUpdate:function(e){var n;null==(n=v.current)||n.sendContextualUpdate(e)},sendUserMessage:function(e){var n;null==(n=v.current)||n.sendUserMessage(e)},sendUserActivity:function(){var e;null==(e=v.current)||e.sendUserActivity()},sendMCPToolApprovalResult:function(e,n){var r;null==(r=v.current)||r.sendMCPToolApprovalResult(e,n)},changeInputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeInputDevice"in v.current)return Promise.resolve(v.current.changeInputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},changeOutputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeOutputDevice"in v.current)return Promise.resolve(v.current.changeOutputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},status:E,canSendFeedback:S,micMuted:c,isSpeaking:"speaking"===R}},exports.useScribe=function(t){void 0===t&&(t={});var o=t.onSessionStarted,i=t.onPartialTranscript,u=t.onCommittedTranscript,l=t.onCommittedTranscriptWithTimestamps,c=t.onError,a=t.onAuthError,s=t.onQuotaExceededError,d=t.onCommitThrottledError,v=t.onTranscriberError,m=t.onUnacceptedTermsError,f=t.onRateLimitedError,h=t.onInputError,E=t.onQueueOverflowError,g=t.onResourceExhaustedError,p=t.onSessionTimeLimitExceededError,S=t.onChunkSizeExceededError,C=t.onInsufficientAudioActivityError,T=t.onConnect,R=t.onDisconnect,b=t.token,M=t.modelId,I=t.baseUri,D=t.commitStrategy,P=t.vadSilenceThresholdSecs,y=t.vadThreshold,A=t.minSpeechDurationMs,w=t.minSilenceDurationMs,O=t.languageCode,k=t.microphone,U=t.audioFormat,F=t.sampleRate,_=t.autoConnect,x=void 0!==_&&_,L=t.includeTimestamps,N=e.useRef(null),V=e.useState("disconnected"),j=V[0],q=V[1],B=e.useState(""),H=B[0],Q=B[1],W=e.useState([]),X=W[0],z=W[1],K=e.useState(null),Y=K[0],Z=K[1];e.useEffect(function(){return function(){var e;null==(e=N.current)||e.close()}},[]);var G=e.useCallback(function(e){void 0===e&&(e={});try{if(N.current)return console.warn("Already connected"),Promise.resolve();try{var r,t;q("connecting"),Z(null);var _=e.token||b,x=e.modelId||M;if(!_)throw new Error("Token is required");if(!x)throw new Error("Model ID is required");var V,j=e.microphone||k,B=e.audioFormat||U,H=e.sampleRate||F,W=null!=(r=null!=(t=e.includeTimestamps)?t:L)?r:!(!e.onCommittedTranscriptWithTimestamps&&!l);if(j)V=n.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||D,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||P,vadThreshold:e.vadThreshold||y,minSpeechDurationMs:e.minSpeechDurationMs||A,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,microphone:j,includeTimestamps:W});else{if(!B||!H)throw new Error("Either microphone options or (audioFormat + sampleRate) must be provided");V=n.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||D,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||P,vadThreshold:e.vadThreshold||y,minSpeechDurationMs:e.minSpeechDurationMs||A,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,includeTimestamps:W,audioFormat:B,sampleRate:H})}N.current=V,V.on(n.RealtimeEvents.SESSION_STARTED,function(){q("connected"),null==o||o()}),V.on(n.RealtimeEvents.PARTIAL_TRANSCRIPT,function(e){var n=e;Q(n.text),q("transcribing"),null==i||i(n)}),V.on(n.RealtimeEvents.COMMITTED_TRANSCRIPT,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0};z(function(e){return[].concat(e,[r])}),Q(""),null==u||u(n)}),V.on(n.RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0,words:n.words};z(function(e){return[].concat(e,[r])}),Q(""),null==l||l(n)}),V.on(n.RealtimeEvents.ERROR,function(e){var n=e;Z(n.error),q("error"),null==c||c(new Error(n.error))}),V.on(n.RealtimeEvents.AUTH_ERROR,function(e){var n=e;Z(n.error),q("error"),null==a||a(n)}),V.on(n.RealtimeEvents.QUOTA_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==s||s(n)}),V.on(n.RealtimeEvents.COMMIT_THROTTLED,function(e){var n=e;Z(n.error),q("error"),null==d||d(n)}),V.on(n.RealtimeEvents.TRANSCRIBER_ERROR,function(e){var n=e;Z(n.error),q("error"),null==v||v(n)}),V.on(n.RealtimeEvents.UNACCEPTED_TERMS,function(e){var n=e;Z(n.error),q("error"),null==m||m(n)}),V.on(n.RealtimeEvents.RATE_LIMITED,function(e){var n=e;Z(n.error),q("error"),null==f||f(n)}),V.on(n.RealtimeEvents.INPUT_ERROR,function(e){var n=e;Z(n.error),q("error"),null==h||h(n)}),V.on(n.RealtimeEvents.QUEUE_OVERFLOW,function(e){var n=e;Z(n.error),q("error"),null==E||E(n)}),V.on(n.RealtimeEvents.RESOURCE_EXHAUSTED,function(e){var n=e;Z(n.error),q("error"),null==g||g(n)}),V.on(n.RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==p||p(n)}),V.on(n.RealtimeEvents.CHUNK_SIZE_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==S||S(n)}),V.on(n.RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,function(e){var n=e;Z(n.error),q("error"),null==C||C(n)}),V.on(n.RealtimeEvents.OPEN,function(){null==T||T()}),V.on(n.RealtimeEvents.CLOSE,function(){q("disconnected"),N.current=null,null==R||R()})}catch(e){var X=e instanceof Error?e.message:"Failed to connect";throw Z(X),q("error"),e}return Promise.resolve()}catch(e){return Promise.reject(e)}},[b,M,I,D,P,y,A,w,O,k,U,F,L,o,i,u,l,c,a,s,d,v,m,f,h,E,g,p,S,C,T,R]),J=e.useCallback(function(){var e;null==(e=N.current)||e.close(),N.current=null,q("disconnected")},[]),$=e.useCallback(function(e,n){if(!N.current)throw new Error("Not connected to Scribe");N.current.send(r({audioBase64:e},n))},[]),ee=e.useCallback(function(){if(!N.current)throw new Error("Not connected to Scribe");N.current.commit()},[]),ne=e.useCallback(function(){z([]),Q("")},[]),re=e.useCallback(function(){return N.current},[]);return e.useEffect(function(){x&&G()},[x,G]),{status:j,isConnected:"connected"===j||"transcribing"===j,isTranscribing:"transcribing"===j,partialTranscript:H,committedTranscripts:X,error:Y,connect:G,disconnect:J,sendAudio:$,commit:ee,clearTranscripts:ne,getConnection:re}};
1
+ var e=require("react"),n=require("@elevenlabs/client");function r(){return r=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},r.apply(null,arguments)}var t=["micMuted","volume","serverLocation"];function o(e){switch(void 0===e&&(e="us"),e){case"eu-residency":case"in-residency":case"us":case"global":return e;default:return console.warn("[ConversationalAI] Invalid server-location: "+e+'. Defaulting to "us"'),"us"}}function i(e){return{us:"wss://api.elevenlabs.io","eu-residency":"wss://api.eu.residency.elevenlabs.io","in-residency":"wss://api.in.residency.elevenlabs.io",global:"wss://api.elevenlabs.io"}[e]}function u(e){return{us:"wss://livekit.rtc.elevenlabs.io","eu-residency":"wss://livekit.rtc.eu.residency.elevenlabs.io","in-residency":"wss://livekit.rtc.in.residency.elevenlabs.io",global:"wss://livekit.rtc.elevenlabs.io"}[e]}Object.defineProperty(exports,"AudioFormat",{enumerable:!0,get:function(){return n.AudioFormat}}),Object.defineProperty(exports,"CommitStrategy",{enumerable:!0,get:function(){return n.CommitStrategy}}),Object.defineProperty(exports,"RealtimeEvents",{enumerable:!0,get:function(){return n.RealtimeEvents}}),Object.defineProperty(exports,"postOverallFeedback",{enumerable:!0,get:function(){return n.postOverallFeedback}}),exports.getLivekitUrlForLocation=u,exports.getOriginForLocation=i,exports.parseLocation=o,exports.useConversation=function(l){void 0===l&&(l={});var c=l.micMuted,a=l.volume,s=l.serverLocation,d=function(e,n){if(null==e)return{};var r={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;r[t]=e[t]}return r}(l,t),v=e.useRef(null),m=e.useRef(null),f=e.useRef(!1),h=e.useState("disconnected"),E=h[0],g=h[1],p=e.useState(!1),S=p[0],C=p[1],T=e.useState("listening"),R=T[0],b=T[1],M=e.useRef(c),I=e.useRef(a);return M.current=c,I.current=a,e.useEffect(function(){var e;void 0!==c&&(null==v||null==(e=v.current)||e.setMicMuted(c))},[c]),e.useEffect(function(){var e;void 0!==a&&(null==v||null==(e=v.current)||e.setVolume({volume:a}))},[a]),e.useEffect(function(){return function(){var e;f.current=!0,m.current?m.current.then(function(e){return e.endSession()}):null==(e=v.current)||e.endSession()}},[]),{startSession:function(e){try{var t,l,c=function(t){return l?t:(f.current=!1,function(t,l){try{var c=(w=i(y=o((null==e?void 0:e.serverLocation)||s)),O=u(y),m.current=n.Conversation.startSession(r({},null!=d?d:{},null!=e?e:{},{origin:w,livekitUrl:(null==e?void 0:e.livekitUrl)||(null==d?void 0:d.livekitUrl)||O,overrides:r({},null!=(a=null==d?void 0:d.overrides)?a:{},null!=(h=null==e?void 0:e.overrides)?h:{},{client:r({},null!=(E=null==d||null==(p=d.overrides)?void 0:p.client)?E:{},null!=(S=null==e||null==(T=e.overrides)?void 0:T.client)?S:{},{source:(null==e||null==(R=e.overrides)||null==(R=R.client)?void 0:R.source)||(null==d||null==(D=d.overrides)||null==(D=D.client)?void 0:D.source)||"react_sdk",version:(null==e||null==(A=e.overrides)||null==(A=A.client)?void 0:A.version)||(null==d||null==(P=d.overrides)||null==(P=P.client)?void 0:P.version)||"0.13.1"})}),onConnect:(null==e?void 0:e.onConnect)||(null==d?void 0:d.onConnect),onDisconnect:(null==e?void 0:e.onDisconnect)||(null==d?void 0:d.onDisconnect),onError:(null==e?void 0:e.onError)||(null==d?void 0:d.onError),onMessage:(null==e?void 0:e.onMessage)||(null==d?void 0:d.onMessage),onAudio:(null==e?void 0:e.onAudio)||(null==d?void 0:d.onAudio),onDebug:(null==e?void 0:e.onDebug)||(null==d?void 0:d.onDebug),onUnhandledClientToolCall:(null==e?void 0:e.onUnhandledClientToolCall)||(null==d?void 0:d.onUnhandledClientToolCall),onVadScore:(null==e?void 0:e.onVadScore)||(null==d?void 0:d.onVadScore),onInterruption:(null==e?void 0:e.onInterruption)||(null==d?void 0:d.onInterruption),onAgentToolRequest:(null==e?void 0:e.onAgentToolRequest)||(null==d?void 0:d.onAgentToolRequest),onAgentToolResponse:(null==e?void 0:e.onAgentToolResponse)||(null==d?void 0:d.onAgentToolResponse),onConversationMetadata:(null==e?void 0:e.onConversationMetadata)||(null==d?void 0:d.onConversationMetadata),onMCPToolCall:(null==e?void 0:e.onMCPToolCall)||(null==d?void 0:d.onMCPToolCall),onMCPConnectionStatus:(null==e?void 0:e.onMCPConnectionStatus)||(null==d?void 0:d.onMCPConnectionStatus),onAsrInitiationMetadata:(null==e?void 0:e.onAsrInitiationMetadata)||(null==d?void 0:d.onAsrInitiationMetadata),onAgentChatResponsePart:(null==e?void 0:e.onAgentChatResponsePart)||(null==d?void 0:d.onAgentChatResponsePart),onAudioAlignment:(null==e?void 0:e.onAudioAlignment)||(null==d?void 0:d.onAudioAlignment),onModeChange:function(n){var r,t=n.mode;b(t),null==(r=(null==e?void 0:e.onModeChange)||(null==d?void 0:d.onModeChange))||r({mode:t})},onStatusChange:function(n){var r,t=n.status;g(t),null==(r=(null==e?void 0:e.onStatusChange)||(null==d?void 0:d.onStatusChange))||r({status:t})},onCanSendFeedbackChange:function(n){var r,t=n.canSendFeedback;C(t),null==(r=(null==e?void 0:e.onCanSendFeedbackChange)||(null==d?void 0:d.onCanSendFeedbackChange))||r({canSendFeedback:t})}})),Promise.resolve(m.current).then(function(e){function n(e){return void 0!==M.current&&v.current.setMicMuted(M.current),void 0!==I.current&&v.current.setVolume({volume:I.current}),v.current.getId()}v.current=e;var r=function(){if(f.current)return Promise.resolve(v.current.endSession()).then(function(){throw v.current=null,m.current=null,new Error("Session cancelled during connection")})}();return r&&r.then?r.then(n):n()}))}catch(e){return l(!0,e)}var a,h,E,p,S,T,R,D,A,P,y,w,O;return c&&c.then?c.then(l.bind(null,!1),l.bind(null,!0)):l(!1,c)}(0,function(e,n){if(m.current=null,e)throw n;return n}))};if(null!=(t=v.current)&&t.isOpen())return Promise.resolve(v.current.getId());var a=function(){if(m.current)return Promise.resolve(m.current).then(function(e){var n=e.getId();return l=1,n})}();return Promise.resolve(a&&a.then?a.then(c):c(a))}catch(e){return Promise.reject(e)}},endSession:function(){try{f.current=!0;var e=m.current,n=v.current;v.current=null;var r=e?Promise.resolve(e).then(function(e){return Promise.resolve(e.endSession()).then(function(){})}):Promise.resolve(null==n?void 0:n.endSession()).then(function(){});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},setVolume:function(e){var n;null==(n=v.current)||n.setVolume({volume:e.volume})},getInputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getOutputByteFrequencyData()},getInputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getInputVolume())?e:0},getOutputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getOutputVolume())?e:0},sendFeedback:function(e){var n;null==(n=v.current)||n.sendFeedback(e)},getId:function(){var e;return null==(e=v.current)?void 0:e.getId()},sendContextualUpdate:function(e){var n;null==(n=v.current)||n.sendContextualUpdate(e)},sendUserMessage:function(e){var n;null==(n=v.current)||n.sendUserMessage(e)},sendUserActivity:function(){var e;null==(e=v.current)||e.sendUserActivity()},sendMCPToolApprovalResult:function(e,n){var r;null==(r=v.current)||r.sendMCPToolApprovalResult(e,n)},changeInputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeInputDevice"in v.current)return Promise.resolve(v.current.changeInputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},changeOutputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeOutputDevice"in v.current)return Promise.resolve(v.current.changeOutputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},status:E,canSendFeedback:S,micMuted:c,isSpeaking:"speaking"===R}},exports.useScribe=function(t){void 0===t&&(t={});var o=t.onSessionStarted,i=t.onPartialTranscript,u=t.onCommittedTranscript,l=t.onCommittedTranscriptWithTimestamps,c=t.onError,a=t.onAuthError,s=t.onQuotaExceededError,d=t.onCommitThrottledError,v=t.onTranscriberError,m=t.onUnacceptedTermsError,f=t.onRateLimitedError,h=t.onInputError,E=t.onQueueOverflowError,g=t.onResourceExhaustedError,p=t.onSessionTimeLimitExceededError,S=t.onChunkSizeExceededError,C=t.onInsufficientAudioActivityError,T=t.onConnect,R=t.onDisconnect,b=t.token,M=t.modelId,I=t.baseUri,D=t.commitStrategy,A=t.vadSilenceThresholdSecs,P=t.vadThreshold,y=t.minSpeechDurationMs,w=t.minSilenceDurationMs,O=t.languageCode,k=t.microphone,U=t.audioFormat,F=t.sampleRate,_=t.autoConnect,x=void 0!==_&&_,L=t.includeTimestamps,N=e.useRef(null),V=e.useState("disconnected"),j=V[0],q=V[1],B=e.useState(""),H=B[0],Q=B[1],W=e.useState([]),X=W[0],z=W[1],K=e.useState(null),Y=K[0],Z=K[1];e.useEffect(function(){return function(){var e;null==(e=N.current)||e.close()}},[]);var G=e.useCallback(function(e){void 0===e&&(e={});try{if(N.current)return console.warn("Already connected"),Promise.resolve();try{var r,t;q("connecting"),Z(null);var _=e.token||b,x=e.modelId||M;if(!_)throw new Error("Token is required");if(!x)throw new Error("Model ID is required");var V,j=e.microphone||k,B=e.audioFormat||U,H=e.sampleRate||F,W=null!=(r=null!=(t=e.includeTimestamps)?t:L)?r:!(!e.onCommittedTranscriptWithTimestamps&&!l);if(j)V=n.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||D,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||A,vadThreshold:e.vadThreshold||P,minSpeechDurationMs:e.minSpeechDurationMs||y,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,microphone:j,includeTimestamps:W});else{if(!B||!H)throw new Error("Either microphone options or (audioFormat + sampleRate) must be provided");V=n.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||D,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||A,vadThreshold:e.vadThreshold||P,minSpeechDurationMs:e.minSpeechDurationMs||y,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,includeTimestamps:W,audioFormat:B,sampleRate:H})}N.current=V,V.on(n.RealtimeEvents.SESSION_STARTED,function(){q("connected"),null==o||o()}),V.on(n.RealtimeEvents.PARTIAL_TRANSCRIPT,function(e){var n=e;Q(n.text),q("transcribing"),null==i||i(n)}),V.on(n.RealtimeEvents.COMMITTED_TRANSCRIPT,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0};z(function(e){return[].concat(e,[r])}),Q(""),null==u||u(n)}),V.on(n.RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0,words:n.words};z(function(e){return[].concat(e,[r])}),Q(""),null==l||l(n)}),V.on(n.RealtimeEvents.ERROR,function(e){var n=e;Z(n.error),q("error"),null==c||c(new Error(n.error))}),V.on(n.RealtimeEvents.AUTH_ERROR,function(e){var n=e;Z(n.error),q("error"),null==a||a(n)}),V.on(n.RealtimeEvents.QUOTA_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==s||s(n)}),V.on(n.RealtimeEvents.COMMIT_THROTTLED,function(e){var n=e;Z(n.error),q("error"),null==d||d(n)}),V.on(n.RealtimeEvents.TRANSCRIBER_ERROR,function(e){var n=e;Z(n.error),q("error"),null==v||v(n)}),V.on(n.RealtimeEvents.UNACCEPTED_TERMS,function(e){var n=e;Z(n.error),q("error"),null==m||m(n)}),V.on(n.RealtimeEvents.RATE_LIMITED,function(e){var n=e;Z(n.error),q("error"),null==f||f(n)}),V.on(n.RealtimeEvents.INPUT_ERROR,function(e){var n=e;Z(n.error),q("error"),null==h||h(n)}),V.on(n.RealtimeEvents.QUEUE_OVERFLOW,function(e){var n=e;Z(n.error),q("error"),null==E||E(n)}),V.on(n.RealtimeEvents.RESOURCE_EXHAUSTED,function(e){var n=e;Z(n.error),q("error"),null==g||g(n)}),V.on(n.RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==p||p(n)}),V.on(n.RealtimeEvents.CHUNK_SIZE_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==S||S(n)}),V.on(n.RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,function(e){var n=e;Z(n.error),q("error"),null==C||C(n)}),V.on(n.RealtimeEvents.OPEN,function(){null==T||T()}),V.on(n.RealtimeEvents.CLOSE,function(){q("disconnected"),N.current=null,null==R||R()})}catch(e){var X=e instanceof Error?e.message:"Failed to connect";throw Z(X),q("error"),e}return Promise.resolve()}catch(e){return Promise.reject(e)}},[b,M,I,D,A,P,y,w,O,k,U,F,L,o,i,u,l,c,a,s,d,v,m,f,h,E,g,p,S,C,T,R]),J=e.useCallback(function(){var e;null==(e=N.current)||e.close(),N.current=null,q("disconnected")},[]),$=e.useCallback(function(e,n){if(!N.current)throw new Error("Not connected to Scribe");N.current.send(r({audioBase64:e},n))},[]),ee=e.useCallback(function(){if(!N.current)throw new Error("Not connected to Scribe");N.current.commit()},[]),ne=e.useCallback(function(){z([]),Q("")},[]),re=e.useCallback(function(){return N.current},[]);return e.useEffect(function(){x&&G()},[x,G]),{status:j,isConnected:"connected"===j||"transcribing"===j,isTranscribing:"transcribing"===j,partialTranscript:H,committedTranscripts:X,error:Y,connect:G,disconnect:J,sendAudio:$,commit:ee,clearTranscripts:ne,getConnection:re}};
2
2
  //# sourceMappingURL=lib.cjs.map