@elevenlabs/react 0.11.3 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +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 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 [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const 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 // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n","// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.11.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} from \"@elevenlabs/client\";\n\n// ============= Types =============\n\nexport type ScribeStatus =\n | \"disconnected\"\n | \"connecting\"\n | \"connected\"\n | \"transcribing\"\n | \"error\";\n\nexport interface TranscriptSegment {\n id: string;\n text: string;\n timestamp: number;\n isFinal: boolean;\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 timestamps?: { start: number; end: number }[];\n }) => void;\n onError?: (error: Error | Event) => void;\n onAuthError?: (data: { error: string }) => void;\n onQuotaExceededError?: (data: { error: string }) => void;\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 }\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 onConnect,\n onDisconnect,\n onQuotaExceededError,\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 } = 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 // Determine if timestamps should be included based on whether the callback was provided\n // We do this instead of providing includeTimestamps as we can assume that if the callback is provided, the user wants timestamps\n const includeTimestamps = !!(\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 };\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.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 onSessionStarted,\n onPartialTranscript,\n onCommittedTranscript,\n onCommittedTranscriptWithTimestamps,\n onError,\n onAuthError,\n onConnect,\n onDisconnect,\n onQuotaExceededError,\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 }\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","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","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","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking","onSessionStarted","onPartialTranscript","onCommittedTranscript","onCommittedTranscriptWithTimestamps","onAuthError","onQuotaExceededError","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","connectionRef","partialTranscript","setPartialTranscript","committedTranscripts","setCommittedTranscripts","_useState4","error","setError","_connectionRef$curren","close","connect","useCallback","runtimeOptions","connection","includeTimestamps","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","ERROR","err","AUTH_ERROR","QUOTA_EXCEEDED","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 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 [status, setStatus] = useState<Status>(\"disconnected\");\n const [canSendFeedback, setCanSendFeedback] = useState(false);\n const [mode, setMode] = useState<Mode>(\"listening\");\n\n const micMutedRef = useRef<boolean | undefined>(micMuted);\n const volumeRef = useRef<number | undefined>(volume);\n\n micMutedRef.current = micMuted;\n volumeRef.current = volume;\n\n useEffect(() => {\n if (micMuted !== undefined) {\n conversationRef?.current?.setMicMuted(micMuted);\n }\n }, [micMuted]);\n\n useEffect(() => {\n if (volume !== undefined) {\n conversationRef?.current?.setVolume({ volume });\n }\n }, [volume]);\n\n useEffect(() => {\n return () => {\n conversationRef.current?.endSession();\n };\n }, []);\n\n return {\n startSession: (async (options?: HookOptions) => {\n if (conversationRef.current?.isOpen()) {\n return conversationRef.current.getId();\n }\n\n if (lockRef.current) {\n const conversation = await lockRef.current;\n return conversation.getId();\n }\n\n try {\n const resolvedServerLocation = parseLocation(\n options?.serverLocation || serverLocation\n );\n const origin = getOriginForLocation(resolvedServerLocation);\n const 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 // Persist controlled state between sessions using refs to get current values\n if (micMutedRef.current !== undefined) {\n conversationRef.current.setMicMuted(micMutedRef.current);\n }\n if (volumeRef.current !== undefined) {\n conversationRef.current.setVolume({ volume: volumeRef.current });\n }\n\n return conversationRef.current.getId();\n } finally {\n lockRef.current = null;\n }\n }) as T extends SessionConfig\n ? (options?: HookOptions) => Promise<string>\n : (options: SessionConfig & HookOptions) => Promise<string>,\n endSession: async () => {\n const conversation = conversationRef.current;\n conversationRef.current = null;\n await conversation?.endSession();\n },\n setVolume: ({ volume }: { volume: number }) => {\n conversationRef.current?.setVolume({ volume });\n },\n getInputByteFrequencyData: () => {\n return conversationRef.current?.getInputByteFrequencyData();\n },\n getOutputByteFrequencyData: () => {\n return conversationRef.current?.getOutputByteFrequencyData();\n },\n getInputVolume: () => {\n return conversationRef.current?.getInputVolume() ?? 0;\n },\n getOutputVolume: () => {\n return conversationRef.current?.getOutputVolume() ?? 0;\n },\n sendFeedback: (like: boolean) => {\n conversationRef.current?.sendFeedback(like);\n },\n getId: () => {\n return conversationRef.current?.getId();\n },\n sendContextualUpdate: (text: string) => {\n conversationRef.current?.sendContextualUpdate(text);\n },\n sendUserMessage: (text: string) => {\n conversationRef.current?.sendUserMessage(text);\n },\n sendUserActivity: () => {\n conversationRef.current?.sendUserActivity();\n },\n sendMCPToolApprovalResult: (toolCallId: string, isApproved: boolean) => {\n conversationRef.current?.sendMCPToolApprovalResult(\n toolCallId,\n isApproved\n );\n },\n changeInputDevice: async (\n config: DeviceFormatConfig & DeviceInputConfig\n ) => {\n if (\n conversationRef.current &&\n \"changeInputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeInputDevice: (config: any) => Promise<any>;\n }\n ).changeInputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n changeOutputDevice: async (config: DeviceFormatConfig) => {\n if (\n conversationRef.current &&\n \"changeOutputDevice\" in conversationRef.current\n ) {\n return await (\n conversationRef.current as unknown as {\n changeOutputDevice: (config: any) => Promise<any>;\n }\n ).changeOutputDevice(config);\n }\n throw new Error(\n \"Device switching is only available for voice conversations\"\n );\n },\n status,\n canSendFeedback,\n micMuted,\n isSpeaking: mode === \"speaking\",\n };\n}\n\n// const con = useConversation({agentId: \"\"})\n","// This file is auto-generated during build\nexport const PACKAGE_VERSION = \"0.12.1\";\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","_useState","useState","status","setStatus","_useState2","canSendFeedback","setCanSendFeedback","_useState3","mode","setMode","micMutedRef","volumeRef","current","useEffect","_conversationRef$curr","undefined","setMicMuted","_conversationRef$curr2","setVolume","_conversationRef$curr3","endSession","startSession","options","_conversationRef$curr4","_exit","_temp2","_result","origin","resolvedServerLocation","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","then","_lockRef$current","getId","_finallyRethrows","_wasThrown","_result2","isOpen","_temp","conversation","_conversation$getId","e","reject","_ref7","_conversationRef$curr5","getInputByteFrequencyData","_conversationRef$curr6","getOutputByteFrequencyData","_conversationRef$curr7","getInputVolume","_conversationRef$curr8","_conversationRef$curr9","getOutputVolume","_conversationRef$curr0","_conversationRef$curr1","sendFeedback","like","_conversationRef$curr10","_conversationRef$curr11","sendContextualUpdate","text","_conversationRef$curr12","sendUserMessage","_conversationRef$curr13","sendUserActivity","_conversationRef$curr14","sendMCPToolApprovalResult","toolCallId","isApproved","_conversationRef$curr15","changeInputDevice","config","_exit2","_temp4","_result3","Error","_temp3","_await$conversationRe","changeOutputDevice","_exit3","_temp6","_result4","_temp5","_await$conversationRe2","isSpeaking","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/scribe.d.ts CHANGED
@@ -1,10 +1,23 @@
1
1
  import type { RealtimeConnection, AudioFormat, CommitStrategy } from "@elevenlabs/client";
2
2
  export type ScribeStatus = "disconnected" | "connecting" | "connected" | "transcribing" | "error";
3
+ export interface WordTimestamp {
4
+ text?: string;
5
+ /** Start time in seconds */
6
+ start?: number;
7
+ /** End time in seconds */
8
+ end?: number;
9
+ type?: "word" | "spacing";
10
+ speaker_id?: string;
11
+ logprob?: number;
12
+ characters?: string[];
13
+ }
3
14
  export interface TranscriptSegment {
4
15
  id: string;
5
16
  text: string;
6
17
  timestamp: number;
7
18
  isFinal: boolean;
19
+ /** Word-level timestamps (only present when includeTimestamps is enabled) */
20
+ words?: WordTimestamp[];
8
21
  }
9
22
  export interface ScribeCallbacks {
10
23
  onSessionStarted?: () => void;
@@ -16,11 +29,9 @@ export interface ScribeCallbacks {
16
29
  }) => void;
17
30
  onCommittedTranscriptWithTimestamps?: (data: {
18
31
  text: string;
19
- timestamps?: {
20
- start: number;
21
- end: number;
22
- }[];
32
+ words?: WordTimestamp[];
23
33
  }) => void;
34
+ /** Called for any error (also called when specific error callbacks fire) */
24
35
  onError?: (error: Error | Event) => void;
25
36
  onAuthError?: (data: {
26
37
  error: string;
@@ -28,6 +39,36 @@ export interface ScribeCallbacks {
28
39
  onQuotaExceededError?: (data: {
29
40
  error: string;
30
41
  }) => void;
42
+ onCommitThrottledError?: (data: {
43
+ error: string;
44
+ }) => void;
45
+ onTranscriberError?: (data: {
46
+ error: string;
47
+ }) => void;
48
+ onUnacceptedTermsError?: (data: {
49
+ error: string;
50
+ }) => void;
51
+ onRateLimitedError?: (data: {
52
+ error: string;
53
+ }) => void;
54
+ onInputError?: (data: {
55
+ error: string;
56
+ }) => void;
57
+ onQueueOverflowError?: (data: {
58
+ error: string;
59
+ }) => void;
60
+ onResourceExhaustedError?: (data: {
61
+ error: string;
62
+ }) => void;
63
+ onSessionTimeLimitExceededError?: (data: {
64
+ error: string;
65
+ }) => void;
66
+ onChunkSizeExceededError?: (data: {
67
+ error: string;
68
+ }) => void;
69
+ onInsufficientAudioActivityError?: (data: {
70
+ error: string;
71
+ }) => void;
31
72
  onConnect?: () => void;
32
73
  onDisconnect?: () => void;
33
74
  }
@@ -65,6 +106,7 @@ export interface UseScribeReturn {
65
106
  sendAudio: (audioBase64: string, options?: {
66
107
  commit?: boolean;
67
108
  sampleRate?: number;
109
+ previousText?: string;
68
110
  }) => void;
69
111
  commit: () => void;
70
112
  clearTranscripts: () => void;
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const PACKAGE_VERSION = "0.11.3";
1
+ export declare const PACKAGE_VERSION = "0.12.1";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevenlabs/react",
3
- "version": "0.11.3",
3
+ "version": "0.12.1",
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.11.3"
22
+ "@elevenlabs/client": "0.12.0"
23
23
  },
24
24
  "peerDependencies": {
25
25
  "react": ">=16.8.0"