@elevenlabs/react 0.6.3 → 0.7.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.
@@ -1,20 +1,20 @@
1
1
 
2
- > @elevenlabs/react@0.6.3 prebuild /home/runner/work/packages/packages/packages/react
2
+ > @elevenlabs/react@0.7.0 prebuild /home/runner/work/packages/packages/packages/react
3
3
  > pnpm run generate-version
4
4
 
5
5
 
6
- > @elevenlabs/react@0.6.3 generate-version /home/runner/work/packages/packages/packages/react
6
+ > @elevenlabs/react@0.7.0 generate-version /home/runner/work/packages/packages/packages/react
7
7
  > printf "// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"%s\";\n" "$npm_package_version" > src/version.ts
8
8
 
9
9
 
10
- > @elevenlabs/react@0.6.3 build /home/runner/work/packages/packages/packages/react
10
+ > @elevenlabs/react@0.7.0 build /home/runner/work/packages/packages/packages/react
11
11
  > BROWSERSLIST_ENV=modern microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react src/index.ts
12
12
 
13
13
  No name was provided for external module '@elevenlabs/client' in output.globals – guessing 'client'
14
14
  Build "@elevenlabs/react" to dist:
15
15
  2 kB: lib.cjs.gz
16
16
  1.77 kB: lib.cjs.br
17
- 1.77 kB: lib.modern.js.gz
17
+ 1.76 kB: lib.modern.js.gz
18
18
  1.55 kB: lib.modern.js.br
19
19
  1.98 kB: lib.module.js.gz
20
20
  1.76 kB: lib.module.js.br
@@ -1,4 +1,4 @@
1
1
 
2
- > @elevenlabs/react@0.6.3 generate-version /home/runner/work/packages/packages/packages/react
2
+ > @elevenlabs/react@0.7.0 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
 
package/README.md CHANGED
@@ -190,6 +190,7 @@ const conversation = useConversation({
190
190
  ```
191
191
 
192
192
  Available locations:
193
+
193
194
  - `"us"` (default) - United States servers
194
195
  - `"global"` - Global servers (same as US)
195
196
  - `"eu-residency"` - European Union residency servers
@@ -511,6 +512,58 @@ const { canSendFeedback } = useConversation();
511
512
  console.log(canSendFeedback); // boolean
512
513
  ```
513
514
 
515
+ ## CSP compliance
516
+
517
+ If your application has a tight Content Security Policy and does not allow data: or blob: in the `script-src` (w3.org/TR/CSP2#source-list-guid-matching), you self-host the needed files in the public folder.
518
+
519
+ Whitelisting these values is not recommended w3.org/TR/CSP2#source-list-guid-matching.
520
+
521
+ Add the worklet files to your public folder eg `public/elevenlabs`.
522
+
523
+ ```
524
+ @elevenlabs/client/scripts/
525
+ ```
526
+
527
+ Then call start with
528
+
529
+ ```ts
530
+ await conversation.startSession({
531
+ ...
532
+ workletPaths: {
533
+ 'rawAudioProcessor': '/elevenlabs/rawAudioProcessor.worklet.js',
534
+ 'audioConcatProcessor':
535
+ '/elevenlabs/audioConcatProcessor.worklet.js',
536
+ },
537
+ });
538
+ ```
539
+
540
+ It is recommended to update the scripts with a build script like
541
+
542
+ ```js
543
+ import { viteStaticCopy } from 'vite-plugin-static-copy'
544
+ import { createRequire } from 'node:module';
545
+ import path from 'path';
546
+
547
+ const require = createRequire(import.meta.url);
548
+
549
+ export default {
550
+ plugins: [
551
+ viteStaticCopy({
552
+ targets: [
553
+ {
554
+ src: require.resolve('@elevenlabs/client')/dist/worklets/audioConcatProcessor.js',
555
+ dest: 'dist',
556
+ },
557
+ {
558
+ src: require.resolve('@elevenlabs/client')/dist/worklets/rawAudioProcessor.js',
559
+ dest: 'dist',
560
+ },
561
+ ],
562
+ }),
563
+ ],
564
+ }
565
+ ```
566
+
514
567
  ## Development
515
568
 
516
569
  Please, refer to the README.md file in the root of this repository.
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type SessionConfig, type ClientToolsConfig, type InputConfig, type FormatConfig, type Status, type Callbacks } from "@elevenlabs/client";
1
+ import { type SessionConfig, type ClientToolsConfig, type InputConfig, type AudioWorkletConfig, type OutputConfig, type FormatConfig, type Status, type Callbacks } from "@elevenlabs/client";
2
2
  export type DeviceFormatConfig = {
3
3
  format: "pcm" | "ulaw";
4
4
  sampleRate: number;
@@ -14,7 +14,7 @@ export declare function getOriginForLocation(location: Location): string;
14
14
  export declare function getLivekitUrlForLocation(location: Location): string;
15
15
  export type { Role, Mode, Status, SessionConfig, DisconnectionDetails, Language, VadScoreEvent, InputConfig, FormatConfig, VoiceConversation, TextConversation, } from "@elevenlabs/client";
16
16
  export { postOverallFeedback } from "@elevenlabs/client";
17
- export type HookOptions = Partial<SessionConfig & HookCallbacks & ClientToolsConfig & InputConfig & FormatConfig & {
17
+ export type HookOptions = Partial<SessionConfig & HookCallbacks & ClientToolsConfig & InputConfig & OutputConfig & AudioWorkletConfig & FormatConfig & {
18
18
  serverLocation?: Location | string;
19
19
  }>;
20
20
  export type ControlledState = {
package/dist/lib.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var n=require("react"),e=require("@elevenlabs/client");function r(){return r=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var t in r)({}).hasOwnProperty.call(r,t)&&(n[t]=r[t])}return n},r.apply(null,arguments)}var t=["micMuted","volume","serverLocation"];function o(n){switch(void 0===n&&(n="us"),n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn("[ConversationalAI] Invalid server-location: "+n+'. Defaulting to "us"'),"us"}}function u(n){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"}[n]}function l(n){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"}[n]}Object.defineProperty(exports,"postOverallFeedback",{enumerable:!0,get:function(){return e.postOverallFeedback}}),exports.getLivekitUrlForLocation=l,exports.getOriginForLocation=u,exports.parseLocation=o,exports.useConversation=function(i){void 0===i&&(i={});var c=i.micMuted,s=i.volume,a=i.serverLocation,v=function(n,e){if(null==n)return{};var r={};for(var t in n)if({}.hasOwnProperty.call(n,t)){if(-1!==e.indexOf(t))continue;r[t]=n[t]}return r}(i,t),d=n.useRef(null),f=n.useRef(null),g=n.useState("disconnected"),p=g[0],h=g[1],C=n.useState(!1),b=C[0],m=C[1],y=n.useState("listening"),M=y[0],P=y[1],S=n.useRef(c),I=n.useRef(s);return S.current=c,I.current=s,n.useEffect(function(){var n;void 0!==c&&(null==d||null==(n=d.current)||n.setMicMuted(c))},[c]),n.useEffect(function(){var n;void 0!==s&&(null==d||null==(n=d.current)||n.setVolume({volume:s}))},[s]),n.useEffect(function(){return function(){var n;null==(n=d.current)||n.endSession()}},[]),{startSession:function(n){try{var t,i,c=function(t){return i?t:function(t,i){try{var c=(F=u(O=o((null==n?void 0:n.serverLocation)||a)),A=l(O),f.current=e.Conversation.startSession(r({},null!=v?v:{},null!=n?n:{},{origin:F,livekitUrl:A,overrides:r({},null!=(s=null==v?void 0:v.overrides)?s:{},null!=(g=null==n?void 0:n.overrides)?g:{},{client:r({},null!=(p=null==v||null==(C=v.overrides)?void 0:C.client)?p:{},null!=(b=null==n||null==(y=n.overrides)?void 0:y.client)?b:{},{source:(null==n||null==(M=n.overrides)||null==(M=M.client)?void 0:M.source)||(null==v||null==(k=v.overrides)||null==(k=k.client)?void 0:k.source)||"react_sdk",version:(null==n||null==(w=n.overrides)||null==(w=w.client)?void 0:w.version)||(null==v||null==(D=v.overrides)||null==(D=D.client)?void 0:D.version)||"0.6.3"})}),onConnect:(null==n?void 0:n.onConnect)||(null==v?void 0:v.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==v?void 0:v.onDisconnect),onError:(null==n?void 0:n.onError)||(null==v?void 0:v.onError),onMessage:(null==n?void 0:n.onMessage)||(null==v?void 0:v.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==v?void 0:v.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==v?void 0:v.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==v?void 0:v.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==v?void 0:v.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==v?void 0:v.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==v?void 0:v.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==v?void 0:v.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==v?void 0:v.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==v?void 0:v.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==v?void 0:v.onAsrInitiationMetadata),onModeChange:function(e){var r,t=e.mode;P(t),null==(r=(null==n?void 0:n.onModeChange)||(null==v?void 0:v.onModeChange))||r({mode:t})},onStatusChange:function(e){var r,t=e.status;h(t),null==(r=(null==n?void 0:n.onStatusChange)||(null==v?void 0:v.onStatusChange))||r({status:t})},onCanSendFeedbackChange:function(e){var r,t=e.canSendFeedback;m(t),null==(r=(null==n?void 0:n.onCanSendFeedbackChange)||(null==v?void 0:v.onCanSendFeedbackChange))||r({canSendFeedback:t})}})),Promise.resolve(f.current).then(function(n){return d.current=n,void 0!==S.current&&d.current.setMicMuted(S.current),void 0!==I.current&&d.current.setVolume({volume:I.current}),d.current.getId()}))}catch(n){return i(!0,n)}var s,g,p,C,b,y,M,k,w,D,O,F,A;return c&&c.then?c.then(i.bind(null,!1),i.bind(null,!0)):i(!1,c)}(0,function(n,e){if(f.current=null,n)throw e;return e})};if(null!=(t=d.current)&&t.isOpen())return Promise.resolve(d.current.getId());var s=function(){if(f.current)return Promise.resolve(f.current).then(function(n){var e=n.getId();return i=1,e})}();return Promise.resolve(s&&s.then?s.then(c):c(s))}catch(n){return Promise.reject(n)}},endSession:function(){try{var n=d.current;return d.current=null,Promise.resolve(null==n?void 0:n.endSession()).then(function(){})}catch(n){return Promise.reject(n)}},setVolume:function(n){var e;null==(e=d.current)||e.setVolume({volume:n.volume})},getInputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:function(n){var e;null==(e=d.current)||e.sendFeedback(n)},getId:function(){var n;return null==(n=d.current)?void 0:n.getId()},sendContextualUpdate:function(n){var e;null==(e=d.current)||e.sendContextualUpdate(n)},sendUserMessage:function(n){var e;null==(e=d.current)||e.sendUserMessage(n)},sendUserActivity:function(){var n;null==(n=d.current)||n.sendUserActivity()},sendMCPToolApprovalResult:function(n,e){var r;null==(r=d.current)||r.sendMCPToolApprovalResult(n,e)},changeInputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},t=function(){if(d.current&&"changeInputDevice"in d.current)return Promise.resolve(d.current.changeInputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(n){return Promise.reject(n)}},changeOutputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},t=function(){if(d.current&&"changeOutputDevice"in d.current)return Promise.resolve(d.current.changeOutputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(n){return Promise.reject(n)}},status:p,canSendFeedback:b,micMuted:c,isSpeaking:"speaking"===M}};
1
+ var n=require("react"),e=require("@elevenlabs/client");function r(){return r=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var t in r)({}).hasOwnProperty.call(r,t)&&(n[t]=r[t])}return n},r.apply(null,arguments)}var t=["micMuted","volume","serverLocation"];function o(n){switch(void 0===n&&(n="us"),n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn("[ConversationalAI] Invalid server-location: "+n+'. Defaulting to "us"'),"us"}}function u(n){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"}[n]}function l(n){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"}[n]}Object.defineProperty(exports,"postOverallFeedback",{enumerable:!0,get:function(){return e.postOverallFeedback}}),exports.getLivekitUrlForLocation=l,exports.getOriginForLocation=u,exports.parseLocation=o,exports.useConversation=function(i){void 0===i&&(i={});var c=i.micMuted,s=i.volume,a=i.serverLocation,v=function(n,e){if(null==n)return{};var r={};for(var t in n)if({}.hasOwnProperty.call(n,t)){if(-1!==e.indexOf(t))continue;r[t]=n[t]}return r}(i,t),d=n.useRef(null),f=n.useRef(null),g=n.useState("disconnected"),p=g[0],h=g[1],C=n.useState(!1),b=C[0],m=C[1],y=n.useState("listening"),M=y[0],P=y[1],S=n.useRef(c),I=n.useRef(s);return S.current=c,I.current=s,n.useEffect(function(){var n;void 0!==c&&(null==d||null==(n=d.current)||n.setMicMuted(c))},[c]),n.useEffect(function(){var n;void 0!==s&&(null==d||null==(n=d.current)||n.setVolume({volume:s}))},[s]),n.useEffect(function(){return function(){var n;null==(n=d.current)||n.endSession()}},[]),{startSession:function(n){try{var t,i,c=function(t){return i?t:function(t,i){try{var c=(F=u(O=o((null==n?void 0:n.serverLocation)||a)),A=l(O),f.current=e.Conversation.startSession(r({},null!=v?v:{},null!=n?n:{},{origin:F,livekitUrl:A,overrides:r({},null!=(s=null==v?void 0:v.overrides)?s:{},null!=(g=null==n?void 0:n.overrides)?g:{},{client:r({},null!=(p=null==v||null==(C=v.overrides)?void 0:C.client)?p:{},null!=(b=null==n||null==(y=n.overrides)?void 0:y.client)?b:{},{source:(null==n||null==(M=n.overrides)||null==(M=M.client)?void 0:M.source)||(null==v||null==(k=v.overrides)||null==(k=k.client)?void 0:k.source)||"react_sdk",version:(null==n||null==(w=n.overrides)||null==(w=w.client)?void 0:w.version)||(null==v||null==(D=v.overrides)||null==(D=D.client)?void 0:D.version)||"0.7.0"})}),onConnect:(null==n?void 0:n.onConnect)||(null==v?void 0:v.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==v?void 0:v.onDisconnect),onError:(null==n?void 0:n.onError)||(null==v?void 0:v.onError),onMessage:(null==n?void 0:n.onMessage)||(null==v?void 0:v.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==v?void 0:v.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==v?void 0:v.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==v?void 0:v.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==v?void 0:v.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==v?void 0:v.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==v?void 0:v.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==v?void 0:v.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==v?void 0:v.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==v?void 0:v.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==v?void 0:v.onAsrInitiationMetadata),onModeChange:function(e){var r,t=e.mode;P(t),null==(r=(null==n?void 0:n.onModeChange)||(null==v?void 0:v.onModeChange))||r({mode:t})},onStatusChange:function(e){var r,t=e.status;h(t),null==(r=(null==n?void 0:n.onStatusChange)||(null==v?void 0:v.onStatusChange))||r({status:t})},onCanSendFeedbackChange:function(e){var r,t=e.canSendFeedback;m(t),null==(r=(null==n?void 0:n.onCanSendFeedbackChange)||(null==v?void 0:v.onCanSendFeedbackChange))||r({canSendFeedback:t})}})),Promise.resolve(f.current).then(function(n){return d.current=n,void 0!==S.current&&d.current.setMicMuted(S.current),void 0!==I.current&&d.current.setVolume({volume:I.current}),d.current.getId()}))}catch(n){return i(!0,n)}var s,g,p,C,b,y,M,k,w,D,O,F,A;return c&&c.then?c.then(i.bind(null,!1),i.bind(null,!0)):i(!1,c)}(0,function(n,e){if(f.current=null,n)throw e;return e})};if(null!=(t=d.current)&&t.isOpen())return Promise.resolve(d.current.getId());var s=function(){if(f.current)return Promise.resolve(f.current).then(function(n){var e=n.getId();return i=1,e})}();return Promise.resolve(s&&s.then?s.then(c):c(s))}catch(n){return Promise.reject(n)}},endSession:function(){try{var n=d.current;return d.current=null,Promise.resolve(null==n?void 0:n.endSession()).then(function(){})}catch(n){return Promise.reject(n)}},setVolume:function(n){var e;null==(e=d.current)||e.setVolume({volume:n.volume})},getInputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:function(n){var e;null==(e=d.current)||e.sendFeedback(n)},getId:function(){var n;return null==(n=d.current)?void 0:n.getId()},sendContextualUpdate:function(n){var e;null==(e=d.current)||e.sendContextualUpdate(n)},sendUserMessage:function(n){var e;null==(e=d.current)||e.sendUserMessage(n)},sendUserActivity:function(){var n;null==(n=d.current)||n.sendUserActivity()},sendMCPToolApprovalResult:function(n,e){var r;null==(r=d.current)||r.sendMCPToolApprovalResult(n,e)},changeInputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},t=function(){if(d.current&&"changeInputDevice"in d.current)return Promise.resolve(d.current.changeInputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(n){return Promise.reject(n)}},changeOutputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},t=function(){if(d.current&&"changeOutputDevice"in d.current)return Promise.resolve(d.current.changeOutputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(n){return Promise.reject(n)}},status:p,canSendFeedback:b,micMuted:c,isSpeaking:"speaking"===M}};
2
2
  //# sourceMappingURL=lib.cjs.map
package/dist/lib.cjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lib.cjs","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.6.3\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","livekitUrl","Conversation","_extends","overrides","_defaultOptions$overr","_options$overrides","client","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","source","_options$overrides3","_defaultOptions$overr4","version","_options$overrides4","_defaultOptions$overr5","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking"],"mappings":"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"}
1
+ {"version":3,"file":"lib.cjs","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.7.0\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","livekitUrl","Conversation","_extends","overrides","_defaultOptions$overr","_options$overrides","client","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","source","_options$overrides3","_defaultOptions$overr4","version","_options$overrides4","_defaultOptions$overr5","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{useRef as n,useState as e,useEffect as l}from"react";import{Conversation as o}from"@elevenlabs/client";export{postOverallFeedback}from"@elevenlabs/client";function r(){return r=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var l=arguments[e];for(var o in l)({}).hasOwnProperty.call(l,o)&&(n[o]=l[o])}return n},r.apply(null,arguments)}const t=["micMuted","volume","serverLocation"];function u(n="us"){switch(n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn(`[ConversationalAI] Invalid server-location: ${n}. Defaulting to "us"`),"us"}}function i(n){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"}[n]}function a(n){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"}[n]}function s(s={}){const{micMuted:c,volume:d,serverLocation:v}=s,g=function(n,e){if(null==n)return{};var l={};for(var o in n)if({}.hasOwnProperty.call(n,o)){if(-1!==e.indexOf(o))continue;l[o]=n[o]}return l}(s,t),p=n(null),C=n(null),[y,b]=e("disconnected"),[M,f]=e(!1),[h,m]=e("listening"),w=n(c),S=n(d);return w.current=c,S.current=d,l(()=>{var n;void 0!==c&&(null==p||null==(n=p.current)||n.setMicMuted(c))},[c]),l(()=>{var n;void 0!==d&&(null==p||null==(n=p.current)||n.setVolume({volume:d}))},[d]),l(()=>()=>{var n;null==(n=p.current)||n.endSession()},[]),{startSession:async n=>{var e;if(null!=(e=p.current)&&e.isOpen())return p.current.getId();if(C.current)return(await C.current).getId();try{var l,t,s,c,d,y,M,h,I,D;const e=u((null==n?void 0:n.serverLocation)||v),k=i(e),A=a(e);return C.current=o.startSession(r({},null!=g?g:{},null!=n?n:{},{origin:k,livekitUrl:A,overrides:r({},null!=(l=null==g?void 0:g.overrides)?l:{},null!=(t=null==n?void 0:n.overrides)?t:{},{client:r({},null!=(s=null==g||null==(c=g.overrides)?void 0:c.client)?s:{},null!=(d=null==n||null==(y=n.overrides)?void 0:y.client)?d:{},{source:(null==n||null==(M=n.overrides)||null==(M=M.client)?void 0:M.source)||(null==g||null==(h=g.overrides)||null==(h=h.client)?void 0:h.source)||"react_sdk",version:(null==n||null==(I=n.overrides)||null==(I=I.client)?void 0:I.version)||(null==g||null==(D=g.overrides)||null==(D=D.client)?void 0:D.version)||"0.6.3"})}),onConnect:(null==n?void 0:n.onConnect)||(null==g?void 0:g.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==g?void 0:g.onDisconnect),onError:(null==n?void 0:n.onError)||(null==g?void 0:g.onError),onMessage:(null==n?void 0:n.onMessage)||(null==g?void 0:g.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==g?void 0:g.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==g?void 0:g.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==g?void 0:g.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==g?void 0:g.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==g?void 0:g.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==g?void 0:g.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==g?void 0:g.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==g?void 0:g.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==g?void 0:g.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==g?void 0:g.onAsrInitiationMetadata),onModeChange:({mode:e})=>{var l;m(e),null==(l=(null==n?void 0:n.onModeChange)||(null==g?void 0:g.onModeChange))||l({mode:e})},onStatusChange:({status:e})=>{var l;b(e),null==(l=(null==n?void 0:n.onStatusChange)||(null==g?void 0:g.onStatusChange))||l({status:e})},onCanSendFeedbackChange:({canSendFeedback:e})=>{var l;f(e),null==(l=(null==n?void 0:n.onCanSendFeedbackChange)||(null==g?void 0:g.onCanSendFeedbackChange))||l({canSendFeedback:e})}})),p.current=await C.current,void 0!==w.current&&p.current.setMicMuted(w.current),void 0!==S.current&&p.current.setVolume({volume:S.current}),p.current.getId()}finally{C.current=null}},endSession:async()=>{const n=p.current;p.current=null,await(null==n?void 0:n.endSession())},setVolume:({volume:n})=>{var e;null==(e=p.current)||e.setVolume({volume:n})},getInputByteFrequencyData:()=>{var n;return null==(n=p.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:()=>{var n;return null==(n=p.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:()=>{var n,e;return null!=(n=null==(e=p.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:()=>{var n,e;return null!=(n=null==(e=p.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:n=>{var e;null==(e=p.current)||e.sendFeedback(n)},getId:()=>{var n;return null==(n=p.current)?void 0:n.getId()},sendContextualUpdate:n=>{var e;null==(e=p.current)||e.sendContextualUpdate(n)},sendUserMessage:n=>{var e;null==(e=p.current)||e.sendUserMessage(n)},sendUserActivity:()=>{var n;null==(n=p.current)||n.sendUserActivity()},sendMCPToolApprovalResult:(n,e)=>{var l;null==(l=p.current)||l.sendMCPToolApprovalResult(n,e)},changeInputDevice:async n=>{if(p.current&&"changeInputDevice"in p.current)return await p.current.changeInputDevice(n);throw new Error("Device switching is only available for voice conversations")},changeOutputDevice:async n=>{if(p.current&&"changeOutputDevice"in p.current)return await p.current.changeOutputDevice(n);throw new Error("Device switching is only available for voice conversations")},status:y,canSendFeedback:M,micMuted:c,isSpeaking:"speaking"===h}}export{a as getLivekitUrlForLocation,i as getOriginForLocation,u as parseLocation,s as useConversation};
1
+ import{useRef as n,useState as e,useEffect as l}from"react";import{Conversation as o}from"@elevenlabs/client";export{postOverallFeedback}from"@elevenlabs/client";function r(){return r=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var l=arguments[e];for(var o in l)({}).hasOwnProperty.call(l,o)&&(n[o]=l[o])}return n},r.apply(null,arguments)}const t=["micMuted","volume","serverLocation"];function u(n="us"){switch(n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn(`[ConversationalAI] Invalid server-location: ${n}. Defaulting to "us"`),"us"}}function i(n){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"}[n]}function a(n){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"}[n]}function s(s={}){const{micMuted:c,volume:d,serverLocation:v}=s,g=function(n,e){if(null==n)return{};var l={};for(var o in n)if({}.hasOwnProperty.call(n,o)){if(-1!==e.indexOf(o))continue;l[o]=n[o]}return l}(s,t),p=n(null),C=n(null),[y,b]=e("disconnected"),[M,f]=e(!1),[h,m]=e("listening"),w=n(c),S=n(d);return w.current=c,S.current=d,l(()=>{var n;void 0!==c&&(null==p||null==(n=p.current)||n.setMicMuted(c))},[c]),l(()=>{var n;void 0!==d&&(null==p||null==(n=p.current)||n.setVolume({volume:d}))},[d]),l(()=>()=>{var n;null==(n=p.current)||n.endSession()},[]),{startSession:async n=>{var e;if(null!=(e=p.current)&&e.isOpen())return p.current.getId();if(C.current)return(await C.current).getId();try{var l,t,s,c,d,y,M,h,I,D;const e=u((null==n?void 0:n.serverLocation)||v),k=i(e),A=a(e);return C.current=o.startSession(r({},null!=g?g:{},null!=n?n:{},{origin:k,livekitUrl:A,overrides:r({},null!=(l=null==g?void 0:g.overrides)?l:{},null!=(t=null==n?void 0:n.overrides)?t:{},{client:r({},null!=(s=null==g||null==(c=g.overrides)?void 0:c.client)?s:{},null!=(d=null==n||null==(y=n.overrides)?void 0:y.client)?d:{},{source:(null==n||null==(M=n.overrides)||null==(M=M.client)?void 0:M.source)||(null==g||null==(h=g.overrides)||null==(h=h.client)?void 0:h.source)||"react_sdk",version:(null==n||null==(I=n.overrides)||null==(I=I.client)?void 0:I.version)||(null==g||null==(D=g.overrides)||null==(D=D.client)?void 0:D.version)||"0.7.0"})}),onConnect:(null==n?void 0:n.onConnect)||(null==g?void 0:g.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==g?void 0:g.onDisconnect),onError:(null==n?void 0:n.onError)||(null==g?void 0:g.onError),onMessage:(null==n?void 0:n.onMessage)||(null==g?void 0:g.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==g?void 0:g.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==g?void 0:g.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==g?void 0:g.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==g?void 0:g.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==g?void 0:g.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==g?void 0:g.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==g?void 0:g.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==g?void 0:g.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==g?void 0:g.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==g?void 0:g.onAsrInitiationMetadata),onModeChange:({mode:e})=>{var l;m(e),null==(l=(null==n?void 0:n.onModeChange)||(null==g?void 0:g.onModeChange))||l({mode:e})},onStatusChange:({status:e})=>{var l;b(e),null==(l=(null==n?void 0:n.onStatusChange)||(null==g?void 0:g.onStatusChange))||l({status:e})},onCanSendFeedbackChange:({canSendFeedback:e})=>{var l;f(e),null==(l=(null==n?void 0:n.onCanSendFeedbackChange)||(null==g?void 0:g.onCanSendFeedbackChange))||l({canSendFeedback:e})}})),p.current=await C.current,void 0!==w.current&&p.current.setMicMuted(w.current),void 0!==S.current&&p.current.setVolume({volume:S.current}),p.current.getId()}finally{C.current=null}},endSession:async()=>{const n=p.current;p.current=null,await(null==n?void 0:n.endSession())},setVolume:({volume:n})=>{var e;null==(e=p.current)||e.setVolume({volume:n})},getInputByteFrequencyData:()=>{var n;return null==(n=p.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:()=>{var n;return null==(n=p.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:()=>{var n,e;return null!=(n=null==(e=p.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:()=>{var n,e;return null!=(n=null==(e=p.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:n=>{var e;null==(e=p.current)||e.sendFeedback(n)},getId:()=>{var n;return null==(n=p.current)?void 0:n.getId()},sendContextualUpdate:n=>{var e;null==(e=p.current)||e.sendContextualUpdate(n)},sendUserMessage:n=>{var e;null==(e=p.current)||e.sendUserMessage(n)},sendUserActivity:()=>{var n;null==(n=p.current)||n.sendUserActivity()},sendMCPToolApprovalResult:(n,e)=>{var l;null==(l=p.current)||l.sendMCPToolApprovalResult(n,e)},changeInputDevice:async n=>{if(p.current&&"changeInputDevice"in p.current)return await p.current.changeInputDevice(n);throw new Error("Device switching is only available for voice conversations")},changeOutputDevice:async n=>{if(p.current&&"changeOutputDevice"in p.current)return await p.current.changeOutputDevice(n);throw new Error("Device switching is only available for voice conversations")},status:y,canSendFeedback:M,micMuted:c,isSpeaking:"speaking"===h}}export{a as getLivekitUrlForLocation,i as getOriginForLocation,u as parseLocation,s as useConversation};
2
2
  //# sourceMappingURL=lib.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib.modern.js","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.6.3\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["_excluded","parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","conversationRef","useRef","lockRef","status","setStatus","useState","canSendFeedback","setCanSendFeedback","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","async","_conversationRef$curr4","isOpen","getId","_defaultOptions$overr","_options$overrides","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","_options$overrides3","_defaultOptions$overr4","_options$overrides4","_defaultOptions$overr5","resolvedServerLocation","options","origin","livekitUrl","Conversation","_extends","overrides","client","source","version","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","onStatusChange","_ref2","onCanSendFeedbackChange","_ref3","conversation","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","Error","changeOutputDevice","isSpeaking"],"mappings":"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"}
1
+ {"version":3,"file":"lib.modern.js","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.7.0\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["_excluded","parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","conversationRef","useRef","lockRef","status","setStatus","useState","canSendFeedback","setCanSendFeedback","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","async","_conversationRef$curr4","isOpen","getId","_defaultOptions$overr","_options$overrides","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","_options$overrides3","_defaultOptions$overr4","_options$overrides4","_defaultOptions$overr5","resolvedServerLocation","options","origin","livekitUrl","Conversation","_extends","overrides","client","source","version","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","onStatusChange","_ref2","onCanSendFeedbackChange","_ref3","conversation","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","Error","changeOutputDevice","isSpeaking"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{useRef as n,useState as e,useEffect as r}from"react";import{Conversation as o}from"@elevenlabs/client";export{postOverallFeedback}from"@elevenlabs/client";function t(){return t=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)({}).hasOwnProperty.call(r,o)&&(n[o]=r[o])}return n},t.apply(null,arguments)}var l=["micMuted","volume","serverLocation"];function u(n){switch(void 0===n&&(n="us"),n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn("[ConversationalAI] Invalid server-location: "+n+'. Defaulting to "us"'),"us"}}function i(n){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"}[n]}function c(n){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"}[n]}function a(a){void 0===a&&(a={});var s=a.micMuted,v=a.volume,d=a.serverLocation,f=function(n,e){if(null==n)return{};var r={};for(var o in n)if({}.hasOwnProperty.call(n,o)){if(-1!==e.indexOf(o))continue;r[o]=n[o]}return r}(a,l),g=n(null),h=n(null),p=e("disconnected"),C=p[0],m=p[1],b=e(!1),y=b[0],M=b[1],P=e("listening"),S=P[0],I=P[1],w=n(s),D=n(v);return w.current=s,D.current=v,r(function(){var n;void 0!==s&&(null==g||null==(n=g.current)||n.setMicMuted(s))},[s]),r(function(){var n;void 0!==v&&(null==g||null==(n=g.current)||n.setVolume({volume:v}))},[v]),r(function(){return function(){var n;null==(n=g.current)||n.endSession()}},[]),{startSession:function(n){try{var e,r,l=function(e){return r?e:function(e,r){try{var l=(O=i(A=u((null==n?void 0:n.serverLocation)||d)),F=c(A),h.current=o.startSession(t({},null!=f?f:{},null!=n?n:{},{origin:O,livekitUrl:F,overrides:t({},null!=(a=null==f?void 0:f.overrides)?a:{},null!=(s=null==n?void 0:n.overrides)?s:{},{client:t({},null!=(v=null==f||null==(p=f.overrides)?void 0:p.client)?v:{},null!=(C=null==n||null==(b=n.overrides)?void 0:b.client)?C:{},{source:(null==n||null==(y=n.overrides)||null==(y=y.client)?void 0:y.source)||(null==f||null==(P=f.overrides)||null==(P=P.client)?void 0:P.source)||"react_sdk",version:(null==n||null==(S=n.overrides)||null==(S=S.client)?void 0:S.version)||(null==f||null==(k=f.overrides)||null==(k=k.client)?void 0:k.version)||"0.6.3"})}),onConnect:(null==n?void 0:n.onConnect)||(null==f?void 0:f.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==f?void 0:f.onDisconnect),onError:(null==n?void 0:n.onError)||(null==f?void 0:f.onError),onMessage:(null==n?void 0:n.onMessage)||(null==f?void 0:f.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==f?void 0:f.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==f?void 0:f.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==f?void 0:f.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==f?void 0:f.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==f?void 0:f.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==f?void 0:f.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==f?void 0:f.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==f?void 0:f.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==f?void 0:f.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==f?void 0:f.onAsrInitiationMetadata),onModeChange:function(e){var r,o=e.mode;I(o),null==(r=(null==n?void 0:n.onModeChange)||(null==f?void 0:f.onModeChange))||r({mode:o})},onStatusChange:function(e){var r,o=e.status;m(o),null==(r=(null==n?void 0:n.onStatusChange)||(null==f?void 0:f.onStatusChange))||r({status:o})},onCanSendFeedbackChange:function(e){var r,o=e.canSendFeedback;M(o),null==(r=(null==n?void 0:n.onCanSendFeedbackChange)||(null==f?void 0:f.onCanSendFeedbackChange))||r({canSendFeedback:o})}})),Promise.resolve(h.current).then(function(n){return g.current=n,void 0!==w.current&&g.current.setMicMuted(w.current),void 0!==D.current&&g.current.setVolume({volume:D.current}),g.current.getId()}))}catch(n){return r(!0,n)}var a,s,v,p,C,b,y,P,S,k,A,O,F;return l&&l.then?l.then(r.bind(null,!1),r.bind(null,!0)):r(!1,l)}(0,function(n,e){if(h.current=null,n)throw e;return e})};if(null!=(e=g.current)&&e.isOpen())return Promise.resolve(g.current.getId());var a=function(){if(h.current)return Promise.resolve(h.current).then(function(n){var e=n.getId();return r=1,e})}();return Promise.resolve(a&&a.then?a.then(l):l(a))}catch(n){return Promise.reject(n)}},endSession:function(){try{var n=g.current;return g.current=null,Promise.resolve(null==n?void 0:n.endSession()).then(function(){})}catch(n){return Promise.reject(n)}},setVolume:function(n){var e;null==(e=g.current)||e.setVolume({volume:n.volume})},getInputByteFrequencyData:function(){var n;return null==(n=g.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var n;return null==(n=g.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:function(){var n,e;return null!=(n=null==(e=g.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:function(){var n,e;return null!=(n=null==(e=g.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:function(n){var e;null==(e=g.current)||e.sendFeedback(n)},getId:function(){var n;return null==(n=g.current)?void 0:n.getId()},sendContextualUpdate:function(n){var e;null==(e=g.current)||e.sendContextualUpdate(n)},sendUserMessage:function(n){var e;null==(e=g.current)||e.sendUserMessage(n)},sendUserActivity:function(){var n;null==(n=g.current)||n.sendUserActivity()},sendMCPToolApprovalResult:function(n,e){var r;null==(r=g.current)||r.sendMCPToolApprovalResult(n,e)},changeInputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(g.current&&"changeInputDevice"in g.current)return Promise.resolve(g.current.changeInputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(r):r(o))}catch(n){return Promise.reject(n)}},changeOutputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(g.current&&"changeOutputDevice"in g.current)return Promise.resolve(g.current.changeOutputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(r):r(o))}catch(n){return Promise.reject(n)}},status:C,canSendFeedback:y,micMuted:s,isSpeaking:"speaking"===S}}export{c as getLivekitUrlForLocation,i as getOriginForLocation,u as parseLocation,a as useConversation};
1
+ import{useRef as n,useState as e,useEffect as r}from"react";import{Conversation as o}from"@elevenlabs/client";export{postOverallFeedback}from"@elevenlabs/client";function t(){return t=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var o in r)({}).hasOwnProperty.call(r,o)&&(n[o]=r[o])}return n},t.apply(null,arguments)}var l=["micMuted","volume","serverLocation"];function u(n){switch(void 0===n&&(n="us"),n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn("[ConversationalAI] Invalid server-location: "+n+'. Defaulting to "us"'),"us"}}function i(n){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"}[n]}function c(n){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"}[n]}function a(a){void 0===a&&(a={});var s=a.micMuted,v=a.volume,d=a.serverLocation,f=function(n,e){if(null==n)return{};var r={};for(var o in n)if({}.hasOwnProperty.call(n,o)){if(-1!==e.indexOf(o))continue;r[o]=n[o]}return r}(a,l),g=n(null),h=n(null),p=e("disconnected"),C=p[0],m=p[1],b=e(!1),y=b[0],M=b[1],P=e("listening"),S=P[0],I=P[1],w=n(s),D=n(v);return w.current=s,D.current=v,r(function(){var n;void 0!==s&&(null==g||null==(n=g.current)||n.setMicMuted(s))},[s]),r(function(){var n;void 0!==v&&(null==g||null==(n=g.current)||n.setVolume({volume:v}))},[v]),r(function(){return function(){var n;null==(n=g.current)||n.endSession()}},[]),{startSession:function(n){try{var e,r,l=function(e){return r?e:function(e,r){try{var l=(O=i(A=u((null==n?void 0:n.serverLocation)||d)),F=c(A),h.current=o.startSession(t({},null!=f?f:{},null!=n?n:{},{origin:O,livekitUrl:F,overrides:t({},null!=(a=null==f?void 0:f.overrides)?a:{},null!=(s=null==n?void 0:n.overrides)?s:{},{client:t({},null!=(v=null==f||null==(p=f.overrides)?void 0:p.client)?v:{},null!=(C=null==n||null==(b=n.overrides)?void 0:b.client)?C:{},{source:(null==n||null==(y=n.overrides)||null==(y=y.client)?void 0:y.source)||(null==f||null==(P=f.overrides)||null==(P=P.client)?void 0:P.source)||"react_sdk",version:(null==n||null==(S=n.overrides)||null==(S=S.client)?void 0:S.version)||(null==f||null==(k=f.overrides)||null==(k=k.client)?void 0:k.version)||"0.7.0"})}),onConnect:(null==n?void 0:n.onConnect)||(null==f?void 0:f.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==f?void 0:f.onDisconnect),onError:(null==n?void 0:n.onError)||(null==f?void 0:f.onError),onMessage:(null==n?void 0:n.onMessage)||(null==f?void 0:f.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==f?void 0:f.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==f?void 0:f.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==f?void 0:f.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==f?void 0:f.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==f?void 0:f.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==f?void 0:f.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==f?void 0:f.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==f?void 0:f.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==f?void 0:f.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==f?void 0:f.onAsrInitiationMetadata),onModeChange:function(e){var r,o=e.mode;I(o),null==(r=(null==n?void 0:n.onModeChange)||(null==f?void 0:f.onModeChange))||r({mode:o})},onStatusChange:function(e){var r,o=e.status;m(o),null==(r=(null==n?void 0:n.onStatusChange)||(null==f?void 0:f.onStatusChange))||r({status:o})},onCanSendFeedbackChange:function(e){var r,o=e.canSendFeedback;M(o),null==(r=(null==n?void 0:n.onCanSendFeedbackChange)||(null==f?void 0:f.onCanSendFeedbackChange))||r({canSendFeedback:o})}})),Promise.resolve(h.current).then(function(n){return g.current=n,void 0!==w.current&&g.current.setMicMuted(w.current),void 0!==D.current&&g.current.setVolume({volume:D.current}),g.current.getId()}))}catch(n){return r(!0,n)}var a,s,v,p,C,b,y,P,S,k,A,O,F;return l&&l.then?l.then(r.bind(null,!1),r.bind(null,!0)):r(!1,l)}(0,function(n,e){if(h.current=null,n)throw e;return e})};if(null!=(e=g.current)&&e.isOpen())return Promise.resolve(g.current.getId());var a=function(){if(h.current)return Promise.resolve(h.current).then(function(n){var e=n.getId();return r=1,e})}();return Promise.resolve(a&&a.then?a.then(l):l(a))}catch(n){return Promise.reject(n)}},endSession:function(){try{var n=g.current;return g.current=null,Promise.resolve(null==n?void 0:n.endSession()).then(function(){})}catch(n){return Promise.reject(n)}},setVolume:function(n){var e;null==(e=g.current)||e.setVolume({volume:n.volume})},getInputByteFrequencyData:function(){var n;return null==(n=g.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var n;return null==(n=g.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:function(){var n,e;return null!=(n=null==(e=g.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:function(){var n,e;return null!=(n=null==(e=g.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:function(n){var e;null==(e=g.current)||e.sendFeedback(n)},getId:function(){var n;return null==(n=g.current)?void 0:n.getId()},sendContextualUpdate:function(n){var e;null==(e=g.current)||e.sendContextualUpdate(n)},sendUserMessage:function(n){var e;null==(e=g.current)||e.sendUserMessage(n)},sendUserActivity:function(){var n;null==(n=g.current)||n.sendUserActivity()},sendMCPToolApprovalResult:function(n,e){var r;null==(r=g.current)||r.sendMCPToolApprovalResult(n,e)},changeInputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(g.current&&"changeInputDevice"in g.current)return Promise.resolve(g.current.changeInputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(r):r(o))}catch(n){return Promise.reject(n)}},changeOutputDevice:function(n){try{var e,r=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(g.current&&"changeOutputDevice"in g.current)return Promise.resolve(g.current.changeOutputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(r):r(o))}catch(n){return Promise.reject(n)}},status:C,canSendFeedback:y,micMuted:s,isSpeaking:"speaking"===S}}export{c as getLivekitUrlForLocation,i as getOriginForLocation,u as parseLocation,a as useConversation};
2
2
  //# sourceMappingURL=lib.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib.module.js","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.6.3\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","livekitUrl","Conversation","_extends","overrides","_defaultOptions$overr","_options$overrides","client","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","source","_options$overrides3","_defaultOptions$overr4","version","_options$overrides4","_defaultOptions$overr5","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking"],"mappings":"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"}
1
+ {"version":3,"file":"lib.module.js","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.7.0\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","livekitUrl","Conversation","_extends","overrides","_defaultOptions$overr","_options$overrides","client","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","source","_options$overrides3","_defaultOptions$overr4","version","_options$overrides4","_defaultOptions$overr5","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking"],"mappings":"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"}
package/dist/lib.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("@elevenlabs/client")):"function"==typeof define&&define.amd?define(["exports","react","@elevenlabs/client"],e):e((n||self).react={},n.react,n.client)}(this,function(n,e,t){function o(){return o=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)({}).hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n},o.apply(null,arguments)}var r=["micMuted","volume","serverLocation"];function u(n){switch(void 0===n&&(n="us"),n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn("[ConversationalAI] Invalid server-location: "+n+'. Defaulting to "us"'),"us"}}function l(n){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"}[n]}function i(n){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"}[n]}Object.defineProperty(n,"postOverallFeedback",{enumerable:!0,get:function(){return t.postOverallFeedback}}),n.getLivekitUrlForLocation=i,n.getOriginForLocation=l,n.parseLocation=u,n.useConversation=function(n){void 0===n&&(n={});var c=n.micMuted,s=n.volume,a=n.serverLocation,v=function(n,e){if(null==n)return{};var t={};for(var o in n)if({}.hasOwnProperty.call(n,o)){if(-1!==e.indexOf(o))continue;t[o]=n[o]}return t}(n,r),d=e.useRef(null),f=e.useRef(null),g=e.useState("disconnected"),h=g[0],p=g[1],C=e.useState(!1),b=C[0],m=C[1],y=e.useState("listening"),M=y[0],P=y[1],S=e.useRef(c),I=e.useRef(s);return S.current=c,I.current=s,e.useEffect(function(){var n;void 0!==c&&(null==d||null==(n=d.current)||n.setMicMuted(c))},[c]),e.useEffect(function(){var n;void 0!==s&&(null==d||null==(n=d.current)||n.setVolume({volume:s}))},[s]),e.useEffect(function(){return function(){var n;null==(n=d.current)||n.endSession()}},[]),{startSession:function(n){try{var e,r,c=function(e){return r?e:function(e,r){try{var c=(F=l(O=u((null==n?void 0:n.serverLocation)||a)),A=i(O),f.current=t.Conversation.startSession(o({},null!=v?v:{},null!=n?n:{},{origin:F,livekitUrl:A,overrides:o({},null!=(s=null==v?void 0:v.overrides)?s:{},null!=(g=null==n?void 0:n.overrides)?g:{},{client:o({},null!=(h=null==v||null==(C=v.overrides)?void 0:C.client)?h:{},null!=(b=null==n||null==(y=n.overrides)?void 0:y.client)?b:{},{source:(null==n||null==(M=n.overrides)||null==(M=M.client)?void 0:M.source)||(null==v||null==(k=v.overrides)||null==(k=k.client)?void 0:k.source)||"react_sdk",version:(null==n||null==(w=n.overrides)||null==(w=w.client)?void 0:w.version)||(null==v||null==(D=v.overrides)||null==(D=D.client)?void 0:D.version)||"0.6.3"})}),onConnect:(null==n?void 0:n.onConnect)||(null==v?void 0:v.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==v?void 0:v.onDisconnect),onError:(null==n?void 0:n.onError)||(null==v?void 0:v.onError),onMessage:(null==n?void 0:n.onMessage)||(null==v?void 0:v.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==v?void 0:v.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==v?void 0:v.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==v?void 0:v.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==v?void 0:v.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==v?void 0:v.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==v?void 0:v.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==v?void 0:v.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==v?void 0:v.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==v?void 0:v.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==v?void 0:v.onAsrInitiationMetadata),onModeChange:function(e){var t,o=e.mode;P(o),null==(t=(null==n?void 0:n.onModeChange)||(null==v?void 0:v.onModeChange))||t({mode:o})},onStatusChange:function(e){var t,o=e.status;p(o),null==(t=(null==n?void 0:n.onStatusChange)||(null==v?void 0:v.onStatusChange))||t({status:o})},onCanSendFeedbackChange:function(e){var t,o=e.canSendFeedback;m(o),null==(t=(null==n?void 0:n.onCanSendFeedbackChange)||(null==v?void 0:v.onCanSendFeedbackChange))||t({canSendFeedback:o})}})),Promise.resolve(f.current).then(function(n){return d.current=n,void 0!==S.current&&d.current.setMicMuted(S.current),void 0!==I.current&&d.current.setVolume({volume:I.current}),d.current.getId()}))}catch(n){return r(!0,n)}var s,g,h,C,b,y,M,k,w,D,O,F,A;return c&&c.then?c.then(r.bind(null,!1),r.bind(null,!0)):r(!1,c)}(0,function(n,e){if(f.current=null,n)throw e;return e})};if(null!=(e=d.current)&&e.isOpen())return Promise.resolve(d.current.getId());var s=function(){if(f.current)return Promise.resolve(f.current).then(function(n){var e=n.getId();return r=1,e})}();return Promise.resolve(s&&s.then?s.then(c):c(s))}catch(n){return Promise.reject(n)}},endSession:function(){try{var n=d.current;return d.current=null,Promise.resolve(null==n?void 0:n.endSession()).then(function(){})}catch(n){return Promise.reject(n)}},setVolume:function(n){var e;null==(e=d.current)||e.setVolume({volume:n.volume})},getInputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:function(n){var e;null==(e=d.current)||e.sendFeedback(n)},getId:function(){var n;return null==(n=d.current)?void 0:n.getId()},sendContextualUpdate:function(n){var e;null==(e=d.current)||e.sendContextualUpdate(n)},sendUserMessage:function(n){var e;null==(e=d.current)||e.sendUserMessage(n)},sendUserActivity:function(){var n;null==(n=d.current)||n.sendUserActivity()},sendMCPToolApprovalResult:function(n,e){var t;null==(t=d.current)||t.sendMCPToolApprovalResult(n,e)},changeInputDevice:function(n){try{var e,t=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(d.current&&"changeInputDevice"in d.current)return Promise.resolve(d.current.changeInputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(t):t(o))}catch(n){return Promise.reject(n)}},changeOutputDevice:function(n){try{var e,t=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(d.current&&"changeOutputDevice"in d.current)return Promise.resolve(d.current.changeOutputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(t):t(o))}catch(n){return Promise.reject(n)}},status:h,canSendFeedback:b,micMuted:c,isSpeaking:"speaking"===M}}});
1
+ !function(n,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("react"),require("@elevenlabs/client")):"function"==typeof define&&define.amd?define(["exports","react","@elevenlabs/client"],e):e((n||self).react={},n.react,n.client)}(this,function(n,e,t){function o(){return o=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var o in t)({}).hasOwnProperty.call(t,o)&&(n[o]=t[o])}return n},o.apply(null,arguments)}var r=["micMuted","volume","serverLocation"];function u(n){switch(void 0===n&&(n="us"),n){case"eu-residency":case"in-residency":case"us":case"global":return n;default:return console.warn("[ConversationalAI] Invalid server-location: "+n+'. Defaulting to "us"'),"us"}}function l(n){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"}[n]}function i(n){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"}[n]}Object.defineProperty(n,"postOverallFeedback",{enumerable:!0,get:function(){return t.postOverallFeedback}}),n.getLivekitUrlForLocation=i,n.getOriginForLocation=l,n.parseLocation=u,n.useConversation=function(n){void 0===n&&(n={});var c=n.micMuted,s=n.volume,a=n.serverLocation,v=function(n,e){if(null==n)return{};var t={};for(var o in n)if({}.hasOwnProperty.call(n,o)){if(-1!==e.indexOf(o))continue;t[o]=n[o]}return t}(n,r),d=e.useRef(null),f=e.useRef(null),g=e.useState("disconnected"),h=g[0],p=g[1],C=e.useState(!1),b=C[0],m=C[1],y=e.useState("listening"),M=y[0],P=y[1],S=e.useRef(c),I=e.useRef(s);return S.current=c,I.current=s,e.useEffect(function(){var n;void 0!==c&&(null==d||null==(n=d.current)||n.setMicMuted(c))},[c]),e.useEffect(function(){var n;void 0!==s&&(null==d||null==(n=d.current)||n.setVolume({volume:s}))},[s]),e.useEffect(function(){return function(){var n;null==(n=d.current)||n.endSession()}},[]),{startSession:function(n){try{var e,r,c=function(e){return r?e:function(e,r){try{var c=(F=l(O=u((null==n?void 0:n.serverLocation)||a)),A=i(O),f.current=t.Conversation.startSession(o({},null!=v?v:{},null!=n?n:{},{origin:F,livekitUrl:A,overrides:o({},null!=(s=null==v?void 0:v.overrides)?s:{},null!=(g=null==n?void 0:n.overrides)?g:{},{client:o({},null!=(h=null==v||null==(C=v.overrides)?void 0:C.client)?h:{},null!=(b=null==n||null==(y=n.overrides)?void 0:y.client)?b:{},{source:(null==n||null==(M=n.overrides)||null==(M=M.client)?void 0:M.source)||(null==v||null==(k=v.overrides)||null==(k=k.client)?void 0:k.source)||"react_sdk",version:(null==n||null==(w=n.overrides)||null==(w=w.client)?void 0:w.version)||(null==v||null==(D=v.overrides)||null==(D=D.client)?void 0:D.version)||"0.7.0"})}),onConnect:(null==n?void 0:n.onConnect)||(null==v?void 0:v.onConnect),onDisconnect:(null==n?void 0:n.onDisconnect)||(null==v?void 0:v.onDisconnect),onError:(null==n?void 0:n.onError)||(null==v?void 0:v.onError),onMessage:(null==n?void 0:n.onMessage)||(null==v?void 0:v.onMessage),onAudio:(null==n?void 0:n.onAudio)||(null==v?void 0:v.onAudio),onDebug:(null==n?void 0:n.onDebug)||(null==v?void 0:v.onDebug),onUnhandledClientToolCall:(null==n?void 0:n.onUnhandledClientToolCall)||(null==v?void 0:v.onUnhandledClientToolCall),onVadScore:(null==n?void 0:n.onVadScore)||(null==v?void 0:v.onVadScore),onInterruption:(null==n?void 0:n.onInterruption)||(null==v?void 0:v.onInterruption),onAgentToolResponse:(null==n?void 0:n.onAgentToolResponse)||(null==v?void 0:v.onAgentToolResponse),onConversationMetadata:(null==n?void 0:n.onConversationMetadata)||(null==v?void 0:v.onConversationMetadata),onMCPToolCall:(null==n?void 0:n.onMCPToolCall)||(null==v?void 0:v.onMCPToolCall),onMCPConnectionStatus:(null==n?void 0:n.onMCPConnectionStatus)||(null==v?void 0:v.onMCPConnectionStatus),onAsrInitiationMetadata:(null==n?void 0:n.onAsrInitiationMetadata)||(null==v?void 0:v.onAsrInitiationMetadata),onModeChange:function(e){var t,o=e.mode;P(o),null==(t=(null==n?void 0:n.onModeChange)||(null==v?void 0:v.onModeChange))||t({mode:o})},onStatusChange:function(e){var t,o=e.status;p(o),null==(t=(null==n?void 0:n.onStatusChange)||(null==v?void 0:v.onStatusChange))||t({status:o})},onCanSendFeedbackChange:function(e){var t,o=e.canSendFeedback;m(o),null==(t=(null==n?void 0:n.onCanSendFeedbackChange)||(null==v?void 0:v.onCanSendFeedbackChange))||t({canSendFeedback:o})}})),Promise.resolve(f.current).then(function(n){return d.current=n,void 0!==S.current&&d.current.setMicMuted(S.current),void 0!==I.current&&d.current.setVolume({volume:I.current}),d.current.getId()}))}catch(n){return r(!0,n)}var s,g,h,C,b,y,M,k,w,D,O,F,A;return c&&c.then?c.then(r.bind(null,!1),r.bind(null,!0)):r(!1,c)}(0,function(n,e){if(f.current=null,n)throw e;return e})};if(null!=(e=d.current)&&e.isOpen())return Promise.resolve(d.current.getId());var s=function(){if(f.current)return Promise.resolve(f.current).then(function(n){var e=n.getId();return r=1,e})}();return Promise.resolve(s&&s.then?s.then(c):c(s))}catch(n){return Promise.reject(n)}},endSession:function(){try{var n=d.current;return d.current=null,Promise.resolve(null==n?void 0:n.endSession()).then(function(){})}catch(n){return Promise.reject(n)}},setVolume:function(n){var e;null==(e=d.current)||e.setVolume({volume:n.volume})},getInputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var n;return null==(n=d.current)?void 0:n.getOutputByteFrequencyData()},getInputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getInputVolume())?n:0},getOutputVolume:function(){var n,e;return null!=(n=null==(e=d.current)?void 0:e.getOutputVolume())?n:0},sendFeedback:function(n){var e;null==(e=d.current)||e.sendFeedback(n)},getId:function(){var n;return null==(n=d.current)?void 0:n.getId()},sendContextualUpdate:function(n){var e;null==(e=d.current)||e.sendContextualUpdate(n)},sendUserMessage:function(n){var e;null==(e=d.current)||e.sendUserMessage(n)},sendUserActivity:function(){var n;null==(n=d.current)||n.sendUserActivity()},sendMCPToolApprovalResult:function(n,e){var t;null==(t=d.current)||t.sendMCPToolApprovalResult(n,e)},changeInputDevice:function(n){try{var e,t=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(d.current&&"changeInputDevice"in d.current)return Promise.resolve(d.current.changeInputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(t):t(o))}catch(n){return Promise.reject(n)}},changeOutputDevice:function(n){try{var e,t=function(n){if(e)return n;throw new Error("Device switching is only available for voice conversations")},o=function(){if(d.current&&"changeOutputDevice"in d.current)return Promise.resolve(d.current.changeOutputDevice(n)).then(function(n){return e=1,n})}();return Promise.resolve(o&&o.then?o.then(t):t(o))}catch(n){return Promise.reject(n)}},status:h,canSendFeedback:b,micMuted:c,isSpeaking:"speaking"===M}}});
2
2
  //# sourceMappingURL=lib.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib.umd.js","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.6.3\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","livekitUrl","Conversation","_extends","overrides","_defaultOptions$overr","_options$overrides","client","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","source","_options$overrides3","_defaultOptions$overr4","version","_options$overrides4","_defaultOptions$overr5","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking"],"mappings":"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"}
1
+ {"version":3,"file":"lib.umd.js","sources":["../src/version.ts","../src/index.ts"],"sourcesContent":["// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.7.0\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n>;\n\nexport function useConversation<T extends HookOptions & ControlledState>(\n props: T = {} as T\n) {\n const { micMuted, volume, serverLocation, ...defaultOptions } = props;\n const conversationRef = useRef<Conversation | null>(null);\n const lockRef = useRef<Promise<Conversation> | null>(null);\n const [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const livekitUrl = getLivekitUrlForLocation(resolvedServerLocation);\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n livekitUrl,\n overrides: {\n ...(defaultOptions?.overrides ?? {}),\n ...(options?.overrides ?? {}),\n client: {\n ...(defaultOptions?.overrides?.client ?? {}),\n ...(options?.overrides?.client ?? {}),\n source:\n options?.overrides?.client?.source ||\n defaultOptions?.overrides?.client?.source ||\n \"react_sdk\",\n version:\n options?.overrides?.client?.version ||\n defaultOptions?.overrides?.client?.version ||\n PACKAGE_VERSION,\n },\n },\n // Pass through user-provided callbacks\n onConnect: options?.onConnect || defaultOptions?.onConnect,\n onDisconnect: options?.onDisconnect || defaultOptions?.onDisconnect,\n onError: options?.onError || defaultOptions?.onError,\n onMessage: options?.onMessage || defaultOptions?.onMessage,\n onAudio: options?.onAudio || defaultOptions?.onAudio,\n onDebug: options?.onDebug || defaultOptions?.onDebug,\n onUnhandledClientToolCall:\n options?.onUnhandledClientToolCall ||\n defaultOptions?.onUnhandledClientToolCall,\n onVadScore: options?.onVadScore || defaultOptions?.onVadScore,\n onInterruption:\n options?.onInterruption || defaultOptions?.onInterruption,\n onAgentToolResponse:\n options?.onAgentToolResponse || defaultOptions?.onAgentToolResponse,\n onConversationMetadata:\n options?.onConversationMetadata ||\n defaultOptions?.onConversationMetadata,\n onMCPToolCall:\n options?.onMCPToolCall || defaultOptions?.onMCPToolCall,\n onMCPConnectionStatus:\n options?.onMCPConnectionStatus ||\n defaultOptions?.onMCPConnectionStatus,\n onAsrInitiationMetadata:\n options?.onAsrInitiationMetadata ||\n defaultOptions?.onAsrInitiationMetadata,\n onModeChange: ({ mode }) => {\n setMode(mode);\n (options?.onModeChange || defaultOptions?.onModeChange)?.({ mode });\n },\n onStatusChange: ({ status }) => {\n setStatus(status);\n (options?.onStatusChange || defaultOptions?.onStatusChange)?.({\n status,\n });\n },\n onCanSendFeedbackChange: ({ canSendFeedback }) => {\n setCanSendFeedback(canSendFeedback);\n (\n options?.onCanSendFeedbackChange ||\n defaultOptions?.onCanSendFeedbackChange\n )?.({ canSendFeedback });\n },\n } as Options);\n\n conversationRef.current = await lockRef.current;\n // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","livekitUrl","Conversation","_extends","overrides","_defaultOptions$overr","_options$overrides","client","_defaultOptions$overr2","_defaultOptions$overr3","_options$overrides$cl","_options$overrides2","source","_options$overrides3","_defaultOptions$overr4","version","_options$overrides4","_defaultOptions$overr5","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking"],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const PACKAGE_VERSION = "0.6.3";
1
+ export declare const PACKAGE_VERSION = "0.7.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevenlabs/react",
3
- "version": "0.6.3",
3
+ "version": "0.7.0",
4
4
  "description": "ElevenLabs React Library",
5
5
  "main": "./dist/lib.umd.js",
6
6
  "module": "./dist/lib.module.js",
@@ -19,7 +19,7 @@
19
19
  "author": "ElevenLabs",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@elevenlabs/client": "0.6.2"
22
+ "@elevenlabs/client": "0.7.0"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": ">=16.8.0"