@elevenlabs/react 0.12.3 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"lib.module.js","sources":["../src/scribe.ts","../src/index.ts","../src/version.ts"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport { Scribe, RealtimeEvents } from \"@elevenlabs/client\";\nimport type {\n RealtimeConnection,\n AudioOptions,\n MicrophoneOptions,\n AudioFormat,\n CommitStrategy,\n PartialTranscriptMessage,\n CommittedTranscriptMessage,\n CommittedTranscriptWithTimestampsMessage,\n ScribeErrorMessage,\n ScribeAuthErrorMessage,\n ScribeQuotaExceededErrorMessage,\n ScribeCommitThrottledErrorMessage,\n ScribeTranscriberErrorMessage,\n ScribeUnacceptedTermsErrorMessage,\n ScribeRateLimitedErrorMessage,\n ScribeInputErrorMessage,\n ScribeQueueOverflowErrorMessage,\n ScribeResourceExhaustedErrorMessage,\n ScribeSessionTimeLimitExceededErrorMessage,\n ScribeChunkSizeExceededErrorMessage,\n ScribeInsufficientAudioActivityErrorMessage,\n} from \"@elevenlabs/client\";\n\n// ============= Types =============\n\nexport type ScribeStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"transcribing\"\n | \"error\";\n\nexport interface WordTimestamp {\n text?: string;\n /** Start time in seconds */\n start?: number;\n /** End time in seconds */\n end?: number;\n type?: \"word\" | \"spacing\";\n speaker_id?: string;\n logprob?: number;\n characters?: string[];\n}\n\nexport interface TranscriptSegment {\n id: string;\n text: string;\n timestamp: number;\n isFinal: boolean;\n /** Word-level timestamps (only present when includeTimestamps is enabled) */\n words?: WordTimestamp[];\n}\n\nexport interface ScribeCallbacks {\n onSessionStarted?: () => void;\n onPartialTranscript?: (data: { text: string }) => void;\n onCommittedTranscript?: (data: { text: string }) => void;\n onCommittedTranscriptWithTimestamps?: (data: {\n text: string;\n words?: WordTimestamp[];\n }) => void;\n /** Called for any error (also called when specific error callbacks fire) */\n onError?: (error: Error | Event) => void;\n onAuthError?: (data: { error: string }) => void;\n onQuotaExceededError?: (data: { error: string }) => void;\n onCommitThrottledError?: (data: { error: string }) => void;\n onTranscriberError?: (data: { error: string }) => void;\n onUnacceptedTermsError?: (data: { error: string }) => void;\n onRateLimitedError?: (data: { error: string }) => void;\n onInputError?: (data: { error: string }) => void;\n onQueueOverflowError?: (data: { error: string }) => void;\n onResourceExhaustedError?: (data: { error: string }) => void;\n onSessionTimeLimitExceededError?: (data: { error: string }) => void;\n onChunkSizeExceededError?: (data: { error: string }) => void;\n onInsufficientAudioActivityError?: (data: { error: string }) => void;\n\n onConnect?: () => void;\n onDisconnect?: () => void;\n}\n\nexport interface ScribeHookOptions extends ScribeCallbacks {\n // Connection options\n token?: string;\n modelId?: string;\n baseUri?: string;\n\n // VAD options\n commitStrategy?: CommitStrategy;\n vadSilenceThresholdSecs?: number;\n vadThreshold?: number;\n minSpeechDurationMs?: number;\n minSilenceDurationMs?: number;\n languageCode?: string;\n\n // Microphone options (for automatic microphone mode)\n microphone?: {\n deviceId?: string;\n echoCancellation?: boolean;\n noiseSuppression?: boolean;\n autoGainControl?: boolean;\n channelCount?: number;\n };\n\n // Manual audio options\n audioFormat?: AudioFormat;\n sampleRate?: number;\n\n // Auto-connect on mount\n autoConnect?: boolean;\n\n // Include timestamps\n includeTimestamps?: boolean;\n}\n\nexport interface UseScribeReturn {\n // State\n status: ScribeStatus;\n isConnected: boolean;\n isTranscribing: boolean;\n partialTranscript: string;\n committedTranscripts: TranscriptSegment[];\n error: string | null;\n\n // Connection methods\n connect: (options?: Partial<ScribeHookOptions>) => Promise<void>;\n disconnect: () => void;\n\n // Audio methods (for manual mode)\n sendAudio: (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => void;\n commit: () => void;\n\n // Utility methods\n clearTranscripts: () => void;\n getConnection: () => RealtimeConnection | null;\n}\n\n// ============= Hook Implementation =============\n\nexport function useScribe(options: ScribeHookOptions = {}): UseScribeReturn {\n const {\n // Callbacks\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n\n // Connection options\n token: defaultToken,\n modelId: defaultModelId,\n baseUri: defaultBaseUri,\n commitStrategy: defaultCommitStrategy,\n vadSilenceThresholdSecs: defaultVadSilenceThresholdSecs,\n vadThreshold: defaultVadThreshold,\n minSpeechDurationMs: defaultMinSpeechDurationMs,\n minSilenceDurationMs: defaultMinSilenceDurationMs,\n languageCode: defaultLanguageCode,\n\n // Mode options\n microphone: defaultMicrophone,\n audioFormat: defaultAudioFormat,\n sampleRate: defaultSampleRate,\n\n // Auto-connect\n autoConnect = false,\n\n // Timestamps\n includeTimestamps: defaultIncludeTimestamps,\n } = options;\n\n const connectionRef = useRef<RealtimeConnection | null>(null);\n\n const [status, setStatus] = useState<ScribeStatus>(\"disconnected\");\n const [partialTranscript, setPartialTranscript] = useState<string>(\"\");\n const [committedTranscripts, setCommittedTranscripts] = useState<\n TranscriptSegment[]\n >([]);\n const [error, setError] = useState<string | null>(null);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n connectionRef.current?.close();\n };\n }, []);\n\n const connect = useCallback(\n async (runtimeOptions: Partial<ScribeHookOptions> = {}) => {\n if (connectionRef.current) {\n console.warn(\"Already connected\");\n return;\n }\n\n try {\n setStatus(\"connecting\");\n setError(null);\n\n // Merge default options with runtime options\n const token = runtimeOptions.token || defaultToken;\n const modelId = runtimeOptions.modelId || defaultModelId;\n\n if (!token) {\n throw new Error(\"Token is required\");\n }\n if (!modelId) {\n throw new Error(\"Model ID is required\");\n }\n\n // Determine mode: microphone or manual\n const microphone = runtimeOptions.microphone || defaultMicrophone;\n const audioFormat = runtimeOptions.audioFormat || defaultAudioFormat;\n const sampleRate = runtimeOptions.sampleRate || defaultSampleRate;\n\n let connection: RealtimeConnection;\n\n // Include timestamps if explicitly requested OR if the callback is provided\n const includeTimestamps =\n runtimeOptions.includeTimestamps ??\n defaultIncludeTimestamps ??\n !!(\n runtimeOptions.onCommittedTranscriptWithTimestamps ||\n onCommittedTranscriptWithTimestamps\n );\n\n if (microphone) {\n // Microphone mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n microphone,\n includeTimestamps,\n } as MicrophoneOptions);\n } else if (audioFormat && sampleRate) {\n // Manual audio mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n includeTimestamps,\n audioFormat,\n sampleRate,\n } as AudioOptions);\n } else {\n throw new Error(\n \"Either microphone options or (audioFormat + sampleRate) must be provided\"\n );\n }\n\n connectionRef.current = connection;\n\n // Set up event listeners\n connection.on(RealtimeEvents.SESSION_STARTED, () => {\n setStatus(\"connected\");\n onSessionStarted?.();\n });\n\n connection.on(RealtimeEvents.PARTIAL_TRANSCRIPT, (data: unknown) => {\n const message = data as PartialTranscriptMessage;\n setPartialTranscript(message.text);\n setStatus(\"transcribing\");\n onPartialTranscript?.(message);\n });\n\n connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data: unknown) => {\n const message = data as CommittedTranscriptMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscript?.(message);\n });\n\n connection.on(\n RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,\n (data: unknown) => {\n const message = data as CommittedTranscriptWithTimestampsMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n words: message.words,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscriptWithTimestamps?.(message);\n }\n );\n\n connection.on(RealtimeEvents.ERROR, (err: unknown) => {\n const message = err as ScribeErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onError?.(new Error(message.error));\n });\n\n connection.on(RealtimeEvents.AUTH_ERROR, (data: unknown) => {\n const message = data as ScribeAuthErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onAuthError?.(message);\n });\n\n connection.on(RealtimeEvents.QUOTA_EXCEEDED, (data: unknown) => {\n const message = data as ScribeQuotaExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQuotaExceededError?.(message);\n });\n\n connection.on(RealtimeEvents.COMMIT_THROTTLED, (data: unknown) => {\n const message = data as ScribeCommitThrottledErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onCommitThrottledError?.(message);\n });\n\n connection.on(RealtimeEvents.TRANSCRIBER_ERROR, (data: unknown) => {\n const message = data as ScribeTranscriberErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onTranscriberError?.(message);\n });\n\n connection.on(RealtimeEvents.UNACCEPTED_TERMS, (data: unknown) => {\n const message = data as ScribeUnacceptedTermsErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onUnacceptedTermsError?.(message);\n });\n\n connection.on(RealtimeEvents.RATE_LIMITED, (data: unknown) => {\n const message = data as ScribeRateLimitedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onRateLimitedError?.(message);\n });\n\n connection.on(RealtimeEvents.INPUT_ERROR, (data: unknown) => {\n const message = data as ScribeInputErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInputError?.(message);\n });\n\n connection.on(RealtimeEvents.QUEUE_OVERFLOW, (data: unknown) => {\n const message = data as ScribeQueueOverflowErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQueueOverflowError?.(message);\n });\n\n connection.on(RealtimeEvents.RESOURCE_EXHAUSTED, (data: unknown) => {\n const message = data as ScribeResourceExhaustedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onResourceExhaustedError?.(message);\n });\n\n connection.on(\n RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,\n (data: unknown) => {\n const message = data as ScribeSessionTimeLimitExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onSessionTimeLimitExceededError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.CHUNK_SIZE_EXCEEDED, (data: unknown) => {\n const message = data as ScribeChunkSizeExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onChunkSizeExceededError?.(message);\n });\n\n connection.on(\n RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,\n (data: unknown) => {\n const message = data as ScribeInsufficientAudioActivityErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInsufficientAudioActivityError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.OPEN, () => {\n onConnect?.();\n });\n\n connection.on(RealtimeEvents.CLOSE, () => {\n setStatus(\"disconnected\");\n connectionRef.current = null;\n onDisconnect?.();\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"Failed to connect\";\n setError(errorMessage);\n setStatus(\"error\");\n throw err;\n }\n },\n [\n defaultToken,\n defaultModelId,\n defaultBaseUri,\n defaultCommitStrategy,\n defaultVadSilenceThresholdSecs,\n defaultVadThreshold,\n defaultMinSpeechDurationMs,\n defaultMinSilenceDurationMs,\n defaultLanguageCode,\n defaultMicrophone,\n defaultAudioFormat,\n defaultSampleRate,\n defaultIncludeTimestamps,\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n ]\n );\n\n const disconnect = useCallback(() => {\n connectionRef.current?.close();\n connectionRef.current = null;\n setStatus(\"disconnected\");\n }, []);\n\n const sendAudio = useCallback(\n (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.send({ audioBase64, ...options });\n },\n []\n );\n\n const commit = useCallback(() => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.commit();\n }, []);\n\n const clearTranscripts = useCallback(() => {\n setCommittedTranscripts([]);\n setPartialTranscript(\"\");\n }, []);\n\n const getConnection = useCallback(() => {\n return connectionRef.current;\n }, []);\n\n // Auto-connect if enabled\n useEffect(() => {\n if (autoConnect) {\n connect();\n }\n }, [autoConnect, connect]);\n\n return {\n // State\n status,\n isConnected: status === \"connected\" || status === \"transcribing\",\n isTranscribing: status === \"transcribing\",\n partialTranscript,\n committedTranscripts,\n error,\n\n // Methods\n connect,\n disconnect,\n sendAudio,\n commit,\n clearTranscripts,\n getConnection,\n };\n}\n\n// Export types and enums from client for convenience\nexport {\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"@elevenlabs/client\";\nexport type { RealtimeConnection } from \"@elevenlabs/client\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n Callbacks,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\n// Scribe exports\nexport {\n useScribe,\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"./scribe\";\nexport type {\n ScribeStatus,\n TranscriptSegment,\n WordTimestamp,\n ScribeCallbacks,\n ScribeHookOptions,\n UseScribeReturn,\n RealtimeConnection,\n} from \"./scribe\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onAgentToolRequest\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n | \"onAgentChatResponsePart\"\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 shouldEndRef = useRef(false);\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 shouldEndRef.current = true;\n if (lockRef.current) {\n lockRef.current.then(conv => conv.endSession());\n } else {\n conversationRef.current?.endSession();\n }\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 shouldEndRef.current = false;\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const calculatedLivekitUrl = getLivekitUrlForLocation(\n resolvedServerLocation\n );\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n\n livekitUrl:\n options?.livekitUrl ||\n defaultOptions?.livekitUrl ||\n calculatedLivekitUrl,\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 onAgentToolRequest:\n options?.onAgentToolRequest || defaultOptions?.onAgentToolRequest,\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 onAgentChatResponsePart:\n options?.onAgentChatResponsePart ||\n defaultOptions?.onAgentChatResponsePart,\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\n // Check if session was cancelled while connecting\n if (shouldEndRef.current) {\n await conversationRef.current.endSession();\n conversationRef.current = null;\n lockRef.current = null;\n throw new Error(\"Session cancelled during connection\");\n }\n\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 shouldEndRef.current = true;\n const pendingConnection = lockRef.current;\n const conversation = conversationRef.current;\n conversationRef.current = null;\n\n if (pendingConnection) {\n const conv = await pendingConnection;\n await conv.endSession();\n } else {\n await conversation?.endSession();\n }\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","// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.12.3\";\n"],"names":["useScribe","options","onSessionStarted","onPartialTranscript","onCommittedTranscript","onCommittedTranscriptWithTimestamps","onError","onAuthError","onQuotaExceededError","onCommitThrottledError","onTranscriberError","onUnacceptedTermsError","onRateLimitedError","onInputError","onQueueOverflowError","onResourceExhaustedError","onSessionTimeLimitExceededError","onChunkSizeExceededError","onInsufficientAudioActivityError","onConnect","onDisconnect","defaultToken","token","defaultModelId","modelId","defaultBaseUri","baseUri","defaultCommitStrategy","commitStrategy","defaultVadSilenceThresholdSecs","vadSilenceThresholdSecs","defaultVadThreshold","vadThreshold","defaultMinSpeechDurationMs","minSpeechDurationMs","defaultMinSilenceDurationMs","minSilenceDurationMs","defaultLanguageCode","languageCode","defaultMicrophone","microphone","defaultAudioFormat","audioFormat","defaultSampleRate","sampleRate","_options$autoConnect","autoConnect","defaultIncludeTimestamps","includeTimestamps","connectionRef","useRef","_useState","useState","status","setStatus","_useState2","partialTranscript","setPartialTranscript","_useState3","committedTranscripts","setCommittedTranscripts","_useState4","error","setError","useEffect","_connectionRef$curren","current","close","connect","useCallback","runtimeOptions","console","warn","Promise","resolve","_ref","_runtimeOptions$inclu","Error","connection","Scribe","on","RealtimeEvents","SESSION_STARTED","PARTIAL_TRANSCRIPT","data","message","text","COMMITTED_TRANSCRIPT","segment","id","Date","now","Math","random","timestamp","isFinal","prev","concat","COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS","words","ERROR","err","AUTH_ERROR","QUOTA_EXCEEDED","COMMIT_THROTTLED","TRANSCRIBER_ERROR","UNACCEPTED_TERMS","RATE_LIMITED","INPUT_ERROR","QUEUE_OVERFLOW","RESOURCE_EXHAUSTED","SESSION_TIME_LIMIT_EXCEEDED","CHUNK_SIZE_EXCEEDED","INSUFFICIENT_AUDIO_ACTIVITY","OPEN","CLOSE","errorMessage","e","reject","disconnect","_connectionRef$curren2","sendAudio","audioBase64","send","_extends","commit","clearTranscripts","getConnection","isConnected","isTranscribing","parseLocation","location","getOriginForLocation","us","global","getLivekitUrlForLocation","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","lockRef","shouldEndRef","canSendFeedback","setCanSendFeedback","mode","setMode","micMutedRef","volumeRef","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","then","conv","endSession","startSession","_conversationRef$curr4","_exit","_temp4","_result","origin","resolvedServerLocation","calculatedLivekitUrl","Conversation","livekitUrl","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","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolRequest","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onAgentChatResponsePart","onModeChange","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","_lockRef$current","_temp2","_result3","getId","_temp","_finallyRethrows","_wasThrown","_result2","isOpen","_temp3","conversation","_conversation$getId","pendingConnection","_temp5","_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","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_temp7","_exit3","_result4","_temp6","_await$conversationRe","changeOutputDevice","_exit4","_temp9","_result5","_temp8","_await$conversationRe2","isSpeaking"],"mappings":"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"}
1
+ {"version":3,"file":"lib.module.js","sources":["../src/scribe.ts","../src/index.ts","../src/version.ts"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport { Scribe, RealtimeEvents } from \"@elevenlabs/client\";\nimport type {\n RealtimeConnection,\n AudioOptions,\n MicrophoneOptions,\n AudioFormat,\n CommitStrategy,\n PartialTranscriptMessage,\n CommittedTranscriptMessage,\n CommittedTranscriptWithTimestampsMessage,\n ScribeErrorMessage,\n ScribeAuthErrorMessage,\n ScribeQuotaExceededErrorMessage,\n ScribeCommitThrottledErrorMessage,\n ScribeTranscriberErrorMessage,\n ScribeUnacceptedTermsErrorMessage,\n ScribeRateLimitedErrorMessage,\n ScribeInputErrorMessage,\n ScribeQueueOverflowErrorMessage,\n ScribeResourceExhaustedErrorMessage,\n ScribeSessionTimeLimitExceededErrorMessage,\n ScribeChunkSizeExceededErrorMessage,\n ScribeInsufficientAudioActivityErrorMessage,\n} from \"@elevenlabs/client\";\n\n// ============= Types =============\n\nexport type ScribeStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"transcribing\"\n | \"error\";\n\nexport interface WordTimestamp {\n text?: string;\n /** Start time in seconds */\n start?: number;\n /** End time in seconds */\n end?: number;\n type?: \"word\" | \"spacing\";\n speaker_id?: string;\n logprob?: number;\n characters?: string[];\n}\n\nexport interface TranscriptSegment {\n id: string;\n text: string;\n timestamp: number;\n isFinal: boolean;\n /** Word-level timestamps (only present when includeTimestamps is enabled) */\n words?: WordTimestamp[];\n}\n\nexport interface ScribeCallbacks {\n onSessionStarted?: () => void;\n onPartialTranscript?: (data: { text: string }) => void;\n onCommittedTranscript?: (data: { text: string }) => void;\n onCommittedTranscriptWithTimestamps?: (data: {\n text: string;\n words?: WordTimestamp[];\n }) => void;\n /** Called for any error (also called when specific error callbacks fire) */\n onError?: (error: Error | Event) => void;\n onAuthError?: (data: { error: string }) => void;\n onQuotaExceededError?: (data: { error: string }) => void;\n onCommitThrottledError?: (data: { error: string }) => void;\n onTranscriberError?: (data: { error: string }) => void;\n onUnacceptedTermsError?: (data: { error: string }) => void;\n onRateLimitedError?: (data: { error: string }) => void;\n onInputError?: (data: { error: string }) => void;\n onQueueOverflowError?: (data: { error: string }) => void;\n onResourceExhaustedError?: (data: { error: string }) => void;\n onSessionTimeLimitExceededError?: (data: { error: string }) => void;\n onChunkSizeExceededError?: (data: { error: string }) => void;\n onInsufficientAudioActivityError?: (data: { error: string }) => void;\n\n onConnect?: () => void;\n onDisconnect?: () => void;\n}\n\nexport interface ScribeHookOptions extends ScribeCallbacks {\n // Connection options\n token?: string;\n modelId?: string;\n baseUri?: string;\n\n // VAD options\n commitStrategy?: CommitStrategy;\n vadSilenceThresholdSecs?: number;\n vadThreshold?: number;\n minSpeechDurationMs?: number;\n minSilenceDurationMs?: number;\n languageCode?: string;\n\n // Microphone options (for automatic microphone mode)\n microphone?: {\n deviceId?: string;\n echoCancellation?: boolean;\n noiseSuppression?: boolean;\n autoGainControl?: boolean;\n channelCount?: number;\n };\n\n // Manual audio options\n audioFormat?: AudioFormat;\n sampleRate?: number;\n\n // Auto-connect on mount\n autoConnect?: boolean;\n\n // Include timestamps\n includeTimestamps?: boolean;\n}\n\nexport interface UseScribeReturn {\n // State\n status: ScribeStatus;\n isConnected: boolean;\n isTranscribing: boolean;\n partialTranscript: string;\n committedTranscripts: TranscriptSegment[];\n error: string | null;\n\n // Connection methods\n connect: (options?: Partial<ScribeHookOptions>) => Promise<void>;\n disconnect: () => void;\n\n // Audio methods (for manual mode)\n sendAudio: (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => void;\n commit: () => void;\n\n // Utility methods\n clearTranscripts: () => void;\n getConnection: () => RealtimeConnection | null;\n}\n\n// ============= Hook Implementation =============\n\nexport function useScribe(options: ScribeHookOptions = {}): UseScribeReturn {\n const {\n // Callbacks\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n\n // Connection options\n token: defaultToken,\n modelId: defaultModelId,\n baseUri: defaultBaseUri,\n commitStrategy: defaultCommitStrategy,\n vadSilenceThresholdSecs: defaultVadSilenceThresholdSecs,\n vadThreshold: defaultVadThreshold,\n minSpeechDurationMs: defaultMinSpeechDurationMs,\n minSilenceDurationMs: defaultMinSilenceDurationMs,\n languageCode: defaultLanguageCode,\n\n // Mode options\n microphone: defaultMicrophone,\n audioFormat: defaultAudioFormat,\n sampleRate: defaultSampleRate,\n\n // Auto-connect\n autoConnect = false,\n\n // Timestamps\n includeTimestamps: defaultIncludeTimestamps,\n } = options;\n\n const connectionRef = useRef<RealtimeConnection | null>(null);\n\n const [status, setStatus] = useState<ScribeStatus>(\"disconnected\");\n const [partialTranscript, setPartialTranscript] = useState<string>(\"\");\n const [committedTranscripts, setCommittedTranscripts] = useState<\n TranscriptSegment[]\n >([]);\n const [error, setError] = useState<string | null>(null);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n connectionRef.current?.close();\n };\n }, []);\n\n const connect = useCallback(\n async (runtimeOptions: Partial<ScribeHookOptions> = {}) => {\n if (connectionRef.current) {\n console.warn(\"Already connected\");\n return;\n }\n\n try {\n setStatus(\"connecting\");\n setError(null);\n\n // Merge default options with runtime options\n const token = runtimeOptions.token || defaultToken;\n const modelId = runtimeOptions.modelId || defaultModelId;\n\n if (!token) {\n throw new Error(\"Token is required\");\n }\n if (!modelId) {\n throw new Error(\"Model ID is required\");\n }\n\n // Determine mode: microphone or manual\n const microphone = runtimeOptions.microphone || defaultMicrophone;\n const audioFormat = runtimeOptions.audioFormat || defaultAudioFormat;\n const sampleRate = runtimeOptions.sampleRate || defaultSampleRate;\n\n let connection: RealtimeConnection;\n\n // Include timestamps if explicitly requested OR if the callback is provided\n const includeTimestamps =\n runtimeOptions.includeTimestamps ??\n defaultIncludeTimestamps ??\n !!(\n runtimeOptions.onCommittedTranscriptWithTimestamps ||\n onCommittedTranscriptWithTimestamps\n );\n\n if (microphone) {\n // Microphone mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n microphone,\n includeTimestamps,\n } as MicrophoneOptions);\n } else if (audioFormat && sampleRate) {\n // Manual audio mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n includeTimestamps,\n audioFormat,\n sampleRate,\n } as AudioOptions);\n } else {\n throw new Error(\n \"Either microphone options or (audioFormat + sampleRate) must be provided\"\n );\n }\n\n connectionRef.current = connection;\n\n // Set up event listeners\n connection.on(RealtimeEvents.SESSION_STARTED, () => {\n setStatus(\"connected\");\n onSessionStarted?.();\n });\n\n connection.on(RealtimeEvents.PARTIAL_TRANSCRIPT, (data: unknown) => {\n const message = data as PartialTranscriptMessage;\n setPartialTranscript(message.text);\n setStatus(\"transcribing\");\n onPartialTranscript?.(message);\n });\n\n connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data: unknown) => {\n const message = data as CommittedTranscriptMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscript?.(message);\n });\n\n connection.on(\n RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,\n (data: unknown) => {\n const message = data as CommittedTranscriptWithTimestampsMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n words: message.words,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscriptWithTimestamps?.(message);\n }\n );\n\n connection.on(RealtimeEvents.ERROR, (err: unknown) => {\n const message = err as ScribeErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onError?.(new Error(message.error));\n });\n\n connection.on(RealtimeEvents.AUTH_ERROR, (data: unknown) => {\n const message = data as ScribeAuthErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onAuthError?.(message);\n });\n\n connection.on(RealtimeEvents.QUOTA_EXCEEDED, (data: unknown) => {\n const message = data as ScribeQuotaExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQuotaExceededError?.(message);\n });\n\n connection.on(RealtimeEvents.COMMIT_THROTTLED, (data: unknown) => {\n const message = data as ScribeCommitThrottledErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onCommitThrottledError?.(message);\n });\n\n connection.on(RealtimeEvents.TRANSCRIBER_ERROR, (data: unknown) => {\n const message = data as ScribeTranscriberErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onTranscriberError?.(message);\n });\n\n connection.on(RealtimeEvents.UNACCEPTED_TERMS, (data: unknown) => {\n const message = data as ScribeUnacceptedTermsErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onUnacceptedTermsError?.(message);\n });\n\n connection.on(RealtimeEvents.RATE_LIMITED, (data: unknown) => {\n const message = data as ScribeRateLimitedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onRateLimitedError?.(message);\n });\n\n connection.on(RealtimeEvents.INPUT_ERROR, (data: unknown) => {\n const message = data as ScribeInputErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInputError?.(message);\n });\n\n connection.on(RealtimeEvents.QUEUE_OVERFLOW, (data: unknown) => {\n const message = data as ScribeQueueOverflowErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQueueOverflowError?.(message);\n });\n\n connection.on(RealtimeEvents.RESOURCE_EXHAUSTED, (data: unknown) => {\n const message = data as ScribeResourceExhaustedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onResourceExhaustedError?.(message);\n });\n\n connection.on(\n RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,\n (data: unknown) => {\n const message = data as ScribeSessionTimeLimitExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onSessionTimeLimitExceededError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.CHUNK_SIZE_EXCEEDED, (data: unknown) => {\n const message = data as ScribeChunkSizeExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onChunkSizeExceededError?.(message);\n });\n\n connection.on(\n RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,\n (data: unknown) => {\n const message = data as ScribeInsufficientAudioActivityErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInsufficientAudioActivityError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.OPEN, () => {\n onConnect?.();\n });\n\n connection.on(RealtimeEvents.CLOSE, () => {\n setStatus(\"disconnected\");\n connectionRef.current = null;\n onDisconnect?.();\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"Failed to connect\";\n setError(errorMessage);\n setStatus(\"error\");\n throw err;\n }\n },\n [\n defaultToken,\n defaultModelId,\n defaultBaseUri,\n defaultCommitStrategy,\n defaultVadSilenceThresholdSecs,\n defaultVadThreshold,\n defaultMinSpeechDurationMs,\n defaultMinSilenceDurationMs,\n defaultLanguageCode,\n defaultMicrophone,\n defaultAudioFormat,\n defaultSampleRate,\n defaultIncludeTimestamps,\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n ]\n );\n\n const disconnect = useCallback(() => {\n connectionRef.current?.close();\n connectionRef.current = null;\n setStatus(\"disconnected\");\n }, []);\n\n const sendAudio = useCallback(\n (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.send({ audioBase64, ...options });\n },\n []\n );\n\n const commit = useCallback(() => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.commit();\n }, []);\n\n const clearTranscripts = useCallback(() => {\n setCommittedTranscripts([]);\n setPartialTranscript(\"\");\n }, []);\n\n const getConnection = useCallback(() => {\n return connectionRef.current;\n }, []);\n\n // Auto-connect if enabled\n useEffect(() => {\n if (autoConnect) {\n connect();\n }\n }, [autoConnect, connect]);\n\n return {\n // State\n status,\n isConnected: status === \"connected\" || status === \"transcribing\",\n isTranscribing: status === \"transcribing\",\n partialTranscript,\n committedTranscripts,\n error,\n\n // Methods\n connect,\n disconnect,\n sendAudio,\n commit,\n clearTranscripts,\n getConnection,\n };\n}\n\n// Export types and enums from client for convenience\nexport {\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"@elevenlabs/client\";\nexport type { RealtimeConnection } from \"@elevenlabs/client\";\n","import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n AudioAlignmentEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n Callbacks,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\n// Scribe exports\nexport {\n useScribe,\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"./scribe\";\nexport type {\n ScribeStatus,\n TranscriptSegment,\n WordTimestamp,\n ScribeCallbacks,\n ScribeHookOptions,\n UseScribeReturn,\n RealtimeConnection,\n} from \"./scribe\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onAgentToolRequest\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n | \"onAgentChatResponsePart\"\n | \"onAudioAlignment\"\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 shouldEndRef = useRef(false);\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 shouldEndRef.current = true;\n if (lockRef.current) {\n lockRef.current.then(conv => conv.endSession());\n } else {\n conversationRef.current?.endSession();\n }\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 shouldEndRef.current = false;\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const calculatedLivekitUrl = getLivekitUrlForLocation(\n resolvedServerLocation\n );\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n\n livekitUrl:\n options?.livekitUrl ||\n defaultOptions?.livekitUrl ||\n calculatedLivekitUrl,\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 onAgentToolRequest:\n options?.onAgentToolRequest || defaultOptions?.onAgentToolRequest,\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 onAgentChatResponsePart:\n options?.onAgentChatResponsePart ||\n defaultOptions?.onAgentChatResponsePart,\n onAudioAlignment:\n options?.onAudioAlignment || defaultOptions?.onAudioAlignment,\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\n // Check if session was cancelled while connecting\n if (shouldEndRef.current) {\n await conversationRef.current.endSession();\n conversationRef.current = null;\n lockRef.current = null;\n throw new Error(\"Session cancelled during connection\");\n }\n\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 shouldEndRef.current = true;\n const pendingConnection = lockRef.current;\n const conversation = conversationRef.current;\n conversationRef.current = null;\n\n if (pendingConnection) {\n const conv = await pendingConnection;\n await conv.endSession();\n } else {\n await conversation?.endSession();\n }\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","// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.13.0\";\n"],"names":["useScribe","options","onSessionStarted","onPartialTranscript","onCommittedTranscript","onCommittedTranscriptWithTimestamps","onError","onAuthError","onQuotaExceededError","onCommitThrottledError","onTranscriberError","onUnacceptedTermsError","onRateLimitedError","onInputError","onQueueOverflowError","onResourceExhaustedError","onSessionTimeLimitExceededError","onChunkSizeExceededError","onInsufficientAudioActivityError","onConnect","onDisconnect","defaultToken","token","defaultModelId","modelId","defaultBaseUri","baseUri","defaultCommitStrategy","commitStrategy","defaultVadSilenceThresholdSecs","vadSilenceThresholdSecs","defaultVadThreshold","vadThreshold","defaultMinSpeechDurationMs","minSpeechDurationMs","defaultMinSilenceDurationMs","minSilenceDurationMs","defaultLanguageCode","languageCode","defaultMicrophone","microphone","defaultAudioFormat","audioFormat","defaultSampleRate","sampleRate","_options$autoConnect","autoConnect","defaultIncludeTimestamps","includeTimestamps","connectionRef","useRef","_useState","useState","status","setStatus","_useState2","partialTranscript","setPartialTranscript","_useState3","committedTranscripts","setCommittedTranscripts","_useState4","error","setError","useEffect","_connectionRef$curren","current","close","connect","useCallback","runtimeOptions","console","warn","Promise","resolve","_ref","_runtimeOptions$inclu","Error","connection","Scribe","on","RealtimeEvents","SESSION_STARTED","PARTIAL_TRANSCRIPT","data","message","text","COMMITTED_TRANSCRIPT","segment","id","Date","now","Math","random","timestamp","isFinal","prev","concat","COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS","words","ERROR","err","AUTH_ERROR","QUOTA_EXCEEDED","COMMIT_THROTTLED","TRANSCRIBER_ERROR","UNACCEPTED_TERMS","RATE_LIMITED","INPUT_ERROR","QUEUE_OVERFLOW","RESOURCE_EXHAUSTED","SESSION_TIME_LIMIT_EXCEEDED","CHUNK_SIZE_EXCEEDED","INSUFFICIENT_AUDIO_ACTIVITY","OPEN","CLOSE","errorMessage","e","reject","disconnect","_connectionRef$curren2","sendAudio","audioBase64","send","_extends","commit","clearTranscripts","getConnection","isConnected","isTranscribing","parseLocation","location","getOriginForLocation","us","global","getLivekitUrlForLocation","useConversation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","lockRef","shouldEndRef","canSendFeedback","setCanSendFeedback","mode","setMode","micMutedRef","volumeRef","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","then","conv","endSession","startSession","_conversationRef$curr4","_exit","_temp4","_result","origin","resolvedServerLocation","calculatedLivekitUrl","Conversation","livekitUrl","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","onMessage","onAudio","onDebug","onUnhandledClientToolCall","onVadScore","onInterruption","onAgentToolRequest","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onAgentChatResponsePart","onAudioAlignment","onModeChange","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","_lockRef$current","_temp2","_result3","getId","_temp","_finallyRethrows","_wasThrown","_result2","isOpen","_temp3","conversation","_conversation$getId","pendingConnection","_temp5","_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","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_temp7","_exit3","_result4","_temp6","_await$conversationRe","changeOutputDevice","_exit4","_temp9","_result5","_temp8","_await$conversationRe2","isSpeaking"],"mappings":"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"}
package/dist/lib.umd.js CHANGED
@@ -1,2 +1,2 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react"),require("@elevenlabs/client")):"function"==typeof define&&define.amd?define(["exports","react","@elevenlabs/client"],n):n((e||self).react={},e.react,e.client)}(this,function(e,n,r){function t(){return t=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},t.apply(null,arguments)}var o=["micMuted","volume","serverLocation"];function i(e){switch(void 0===e&&(e="us"),e){case"eu-residency":case"in-residency":case"us":case"global":return e;default:return console.warn("[ConversationalAI] Invalid server-location: "+e+'. Defaulting to "us"'),"us"}}function u(e){return{us:"wss://api.elevenlabs.io","eu-residency":"wss://api.eu.residency.elevenlabs.io","in-residency":"wss://api.in.residency.elevenlabs.io",global:"wss://api.elevenlabs.io"}[e]}function l(e){return{us:"wss://livekit.rtc.elevenlabs.io","eu-residency":"wss://livekit.rtc.eu.residency.elevenlabs.io","in-residency":"wss://livekit.rtc.in.residency.elevenlabs.io",global:"wss://livekit.rtc.elevenlabs.io"}[e]}Object.defineProperty(e,"AudioFormat",{enumerable:!0,get:function(){return r.AudioFormat}}),Object.defineProperty(e,"CommitStrategy",{enumerable:!0,get:function(){return r.CommitStrategy}}),Object.defineProperty(e,"RealtimeEvents",{enumerable:!0,get:function(){return r.RealtimeEvents}}),Object.defineProperty(e,"postOverallFeedback",{enumerable:!0,get:function(){return r.postOverallFeedback}}),e.getLivekitUrlForLocation=l,e.getOriginForLocation=u,e.parseLocation=i,e.useConversation=function(e){void 0===e&&(e={});var c=e.micMuted,a=e.volume,s=e.serverLocation,d=function(e,n){if(null==e)return{};var r={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;r[t]=e[t]}return r}(e,o),v=n.useRef(null),f=n.useRef(null),m=n.useRef(!1),h=n.useState("disconnected"),E=h[0],g=h[1],p=n.useState(!1),S=p[0],C=p[1],T=n.useState("listening"),R=T[0],b=T[1],M=n.useRef(c),I=n.useRef(a);return M.current=c,I.current=a,n.useEffect(function(){var e;void 0!==c&&(null==v||null==(e=v.current)||e.setMicMuted(c))},[c]),n.useEffect(function(){var e;void 0!==a&&(null==v||null==(e=v.current)||e.setVolume({volume:a}))},[a]),n.useEffect(function(){return function(){var e;m.current=!0,f.current?f.current.then(function(e){return e.endSession()}):null==(e=v.current)||e.endSession()}},[]),{startSession:function(e){try{var n,o,c=function(n){return o?n:(m.current=!1,function(n,o){try{var c=(w=u(A=i((null==e?void 0:e.serverLocation)||s)),O=l(A),f.current=r.Conversation.startSession(t({},null!=d?d:{},null!=e?e:{},{origin:w,livekitUrl:(null==e?void 0:e.livekitUrl)||(null==d?void 0:d.livekitUrl)||O,overrides:t({},null!=(a=null==d?void 0:d.overrides)?a:{},null!=(h=null==e?void 0:e.overrides)?h:{},{client:t({},null!=(E=null==d||null==(p=d.overrides)?void 0:p.client)?E:{},null!=(S=null==e||null==(T=e.overrides)?void 0:T.client)?S:{},{source:(null==e||null==(R=e.overrides)||null==(R=R.client)?void 0:R.source)||(null==d||null==(y=d.overrides)||null==(y=y.client)?void 0:y.source)||"react_sdk",version:(null==e||null==(D=e.overrides)||null==(D=D.client)?void 0:D.version)||(null==d||null==(P=d.overrides)||null==(P=P.client)?void 0:P.version)||"0.12.3"})}),onConnect:(null==e?void 0:e.onConnect)||(null==d?void 0:d.onConnect),onDisconnect:(null==e?void 0:e.onDisconnect)||(null==d?void 0:d.onDisconnect),onError:(null==e?void 0:e.onError)||(null==d?void 0:d.onError),onMessage:(null==e?void 0:e.onMessage)||(null==d?void 0:d.onMessage),onAudio:(null==e?void 0:e.onAudio)||(null==d?void 0:d.onAudio),onDebug:(null==e?void 0:e.onDebug)||(null==d?void 0:d.onDebug),onUnhandledClientToolCall:(null==e?void 0:e.onUnhandledClientToolCall)||(null==d?void 0:d.onUnhandledClientToolCall),onVadScore:(null==e?void 0:e.onVadScore)||(null==d?void 0:d.onVadScore),onInterruption:(null==e?void 0:e.onInterruption)||(null==d?void 0:d.onInterruption),onAgentToolRequest:(null==e?void 0:e.onAgentToolRequest)||(null==d?void 0:d.onAgentToolRequest),onAgentToolResponse:(null==e?void 0:e.onAgentToolResponse)||(null==d?void 0:d.onAgentToolResponse),onConversationMetadata:(null==e?void 0:e.onConversationMetadata)||(null==d?void 0:d.onConversationMetadata),onMCPToolCall:(null==e?void 0:e.onMCPToolCall)||(null==d?void 0:d.onMCPToolCall),onMCPConnectionStatus:(null==e?void 0:e.onMCPConnectionStatus)||(null==d?void 0:d.onMCPConnectionStatus),onAsrInitiationMetadata:(null==e?void 0:e.onAsrInitiationMetadata)||(null==d?void 0:d.onAsrInitiationMetadata),onAgentChatResponsePart:(null==e?void 0:e.onAgentChatResponsePart)||(null==d?void 0:d.onAgentChatResponsePart),onModeChange:function(n){var r,t=n.mode;b(t),null==(r=(null==e?void 0:e.onModeChange)||(null==d?void 0:d.onModeChange))||r({mode:t})},onStatusChange:function(n){var r,t=n.status;g(t),null==(r=(null==e?void 0:e.onStatusChange)||(null==d?void 0:d.onStatusChange))||r({status:t})},onCanSendFeedbackChange:function(n){var r,t=n.canSendFeedback;C(t),null==(r=(null==e?void 0:e.onCanSendFeedbackChange)||(null==d?void 0:d.onCanSendFeedbackChange))||r({canSendFeedback:t})}})),Promise.resolve(f.current).then(function(e){function n(e){return void 0!==M.current&&v.current.setMicMuted(M.current),void 0!==I.current&&v.current.setVolume({volume:I.current}),v.current.getId()}v.current=e;var r=function(){if(m.current)return Promise.resolve(v.current.endSession()).then(function(){throw v.current=null,f.current=null,new Error("Session cancelled during connection")})}();return r&&r.then?r.then(n):n()}))}catch(e){return o(!0,e)}var a,h,E,p,S,T,R,y,D,P,A,w,O;return c&&c.then?c.then(o.bind(null,!1),o.bind(null,!0)):o(!1,c)}(0,function(e,n){if(f.current=null,e)throw n;return n}))};if(null!=(n=v.current)&&n.isOpen())return Promise.resolve(v.current.getId());var a=function(){if(f.current)return Promise.resolve(f.current).then(function(e){var n=e.getId();return o=1,n})}();return Promise.resolve(a&&a.then?a.then(c):c(a))}catch(e){return Promise.reject(e)}},endSession:function(){try{m.current=!0;var e=f.current,n=v.current;v.current=null;var r=e?Promise.resolve(e).then(function(e){return Promise.resolve(e.endSession()).then(function(){})}):Promise.resolve(null==n?void 0:n.endSession()).then(function(){});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},setVolume:function(e){var n;null==(n=v.current)||n.setVolume({volume:e.volume})},getInputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getOutputByteFrequencyData()},getInputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getInputVolume())?e:0},getOutputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getOutputVolume())?e:0},sendFeedback:function(e){var n;null==(n=v.current)||n.sendFeedback(e)},getId:function(){var e;return null==(e=v.current)?void 0:e.getId()},sendContextualUpdate:function(e){var n;null==(n=v.current)||n.sendContextualUpdate(e)},sendUserMessage:function(e){var n;null==(n=v.current)||n.sendUserMessage(e)},sendUserActivity:function(){var e;null==(e=v.current)||e.sendUserActivity()},sendMCPToolApprovalResult:function(e,n){var r;null==(r=v.current)||r.sendMCPToolApprovalResult(e,n)},changeInputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeInputDevice"in v.current)return Promise.resolve(v.current.changeInputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},changeOutputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeOutputDevice"in v.current)return Promise.resolve(v.current.changeOutputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},status:E,canSendFeedback:S,micMuted:c,isSpeaking:"speaking"===R}},e.useScribe=function(e){void 0===e&&(e={});var o=e.onSessionStarted,i=e.onPartialTranscript,u=e.onCommittedTranscript,l=e.onCommittedTranscriptWithTimestamps,c=e.onError,a=e.onAuthError,s=e.onQuotaExceededError,d=e.onCommitThrottledError,v=e.onTranscriberError,f=e.onUnacceptedTermsError,m=e.onRateLimitedError,h=e.onInputError,E=e.onQueueOverflowError,g=e.onResourceExhaustedError,p=e.onSessionTimeLimitExceededError,S=e.onChunkSizeExceededError,C=e.onInsufficientAudioActivityError,T=e.onConnect,R=e.onDisconnect,b=e.token,M=e.modelId,I=e.baseUri,y=e.commitStrategy,D=e.vadSilenceThresholdSecs,P=e.vadThreshold,A=e.minSpeechDurationMs,w=e.minSilenceDurationMs,O=e.languageCode,k=e.microphone,U=e.audioFormat,F=e.sampleRate,_=e.autoConnect,x=void 0!==_&&_,L=e.includeTimestamps,N=n.useRef(null),V=n.useState("disconnected"),j=V[0],q=V[1],B=n.useState(""),H=B[0],Q=B[1],W=n.useState([]),X=W[0],z=W[1],K=n.useState(null),Y=K[0],Z=K[1];n.useEffect(function(){return function(){var e;null==(e=N.current)||e.close()}},[]);var G=n.useCallback(function(e){void 0===e&&(e={});try{if(N.current)return console.warn("Already connected"),Promise.resolve();try{var n,t;q("connecting"),Z(null);var _=e.token||b,x=e.modelId||M;if(!_)throw new Error("Token is required");if(!x)throw new Error("Model ID is required");var V,j=e.microphone||k,B=e.audioFormat||U,H=e.sampleRate||F,W=null!=(n=null!=(t=e.includeTimestamps)?t:L)?n:!(!e.onCommittedTranscriptWithTimestamps&&!l);if(j)V=r.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||y,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||D,vadThreshold:e.vadThreshold||P,minSpeechDurationMs:e.minSpeechDurationMs||A,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,microphone:j,includeTimestamps:W});else{if(!B||!H)throw new Error("Either microphone options or (audioFormat + sampleRate) must be provided");V=r.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||y,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||D,vadThreshold:e.vadThreshold||P,minSpeechDurationMs:e.minSpeechDurationMs||A,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,includeTimestamps:W,audioFormat:B,sampleRate:H})}N.current=V,V.on(r.RealtimeEvents.SESSION_STARTED,function(){q("connected"),null==o||o()}),V.on(r.RealtimeEvents.PARTIAL_TRANSCRIPT,function(e){var n=e;Q(n.text),q("transcribing"),null==i||i(n)}),V.on(r.RealtimeEvents.COMMITTED_TRANSCRIPT,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0};z(function(e){return[].concat(e,[r])}),Q(""),null==u||u(n)}),V.on(r.RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0,words:n.words};z(function(e){return[].concat(e,[r])}),Q(""),null==l||l(n)}),V.on(r.RealtimeEvents.ERROR,function(e){var n=e;Z(n.error),q("error"),null==c||c(new Error(n.error))}),V.on(r.RealtimeEvents.AUTH_ERROR,function(e){var n=e;Z(n.error),q("error"),null==a||a(n)}),V.on(r.RealtimeEvents.QUOTA_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==s||s(n)}),V.on(r.RealtimeEvents.COMMIT_THROTTLED,function(e){var n=e;Z(n.error),q("error"),null==d||d(n)}),V.on(r.RealtimeEvents.TRANSCRIBER_ERROR,function(e){var n=e;Z(n.error),q("error"),null==v||v(n)}),V.on(r.RealtimeEvents.UNACCEPTED_TERMS,function(e){var n=e;Z(n.error),q("error"),null==f||f(n)}),V.on(r.RealtimeEvents.RATE_LIMITED,function(e){var n=e;Z(n.error),q("error"),null==m||m(n)}),V.on(r.RealtimeEvents.INPUT_ERROR,function(e){var n=e;Z(n.error),q("error"),null==h||h(n)}),V.on(r.RealtimeEvents.QUEUE_OVERFLOW,function(e){var n=e;Z(n.error),q("error"),null==E||E(n)}),V.on(r.RealtimeEvents.RESOURCE_EXHAUSTED,function(e){var n=e;Z(n.error),q("error"),null==g||g(n)}),V.on(r.RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==p||p(n)}),V.on(r.RealtimeEvents.CHUNK_SIZE_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==S||S(n)}),V.on(r.RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,function(e){var n=e;Z(n.error),q("error"),null==C||C(n)}),V.on(r.RealtimeEvents.OPEN,function(){null==T||T()}),V.on(r.RealtimeEvents.CLOSE,function(){q("disconnected"),N.current=null,null==R||R()})}catch(e){var X=e instanceof Error?e.message:"Failed to connect";throw Z(X),q("error"),e}return Promise.resolve()}catch(e){return Promise.reject(e)}},[b,M,I,y,D,P,A,w,O,k,U,F,L,o,i,u,l,c,a,s,d,v,f,m,h,E,g,p,S,C,T,R]),J=n.useCallback(function(){var e;null==(e=N.current)||e.close(),N.current=null,q("disconnected")},[]),$=n.useCallback(function(e,n){if(!N.current)throw new Error("Not connected to Scribe");N.current.send(t({audioBase64:e},n))},[]),ee=n.useCallback(function(){if(!N.current)throw new Error("Not connected to Scribe");N.current.commit()},[]),ne=n.useCallback(function(){z([]),Q("")},[]),re=n.useCallback(function(){return N.current},[]);return n.useEffect(function(){x&&G()},[x,G]),{status:j,isConnected:"connected"===j||"transcribing"===j,isTranscribing:"transcribing"===j,partialTranscript:H,committedTranscripts:X,error:Y,connect:G,disconnect:J,sendAudio:$,commit:ee,clearTranscripts:ne,getConnection:re}}});
1
+ !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("react"),require("@elevenlabs/client")):"function"==typeof define&&define.amd?define(["exports","react","@elevenlabs/client"],n):n((e||self).react={},e.react,e.client)}(this,function(e,n,r){function t(){return t=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var r=arguments[n];for(var t in r)({}).hasOwnProperty.call(r,t)&&(e[t]=r[t])}return e},t.apply(null,arguments)}var o=["micMuted","volume","serverLocation"];function i(e){switch(void 0===e&&(e="us"),e){case"eu-residency":case"in-residency":case"us":case"global":return e;default:return console.warn("[ConversationalAI] Invalid server-location: "+e+'. Defaulting to "us"'),"us"}}function u(e){return{us:"wss://api.elevenlabs.io","eu-residency":"wss://api.eu.residency.elevenlabs.io","in-residency":"wss://api.in.residency.elevenlabs.io",global:"wss://api.elevenlabs.io"}[e]}function l(e){return{us:"wss://livekit.rtc.elevenlabs.io","eu-residency":"wss://livekit.rtc.eu.residency.elevenlabs.io","in-residency":"wss://livekit.rtc.in.residency.elevenlabs.io",global:"wss://livekit.rtc.elevenlabs.io"}[e]}Object.defineProperty(e,"AudioFormat",{enumerable:!0,get:function(){return r.AudioFormat}}),Object.defineProperty(e,"CommitStrategy",{enumerable:!0,get:function(){return r.CommitStrategy}}),Object.defineProperty(e,"RealtimeEvents",{enumerable:!0,get:function(){return r.RealtimeEvents}}),Object.defineProperty(e,"postOverallFeedback",{enumerable:!0,get:function(){return r.postOverallFeedback}}),e.getLivekitUrlForLocation=l,e.getOriginForLocation=u,e.parseLocation=i,e.useConversation=function(e){void 0===e&&(e={});var c=e.micMuted,a=e.volume,s=e.serverLocation,d=function(e,n){if(null==e)return{};var r={};for(var t in e)if({}.hasOwnProperty.call(e,t)){if(-1!==n.indexOf(t))continue;r[t]=e[t]}return r}(e,o),v=n.useRef(null),m=n.useRef(null),f=n.useRef(!1),h=n.useState("disconnected"),E=h[0],g=h[1],p=n.useState(!1),S=p[0],C=p[1],T=n.useState("listening"),R=T[0],b=T[1],M=n.useRef(c),I=n.useRef(a);return M.current=c,I.current=a,n.useEffect(function(){var e;void 0!==c&&(null==v||null==(e=v.current)||e.setMicMuted(c))},[c]),n.useEffect(function(){var e;void 0!==a&&(null==v||null==(e=v.current)||e.setVolume({volume:a}))},[a]),n.useEffect(function(){return function(){var e;f.current=!0,m.current?m.current.then(function(e){return e.endSession()}):null==(e=v.current)||e.endSession()}},[]),{startSession:function(e){try{var n,o,c=function(n){return o?n:(f.current=!1,function(n,o){try{var c=(w=u(P=i((null==e?void 0:e.serverLocation)||s)),O=l(P),m.current=r.Conversation.startSession(t({},null!=d?d:{},null!=e?e:{},{origin:w,livekitUrl:(null==e?void 0:e.livekitUrl)||(null==d?void 0:d.livekitUrl)||O,overrides:t({},null!=(a=null==d?void 0:d.overrides)?a:{},null!=(h=null==e?void 0:e.overrides)?h:{},{client:t({},null!=(E=null==d||null==(p=d.overrides)?void 0:p.client)?E:{},null!=(S=null==e||null==(T=e.overrides)?void 0:T.client)?S:{},{source:(null==e||null==(R=e.overrides)||null==(R=R.client)?void 0:R.source)||(null==d||null==(y=d.overrides)||null==(y=y.client)?void 0:y.source)||"react_sdk",version:(null==e||null==(D=e.overrides)||null==(D=D.client)?void 0:D.version)||(null==d||null==(A=d.overrides)||null==(A=A.client)?void 0:A.version)||"0.13.0"})}),onConnect:(null==e?void 0:e.onConnect)||(null==d?void 0:d.onConnect),onDisconnect:(null==e?void 0:e.onDisconnect)||(null==d?void 0:d.onDisconnect),onError:(null==e?void 0:e.onError)||(null==d?void 0:d.onError),onMessage:(null==e?void 0:e.onMessage)||(null==d?void 0:d.onMessage),onAudio:(null==e?void 0:e.onAudio)||(null==d?void 0:d.onAudio),onDebug:(null==e?void 0:e.onDebug)||(null==d?void 0:d.onDebug),onUnhandledClientToolCall:(null==e?void 0:e.onUnhandledClientToolCall)||(null==d?void 0:d.onUnhandledClientToolCall),onVadScore:(null==e?void 0:e.onVadScore)||(null==d?void 0:d.onVadScore),onInterruption:(null==e?void 0:e.onInterruption)||(null==d?void 0:d.onInterruption),onAgentToolRequest:(null==e?void 0:e.onAgentToolRequest)||(null==d?void 0:d.onAgentToolRequest),onAgentToolResponse:(null==e?void 0:e.onAgentToolResponse)||(null==d?void 0:d.onAgentToolResponse),onConversationMetadata:(null==e?void 0:e.onConversationMetadata)||(null==d?void 0:d.onConversationMetadata),onMCPToolCall:(null==e?void 0:e.onMCPToolCall)||(null==d?void 0:d.onMCPToolCall),onMCPConnectionStatus:(null==e?void 0:e.onMCPConnectionStatus)||(null==d?void 0:d.onMCPConnectionStatus),onAsrInitiationMetadata:(null==e?void 0:e.onAsrInitiationMetadata)||(null==d?void 0:d.onAsrInitiationMetadata),onAgentChatResponsePart:(null==e?void 0:e.onAgentChatResponsePart)||(null==d?void 0:d.onAgentChatResponsePart),onAudioAlignment:(null==e?void 0:e.onAudioAlignment)||(null==d?void 0:d.onAudioAlignment),onModeChange:function(n){var r,t=n.mode;b(t),null==(r=(null==e?void 0:e.onModeChange)||(null==d?void 0:d.onModeChange))||r({mode:t})},onStatusChange:function(n){var r,t=n.status;g(t),null==(r=(null==e?void 0:e.onStatusChange)||(null==d?void 0:d.onStatusChange))||r({status:t})},onCanSendFeedbackChange:function(n){var r,t=n.canSendFeedback;C(t),null==(r=(null==e?void 0:e.onCanSendFeedbackChange)||(null==d?void 0:d.onCanSendFeedbackChange))||r({canSendFeedback:t})}})),Promise.resolve(m.current).then(function(e){function n(e){return void 0!==M.current&&v.current.setMicMuted(M.current),void 0!==I.current&&v.current.setVolume({volume:I.current}),v.current.getId()}v.current=e;var r=function(){if(f.current)return Promise.resolve(v.current.endSession()).then(function(){throw v.current=null,m.current=null,new Error("Session cancelled during connection")})}();return r&&r.then?r.then(n):n()}))}catch(e){return o(!0,e)}var a,h,E,p,S,T,R,y,D,A,P,w,O;return c&&c.then?c.then(o.bind(null,!1),o.bind(null,!0)):o(!1,c)}(0,function(e,n){if(m.current=null,e)throw n;return n}))};if(null!=(n=v.current)&&n.isOpen())return Promise.resolve(v.current.getId());var a=function(){if(m.current)return Promise.resolve(m.current).then(function(e){var n=e.getId();return o=1,n})}();return Promise.resolve(a&&a.then?a.then(c):c(a))}catch(e){return Promise.reject(e)}},endSession:function(){try{f.current=!0;var e=m.current,n=v.current;v.current=null;var r=e?Promise.resolve(e).then(function(e){return Promise.resolve(e.endSession()).then(function(){})}):Promise.resolve(null==n?void 0:n.endSession()).then(function(){});return Promise.resolve(r&&r.then?r.then(function(){}):void 0)}catch(e){return Promise.reject(e)}},setVolume:function(e){var n;null==(n=v.current)||n.setVolume({volume:e.volume})},getInputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getInputByteFrequencyData()},getOutputByteFrequencyData:function(){var e;return null==(e=v.current)?void 0:e.getOutputByteFrequencyData()},getInputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getInputVolume())?e:0},getOutputVolume:function(){var e,n;return null!=(e=null==(n=v.current)?void 0:n.getOutputVolume())?e:0},sendFeedback:function(e){var n;null==(n=v.current)||n.sendFeedback(e)},getId:function(){var e;return null==(e=v.current)?void 0:e.getId()},sendContextualUpdate:function(e){var n;null==(n=v.current)||n.sendContextualUpdate(e)},sendUserMessage:function(e){var n;null==(n=v.current)||n.sendUserMessage(e)},sendUserActivity:function(){var e;null==(e=v.current)||e.sendUserActivity()},sendMCPToolApprovalResult:function(e,n){var r;null==(r=v.current)||r.sendMCPToolApprovalResult(e,n)},changeInputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeInputDevice"in v.current)return Promise.resolve(v.current.changeInputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},changeOutputDevice:function(e){try{var n,r=function(e){if(n)return e;throw new Error("Device switching is only available for voice conversations")},t=function(){if(v.current&&"changeOutputDevice"in v.current)return Promise.resolve(v.current.changeOutputDevice(e)).then(function(e){return n=1,e})}();return Promise.resolve(t&&t.then?t.then(r):r(t))}catch(e){return Promise.reject(e)}},status:E,canSendFeedback:S,micMuted:c,isSpeaking:"speaking"===R}},e.useScribe=function(e){void 0===e&&(e={});var o=e.onSessionStarted,i=e.onPartialTranscript,u=e.onCommittedTranscript,l=e.onCommittedTranscriptWithTimestamps,c=e.onError,a=e.onAuthError,s=e.onQuotaExceededError,d=e.onCommitThrottledError,v=e.onTranscriberError,m=e.onUnacceptedTermsError,f=e.onRateLimitedError,h=e.onInputError,E=e.onQueueOverflowError,g=e.onResourceExhaustedError,p=e.onSessionTimeLimitExceededError,S=e.onChunkSizeExceededError,C=e.onInsufficientAudioActivityError,T=e.onConnect,R=e.onDisconnect,b=e.token,M=e.modelId,I=e.baseUri,y=e.commitStrategy,D=e.vadSilenceThresholdSecs,A=e.vadThreshold,P=e.minSpeechDurationMs,w=e.minSilenceDurationMs,O=e.languageCode,k=e.microphone,U=e.audioFormat,F=e.sampleRate,_=e.autoConnect,x=void 0!==_&&_,L=e.includeTimestamps,N=n.useRef(null),V=n.useState("disconnected"),j=V[0],q=V[1],B=n.useState(""),H=B[0],Q=B[1],W=n.useState([]),X=W[0],z=W[1],K=n.useState(null),Y=K[0],Z=K[1];n.useEffect(function(){return function(){var e;null==(e=N.current)||e.close()}},[]);var G=n.useCallback(function(e){void 0===e&&(e={});try{if(N.current)return console.warn("Already connected"),Promise.resolve();try{var n,t;q("connecting"),Z(null);var _=e.token||b,x=e.modelId||M;if(!_)throw new Error("Token is required");if(!x)throw new Error("Model ID is required");var V,j=e.microphone||k,B=e.audioFormat||U,H=e.sampleRate||F,W=null!=(n=null!=(t=e.includeTimestamps)?t:L)?n:!(!e.onCommittedTranscriptWithTimestamps&&!l);if(j)V=r.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||y,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||D,vadThreshold:e.vadThreshold||A,minSpeechDurationMs:e.minSpeechDurationMs||P,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,microphone:j,includeTimestamps:W});else{if(!B||!H)throw new Error("Either microphone options or (audioFormat + sampleRate) must be provided");V=r.Scribe.connect({token:_,modelId:x,baseUri:e.baseUri||I,commitStrategy:e.commitStrategy||y,vadSilenceThresholdSecs:e.vadSilenceThresholdSecs||D,vadThreshold:e.vadThreshold||A,minSpeechDurationMs:e.minSpeechDurationMs||P,minSilenceDurationMs:e.minSilenceDurationMs||w,languageCode:e.languageCode||O,includeTimestamps:W,audioFormat:B,sampleRate:H})}N.current=V,V.on(r.RealtimeEvents.SESSION_STARTED,function(){q("connected"),null==o||o()}),V.on(r.RealtimeEvents.PARTIAL_TRANSCRIPT,function(e){var n=e;Q(n.text),q("transcribing"),null==i||i(n)}),V.on(r.RealtimeEvents.COMMITTED_TRANSCRIPT,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0};z(function(e){return[].concat(e,[r])}),Q(""),null==u||u(n)}),V.on(r.RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,function(e){var n=e,r={id:Date.now()+"-"+Math.random(),text:n.text,timestamp:Date.now(),isFinal:!0,words:n.words};z(function(e){return[].concat(e,[r])}),Q(""),null==l||l(n)}),V.on(r.RealtimeEvents.ERROR,function(e){var n=e;Z(n.error),q("error"),null==c||c(new Error(n.error))}),V.on(r.RealtimeEvents.AUTH_ERROR,function(e){var n=e;Z(n.error),q("error"),null==a||a(n)}),V.on(r.RealtimeEvents.QUOTA_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==s||s(n)}),V.on(r.RealtimeEvents.COMMIT_THROTTLED,function(e){var n=e;Z(n.error),q("error"),null==d||d(n)}),V.on(r.RealtimeEvents.TRANSCRIBER_ERROR,function(e){var n=e;Z(n.error),q("error"),null==v||v(n)}),V.on(r.RealtimeEvents.UNACCEPTED_TERMS,function(e){var n=e;Z(n.error),q("error"),null==m||m(n)}),V.on(r.RealtimeEvents.RATE_LIMITED,function(e){var n=e;Z(n.error),q("error"),null==f||f(n)}),V.on(r.RealtimeEvents.INPUT_ERROR,function(e){var n=e;Z(n.error),q("error"),null==h||h(n)}),V.on(r.RealtimeEvents.QUEUE_OVERFLOW,function(e){var n=e;Z(n.error),q("error"),null==E||E(n)}),V.on(r.RealtimeEvents.RESOURCE_EXHAUSTED,function(e){var n=e;Z(n.error),q("error"),null==g||g(n)}),V.on(r.RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==p||p(n)}),V.on(r.RealtimeEvents.CHUNK_SIZE_EXCEEDED,function(e){var n=e;Z(n.error),q("error"),null==S||S(n)}),V.on(r.RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,function(e){var n=e;Z(n.error),q("error"),null==C||C(n)}),V.on(r.RealtimeEvents.OPEN,function(){null==T||T()}),V.on(r.RealtimeEvents.CLOSE,function(){q("disconnected"),N.current=null,null==R||R()})}catch(e){var X=e instanceof Error?e.message:"Failed to connect";throw Z(X),q("error"),e}return Promise.resolve()}catch(e){return Promise.reject(e)}},[b,M,I,y,D,A,P,w,O,k,U,F,L,o,i,u,l,c,a,s,d,v,m,f,h,E,g,p,S,C,T,R]),J=n.useCallback(function(){var e;null==(e=N.current)||e.close(),N.current=null,q("disconnected")},[]),$=n.useCallback(function(e,n){if(!N.current)throw new Error("Not connected to Scribe");N.current.send(t({audioBase64:e},n))},[]),ee=n.useCallback(function(){if(!N.current)throw new Error("Not connected to Scribe");N.current.commit()},[]),ne=n.useCallback(function(){z([]),Q("")},[]),re=n.useCallback(function(){return N.current},[]);return n.useEffect(function(){x&&G()},[x,G]),{status:j,isConnected:"connected"===j||"transcribing"===j,isTranscribing:"transcribing"===j,partialTranscript:H,committedTranscripts:X,error:Y,connect:G,disconnect:J,sendAudio:$,commit:ee,clearTranscripts:ne,getConnection:re}}});
2
2
  //# sourceMappingURL=lib.umd.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lib.umd.js","sources":["../src/index.ts","../src/version.ts","../src/scribe.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n Callbacks,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\n// Scribe exports\nexport {\n useScribe,\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"./scribe\";\nexport type {\n ScribeStatus,\n TranscriptSegment,\n WordTimestamp,\n ScribeCallbacks,\n ScribeHookOptions,\n UseScribeReturn,\n RealtimeConnection,\n} from \"./scribe\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onAgentToolRequest\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n | \"onAgentChatResponsePart\"\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 shouldEndRef = useRef(false);\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 shouldEndRef.current = true;\n if (lockRef.current) {\n lockRef.current.then(conv => conv.endSession());\n } else {\n conversationRef.current?.endSession();\n }\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 shouldEndRef.current = false;\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const calculatedLivekitUrl = getLivekitUrlForLocation(\n resolvedServerLocation\n );\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n\n livekitUrl:\n options?.livekitUrl ||\n defaultOptions?.livekitUrl ||\n calculatedLivekitUrl,\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 onAgentToolRequest:\n options?.onAgentToolRequest || defaultOptions?.onAgentToolRequest,\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 onAgentChatResponsePart:\n options?.onAgentChatResponsePart ||\n defaultOptions?.onAgentChatResponsePart,\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\n // Check if session was cancelled while connecting\n if (shouldEndRef.current) {\n await conversationRef.current.endSession();\n conversationRef.current = null;\n lockRef.current = null;\n throw new Error(\"Session cancelled during connection\");\n }\n\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 shouldEndRef.current = true;\n const pendingConnection = lockRef.current;\n const conversation = conversationRef.current;\n conversationRef.current = null;\n\n if (pendingConnection) {\n const conv = await pendingConnection;\n await conv.endSession();\n } else {\n await conversation?.endSession();\n }\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","// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.12.3\";\n","import { useEffect, useRef, useState, useCallback } from \"react\";\nimport { Scribe, RealtimeEvents } from \"@elevenlabs/client\";\nimport type {\n RealtimeConnection,\n AudioOptions,\n MicrophoneOptions,\n AudioFormat,\n CommitStrategy,\n PartialTranscriptMessage,\n CommittedTranscriptMessage,\n CommittedTranscriptWithTimestampsMessage,\n ScribeErrorMessage,\n ScribeAuthErrorMessage,\n ScribeQuotaExceededErrorMessage,\n ScribeCommitThrottledErrorMessage,\n ScribeTranscriberErrorMessage,\n ScribeUnacceptedTermsErrorMessage,\n ScribeRateLimitedErrorMessage,\n ScribeInputErrorMessage,\n ScribeQueueOverflowErrorMessage,\n ScribeResourceExhaustedErrorMessage,\n ScribeSessionTimeLimitExceededErrorMessage,\n ScribeChunkSizeExceededErrorMessage,\n ScribeInsufficientAudioActivityErrorMessage,\n} from \"@elevenlabs/client\";\n\n// ============= Types =============\n\nexport type ScribeStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"transcribing\"\n | \"error\";\n\nexport interface WordTimestamp {\n text?: string;\n /** Start time in seconds */\n start?: number;\n /** End time in seconds */\n end?: number;\n type?: \"word\" | \"spacing\";\n speaker_id?: string;\n logprob?: number;\n characters?: string[];\n}\n\nexport interface TranscriptSegment {\n id: string;\n text: string;\n timestamp: number;\n isFinal: boolean;\n /** Word-level timestamps (only present when includeTimestamps is enabled) */\n words?: WordTimestamp[];\n}\n\nexport interface ScribeCallbacks {\n onSessionStarted?: () => void;\n onPartialTranscript?: (data: { text: string }) => void;\n onCommittedTranscript?: (data: { text: string }) => void;\n onCommittedTranscriptWithTimestamps?: (data: {\n text: string;\n words?: WordTimestamp[];\n }) => void;\n /** Called for any error (also called when specific error callbacks fire) */\n onError?: (error: Error | Event) => void;\n onAuthError?: (data: { error: string }) => void;\n onQuotaExceededError?: (data: { error: string }) => void;\n onCommitThrottledError?: (data: { error: string }) => void;\n onTranscriberError?: (data: { error: string }) => void;\n onUnacceptedTermsError?: (data: { error: string }) => void;\n onRateLimitedError?: (data: { error: string }) => void;\n onInputError?: (data: { error: string }) => void;\n onQueueOverflowError?: (data: { error: string }) => void;\n onResourceExhaustedError?: (data: { error: string }) => void;\n onSessionTimeLimitExceededError?: (data: { error: string }) => void;\n onChunkSizeExceededError?: (data: { error: string }) => void;\n onInsufficientAudioActivityError?: (data: { error: string }) => void;\n\n onConnect?: () => void;\n onDisconnect?: () => void;\n}\n\nexport interface ScribeHookOptions extends ScribeCallbacks {\n // Connection options\n token?: string;\n modelId?: string;\n baseUri?: string;\n\n // VAD options\n commitStrategy?: CommitStrategy;\n vadSilenceThresholdSecs?: number;\n vadThreshold?: number;\n minSpeechDurationMs?: number;\n minSilenceDurationMs?: number;\n languageCode?: string;\n\n // Microphone options (for automatic microphone mode)\n microphone?: {\n deviceId?: string;\n echoCancellation?: boolean;\n noiseSuppression?: boolean;\n autoGainControl?: boolean;\n channelCount?: number;\n };\n\n // Manual audio options\n audioFormat?: AudioFormat;\n sampleRate?: number;\n\n // Auto-connect on mount\n autoConnect?: boolean;\n\n // Include timestamps\n includeTimestamps?: boolean;\n}\n\nexport interface UseScribeReturn {\n // State\n status: ScribeStatus;\n isConnected: boolean;\n isTranscribing: boolean;\n partialTranscript: string;\n committedTranscripts: TranscriptSegment[];\n error: string | null;\n\n // Connection methods\n connect: (options?: Partial<ScribeHookOptions>) => Promise<void>;\n disconnect: () => void;\n\n // Audio methods (for manual mode)\n sendAudio: (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => void;\n commit: () => void;\n\n // Utility methods\n clearTranscripts: () => void;\n getConnection: () => RealtimeConnection | null;\n}\n\n// ============= Hook Implementation =============\n\nexport function useScribe(options: ScribeHookOptions = {}): UseScribeReturn {\n const {\n // Callbacks\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n\n // Connection options\n token: defaultToken,\n modelId: defaultModelId,\n baseUri: defaultBaseUri,\n commitStrategy: defaultCommitStrategy,\n vadSilenceThresholdSecs: defaultVadSilenceThresholdSecs,\n vadThreshold: defaultVadThreshold,\n minSpeechDurationMs: defaultMinSpeechDurationMs,\n minSilenceDurationMs: defaultMinSilenceDurationMs,\n languageCode: defaultLanguageCode,\n\n // Mode options\n microphone: defaultMicrophone,\n audioFormat: defaultAudioFormat,\n sampleRate: defaultSampleRate,\n\n // Auto-connect\n autoConnect = false,\n\n // Timestamps\n includeTimestamps: defaultIncludeTimestamps,\n } = options;\n\n const connectionRef = useRef<RealtimeConnection | null>(null);\n\n const [status, setStatus] = useState<ScribeStatus>(\"disconnected\");\n const [partialTranscript, setPartialTranscript] = useState<string>(\"\");\n const [committedTranscripts, setCommittedTranscripts] = useState<\n TranscriptSegment[]\n >([]);\n const [error, setError] = useState<string | null>(null);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n connectionRef.current?.close();\n };\n }, []);\n\n const connect = useCallback(\n async (runtimeOptions: Partial<ScribeHookOptions> = {}) => {\n if (connectionRef.current) {\n console.warn(\"Already connected\");\n return;\n }\n\n try {\n setStatus(\"connecting\");\n setError(null);\n\n // Merge default options with runtime options\n const token = runtimeOptions.token || defaultToken;\n const modelId = runtimeOptions.modelId || defaultModelId;\n\n if (!token) {\n throw new Error(\"Token is required\");\n }\n if (!modelId) {\n throw new Error(\"Model ID is required\");\n }\n\n // Determine mode: microphone or manual\n const microphone = runtimeOptions.microphone || defaultMicrophone;\n const audioFormat = runtimeOptions.audioFormat || defaultAudioFormat;\n const sampleRate = runtimeOptions.sampleRate || defaultSampleRate;\n\n let connection: RealtimeConnection;\n\n // Include timestamps if explicitly requested OR if the callback is provided\n const includeTimestamps =\n runtimeOptions.includeTimestamps ??\n defaultIncludeTimestamps ??\n !!(\n runtimeOptions.onCommittedTranscriptWithTimestamps ||\n onCommittedTranscriptWithTimestamps\n );\n\n if (microphone) {\n // Microphone mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n microphone,\n includeTimestamps,\n } as MicrophoneOptions);\n } else if (audioFormat && sampleRate) {\n // Manual audio mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n includeTimestamps,\n audioFormat,\n sampleRate,\n } as AudioOptions);\n } else {\n throw new Error(\n \"Either microphone options or (audioFormat + sampleRate) must be provided\"\n );\n }\n\n connectionRef.current = connection;\n\n // Set up event listeners\n connection.on(RealtimeEvents.SESSION_STARTED, () => {\n setStatus(\"connected\");\n onSessionStarted?.();\n });\n\n connection.on(RealtimeEvents.PARTIAL_TRANSCRIPT, (data: unknown) => {\n const message = data as PartialTranscriptMessage;\n setPartialTranscript(message.text);\n setStatus(\"transcribing\");\n onPartialTranscript?.(message);\n });\n\n connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data: unknown) => {\n const message = data as CommittedTranscriptMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscript?.(message);\n });\n\n connection.on(\n RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,\n (data: unknown) => {\n const message = data as CommittedTranscriptWithTimestampsMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n words: message.words,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscriptWithTimestamps?.(message);\n }\n );\n\n connection.on(RealtimeEvents.ERROR, (err: unknown) => {\n const message = err as ScribeErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onError?.(new Error(message.error));\n });\n\n connection.on(RealtimeEvents.AUTH_ERROR, (data: unknown) => {\n const message = data as ScribeAuthErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onAuthError?.(message);\n });\n\n connection.on(RealtimeEvents.QUOTA_EXCEEDED, (data: unknown) => {\n const message = data as ScribeQuotaExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQuotaExceededError?.(message);\n });\n\n connection.on(RealtimeEvents.COMMIT_THROTTLED, (data: unknown) => {\n const message = data as ScribeCommitThrottledErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onCommitThrottledError?.(message);\n });\n\n connection.on(RealtimeEvents.TRANSCRIBER_ERROR, (data: unknown) => {\n const message = data as ScribeTranscriberErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onTranscriberError?.(message);\n });\n\n connection.on(RealtimeEvents.UNACCEPTED_TERMS, (data: unknown) => {\n const message = data as ScribeUnacceptedTermsErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onUnacceptedTermsError?.(message);\n });\n\n connection.on(RealtimeEvents.RATE_LIMITED, (data: unknown) => {\n const message = data as ScribeRateLimitedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onRateLimitedError?.(message);\n });\n\n connection.on(RealtimeEvents.INPUT_ERROR, (data: unknown) => {\n const message = data as ScribeInputErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInputError?.(message);\n });\n\n connection.on(RealtimeEvents.QUEUE_OVERFLOW, (data: unknown) => {\n const message = data as ScribeQueueOverflowErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQueueOverflowError?.(message);\n });\n\n connection.on(RealtimeEvents.RESOURCE_EXHAUSTED, (data: unknown) => {\n const message = data as ScribeResourceExhaustedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onResourceExhaustedError?.(message);\n });\n\n connection.on(\n RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,\n (data: unknown) => {\n const message = data as ScribeSessionTimeLimitExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onSessionTimeLimitExceededError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.CHUNK_SIZE_EXCEEDED, (data: unknown) => {\n const message = data as ScribeChunkSizeExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onChunkSizeExceededError?.(message);\n });\n\n connection.on(\n RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,\n (data: unknown) => {\n const message = data as ScribeInsufficientAudioActivityErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInsufficientAudioActivityError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.OPEN, () => {\n onConnect?.();\n });\n\n connection.on(RealtimeEvents.CLOSE, () => {\n setStatus(\"disconnected\");\n connectionRef.current = null;\n onDisconnect?.();\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"Failed to connect\";\n setError(errorMessage);\n setStatus(\"error\");\n throw err;\n }\n },\n [\n defaultToken,\n defaultModelId,\n defaultBaseUri,\n defaultCommitStrategy,\n defaultVadSilenceThresholdSecs,\n defaultVadThreshold,\n defaultMinSpeechDurationMs,\n defaultMinSilenceDurationMs,\n defaultLanguageCode,\n defaultMicrophone,\n defaultAudioFormat,\n defaultSampleRate,\n defaultIncludeTimestamps,\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n ]\n );\n\n const disconnect = useCallback(() => {\n connectionRef.current?.close();\n connectionRef.current = null;\n setStatus(\"disconnected\");\n }, []);\n\n const sendAudio = useCallback(\n (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.send({ audioBase64, ...options });\n },\n []\n );\n\n const commit = useCallback(() => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.commit();\n }, []);\n\n const clearTranscripts = useCallback(() => {\n setCommittedTranscripts([]);\n setPartialTranscript(\"\");\n }, []);\n\n const getConnection = useCallback(() => {\n return connectionRef.current;\n }, []);\n\n // Auto-connect if enabled\n useEffect(() => {\n if (autoConnect) {\n connect();\n }\n }, [autoConnect, connect]);\n\n return {\n // State\n status,\n isConnected: status === \"connected\" || status === \"transcribing\",\n isTranscribing: status === \"transcribing\",\n partialTranscript,\n committedTranscripts,\n error,\n\n // Methods\n connect,\n disconnect,\n sendAudio,\n commit,\n clearTranscripts,\n getConnection,\n };\n}\n\n// Export types and enums from client for convenience\nexport {\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"@elevenlabs/client\";\nexport type { RealtimeConnection } from \"@elevenlabs/client\";\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","shouldEndRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","then","conv","endSession","startSession","options","_conversationRef$curr4","_exit","_temp4","_result","origin","resolvedServerLocation","calculatedLivekitUrl","Conversation","_extends","livekitUrl","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","onAgentToolRequest","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onAgentChatResponsePart","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","_lockRef$current","_temp2","_result3","getId","_temp","Error","_finallyRethrows","_wasThrown","_result2","isOpen","_temp3","conversation","_conversation$getId","e","reject","pendingConnection","_temp5","_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","_temp7","_exit3","_result4","_temp6","_await$conversationRe","changeOutputDevice","_exit4","_temp9","_result5","_temp8","_await$conversationRe2","isSpeaking","onSessionStarted","onPartialTranscript","onCommittedTranscript","onCommittedTranscriptWithTimestamps","onAuthError","onQuotaExceededError","onCommitThrottledError","onTranscriberError","onUnacceptedTermsError","onRateLimitedError","onInputError","onQueueOverflowError","onResourceExhaustedError","onSessionTimeLimitExceededError","onChunkSizeExceededError","onInsufficientAudioActivityError","defaultToken","token","defaultModelId","modelId","defaultBaseUri","baseUri","defaultCommitStrategy","commitStrategy","defaultVadSilenceThresholdSecs","vadSilenceThresholdSecs","defaultVadThreshold","vadThreshold","defaultMinSpeechDurationMs","minSpeechDurationMs","defaultMinSilenceDurationMs","minSilenceDurationMs","defaultLanguageCode","languageCode","defaultMicrophone","microphone","defaultAudioFormat","audioFormat","defaultSampleRate","sampleRate","_options$autoConnect","autoConnect","defaultIncludeTimestamps","includeTimestamps","connectionRef","partialTranscript","setPartialTranscript","committedTranscripts","setCommittedTranscripts","_useState4","error","setError","_connectionRef$curren","close","connect","useCallback","runtimeOptions","_runtimeOptions$inclu","connection","Scribe","on","RealtimeEvents","SESSION_STARTED","PARTIAL_TRANSCRIPT","data","message","COMMITTED_TRANSCRIPT","segment","id","Date","now","Math","random","timestamp","isFinal","prev","concat","COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS","words","ERROR","err","AUTH_ERROR","QUOTA_EXCEEDED","COMMIT_THROTTLED","TRANSCRIBER_ERROR","UNACCEPTED_TERMS","RATE_LIMITED","INPUT_ERROR","QUEUE_OVERFLOW","RESOURCE_EXHAUSTED","SESSION_TIME_LIMIT_EXCEEDED","CHUNK_SIZE_EXCEEDED","INSUFFICIENT_AUDIO_ACTIVITY","OPEN","CLOSE","errorMessage","disconnect","_connectionRef$curren2","sendAudio","audioBase64","send","commit","clearTranscripts","getConnection","isConnected","isTranscribing"],"mappings":"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"}
1
+ {"version":3,"file":"lib.umd.js","sources":["../src/index.ts","../src/version.ts","../src/scribe.ts"],"sourcesContent":["import { useEffect, useRef, useState } from \"react\";\nimport {\n Conversation,\n type SessionConfig,\n type Options,\n type ClientToolsConfig,\n type InputConfig,\n type AudioWorkletConfig,\n type OutputConfig,\n type FormatConfig,\n type Mode,\n type Status,\n type Callbacks,\n} from \"@elevenlabs/client\";\n\n// Device configuration types for audio device switching\nexport type DeviceFormatConfig = {\n format: \"pcm\" | \"ulaw\";\n sampleRate: number;\n outputDeviceId?: string;\n};\n\nexport type DeviceInputConfig = {\n preferHeadphonesForIosDevices?: boolean;\n inputDeviceId?: string;\n};\n\nimport { PACKAGE_VERSION } from \"./version\";\n\nexport type Location = \"us\" | \"global\" | \"eu-residency\" | \"in-residency\";\n\nexport function parseLocation(location: string = \"us\"): Location {\n switch (location) {\n case \"eu-residency\":\n case \"in-residency\":\n case \"us\":\n case \"global\":\n return location;\n default:\n console.warn(\n `[ConversationalAI] Invalid server-location: ${location}. Defaulting to \"us\"`\n );\n return \"us\";\n }\n}\n\nexport function getOriginForLocation(location: Location): string {\n const originMap: Record<Location, string> = {\n us: \"wss://api.elevenlabs.io\",\n \"eu-residency\": \"wss://api.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://api.in.residency.elevenlabs.io\",\n global: \"wss://api.elevenlabs.io\",\n };\n\n return originMap[location];\n}\n\nexport function getLivekitUrlForLocation(location: Location): string {\n const livekitUrlMap: Record<Location, string> = {\n us: \"wss://livekit.rtc.elevenlabs.io\",\n \"eu-residency\": \"wss://livekit.rtc.eu.residency.elevenlabs.io\",\n \"in-residency\": \"wss://livekit.rtc.in.residency.elevenlabs.io\",\n global: \"wss://livekit.rtc.elevenlabs.io\",\n };\n\n return livekitUrlMap[location];\n}\n\nexport type {\n Role,\n Mode,\n Status,\n SessionConfig,\n DisconnectionDetails,\n Language,\n VadScoreEvent,\n AudioAlignmentEvent,\n InputConfig,\n FormatConfig,\n VoiceConversation,\n TextConversation,\n Callbacks,\n} from \"@elevenlabs/client\";\nexport { postOverallFeedback } from \"@elevenlabs/client\";\n\n// Scribe exports\nexport {\n useScribe,\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"./scribe\";\nexport type {\n ScribeStatus,\n TranscriptSegment,\n WordTimestamp,\n ScribeCallbacks,\n ScribeHookOptions,\n UseScribeReturn,\n RealtimeConnection,\n} from \"./scribe\";\n\nexport type HookOptions = Partial<\n SessionConfig &\n HookCallbacks &\n ClientToolsConfig &\n InputConfig &\n OutputConfig &\n AudioWorkletConfig &\n FormatConfig & {\n serverLocation?: Location | string;\n }\n>;\nexport type ControlledState = {\n micMuted?: boolean;\n volume?: number;\n};\nexport type HookCallbacks = Pick<\n Callbacks,\n | \"onConnect\"\n | \"onDisconnect\"\n | \"onError\"\n | \"onMessage\"\n | \"onAudio\"\n | \"onModeChange\"\n | \"onStatusChange\"\n | \"onCanSendFeedbackChange\"\n | \"onDebug\"\n | \"onUnhandledClientToolCall\"\n | \"onVadScore\"\n | \"onInterruption\"\n | \"onAgentToolResponse\"\n | \"onAgentToolRequest\"\n | \"onConversationMetadata\"\n | \"onMCPToolCall\"\n | \"onMCPConnectionStatus\"\n | \"onAsrInitiationMetadata\"\n | \"onAgentChatResponsePart\"\n | \"onAudioAlignment\"\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 shouldEndRef = useRef(false);\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 shouldEndRef.current = true;\n if (lockRef.current) {\n lockRef.current.then(conv => conv.endSession());\n } else {\n conversationRef.current?.endSession();\n }\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 shouldEndRef.current = false;\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const calculatedLivekitUrl = getLivekitUrlForLocation(\n resolvedServerLocation\n );\n\n lockRef.current = Conversation.startSession({\n ...(defaultOptions ?? {}),\n ...(options ?? {}),\n origin,\n\n livekitUrl:\n options?.livekitUrl ||\n defaultOptions?.livekitUrl ||\n calculatedLivekitUrl,\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 onAgentToolRequest:\n options?.onAgentToolRequest || defaultOptions?.onAgentToolRequest,\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 onAgentChatResponsePart:\n options?.onAgentChatResponsePart ||\n defaultOptions?.onAgentChatResponsePart,\n onAudioAlignment:\n options?.onAudioAlignment || defaultOptions?.onAudioAlignment,\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\n // Check if session was cancelled while connecting\n if (shouldEndRef.current) {\n await conversationRef.current.endSession();\n conversationRef.current = null;\n lockRef.current = null;\n throw new Error(\"Session cancelled during connection\");\n }\n\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 shouldEndRef.current = true;\n const pendingConnection = lockRef.current;\n const conversation = conversationRef.current;\n conversationRef.current = null;\n\n if (pendingConnection) {\n const conv = await pendingConnection;\n await conv.endSession();\n } else {\n await conversation?.endSession();\n }\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","// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.13.0\";\n","import { useEffect, useRef, useState, useCallback } from \"react\";\nimport { Scribe, RealtimeEvents } from \"@elevenlabs/client\";\nimport type {\n RealtimeConnection,\n AudioOptions,\n MicrophoneOptions,\n AudioFormat,\n CommitStrategy,\n PartialTranscriptMessage,\n CommittedTranscriptMessage,\n CommittedTranscriptWithTimestampsMessage,\n ScribeErrorMessage,\n ScribeAuthErrorMessage,\n ScribeQuotaExceededErrorMessage,\n ScribeCommitThrottledErrorMessage,\n ScribeTranscriberErrorMessage,\n ScribeUnacceptedTermsErrorMessage,\n ScribeRateLimitedErrorMessage,\n ScribeInputErrorMessage,\n ScribeQueueOverflowErrorMessage,\n ScribeResourceExhaustedErrorMessage,\n ScribeSessionTimeLimitExceededErrorMessage,\n ScribeChunkSizeExceededErrorMessage,\n ScribeInsufficientAudioActivityErrorMessage,\n} from \"@elevenlabs/client\";\n\n// ============= Types =============\n\nexport type ScribeStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"transcribing\"\n | \"error\";\n\nexport interface WordTimestamp {\n text?: string;\n /** Start time in seconds */\n start?: number;\n /** End time in seconds */\n end?: number;\n type?: \"word\" | \"spacing\";\n speaker_id?: string;\n logprob?: number;\n characters?: string[];\n}\n\nexport interface TranscriptSegment {\n id: string;\n text: string;\n timestamp: number;\n isFinal: boolean;\n /** Word-level timestamps (only present when includeTimestamps is enabled) */\n words?: WordTimestamp[];\n}\n\nexport interface ScribeCallbacks {\n onSessionStarted?: () => void;\n onPartialTranscript?: (data: { text: string }) => void;\n onCommittedTranscript?: (data: { text: string }) => void;\n onCommittedTranscriptWithTimestamps?: (data: {\n text: string;\n words?: WordTimestamp[];\n }) => void;\n /** Called for any error (also called when specific error callbacks fire) */\n onError?: (error: Error | Event) => void;\n onAuthError?: (data: { error: string }) => void;\n onQuotaExceededError?: (data: { error: string }) => void;\n onCommitThrottledError?: (data: { error: string }) => void;\n onTranscriberError?: (data: { error: string }) => void;\n onUnacceptedTermsError?: (data: { error: string }) => void;\n onRateLimitedError?: (data: { error: string }) => void;\n onInputError?: (data: { error: string }) => void;\n onQueueOverflowError?: (data: { error: string }) => void;\n onResourceExhaustedError?: (data: { error: string }) => void;\n onSessionTimeLimitExceededError?: (data: { error: string }) => void;\n onChunkSizeExceededError?: (data: { error: string }) => void;\n onInsufficientAudioActivityError?: (data: { error: string }) => void;\n\n onConnect?: () => void;\n onDisconnect?: () => void;\n}\n\nexport interface ScribeHookOptions extends ScribeCallbacks {\n // Connection options\n token?: string;\n modelId?: string;\n baseUri?: string;\n\n // VAD options\n commitStrategy?: CommitStrategy;\n vadSilenceThresholdSecs?: number;\n vadThreshold?: number;\n minSpeechDurationMs?: number;\n minSilenceDurationMs?: number;\n languageCode?: string;\n\n // Microphone options (for automatic microphone mode)\n microphone?: {\n deviceId?: string;\n echoCancellation?: boolean;\n noiseSuppression?: boolean;\n autoGainControl?: boolean;\n channelCount?: number;\n };\n\n // Manual audio options\n audioFormat?: AudioFormat;\n sampleRate?: number;\n\n // Auto-connect on mount\n autoConnect?: boolean;\n\n // Include timestamps\n includeTimestamps?: boolean;\n}\n\nexport interface UseScribeReturn {\n // State\n status: ScribeStatus;\n isConnected: boolean;\n isTranscribing: boolean;\n partialTranscript: string;\n committedTranscripts: TranscriptSegment[];\n error: string | null;\n\n // Connection methods\n connect: (options?: Partial<ScribeHookOptions>) => Promise<void>;\n disconnect: () => void;\n\n // Audio methods (for manual mode)\n sendAudio: (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => void;\n commit: () => void;\n\n // Utility methods\n clearTranscripts: () => void;\n getConnection: () => RealtimeConnection | null;\n}\n\n// ============= Hook Implementation =============\n\nexport function useScribe(options: ScribeHookOptions = {}): UseScribeReturn {\n const {\n // Callbacks\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n\n // Connection options\n token: defaultToken,\n modelId: defaultModelId,\n baseUri: defaultBaseUri,\n commitStrategy: defaultCommitStrategy,\n vadSilenceThresholdSecs: defaultVadSilenceThresholdSecs,\n vadThreshold: defaultVadThreshold,\n minSpeechDurationMs: defaultMinSpeechDurationMs,\n minSilenceDurationMs: defaultMinSilenceDurationMs,\n languageCode: defaultLanguageCode,\n\n // Mode options\n microphone: defaultMicrophone,\n audioFormat: defaultAudioFormat,\n sampleRate: defaultSampleRate,\n\n // Auto-connect\n autoConnect = false,\n\n // Timestamps\n includeTimestamps: defaultIncludeTimestamps,\n } = options;\n\n const connectionRef = useRef<RealtimeConnection | null>(null);\n\n const [status, setStatus] = useState<ScribeStatus>(\"disconnected\");\n const [partialTranscript, setPartialTranscript] = useState<string>(\"\");\n const [committedTranscripts, setCommittedTranscripts] = useState<\n TranscriptSegment[]\n >([]);\n const [error, setError] = useState<string | null>(null);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n connectionRef.current?.close();\n };\n }, []);\n\n const connect = useCallback(\n async (runtimeOptions: Partial<ScribeHookOptions> = {}) => {\n if (connectionRef.current) {\n console.warn(\"Already connected\");\n return;\n }\n\n try {\n setStatus(\"connecting\");\n setError(null);\n\n // Merge default options with runtime options\n const token = runtimeOptions.token || defaultToken;\n const modelId = runtimeOptions.modelId || defaultModelId;\n\n if (!token) {\n throw new Error(\"Token is required\");\n }\n if (!modelId) {\n throw new Error(\"Model ID is required\");\n }\n\n // Determine mode: microphone or manual\n const microphone = runtimeOptions.microphone || defaultMicrophone;\n const audioFormat = runtimeOptions.audioFormat || defaultAudioFormat;\n const sampleRate = runtimeOptions.sampleRate || defaultSampleRate;\n\n let connection: RealtimeConnection;\n\n // Include timestamps if explicitly requested OR if the callback is provided\n const includeTimestamps =\n runtimeOptions.includeTimestamps ??\n defaultIncludeTimestamps ??\n !!(\n runtimeOptions.onCommittedTranscriptWithTimestamps ||\n onCommittedTranscriptWithTimestamps\n );\n\n if (microphone) {\n // Microphone mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n microphone,\n includeTimestamps,\n } as MicrophoneOptions);\n } else if (audioFormat && sampleRate) {\n // Manual audio mode\n connection = Scribe.connect({\n token,\n modelId,\n baseUri: runtimeOptions.baseUri || defaultBaseUri,\n commitStrategy:\n runtimeOptions.commitStrategy || defaultCommitStrategy,\n vadSilenceThresholdSecs:\n runtimeOptions.vadSilenceThresholdSecs ||\n defaultVadSilenceThresholdSecs,\n vadThreshold: runtimeOptions.vadThreshold || defaultVadThreshold,\n minSpeechDurationMs:\n runtimeOptions.minSpeechDurationMs || defaultMinSpeechDurationMs,\n minSilenceDurationMs:\n runtimeOptions.minSilenceDurationMs ||\n defaultMinSilenceDurationMs,\n languageCode: runtimeOptions.languageCode || defaultLanguageCode,\n includeTimestamps,\n audioFormat,\n sampleRate,\n } as AudioOptions);\n } else {\n throw new Error(\n \"Either microphone options or (audioFormat + sampleRate) must be provided\"\n );\n }\n\n connectionRef.current = connection;\n\n // Set up event listeners\n connection.on(RealtimeEvents.SESSION_STARTED, () => {\n setStatus(\"connected\");\n onSessionStarted?.();\n });\n\n connection.on(RealtimeEvents.PARTIAL_TRANSCRIPT, (data: unknown) => {\n const message = data as PartialTranscriptMessage;\n setPartialTranscript(message.text);\n setStatus(\"transcribing\");\n onPartialTranscript?.(message);\n });\n\n connection.on(RealtimeEvents.COMMITTED_TRANSCRIPT, (data: unknown) => {\n const message = data as CommittedTranscriptMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscript?.(message);\n });\n\n connection.on(\n RealtimeEvents.COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS,\n (data: unknown) => {\n const message = data as CommittedTranscriptWithTimestampsMessage;\n const segment: TranscriptSegment = {\n id: `${Date.now()}-${Math.random()}`,\n text: message.text,\n timestamp: Date.now(),\n isFinal: true,\n words: message.words,\n };\n setCommittedTranscripts(prev => [...prev, segment]);\n setPartialTranscript(\"\");\n onCommittedTranscriptWithTimestamps?.(message);\n }\n );\n\n connection.on(RealtimeEvents.ERROR, (err: unknown) => {\n const message = err as ScribeErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onError?.(new Error(message.error));\n });\n\n connection.on(RealtimeEvents.AUTH_ERROR, (data: unknown) => {\n const message = data as ScribeAuthErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onAuthError?.(message);\n });\n\n connection.on(RealtimeEvents.QUOTA_EXCEEDED, (data: unknown) => {\n const message = data as ScribeQuotaExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQuotaExceededError?.(message);\n });\n\n connection.on(RealtimeEvents.COMMIT_THROTTLED, (data: unknown) => {\n const message = data as ScribeCommitThrottledErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onCommitThrottledError?.(message);\n });\n\n connection.on(RealtimeEvents.TRANSCRIBER_ERROR, (data: unknown) => {\n const message = data as ScribeTranscriberErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onTranscriberError?.(message);\n });\n\n connection.on(RealtimeEvents.UNACCEPTED_TERMS, (data: unknown) => {\n const message = data as ScribeUnacceptedTermsErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onUnacceptedTermsError?.(message);\n });\n\n connection.on(RealtimeEvents.RATE_LIMITED, (data: unknown) => {\n const message = data as ScribeRateLimitedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onRateLimitedError?.(message);\n });\n\n connection.on(RealtimeEvents.INPUT_ERROR, (data: unknown) => {\n const message = data as ScribeInputErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInputError?.(message);\n });\n\n connection.on(RealtimeEvents.QUEUE_OVERFLOW, (data: unknown) => {\n const message = data as ScribeQueueOverflowErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onQueueOverflowError?.(message);\n });\n\n connection.on(RealtimeEvents.RESOURCE_EXHAUSTED, (data: unknown) => {\n const message = data as ScribeResourceExhaustedErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onResourceExhaustedError?.(message);\n });\n\n connection.on(\n RealtimeEvents.SESSION_TIME_LIMIT_EXCEEDED,\n (data: unknown) => {\n const message = data as ScribeSessionTimeLimitExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onSessionTimeLimitExceededError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.CHUNK_SIZE_EXCEEDED, (data: unknown) => {\n const message = data as ScribeChunkSizeExceededErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onChunkSizeExceededError?.(message);\n });\n\n connection.on(\n RealtimeEvents.INSUFFICIENT_AUDIO_ACTIVITY,\n (data: unknown) => {\n const message = data as ScribeInsufficientAudioActivityErrorMessage;\n setError(message.error);\n setStatus(\"error\");\n onInsufficientAudioActivityError?.(message);\n }\n );\n\n connection.on(RealtimeEvents.OPEN, () => {\n onConnect?.();\n });\n\n connection.on(RealtimeEvents.CLOSE, () => {\n setStatus(\"disconnected\");\n connectionRef.current = null;\n onDisconnect?.();\n });\n } catch (err) {\n const errorMessage =\n err instanceof Error ? err.message : \"Failed to connect\";\n setError(errorMessage);\n setStatus(\"error\");\n throw err;\n }\n },\n [\n defaultToken,\n defaultModelId,\n defaultBaseUri,\n defaultCommitStrategy,\n defaultVadSilenceThresholdSecs,\n defaultVadThreshold,\n defaultMinSpeechDurationMs,\n defaultMinSilenceDurationMs,\n defaultLanguageCode,\n defaultMicrophone,\n defaultAudioFormat,\n defaultSampleRate,\n defaultIncludeTimestamps,\n onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onQuotaExceededError,\n onCommitThrottledError,\n onTranscriberError,\n onUnacceptedTermsError,\n onRateLimitedError,\n onInputError,\n onQueueOverflowError,\n onResourceExhaustedError,\n onSessionTimeLimitExceededError,\n onChunkSizeExceededError,\n onInsufficientAudioActivityError,\n onConnect,\n onDisconnect,\n ]\n );\n\n const disconnect = useCallback(() => {\n connectionRef.current?.close();\n connectionRef.current = null;\n setStatus(\"disconnected\");\n }, []);\n\n const sendAudio = useCallback(\n (\n audioBase64: string,\n options?: { commit?: boolean; sampleRate?: number; previousText?: string }\n ) => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.send({ audioBase64, ...options });\n },\n []\n );\n\n const commit = useCallback(() => {\n if (!connectionRef.current) {\n throw new Error(\"Not connected to Scribe\");\n }\n connectionRef.current.commit();\n }, []);\n\n const clearTranscripts = useCallback(() => {\n setCommittedTranscripts([]);\n setPartialTranscript(\"\");\n }, []);\n\n const getConnection = useCallback(() => {\n return connectionRef.current;\n }, []);\n\n // Auto-connect if enabled\n useEffect(() => {\n if (autoConnect) {\n connect();\n }\n }, [autoConnect, connect]);\n\n return {\n // State\n status,\n isConnected: status === \"connected\" || status === \"transcribing\",\n isTranscribing: status === \"transcribing\",\n partialTranscript,\n committedTranscripts,\n error,\n\n // Methods\n connect,\n disconnect,\n sendAudio,\n commit,\n clearTranscripts,\n getConnection,\n };\n}\n\n// Export types and enums from client for convenience\nexport {\n AudioFormat,\n CommitStrategy,\n RealtimeEvents,\n} from \"@elevenlabs/client\";\nexport type { RealtimeConnection } from \"@elevenlabs/client\";\n"],"names":["parseLocation","location","console","warn","getOriginForLocation","us","global","getLivekitUrlForLocation","props","micMuted","volume","serverLocation","defaultOptions","_objectWithoutPropertiesLoose","_excluded","conversationRef","useRef","lockRef","shouldEndRef","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","then","conv","endSession","startSession","options","_conversationRef$curr4","_exit","_temp4","_result","origin","resolvedServerLocation","calculatedLivekitUrl","Conversation","_extends","livekitUrl","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","onAgentToolRequest","onAgentToolResponse","onConversationMetadata","onMCPToolCall","onMCPConnectionStatus","onAsrInitiationMetadata","onAgentChatResponsePart","onAudioAlignment","onModeChange","_ref","_ref2","onStatusChange","_ref3","_ref4","onCanSendFeedbackChange","_ref5","_ref6","Promise","resolve","_lockRef$current","_temp2","_result3","getId","_temp","Error","_finallyRethrows","_wasThrown","_result2","isOpen","_temp3","conversation","_conversation$getId","e","reject","pendingConnection","_temp5","_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","_temp7","_exit3","_result4","_temp6","_await$conversationRe","changeOutputDevice","_exit4","_temp9","_result5","_temp8","_await$conversationRe2","isSpeaking","onSessionStarted","onPartialTranscript","onCommittedTranscript","onCommittedTranscriptWithTimestamps","onAuthError","onQuotaExceededError","onCommitThrottledError","onTranscriberError","onUnacceptedTermsError","onRateLimitedError","onInputError","onQueueOverflowError","onResourceExhaustedError","onSessionTimeLimitExceededError","onChunkSizeExceededError","onInsufficientAudioActivityError","defaultToken","token","defaultModelId","modelId","defaultBaseUri","baseUri","defaultCommitStrategy","commitStrategy","defaultVadSilenceThresholdSecs","vadSilenceThresholdSecs","defaultVadThreshold","vadThreshold","defaultMinSpeechDurationMs","minSpeechDurationMs","defaultMinSilenceDurationMs","minSilenceDurationMs","defaultLanguageCode","languageCode","defaultMicrophone","microphone","defaultAudioFormat","audioFormat","defaultSampleRate","sampleRate","_options$autoConnect","autoConnect","defaultIncludeTimestamps","includeTimestamps","connectionRef","partialTranscript","setPartialTranscript","committedTranscripts","setCommittedTranscripts","_useState4","error","setError","_connectionRef$curren","close","connect","useCallback","runtimeOptions","_runtimeOptions$inclu","connection","Scribe","on","RealtimeEvents","SESSION_STARTED","PARTIAL_TRANSCRIPT","data","message","COMMITTED_TRANSCRIPT","segment","id","Date","now","Math","random","timestamp","isFinal","prev","concat","COMMITTED_TRANSCRIPT_WITH_TIMESTAMPS","words","ERROR","err","AUTH_ERROR","QUOTA_EXCEEDED","COMMIT_THROTTLED","TRANSCRIBER_ERROR","UNACCEPTED_TERMS","RATE_LIMITED","INPUT_ERROR","QUEUE_OVERFLOW","RESOURCE_EXHAUSTED","SESSION_TIME_LIMIT_EXCEEDED","CHUNK_SIZE_EXCEEDED","INSUFFICIENT_AUDIO_ACTIVITY","OPEN","CLOSE","errorMessage","disconnect","_connectionRef$curren2","sendAudio","audioBase64","send","commit","clearTranscripts","getConnection","isConnected","isTranscribing"],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const PACKAGE_VERSION = "0.12.3";
1
+ export declare const PACKAGE_VERSION = "0.13.0";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevenlabs/react",
3
- "version": "0.12.3",
3
+ "version": "0.13.0",
4
4
  "description": "ElevenLabs React Library",
5
5
  "main": "./dist/lib.umd.js",
6
6
  "module": "./dist/lib.module.js",
@@ -19,7 +19,7 @@
19
19
  "author": "ElevenLabs",
20
20
  "license": "MIT",
21
21
  "dependencies": {
22
- "@elevenlabs/client": "0.12.2"
22
+ "@elevenlabs/client": "0.13.0"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": ">=16.8.0"