@elevenlabs/react 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +22 -0
- package/.turbo/turbo-generate-version.log +4 -0
- package/LICENSE +1 -1
- package/README.md +25 -5
- package/dist/index.d.ts +2 -1
- package/dist/lib.cjs +1 -1
- package/dist/lib.cjs.map +1 -1
- package/dist/lib.modern.js +1 -1
- package/dist/lib.modern.js.map +1 -1
- package/dist/lib.module.js +1 -1
- package/dist/lib.module.js.map +1 -1
- package/dist/lib.umd.js +1 -1
- package/dist/lib.umd.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/package.json +7 -4
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
|
|
2
|
+
> @elevenlabs/react@0.6.3 prebuild /home/runner/work/packages/packages/packages/react
|
|
3
|
+
> pnpm run generate-version
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
> @elevenlabs/react@0.6.3 generate-version /home/runner/work/packages/packages/packages/react
|
|
7
|
+
> printf "// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"%s\";\n" "$npm_package_version" > src/version.ts
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
> @elevenlabs/react@0.6.3 build /home/runner/work/packages/packages/packages/react
|
|
11
|
+
> BROWSERSLIST_ENV=modern microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react src/index.ts
|
|
12
|
+
|
|
13
|
+
No name was provided for external module '@elevenlabs/client' in output.globals – guessing 'client'
|
|
14
|
+
Build "@elevenlabs/react" to dist:
|
|
15
|
+
2 kB: lib.cjs.gz
|
|
16
|
+
1.77 kB: lib.cjs.br
|
|
17
|
+
1.77 kB: lib.modern.js.gz
|
|
18
|
+
1.55 kB: lib.modern.js.br
|
|
19
|
+
1.98 kB: lib.module.js.gz
|
|
20
|
+
1.76 kB: lib.module.js.br
|
|
21
|
+
2.08 kB: lib.umd.js.gz
|
|
22
|
+
1.84 kB: lib.umd.js.br
|
package/LICENSE
CHANGED
package/README.md
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
|
|
1
|
+

|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# ElevenLabs Agents React SDK
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Build multimodal agents with the [ElevenLabs Agents platform](https://elevenlabs.io/docs/agents-platform/overview).
|
|
6
|
+
|
|
7
|
+
An SDK library for using ElevenLabs Agents. If you're looking for a Node.js library for other audio APIs, please refer to the [ElevenLabs Node.js Library](https://www.npmjs.com/package/@elevenlabs/elevenlabs-js).
|
|
6
8
|
|
|
7
9
|

|
|
8
10
|
[](https://discord.gg/elevenlabs)
|
|
@@ -177,6 +179,24 @@ const conversation = useConversation({
|
|
|
177
179
|
});
|
|
178
180
|
```
|
|
179
181
|
|
|
182
|
+
#### Data Residency
|
|
183
|
+
|
|
184
|
+
The React SDK supports data residency for compliance with regional regulations. You can specify the server location when initializing the conversation:
|
|
185
|
+
|
|
186
|
+
```ts
|
|
187
|
+
const conversation = useConversation({
|
|
188
|
+
serverLocation: "eu-residency", // "us", "global", "eu-residency", or "in-residency"
|
|
189
|
+
});
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Available locations:
|
|
193
|
+
- `"us"` (default) - United States servers
|
|
194
|
+
- `"global"` - Global servers (same as US)
|
|
195
|
+
- `"eu-residency"` - European Union residency servers
|
|
196
|
+
- `"in-residency"` - India residency servers
|
|
197
|
+
|
|
198
|
+
The SDK automatically routes both WebSocket and WebRTC connections to the appropriate regional servers based on your selection. This ensures that all conversation data, including audio streams, remain within the specified geographic region.
|
|
199
|
+
|
|
180
200
|
#### Methods
|
|
181
201
|
|
|
182
202
|
##### startConversation
|
|
@@ -289,8 +309,8 @@ const { conversation } = useConversation();
|
|
|
289
309
|
const conversationId = await conversation.startSession({
|
|
290
310
|
conversationToken,
|
|
291
311
|
connectionType: "webrtc",
|
|
292
|
-
inputDeviceId:
|
|
293
|
-
outputDeviceId:
|
|
312
|
+
inputDeviceId: "<new-input-device-id>",
|
|
313
|
+
outputDeviceId: "<new-input-device-id>",
|
|
294
314
|
});
|
|
295
315
|
```
|
|
296
316
|
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export type DeviceInputConfig = {
|
|
|
11
11
|
export type Location = "us" | "global" | "eu-residency" | "in-residency";
|
|
12
12
|
export declare function parseLocation(location?: string): Location;
|
|
13
13
|
export declare function getOriginForLocation(location: Location): string;
|
|
14
|
+
export declare function getLivekitUrlForLocation(location: Location): string;
|
|
14
15
|
export type { Role, Mode, Status, SessionConfig, DisconnectionDetails, Language, VadScoreEvent, InputConfig, FormatConfig, VoiceConversation, TextConversation, } from "@elevenlabs/client";
|
|
15
16
|
export { postOverallFeedback } from "@elevenlabs/client";
|
|
16
17
|
export type HookOptions = Partial<SessionConfig & HookCallbacks & ClientToolsConfig & InputConfig & FormatConfig & {
|
|
@@ -20,7 +21,7 @@ export type ControlledState = {
|
|
|
20
21
|
micMuted?: boolean;
|
|
21
22
|
volume?: number;
|
|
22
23
|
};
|
|
23
|
-
export type HookCallbacks = Pick<Callbacks, "onConnect" | "onDisconnect" | "onError" | "onMessage" | "onAudio" | "onModeChange" | "onStatusChange" | "onCanSendFeedbackChange" | "onDebug" | "onUnhandledClientToolCall" | "onVadScore">;
|
|
24
|
+
export type HookCallbacks = Pick<Callbacks, "onConnect" | "onDisconnect" | "onError" | "onMessage" | "onAudio" | "onModeChange" | "onStatusChange" | "onCanSendFeedbackChange" | "onDebug" | "onUnhandledClientToolCall" | "onVadScore" | "onInterruption" | "onAgentToolResponse" | "onConversationMetadata" | "onMCPToolCall" | "onMCPConnectionStatus" | "onAsrInitiationMetadata">;
|
|
24
25
|
export declare function useConversation<T extends HookOptions & ControlledState>(props?: T): {
|
|
25
26
|
startSession: T extends SessionConfig ? (options?: HookOptions) => Promise<string> : (options: SessionConfig & HookOptions) => Promise<string>;
|
|
26
27
|
endSession: () => Promise<void>;
|
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
|
|
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}};
|
|
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.1\";\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 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>;\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 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\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\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 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\n if (micMuted !== undefined) {\n conversationRef.current.setMicMuted(micMuted);\n }\n if (volume !== undefined) {\n conversationRef.current.setVolume({ volume });\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","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","useEffect","_conversationRef$curr","undefined","current","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","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","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","_temp4","_exit2","_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.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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"}
|
package/dist/lib.modern.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRef as n,useState as e,useEffect as l}from"react";import{Conversation as
|
|
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};
|
|
2
2
|
//# sourceMappingURL=lib.modern.js.map
|
package/dist/lib.modern.js.map
CHANGED
|
@@ -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.1\";\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 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>;\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 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\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\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 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\n if (micMuted !== undefined) {\n conversationRef.current.setMicMuted(micMuted);\n }\n if (volume !== undefined) {\n conversationRef.current.setVolume({ volume });\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","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","conversationRef","useRef","lockRef","status","setStatus","useState","canSendFeedback","setCanSendFeedback","mode","setMode","useEffect","_conversationRef$curr","undefined","current","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","origin","options","Conversation","_extends","overrides","client","source","version","onConnect","onDisconnect","onError","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","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.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":"0XACa,MCDbA,EAAA,CAAA,WAAA,SAAA,kBA6BgB,SAAAC,EAAcC,EAAmB,MAC/C,OAAQA,GACN,IAAK,eACL,IAAK,eACL,IAAK,KACL,IAAK,SACH,OAAOA,EACT,QAIE,OAHAC,QAAQC,KACN,+CAA+CF,yBAE1C,KAEb,UAEgBG,EAAqBH,GAQnC,MAP4C,CAC1CI,GAAI,0BACJ,eAAgB,uCAChB,eAAgB,uCAChBC,OAAQ,2BAGOL,EACnB,CAEgB,SAAAM,EAAyBN,GAQvC,MAPgD,CAC9CI,GAAI,kCACJ,eAAgB,+CAChB,eAAgB,+CAChBC,OAAQ,mCAGWL,EACvB,UAmDgBO,EACdC,EAAW,CAAO,GAElB,MAAMC,SAAEA,EAAQC,OAAEA,EAAMC,eAAEA,GAAsCH,EAAnBI,6IAAcC,CAAKL,EAAKV,GAC/DgB,EAAkBC,EAA4B,MAC9CC,EAAUD,EAAqC,OAC9CE,EAAQC,GAAaC,EAAiB,iBACtCC,EAAiBC,GAAsBF,GAAS,IAChDG,EAAMC,GAAWJ,EAAe,aAEjCK,EAAcT,EAA4BN,GAC1CgB,EAAYV,EAA2BL,GAuB7C,OArBAc,EAAYE,QAAUjB,EACtBgB,EAAUC,QAAUhB,EAEpBiB,EAAU,KACoBC,IAAAA,OAAXC,IAAbpB,IACa,MAAfK,UAAec,EAAfd,EAAiBY,UAAjBE,EAA0BE,YAAYrB,KAEvC,CAACA,IAEJkB,EAAU,KACkB,IAAAI,OAAXF,IAAXnB,UACFI,UAAeiB,EAAfjB,EAAiBY,UAAjBK,EAA0BC,UAAU,CAAEtB,aAEvC,CAACA,IAEJiB,EAAU,IACD,KAAKM,IAAAA,EACa,OAAvBA,EAAAnB,EAAgBY,UAAhBO,EAAyBC,cAE1B,IAEI,CACLC,aAAeC,UAAgC,IAAAC,EAC7C,GAA2B,OAA3BA,EAAIvB,EAAgBY,UAAhBW,EAAyBC,SAC3B,OAAOxB,EAAgBY,QAAQa,QAGjC,GAAIvB,EAAQU,QAEV,aAD2BV,EAAQU,SACfa,QAGtB,QAAIC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACF,MAAMC,EAAyBnD,GAC7BoD,MAAAA,OAAAA,EAAAA,EAASxC,iBAAkBA,GAEvByC,EAASjD,EAAqB+C,GAC9BG,EAAa/C,EAAyB4C,GA6E5C,OA3EAlC,EAAQU,QAAU4B,EAAanB,aAAYoB,KACvB,MAAd3C,EAAAA,EAAkB,CAAA,QAClBuC,EAAAA,EAAW,CAAE,EAAA,CACjBC,SACAC,aACAG,UAASD,EAAA,GACsB,OADtBf,QACH5B,SAAAA,EAAgB4C,WAAShB,EAAI,GACXC,OADaA,EACxB,MAAPU,OAAO,EAAPA,EAASK,WAASf,EAAI,CAAA,GAC1BgB,OAAMF,EAAAb,CAAAA,EACiCA,OADjCA,EACc,MAAd9B,GAAyB,OAAX+B,EAAd/B,EAAgB4C,gBAAS,EAAzBb,EAA2Bc,QAAMf,EAAI,CAAE,EACbE,OADaA,EAChC,MAAPO,GAAkB,OAAXN,EAAPM,EAASK,gBAAS,EAAlBX,EAAoBY,QAAMb,EAAI,CAAA,GAClCc,QACS,MAAPP,GAAkB,OAAXL,EAAPK,EAASK,YAAiB,OAARV,EAAlBA,EAAoBW,aAAM,EAA1BX,EAA4BY,gBAC5B9C,GAAyBmC,OAAXA,EAAdnC,EAAgB4C,YAAhBT,OAAyBA,EAAzBA,EAA2BU,aAA3BV,EAAAA,EAAmCW,SACnC,YACFC,SACSX,MAAPG,GAAkBH,OAAXA,EAAPG,EAASK,YAATR,OAAkBA,EAAlBA,EAAoBS,aAApBT,EAAAA,EAA4BW,WACd,MAAd/C,GAAyB,OAAXqC,EAAdrC,EAAgB4C,mBAASP,EAAzBA,EAA2BQ,eAA3BR,EAAmCU,UDvLpB,YC4LrBC,WAAkB,MAAPT,OAAO,EAAPA,EAASS,aAA2B,MAAdhD,OAAc,EAAdA,EAAgBgD,WACjDC,cAAqB,MAAPV,OAAO,EAAPA,EAASU,sBAAgBjD,SAAAA,EAAgBiD,cACvDC,SAASX,MAAAA,OAAAA,EAAAA,EAASW,WAAWlD,MAAAA,OAAAA,EAAAA,EAAgBkD,SAC7CC,WAAkB,MAAPZ,OAAO,EAAPA,EAASY,aAA2B,MAAdnD,OAAc,EAAdA,EAAgBmD,WACjDC,SAAgB,MAAPb,OAAO,EAAPA,EAASa,iBAAWpD,SAAAA,EAAgBoD,SAC7CC,SAASd,MAAAA,OAAAA,EAAAA,EAASc,WAAWrD,MAAAA,OAAAA,EAAAA,EAAgBqD,SAC7CC,2BACS,MAAPf,OAAO,EAAPA,EAASe,6BACK,MAAdtD,OAAc,EAAdA,EAAgBsD,2BAClBC,YAAmB,MAAPhB,OAAO,EAAPA,EAASgB,oBAAcvD,SAAAA,EAAgBuD,YACnDC,gBACEjB,MAAAA,OAAAA,EAAAA,EAASiB,kBAAkBxD,MAAAA,OAAAA,EAAAA,EAAgBwD,gBAC7CC,qBACS,MAAPlB,OAAO,EAAPA,EAASkB,uBAAqC,MAAdzD,OAAc,EAAdA,EAAgByD,qBAClDC,wBACS,MAAPnB,OAAO,EAAPA,EAASmB,gCACT1D,SAAAA,EAAgB0D,wBAClBC,eACEpB,MAAAA,OAAAA,EAAAA,EAASoB,iBAAiB3D,MAAAA,OAAAA,EAAAA,EAAgB2D,eAC5CC,uBACS,MAAPrB,OAAO,EAAPA,EAASqB,yBACK,MAAd5D,OAAc,EAAdA,EAAgB4D,uBAClBC,yBACS,MAAPtB,OAAO,EAAPA,EAASsB,iCACT7D,SAAAA,EAAgB6D,yBAClBC,aAAcA,EAAGpD,WAAUqD,IAAAA,EACzBpD,EAAQD,GACRqD,OAAAA,SAACxB,SAAAA,EAASuB,sBAAgB9D,SAAAA,EAAgB8D,gBAA1CC,EAA0D,CAAErD,UAE9DsD,eAAgBA,EAAG3D,iBAAY4D,EAC7B3D,EAAUD,GACV4D,OAAAA,GAAQ,MAAP1B,OAAO,EAAPA,EAASyB,wBAAkBhE,SAAAA,EAAgBgE,kBAA5CC,EAA8D,CAC5D5D,YAGJ6D,wBAAyBA,EAAG1D,0BAAqB2D,EAC/C1D,EAAmBD,GACnB2D,OAAAA,GACS,MAAP5B,OAAO,EAAPA,EAAS2B,2BACK,MAAdlE,OAAc,EAAdA,EAAgBkE,2BAFlBC,EAGI,CAAE3D,wBAIVN,EAAgBY,cAAgBV,EAAQU,aAEZG,IAAxBL,EAAYE,SACdZ,EAAgBY,QAAQI,YAAYN,EAAYE,cAExBG,IAAtBJ,EAAUC,SACZZ,EAAgBY,QAAQM,UAAU,CAAEtB,OAAQe,EAAUC,UAGjDZ,EAAgBY,QAAQa,OACjC,CAAC,QACCvB,EAAQU,QAAU,IACpB,GAIFQ,WAAYE,UACV,MAAM4C,EAAelE,EAAgBY,QACrCZ,EAAgBY,QAAU,WACpBsD,MAAAA,OAAAA,EAAAA,EAAc9C,eAEtBF,UAAWA,EAAGtB,aAAgCuE,IAAAA,EAC5CA,OAAAA,EAAAnE,EAAgBY,UAAhBuD,EAAyBjD,UAAU,CAAEtB,YAEvCwE,0BAA2BA,KAAK,IAAAC,EAC9B,OAA8B,OAA9BA,EAAOrE,EAAgBY,cAAO,EAAvByD,EAAyBD,6BAElCE,2BAA4BA,KAAKC,IAAAA,EAC/B,OAAOA,OAAPA,EAAOvE,EAAgBY,cAAhB2D,EAAAA,EAAyBD,8BAElCE,eAAgBA,KAAK,IAAAC,EAAAC,EACnB,OAAgDD,OAAhDA,EAAOC,OAAPA,EAAO1E,EAAgBY,cAAhB8D,EAAAA,EAAyBF,kBAAgBC,EAAI,GAEtDE,gBAAiBA,SAAKC,EAAAC,EACpB,OAAiD,OAAjDD,EAA8B,OAA9BC,EAAO7E,EAAgBY,cAAO,EAAvBiE,EAAyBF,mBAAiBC,EAAI,GAEvDE,aAAeC,IAAiBC,IAAAA,EAC9BA,OAAAA,EAAAhF,EAAgBY,UAAhBoE,EAAyBF,aAAaC,IAExCtD,MAAOA,KAAKwD,IAAAA,EACV,OAAOA,OAAPA,EAAOjF,EAAgBY,cAAhBqE,EAAAA,EAAyBxD,SAElCyD,qBAAuBC,IAAgBC,IAAAA,EACd,OAAvBA,EAAApF,EAAgBY,UAAhBwE,EAAyBF,qBAAqBC,IAEhDE,gBAAkBF,IAAgBG,IAAAA,EACT,OAAvBA,EAAAtF,EAAgBY,UAAhB0E,EAAyBD,gBAAgBF,IAE3CI,iBAAkBA,SAAKC,EACrBA,OAAAA,EAAAxF,EAAgBY,UAAhB4E,EAAyBD,oBAE3BE,0BAA2BA,CAACC,EAAoBC,KAAuB,IAAAC,SACrEA,EAAA5F,EAAgBY,UAAhBgF,EAAyBH,0BACvBC,EACAC,IAGJE,kBAAmBvE,UAGjB,GACEtB,EAAgBY,SAChB,sBAAuBZ,EAAgBY,QAEvC,aACEZ,EAAgBY,QAGhBiF,kBAAkBC,GAEtB,MAAM,IAAIC,MACR,+DAGJC,mBAAoB1E,UAClB,GACEtB,EAAgBY,SAChB,uBAAwBZ,EAAgBY,QAExC,aACEZ,EAAgBY,QAGhBoF,mBAAmBF,GAEvB,UAAUC,MACR,+DAGJ5F,SACAG,kBACAX,WACAsG,WAAqB,aAATzF,EAEhB"}
|
package/dist/lib.module.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useRef as n,useState as e,useEffect as r}from"react";import{Conversation as
|
|
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};
|
|
2
2
|
//# sourceMappingURL=lib.module.js.map
|
package/dist/lib.module.js.map
CHANGED
|
@@ -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.1\";\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 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>;\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 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\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\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 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\n if (micMuted !== undefined) {\n conversationRef.current.setMicMuted(micMuted);\n }\n if (volume !== undefined) {\n conversationRef.current.setVolume({ volume });\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","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","useEffect","_conversationRef$curr","undefined","current","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","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","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","_temp4","_exit2","_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.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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"}
|
package/dist/lib.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e
|
|
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}}});
|
|
2
2
|
//# sourceMappingURL=lib.umd.js.map
|
package/dist/lib.umd.js.map
CHANGED
|
@@ -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.1\";\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 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>;\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 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\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\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 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\n if (micMuted !== undefined) {\n conversationRef.current.setMicMuted(micMuted);\n }\n if (volume !== undefined) {\n conversationRef.current.setVolume({ volume });\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","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","useEffect","_conversationRef$curr","undefined","current","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","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","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","_temp4","_exit2","_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.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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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const PACKAGE_VERSION = "0.6.
|
|
1
|
+
export declare const PACKAGE_VERSION = "0.6.3";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevenlabs/react",
|
|
3
|
-
"version": "0.6.
|
|
3
|
+
"version": "0.6.3",
|
|
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.
|
|
22
|
+
"@elevenlabs/client": "0.6.2"
|
|
23
23
|
},
|
|
24
24
|
"peerDependencies": {
|
|
25
25
|
"react": ">=16.8.0"
|
|
@@ -37,14 +37,17 @@
|
|
|
37
37
|
"url": "git+https://github.com/elevenlabs/packages.git",
|
|
38
38
|
"directory": "packages/react"
|
|
39
39
|
},
|
|
40
|
+
"publishConfig": {
|
|
41
|
+
"access": "public"
|
|
42
|
+
},
|
|
40
43
|
"scripts": {
|
|
41
44
|
"generate-version": "printf \"// This file is auto-generated during build\\nexport const PACKAGE_VERSION = \\\"%s\\\";\\n\" \"$npm_package_version\" > src/version.ts",
|
|
42
45
|
"prebuild": "pnpm run generate-version",
|
|
43
46
|
"build": "BROWSERSLIST_ENV=modern microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react src/index.ts",
|
|
44
47
|
"clean": "rm -rf ./dist",
|
|
45
48
|
"dev": "pnpm run clean && pnpm run generate-version && BROWSERSLIST_ENV=development microbundle --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react src/index.ts -w -f modern",
|
|
46
|
-
"lint": "pnpm run
|
|
47
|
-
"
|
|
49
|
+
"lint": "pnpm run check-types && pnpm run lint:es && pnpm run lint:prettier",
|
|
50
|
+
"check-types": "tsc --noEmit --skipLibCheck",
|
|
48
51
|
"lint:es": "pnpm exec eslint .",
|
|
49
52
|
"lint:prettier": "prettier 'src/**/*.ts' --check",
|
|
50
53
|
"test": "jest"
|