@convai/web-sdk 1.7.0-beta.1 → 1.7.0-beta.2

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.
Files changed (69) hide show
  1. package/dist/core/AudioManager.js.map +1 -1
  2. package/dist/core/BlendshapeQueue.js.map +1 -1
  3. package/dist/core/ConnectionStateHandler.js.map +1 -1
  4. package/dist/core/ConvaiClient.js.map +1 -1
  5. package/dist/core/EventEmitter.js.map +1 -1
  6. package/dist/core/MemoryManager.js.map +1 -1
  7. package/dist/core/MessageHandler.js.map +1 -1
  8. package/dist/core/ScreenShareManager.js.map +1 -1
  9. package/dist/core/VideoManager.js.map +1 -1
  10. package/dist/core/connectRequest.js.map +1 -1
  11. package/dist/core/contextUpdateRequest.js.map +1 -1
  12. package/dist/core/index.js.map +1 -1
  13. package/dist/core/types.js.map +1 -1
  14. package/dist/core/videoSourceState.js.map +1 -1
  15. package/dist/core/visionRequest.js.map +1 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/lipsync-helpers/arkitOrder61.js.map +1 -1
  18. package/dist/lipsync-helpers/createBlendshapeQueue.js.map +1 -1
  19. package/dist/lipsync-helpers/declarativeMapping.js.map +1 -1
  20. package/dist/lipsync-helpers/index.js.map +1 -1
  21. package/dist/lipsync-helpers/mappingTypes.js.map +1 -1
  22. package/dist/lipsync-helpers/metahumanOrder251.js.map +1 -1
  23. package/dist/lipsync-helpers/mhaLimitDrivers.js.map +1 -1
  24. package/dist/lipsync-helpers/naturalness/processor.js.map +1 -1
  25. package/dist/lipsync-helpers/naturalness/profiles/mha.js.map +1 -1
  26. package/dist/lipsync-helpers/naturalness/types.js.map +1 -1
  27. package/dist/lipsync-helpers/presetMappers.js.map +1 -1
  28. package/dist/react/components/ConvaiWidget.js.map +1 -1
  29. package/dist/react/components/index.js.map +1 -1
  30. package/dist/react/components/rtc-widget/components/AudioSettingsPanel.js.map +1 -1
  31. package/dist/react/components/rtc-widget/components/AudioVisualizer.js.map +1 -1
  32. package/dist/react/components/rtc-widget/components/ConviMessage.js.map +1 -1
  33. package/dist/react/components/rtc-widget/components/FloatingVideo.js.map +1 -1
  34. package/dist/react/components/rtc-widget/components/MarkdownRenderer.js.map +1 -1
  35. package/dist/react/components/rtc-widget/components/MessageBubble.js.map +1 -1
  36. package/dist/react/components/rtc-widget/components/MessageList.js.map +1 -1
  37. package/dist/react/components/rtc-widget/components/UserMessage.js.map +1 -1
  38. package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.js.map +1 -1
  39. package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.js.map +1 -1
  40. package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.js.map +1 -1
  41. package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.js.map +1 -1
  42. package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js.map +1 -1
  43. package/dist/react/components/rtc-widget/components/conviComponents/index.js.map +1 -1
  44. package/dist/react/components/rtc-widget/components/index.js.map +1 -1
  45. package/dist/react/components/rtc-widget/index.js.map +1 -1
  46. package/dist/react/components/rtc-widget/styles/framerConfig.js.map +1 -1
  47. package/dist/react/components/rtc-widget/styles/icons.js.map +1 -1
  48. package/dist/react/components/rtc-widget/styles/index.js.map +1 -1
  49. package/dist/react/components/rtc-widget/styles/styledComponents.js.map +1 -1
  50. package/dist/react/components/rtc-widget/styles/theme.js.map +1 -1
  51. package/dist/react/components/rtc-widget/types/index.js.map +1 -1
  52. package/dist/react/hooks/index.js.map +1 -1
  53. package/dist/react/hooks/useCharacterInfo.js.map +1 -1
  54. package/dist/react/hooks/useConvaiClient.js.map +1 -1
  55. package/dist/react/hooks/useLocalCameraTrack.js.map +1 -1
  56. package/dist/react/index.js.map +1 -1
  57. package/dist/utils/logger.js.map +1 -1
  58. package/dist/vanilla/AudioRenderer.js.map +1 -1
  59. package/dist/vanilla/ConvaiWidget.js.map +1 -1
  60. package/dist/vanilla/WebSocketSession.js.map +1 -1
  61. package/dist/vanilla/icons.js.map +1 -1
  62. package/dist/vanilla/index.js.map +1 -1
  63. package/dist/vanilla/styles.js.map +1 -1
  64. package/dist/vanilla/types.js.map +1 -1
  65. package/dist/vanilla/websocket.js.map +1 -1
  66. package/dist/version.d.ts +1 -1
  67. package/dist/version.js +1 -1
  68. package/dist/version.js.map +1 -1
  69. package/package.json +9 -3
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../src/core/MemoryManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryManager.js","sourceRoot":"","sources":["../../src/core/MemoryManager.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Convai Memory Manager\n * \n * Manages long-term memories for characters using the Convai Memory API.\n * All memory operations are scoped to a (character_id, end_user_id) pair.\n * \n * @example\n * ```typescript\n * const memoryManager = new MemoryManager(apiKey, characterId, endUserId);\n * \n * // Add memories\n * const result = await memoryManager.addMemories([\n * \"User prefers outdoor activities\",\n * \"User is allergic to peanuts\"\n * ]);\n * \n * // List memories\n * const memories = await memoryManager.listMemories({ page: 1, pageSize: 50 });\n * \n * // Get a specific memory\n * const memory = await memoryManager.getMemory(memoryId);\n * \n * // Delete a memory\n * await memoryManager.deleteMemory(memoryId);\n * \n * // Delete all memories\n * await memoryManager.deleteAllMemories();\n * ```\n */\n\nimport {\n MemoryAddRequest,\n MemoryAddResponse,\n MemoryListRequest,\n MemoryListResponse,\n MemoryGetRequest,\n MemoryGetResponse,\n MemoryDeleteRequest,\n MemoryDeleteResponse,\n MemoryDeleteAllRequest,\n MemoryDeleteAllResponse,\n MemoryError,\n} from './types';\n\n/**\n * MemoryManager class for handling Convai Memory API operations.\n * Provides methods to add, list, get, and delete memories for a character.\n */\nexport class MemoryManager {\n private apiKey: string | null;\n private authToken: string | null;\n private characterId: string;\n private endUserId: string;\n private baseUrl: string;\n\n /**\n * Create a new MemoryManager instance\n * \n * @param apiKeyOrAuthToken - Convai API key or auth token (required)\n * @param characterId - Character UUID (required)\n * @param endUserId - End user identifier (required)\n * @param baseUrl - Base URL for Convai API (default: https://api.convai.com)\n * @param useAuthToken - If true, treats first parameter as auth token instead of API key (default: false)\n */\n constructor(\n apiKeyOrAuthToken: string,\n characterId: string,\n endUserId: string,\n baseUrl: string = 'https://api.convai.com',\n useAuthToken: boolean = false\n ) {\n if (!apiKeyOrAuthToken) {\n throw new Error('API key or auth token is required');\n }\n if (!characterId) {\n throw new Error('Character ID is required');\n }\n if (!endUserId) {\n throw new Error('End user ID is required');\n }\n\n // Set either apiKey or authToken based on the flag\n if (useAuthToken) {\n this.apiKey = null;\n this.authToken = apiKeyOrAuthToken;\n } else {\n this.apiKey = apiKeyOrAuthToken;\n this.authToken = null;\n }\n \n this.characterId = characterId;\n this.endUserId = endUserId;\n this.baseUrl = baseUrl.replace(/\\/$/, ''); // Remove trailing slash\n }\n\n /**\n * Make an authenticated request to the Convai Memory API\n */\n private async makeRequest<T>(\n endpoint: string,\n body: unknown\n ): Promise<T> {\n const url = `${this.baseUrl}${endpoint}`;\n\n try {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n };\n\n // Set authentication header based on what's available\n if (this.authToken) {\n headers['API-AUTH-TOKEN'] = this.authToken;\n } else if (this.apiKey) {\n headers['CONVAI-API-KEY'] = this.apiKey;\n }\n\n const response = await fetch(url, {\n method: 'POST',\n headers,\n body: JSON.stringify(body),\n });\n\n const data = await response.json();\n\n if (!response.ok) {\n const error = data as MemoryError;\n throw new Error(\n error.ERROR || `HTTP error! status: ${response.status}`\n );\n }\n\n return data as T;\n } catch (error) {\n if (error instanceof Error) {\n throw error;\n }\n throw new Error('Unknown error occurred');\n }\n }\n\n /**\n * Add one or more memory strings\n * \n * @param memories - Array of memory strings to add (required, non-empty)\n * @returns Promise resolving to the add response with memory IDs\n * \n * @example\n * ```typescript\n * const result = await memoryManager.addMemories([\n * \"User prefers outdoor activities\",\n * \"User is allergic to peanuts\"\n * ]);\n * \n * result.memories.forEach(memory => {\n * console.log(`Added memory ${memory.id}: ${memory.memory}`);\n * });\n * ```\n */\n async addMemories(memories: string[]): Promise<MemoryAddResponse> {\n if (!memories || memories.length === 0) {\n throw new Error('Memories array is required and must not be empty');\n }\n\n const request: MemoryAddRequest = {\n character_id: this.characterId,\n end_user_id: this.endUserId,\n memories,\n };\n\n return this.makeRequest<MemoryAddResponse>('/memory/add', request);\n }\n\n /**\n * List memories with pagination\n * \n * @param options - Pagination options\n * @param options.page - Page number (default: 1, clamped to 1-1000)\n * @param options.pageSize - Number of memories per page (default: 50, clamped to 1-100)\n * @returns Promise resolving to paginated list of memories\n * \n * @example\n * ```typescript\n * // Get first page\n * const firstPage = await memoryManager.listMemories({ page: 1, pageSize: 50 });\n * \n * console.log(`Total memories: ${firstPage.total_count}`);\n * console.log(`Has more: ${firstPage.has_more}`);\n * \n * firstPage.memories.forEach(memory => {\n * console.log(`${memory.id}: ${memory.memory}`);\n * });\n * \n * // Get next page if available\n * if (firstPage.has_more) {\n * const nextPage = await memoryManager.listMemories({ page: 2, pageSize: 50 });\n * }\n * ```\n */\n async listMemories(\n options: { page?: number; pageSize?: number } = {}\n ): Promise<MemoryListResponse> {\n const request: MemoryListRequest = {\n character_id: this.characterId,\n end_user_id: this.endUserId,\n page: options.page,\n page_size: options.pageSize,\n };\n\n return this.makeRequest<MemoryListResponse>('/memory/list', request);\n }\n\n /**\n * Fetch a single memory by ID\n * \n * @param memoryId - Memory UUID to fetch\n * @returns Promise resolving to the memory details\n * \n * @example\n * ```typescript\n * const memory = await memoryManager.getMemory('f4cbdb08-7062-4f3e-8eb2-9f5c80dfe64c');\n * \n * console.log(`Memory: ${memory.memory}`);\n * console.log(`Created: ${memory.created_at}`);\n * console.log(`Updated: ${memory.updated_at}`);\n * ```\n */\n async getMemory(memoryId: string): Promise<MemoryGetResponse> {\n if (!memoryId) {\n throw new Error('Memory ID is required');\n }\n\n const request: MemoryGetRequest = {\n character_id: this.characterId,\n end_user_id: this.endUserId,\n memory_id: memoryId,\n };\n\n return this.makeRequest<MemoryGetResponse>('/memory/get', request);\n }\n\n /**\n * Delete a single memory by ID\n * \n * @param memoryId - Memory UUID to delete\n * @returns Promise resolving to the deletion confirmation\n * \n * @example\n * ```typescript\n * const result = await memoryManager.deleteMemory('f4cbdb08-7062-4f3e-8eb2-9f5c80dfe64c');\n * \n * if (result.deleted) {\n * console.log('Memory deleted successfully');\n * }\n * ```\n */\n async deleteMemory(memoryId: string): Promise<MemoryDeleteResponse> {\n if (!memoryId) {\n throw new Error('Memory ID is required');\n }\n\n const request: MemoryDeleteRequest = {\n character_id: this.characterId,\n end_user_id: this.endUserId,\n memory_id: memoryId,\n };\n\n return this.makeRequest<MemoryDeleteResponse>('/memory/delete', request);\n }\n\n /**\n * Delete all memories for the (character_id, end_user_id) pair\n * \n * This operation is asynchronous on the server side.\n * Check listMemories() after a short delay if confirmation is needed.\n * \n * @returns Promise resolving to the deletion status message\n * \n * @example\n * ```typescript\n * const result = await memoryManager.deleteAllMemories();\n * console.log(result.message); // \"Memory deletion in progress...\"\n * \n * // Optional: Wait and verify\n * await new Promise(resolve => setTimeout(resolve, 2000));\n * const remaining = await memoryManager.listMemories();\n * console.log(`Remaining memories: ${remaining.total_count}`);\n * ```\n */\n async deleteAllMemories(): Promise<MemoryDeleteAllResponse> {\n const request: MemoryDeleteAllRequest = {\n character_id: this.characterId,\n end_user_id: this.endUserId,\n };\n\n return this.makeRequest<MemoryDeleteAllResponse>('/memory/delete-all', request);\n }\n\n /**\n * Update the end user ID for this memory manager instance\n * Useful when switching users in the same session\n * \n * @param endUserId - New end user identifier\n */\n setEndUserId(endUserId: string): void {\n if (!endUserId) {\n throw new Error('End user ID is required');\n }\n this.endUserId = endUserId;\n }\n\n /**\n * Get the current end user ID\n */\n getEndUserId(): string {\n return this.endUserId;\n }\n\n /**\n * Update the character ID for this memory manager instance\n * Useful when switching characters in the same session\n * \n * @param characterId - New character UUID\n */\n setCharacterId(characterId: string): void {\n if (!characterId) {\n throw new Error('Character ID is required');\n }\n this.characterId = characterId;\n }\n\n /**\n * Get the current character ID\n */\n getCharacterId(): string {\n return this.characterId;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../../src/core/MessageHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MessageHandler.js","sourceRoot":"","sources":["../../src/core/MessageHandler.ts"],"names":[],"mappings":"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","sourcesContent":["import { Room, RoomEvent } from \"livekit-client\";\nimport { ChatMessage, ConvaiAction, InteractionCreated, ServerResponse } from \"./types\";\nimport { EventEmitter } from \"./EventEmitter\";\nimport {\n BlendshapeQueue,\n type BlendshapeChunkMetadata,\n} from \"./BlendshapeQueue\";\n\ntype LifecycleOwnerPayload = {\n response_id?: string;\n neurosync_turn_id?: number;\n turn_id?: number;\n epoch?: number;\n};\n\n/**\n * Handles incoming messages from Convai\n * Processes various message types from the AI assistant and updates chat history\n */\nexport class MessageHandler extends EventEmitter {\n private room: Room | null = null;\n private chatMessages: ChatMessage[] = [];\n private userTranscription: string = \"\";\n private logRtviMessages: boolean = true;\n private isBotResponding: boolean = false;\n private isSpeaking: boolean = false;\n private isListening: boolean = false;\n private totalBlendshapesReceived: number = 0;\n private blendshapeQueue: BlendshapeQueue;\n private _currentEmotion: { emotion: string; scale?: number } | null = null;\n // bot-output segments already added to the chat. The server re-sends the\n // same segment (full text) as TTS progress advances (spoken_status\n // in-progress → completed); only the first sighting may touch the chat.\n private seenBotOutputSegments = new Set<number | string>();\n\n // Fix 4: store a single bound reference so setupListeners/cleanupListeners use the\n // exact same function object. Previously .bind(this) in each call created a new\n // reference every time, making room.off() a no-op and leaking listeners on reconnect.\n private readonly _boundHandleDataReceived: (\n payload: Uint8Array,\n participant: unknown,\n ) => void;\n\n constructor(room?: Room) {\n super();\n this._boundHandleDataReceived = this.handleDataReceived.bind(this);\n this.blendshapeQueue = new BlendshapeQueue();\n if (room) {\n this.setRoom(room);\n }\n }\n\n /**\n * Get the blendshape queue instance\n */\n getBlendshapeQueue(): BlendshapeQueue {\n return this.blendshapeQueue;\n }\n\n /**\n * Enable or disable console logging for decoded incoming RTVI messages.\n */\n setRtviMessageLogging(enabled: boolean): void {\n this.logRtviMessages = enabled;\n }\n\n /**\n * Get current chat messages\n */\n getChatMessages(): ChatMessage[] {\n return this.chatMessages;\n }\n\n /**\n * Get current user transcription\n */\n getUserTranscription(): string {\n return this.userTranscription;\n }\n\n /**\n * Get bot responding state\n */\n getIsBotResponding(): boolean {\n return this.isBotResponding;\n }\n\n /**\n * Get speaking state\n */\n getIsSpeaking(): boolean {\n return this.isSpeaking;\n }\n\n /**\n * Get current bot emotion (updated from bot-emotion messages)\n */\n getEmotion(): { emotion: string; scale?: number } | null {\n return this._currentEmotion;\n }\n\n /**\n * Get whether the user is currently speaking (bot is in \"listening\" state).\n * True from user-started-speaking until user-stopped-speaking.\n */\n getIsListening(): boolean {\n return this.isListening;\n }\n\n /**\n * Local interruption path used by the client before the server cancel/terminal\n * arrives. Keep MessageHandler state and BlendshapeQueue state in sync so the\n * next bot-started-speaking can activate cleanly.\n */\n interruptLipsyncPlayback(): void {\n const wasSpeaking = this.isSpeaking;\n this.isSpeaking = false;\n this.blendshapeQueue.interrupt();\n if (wasSpeaking) {\n this.emit(\"speakingChange\", false);\n }\n }\n\n /**\n * Set the LiveKit room instance\n */\n setRoom(room: Room): void {\n // Clean up previous room listeners\n if (this.room) {\n this.cleanupListeners();\n }\n\n this.room = room;\n this.setupListeners();\n }\n\n /**\n * Setup message listeners\n */\n private setupListeners(): void {\n if (!this.room) return;\n\n this.room.on(RoomEvent.DataReceived, this._boundHandleDataReceived);\n }\n\n /**\n * Clean up message listeners\n */\n private cleanupListeners(): void {\n if (!this.room) return;\n\n this.room.off(RoomEvent.DataReceived, this._boundHandleDataReceived);\n }\n\n /**\n * Handle incoming data message\n */\n private handleDataReceived(\n payload: Uint8Array,\n _participant: unknown,\n _transport: \"livekit\" | \"websocket\" = \"livekit\",\n ): void {\n let messageString = \"\";\n let parsed = false;\n\n try {\n // Decode bytes to string\n const decoder = new TextDecoder();\n messageString = decoder.decode(payload);\n\n // Parse JSON\n const messageData = JSON.parse(messageString);\n parsed = true;\n\n // Extract and categorize messages for chat display\n const timestamp = new Date().toISOString();\n const messageId = `${messageData.type}-${Date.now()}-${Math.random()}`;\n\n // Handle different message types\n switch (messageData.type) {\n // User text messages - Skip these, only allow user-transcription\n case \"user_text_message\":\n case \"user-llm-text\":\n case \"text-input\":\n case \"user-input\":\n case \"text-message\":\n case \"chat-message\":\n case \"input-text\":\n case \"message\":\n // Skip user text messages - only allow user-transcription\n break;\n\n // Bot Ready - Bot is ready, connection should be true\n case \"bot-ready\":\n this.emit(\"botReady\");\n break;\n\n // Bot LLM Started - Begin streaming response\n case \"bot-llm-started\":\n this.isBotResponding = true;\n this.emit(\"botRespondingChange\", true);\n this.seenBotOutputSegments.clear();\n\n // Add initial streaming message to chat\n const streamingMessage: ChatMessage = {\n id: messageId,\n type: \"bot-llm-text\",\n content: \"\",\n timestamp: timestamp,\n isStreaming: true,\n };\n this.chatMessages.push(streamingMessage);\n this.emit(\"messagesChange\", this.chatMessages);\n break;\n\n // Bot Output - Aggregated output stream (sentence/word-level, replaces bot-transcript)\n // Payload: { text, spoken, aggregated_by, segment_id, spoken_status,\n // spoken_progress }. The same segment_id is re-sent with the FULL\n // segment text on every TTS progress tick (spoken_status\n // \"in-progress\" → \"completed\"), so appending per event repeats the\n // sentence once per tick.\n case \"bot-output\":\n if (messageData.data?.text) {\n const newText = messageData.data.text;\n const segmentId = messageData.data.segment_id as\n | number\n | string\n | undefined;\n this.emit(\"botOutput\", {\n text: newText,\n spoken: messageData.data.spoken ?? false,\n aggregatedBy: messageData.data.aggregated_by ?? \"sentence\",\n segmentId,\n spokenStatus: messageData.data.spoken_status,\n });\n\n // Progress re-send of a segment already in the chat — skip.\n if (segmentId !== undefined) {\n if (this.seenBotOutputSegments.has(segmentId)) break;\n this.seenBotOutputSegments.add(segmentId);\n }\n\n const lastMsg = this.chatMessages[this.chatMessages.length - 1];\n // When the reply is rendered by the LLM text stream\n // (bot-llm-text), the TTS echo adds nothing — never mix\n // bot-output into an LLM bubble (streaming or complete).\n if (lastMsg?.type === \"bot-llm-text\") break;\n if (\n lastMsg?.type === \"bot-output\" &&\n lastMsg.content.includes(newText)\n ) {\n break;\n }\n if (lastMsg?.type === \"bot-output\" && lastMsg.isStreaming) {\n this.chatMessages[this.chatMessages.length - 1] = {\n ...lastMsg,\n content: lastMsg.content + newText,\n };\n } else {\n this.chatMessages.push({\n id: `bot-output-${Date.now()}-${Math.random()}`,\n type: \"bot-output\",\n content: newText,\n timestamp: new Date().toISOString(),\n isStreaming: true,\n });\n }\n this.emit(\"messagesChange\", this.chatMessages);\n }\n break;\n\n // Bot LLM Text Messages - Streaming chunks\n case \"bot-llm-text\":\n if (messageData.data?.text) {\n const newChunk = messageData.data.text;\n\n // Update the streaming message in chat\n const lastMessage = this.chatMessages[this.chatMessages.length - 1];\n if (lastMessage && lastMessage.isStreaming) {\n this.chatMessages[this.chatMessages.length - 1] = {\n ...lastMessage,\n content: lastMessage.content + newChunk,\n };\n } else {\n // If no streaming message exists yet, create one\n const streamingMsg: ChatMessage = {\n id: `${messageData.type}-${Date.now()}-${Math.random()}`,\n type: \"bot-llm-text\",\n content: newChunk,\n timestamp: new Date().toISOString(),\n isStreaming: true,\n };\n this.chatMessages.push(streamingMsg);\n }\n this.emit(\"messagesChange\", this.chatMessages);\n }\n break;\n\n // Bot LLM Stopped - Complete streaming response\n case \"bot-llm-stopped\":\n const lastBotMsg = this.chatMessages[this.chatMessages.length - 1];\n if (lastBotMsg && lastBotMsg.isStreaming) {\n this.chatMessages[this.chatMessages.length - 1] = {\n ...lastBotMsg,\n isStreaming: false,\n };\n }\n\n // Clear streaming state\n this.isBotResponding = false;\n this.emit(\"botRespondingChange\", false);\n this.emit(\"messagesChange\", this.chatMessages);\n break;\n\n // User Transcription Messages\n case \"user-transcription\":\n if (messageData.data?.text) {\n const messageContent = messageData.data.text;\n\n if (messageData.data?.final) {\n // Final transcription - accumulate in single bubble until bot responds\n const lastUserMsg =\n this.chatMessages[this.chatMessages.length - 1];\n\n // Check if last message is an accumulating user message (isStreaming=true)\n if (\n lastUserMsg &&\n lastUserMsg.type === \"user-transcription\" &&\n lastUserMsg.isStreaming === true\n ) {\n // Accumulate: append new content to existing message with space\n const accumulatedContent =\n lastUserMsg.content.trim() + \" \" + messageContent.trim();\n\n this.chatMessages[this.chatMessages.length - 1] = {\n ...lastUserMsg,\n content: accumulatedContent,\n timestamp: timestamp,\n };\n } else {\n // Start new accumulating message (isStreaming=true means \"still accumulating\")\n const userMessage: ChatMessage = {\n id: messageId,\n type: \"user-transcription\",\n content: messageContent,\n timestamp: timestamp,\n isStreaming: true,\n };\n this.chatMessages.push(userMessage);\n }\n this.emit(\"messagesChange\", this.chatMessages);\n\n // Clear live transcription when final\n this.userTranscription = \"\";\n this.emit(\"userTranscriptionChange\", \"\");\n } else {\n // Non-final transcription - show in input field\n this.userTranscription = messageContent;\n this.emit(\"userTranscriptionChange\", messageContent);\n }\n }\n break;\n\n // Bot Emotion Messages — LiveKit path: arrives as an RTVI message frame (messageData.data)\n case \"bot-emotion\":\n if (messageData.data?.emotion) {\n this._currentEmotion = {\n emotion: messageData.data.emotion,\n scale: messageData.data.scale,\n };\n console.log(\"[SDK bot-emotion]\", messageData.data);\n this.emit(\"emotionChange\", this._currentEmotion);\n const emotionMessage: ChatMessage = {\n id: messageId,\n type: \"bot-emotion\",\n content: `${messageData.data.emotion} (scale: ${messageData.data.scale || 1})`,\n timestamp,\n };\n this.chatMessages.push(emotionMessage);\n this.emit(\"messagesChange\", this.chatMessages);\n }\n break;\n // Bot TTS Text - Words as spoken by TTS (word-by-word for socket-based TTS)\n case \"bot-tts-text\":\n if (messageData.data?.text) {\n this.emit(\"botTtsText\", { text: messageData.data.text });\n }\n break;\n\n // Bot TTS lifecycle (more granular than bot-started/stopped-speaking)\n case \"bot-tts-started\":\n this.emit(\"botTtsStarted\");\n break;\n\n case \"bot-tts-stopped\":\n this.emit(\"botTtsStopped\");\n break;\n\n // Server-side muting indicators\n case \"user-mute-started\":\n this.emit(\"userMuteStarted\");\n break;\n\n case \"user-mute-stopped\":\n this.emit(\"userMuteStopped\");\n break;\n\n case \"user-started-speaking\":\n this.isListening = true;\n this.emit(\"listeningChange\", true);\n break;\n\n case \"user-stopped-speaking\":\n this.isListening = false;\n this.emit(\"listeningChange\", false);\n break;\n\n // Bot Started Speaking (priority over listening: state becomes speaking)\n case \"bot-started-speaking\": {\n const owner = this.lifecycleOwner(messageData.data);\n if (this.blendshapeQueue.isStaleOwner(owner)) {\n break;\n }\n const allowed = this.blendshapeQueue.startBotSpeaking();\n if (allowed) {\n this.isSpeaking = true;\n this.totalBlendshapesReceived = 0;\n this.emit(\"speakingChange\", true);\n }\n break;\n }\n\n // Bot Stopped Speaking\n case \"bot-stopped-speaking\":\n if (this.blendshapeQueue.isStaleOwner(this.lifecycleOwner(messageData.data))) {\n break;\n }\n if (this.isSpeaking) {\n this.isSpeaking = false;\n this.blendshapeQueue.stopBotSpeaking();\n this.emit(\"speakingChange\", false);\n }\n break;\n\n // Action Response Messages (LiveKit/WebRTC path)\n case \"action-response\":\n this._handleActionResponse(messageData.data?.actions ?? [], messageId, timestamp);\n break;\n\n case \"metrics\":\n if (messageData.data) {\n this.emit(\"metrics\", messageData.data);\n }\n break;\n // Behavior Tree Response Messages\n case \"behavior-tree-response\":\n if (messageData.data?.narrative_section_id) {\n const behaviorMessage: ChatMessage = {\n id: messageId,\n type: \"behavior-tree\",\n content: `Narrative Section: ${messageData.data.narrative_section_id}`,\n timestamp,\n };\n this.chatMessages.push(behaviorMessage);\n this.emit(\"messagesChange\", this.chatMessages);\n }\n break;\n\n // Server Message - Contains various data types like blendshapes\n case \"server-message\":\n if (messageData.data) {\n const serverData = messageData.data;\n\n switch (serverData.type) {\n case \"final-user-transcription\":\n if (serverData.text) {\n const finalText = serverData.text;\n const lastUserMsg =\n this.chatMessages[this.chatMessages.length - 1];\n if (\n lastUserMsg &&\n lastUserMsg.type === \"user-transcription\" &&\n lastUserMsg.isStreaming === true\n ) {\n this.chatMessages[this.chatMessages.length - 1] = {\n ...lastUserMsg,\n content: finalText,\n timestamp,\n isStreaming: false,\n };\n } else {\n this.chatMessages.push({\n id: `${serverData.type}-${Date.now()}-${Math.random()}`,\n type: \"user-transcription\",\n content: finalText,\n timestamp,\n isStreaming: false,\n });\n }\n this.emit(\"messagesChange\", this.chatMessages);\n this.userTranscription = \"\";\n this.emit(\"userTranscriptionChange\", \"\");\n }\n break;\n\n // WebSocket path: arrives inside a bot-text data message as serverData (not messageData.data)\n case \"bot-emotion\":\n if (serverData.emotion) {\n this._currentEmotion = {\n emotion: serverData.emotion,\n scale: serverData.scale,\n };\n console.log(\"[SDK bot-emotion (ws)]\", serverData);\n this.emit(\"emotionChange\", this._currentEmotion);\n }\n break;\n\n case \"blendshape-turn-stats\":\n if (this.blendshapeQueue.isStaleOwner(this.lifecycleOwner(serverData))) {\n break;\n }\n this.blendshapeQueue.endConversation(\n serverData.stats,\n this.lifecycleOwner(serverData),\n );\n this.emit(\"blendshapeStatsReceived\", serverData);\n break;\n\n case \"chunked-neurosync-blendshapes\":\n if (serverData.blendshapes) {\n const owner = this.lifecycleOwner(serverData);\n if (this.blendshapeQueue.isRetiredOwner(owner)) {\n break;\n }\n // If the queue is idle (no active conversation, bot not yet speaking),\n // start a conversation so early chunks from an initial bot greeting\n // are accepted rather than silently dropped.\n if (\n !this.blendshapeQueue.isConversationActive() &&\n !this.isSpeaking\n ) {\n this.blendshapeQueue.startConversation();\n }\n this.blendshapeQueue.addChunk(\n serverData.blendshapes,\n owner,\n );\n if (\n this.blendshapeQueue.consumeOwnerReplacementStoppedSpeaking() &&\n this.isSpeaking\n ) {\n this.isSpeaking = false;\n this.emit(\"speakingChange\", false);\n }\n this.totalBlendshapesReceived +=\n serverData.blendshapes.length;\n this.emit(\"blendshapes\", serverData);\n }\n break;\n\n case \"neurosync-blendshapes-cancel\": {\n const cancelledActive = this.blendshapeQueue.cancelOwner(\n this.lifecycleOwner(serverData),\n );\n if (cancelledActive && this.isSpeaking) {\n this.isSpeaking = false;\n this.emit(\"speakingChange\", false);\n }\n this.emit(\"blendshapeCancel\", serverData);\n break;\n }\n\n case \"user-idle-warning\": {\n const remainingSeconds: number | null =\n serverData.remaining_seconds ??\n serverData.remainingSeconds ??\n null;\n this.emit(\"idleWarning\", { remainingSeconds });\n this.chatMessages.push({\n id: `user-idle-warning-${Date.now()}-${Math.random()}`,\n type: \"idle-warning\",\n content:\n remainingSeconds !== null ? String(remainingSeconds) : \"\",\n timestamp,\n });\n this.emit(\"messagesChange\", this.chatMessages);\n break;\n }\n\n case \"llm-no-response\":\n this.emit(\"llmNoResponse\");\n this.chatMessages.push({\n id: `llm-no-response-${Date.now()}-${Math.random()}`,\n type: \"llm-no-response\",\n content: \"\",\n timestamp,\n });\n this.emit(\"messagesChange\", this.chatMessages);\n break;\n\n // Action Response (WebSocket/RTVI path — wrapped in server-message)\n case \"action-response\":\n this._handleActionResponse(serverData.actions ?? [], messageId, timestamp);\n break;\n\n // Server acknowledgment — arrives wrapped in server-message envelope\n case \"server-response\": {\n // client-ready is an internal RTVI handshake; server echoes an\n // \"Unknown message type\" error for it which is expected and harmless.\n if (serverData.event_type === \"client-ready\") break;\n const serverResponse: ServerResponse = {\n event_type: serverData.event_type ?? \"unknown\",\n status: serverData.status ?? \"error\",\n message: serverData.message ?? null,\n extras: serverData.extras ?? null,\n };\n this.emit(\"serverResponse\", serverResponse);\n break;\n }\n\n // interaction-created: session IDs for analytics/tracking\n case \"interaction-created\": {\n const interactionCreated: InteractionCreated = {\n interactionId: serverData.interaction_id,\n characterSessionId: serverData.character_session_id,\n };\n this.emit(\"interactionCreated\", interactionCreated);\n break;\n }\n }\n }\n break;\n\n // Fallback: server-response at top level (not currently observed but kept for safety)\n case \"server-response\": {\n if (messageData.event_type === \"client-ready\") break;\n const serverResponse: ServerResponse = {\n event_type: messageData.event_type ?? \"unknown\",\n status: messageData.status ?? \"error\",\n message: messageData.message ?? null,\n extras: messageData.extras ?? null,\n };\n this.emit(\"serverResponse\", serverResponse);\n break;\n }\n\n // Silently ignore other message types\n case \"moderation-response\":\n case \"trigger-message\":\n case \"update-template-keys\":\n case \"update-dynamic-info\":\n case \"interrupt-bot\":\n break;\n }\n } catch (error) {\n // Silently handle parse errors\n }\n }\n\n private _handleActionResponse(\n actions: ConvaiAction[],\n messageId: string,\n timestamp: string,\n ): void {\n this.emit(\"actionResponse\", { actions });\n const label = actions.length === 0\n ? \"No action\"\n : actions.map((a) => (a.target ? `${a.name} → ${a.target}` : a.name)).join(\", \");\n const actionMessage: ChatMessage = {\n id: messageId,\n type: \"action\",\n content: label,\n timestamp,\n };\n this.chatMessages.push(actionMessage);\n this.emit(\"messagesChange\", this.chatMessages);\n }\n\n private lifecycleOwner(\n data: LifecycleOwnerPayload | undefined,\n ): BlendshapeChunkMetadata {\n if (!data) {\n return {};\n }\n\n return {\n responseId: data.response_id,\n neurosyncTurnId: data.neurosync_turn_id ?? data.turn_id,\n epoch: data.epoch,\n fps: this.numberOrUndefined((data as { fps?: number }).fps),\n startFrameIndex: this.numberOrUndefined(\n (data as { start_frame_index?: number }).start_frame_index,\n ),\n };\n }\n\n private numberOrUndefined(value: unknown): number | undefined {\n return typeof value === \"number\" && Number.isFinite(value)\n ? value\n : undefined;\n }\n\n /**\n * Public entry point for WebSocket transport to inject messages into the same pipeline.\n */\n handleDataReceivedPublic(payload: Uint8Array): void {\n this.handleDataReceived(payload, null, \"websocket\");\n }\n\n /**\n * Reset message state\n */\n reset(): void {\n this.chatMessages = [];\n this.userTranscription = \"\";\n this.isBotResponding = false;\n this.isSpeaking = false;\n this.isListening = false;\n this.totalBlendshapesReceived = 0;\n this._currentEmotion = null;\n this.blendshapeQueue.reset();\n this.emit(\"messagesChange\", this.chatMessages);\n this.emit(\"userTranscriptionChange\", \"\");\n this.emit(\"botRespondingChange\", false);\n this.emit(\"speakingChange\", false);\n this.emit(\"listeningChange\", false);\n this.emit(\"emotionChange\", null);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ScreenShareManager.js","sourceRoot":"","sources":["../../src/core/ScreenShareManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScreenShareManager.js","sourceRoot":"","sources":["../../src/core/ScreenShareManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IAKlD,YAAY,IAAW;QACrB,KAAK,EAAE,CAAC;QALF,SAAI,GAAgB,IAAI,CAAC;QACzB,0BAAqB,GAAY,KAAK,CAAC;QACvC,yBAAoB,GAAY,KAAK,CAAC;QAI5C,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAU;QAChB,mCAAmC;QACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAEpD,MAAM,oBAAoB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,sBAAsB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,EAAE;YACtC,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAClC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,CAAC,KAAU,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACpC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC,CAAC;QAEF,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;QAC5D,gBAAgB,CAAC,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;QAChE,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACpD,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,oEAAoE;IACtE,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACrD,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACpD,IAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;QACnE,IAAI,CAAC,oBAAoB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC;IACpE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,gEAAgE;YAChE,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,EAAE;gBAC3D,mFAAmF;gBACnF,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;YACH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;YAClC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;QACjG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,EAAE,oBAAoB,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,CAAC,CAAC;QACnG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,iBAAiB;QACrB,IAAI,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACjC,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,0BAA0B;QAC9B,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;gBACjE,KAAK,EAAE,IAAI;gBACX,mFAAmF;gBACnF,kBAAkB,EAAE,SAAS;gBAC7B,gBAAgB,EAAE,SAAS;gBAC3B,WAAW,EAAE,SAAS;aACvB,CAAC,CAAC;YAEH,qBAAqB;YACrB,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;gBACvB,IAAI,CAAC,IAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClD,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE,KAAK,CAAC,CAAC;YACjE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,oBAAoB;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YACpD,MAAM,iBAAiB,GAAU,EAAE,CAAC;YAEpC,2BAA2B;YAC3B,gBAAgB,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE;gBACzD,IAAI,WAAW,CAAC,MAAM,KAAK,cAAc,IAAI,WAAW,CAAC,KAAK,EAAE,CAAC;oBAC/D,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC5C,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,iBAAiB,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,oBAAoB,EAAE,KAAK;YAC3B,mBAAmB,EAAE,KAAK;SAC3B,CAAC,CAAC;IACL,CAAC;CACF","sourcesContent":["import { Room } from \"livekit-client\";\nimport { ScreenShareControls } from \"./types\";\nimport { logger } from \"../utils/logger\";\nimport { EventEmitter } from \"./EventEmitter\";\n\n/**\n * Manages screen sharing controls for LiveKit room\n * Provides methods to enable/disable screen sharing, manage screen share state,\n * and handle screen sharing with audio support.\n */\nexport class ScreenShareManager extends EventEmitter implements ScreenShareControls {\n private room: Room | null = null;\n private _isScreenShareEnabled: boolean = false;\n private _isScreenShareActive: boolean = false;\n\n constructor(room?: Room) {\n super();\n if (room) {\n this.setRoom(room);\n }\n }\n\n get isScreenShareEnabled(): boolean {\n return this._isScreenShareEnabled;\n }\n\n get isScreenShareActive(): boolean {\n return this._isScreenShareActive;\n }\n\n /**\n * Set the LiveKit room instance\n */\n setRoom(room: Room): void {\n // Clean up previous room listeners\n if (this.room) {\n this.cleanupListeners();\n }\n\n this.room = room;\n \n if (room && room.state !== 'disconnected') {\n this.setupListeners();\n this.updateState();\n }\n }\n\n /**\n * Setup event listeners for room\n */\n private setupListeners(): void {\n if (!this.room) return;\n\n const localParticipant = this.room.localParticipant;\n\n const handleTrackPublished = (track: any) => {\n if (track.source === 'screen_share') {\n this._isScreenShareActive = true;\n this.emit('screenShareStateChange', { isScreenShareActive: true });\n }\n };\n\n const handleTrackUnpublished = (track: any) => {\n if (track.source === 'screen_share') {\n this._isScreenShareActive = false;\n this.emit('screenShareStateChange', { isScreenShareActive: false });\n }\n };\n\n const handleTrackMuted = (track: any) => {\n if (track.source === 'screen_share') {\n this._isScreenShareActive = false;\n this.emit('screenShareStateChange', { isScreenShareActive: false });\n }\n };\n\n const handleTrackUnmuted = (track: any) => {\n if (track.source === 'screen_share') {\n this._isScreenShareActive = true;\n this.emit('screenShareStateChange', { isScreenShareActive: true });\n }\n };\n\n localParticipant.on('trackPublished', handleTrackPublished);\n localParticipant.on('trackUnpublished', handleTrackUnpublished);\n localParticipant.on('trackMuted', handleTrackMuted);\n localParticipant.on('trackUnmuted', handleTrackUnmuted);\n }\n\n /**\n * Clean up event listeners\n */\n private cleanupListeners(): void {\n if (!this.room) return;\n // LiveKit handles cleanup automatically when participant is removed\n }\n\n /**\n * Update screen share state from room\n */\n private updateState(): void {\n if (!this.room || this.room.state === 'disconnected') {\n this._isScreenShareEnabled = false;\n this._isScreenShareActive = false;\n return;\n }\n\n const localParticipant = this.room.localParticipant;\n this._isScreenShareEnabled = localParticipant.isScreenShareEnabled;\n this._isScreenShareActive = localParticipant.isScreenShareEnabled;\n }\n\n /**\n * Enable screen share\n */\n async enableScreenShare(): Promise<void> {\n if (!this.room) {\n throw new Error('Room not initialized');\n }\n\n try {\n // Use setScreenShareEnabled with options to include current tab\n await this.room.localParticipant.setScreenShareEnabled(true, {\n // @ts-ignore - selfBrowserSurface is a valid Chrome option but may not be in types\n selfBrowserSurface: \"include\",\n surfaceSwitching: \"include\",\n systemAudio: \"include\",\n });\n this._isScreenShareEnabled = true;\n this._isScreenShareActive = true;\n this.emit('screenShareStateChange', { isScreenShareEnabled: true, isScreenShareActive: true });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Disable screen share\n */\n async disableScreenShare(): Promise<void> {\n if (!this.room) {\n throw new Error('Room not initialized');\n }\n\n try {\n await this.room.localParticipant.setScreenShareEnabled(false);\n this._isScreenShareEnabled = false;\n this._isScreenShareActive = false;\n this.emit('screenShareStateChange', { isScreenShareEnabled: false, isScreenShareActive: false });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Toggle screen share\n */\n async toggleScreenShare(): Promise<void> {\n if (this._isScreenShareEnabled) {\n await this.disableScreenShare();\n } else {\n await this.enableScreenShare();\n }\n }\n\n /**\n * Enable screen share with audio\n */\n async enableScreenShareWithAudio(): Promise<void> {\n if (!this.room) {\n throw new Error('Room not initialized');\n }\n\n try {\n // Create screen tracks with audio enabled and include current tab\n const tracks = await this.room.localParticipant.createScreenTracks({\n audio: true,\n // @ts-ignore - selfBrowserSurface is a valid Chrome option but may not be in types\n selfBrowserSurface: \"include\",\n surfaceSwitching: \"include\",\n systemAudio: \"include\",\n });\n\n // Publish each track\n tracks.forEach((track) => {\n this.room!.localParticipant.publishTrack(track);\n });\n\n this._isScreenShareEnabled = true;\n } catch (error) {\n logger.error(\"Failed to enable screen share with audio:\", error);\n throw error;\n }\n }\n\n /**\n * Get screen share tracks\n */\n async getScreenShareTracks(): Promise<any[]> {\n if (!this.room) {\n return [];\n }\n\n try {\n const localParticipant = this.room.localParticipant;\n const screenShareTracks: any[] = [];\n \n // Get all published tracks\n localParticipant.trackPublications.forEach((publication) => {\n if (publication.source === 'screen_share' && publication.track) {\n screenShareTracks.push(publication.track);\n }\n });\n\n return screenShareTracks;\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Reset state on disconnect\n */\n reset(): void {\n this._isScreenShareEnabled = false;\n this._isScreenShareActive = false;\n this.emit('screenShareStateChange', { \n isScreenShareEnabled: false,\n isScreenShareActive: false\n });\n }\n}\n\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"VideoManager.js","sourceRoot":"","sources":["../../src/core/VideoManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"VideoManager.js","sourceRoot":"","sources":["../../src/core/VideoManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { Room, Track } from \"livekit-client\";\nimport {\n PublishCanvasOptions,\n PublishVideoTrackOptions,\n VideoControls,\n VisionSourceHandle,\n VisionSourceKind,\n VisionSourceState,\n} from \"./types\";\nimport { logger } from \"../utils/logger\";\nimport { EventEmitter } from \"./EventEmitter\";\nimport {\n isWebcamVisionSource,\n shouldKeepExistingVisionSource,\n} from \"./videoSourceState\";\n\ntype WebSocketVisionMessageType = \"vision-frame\" | \"vision-source-state\";\ntype WebSocketVisionMessageSender = (\n type: WebSocketVisionMessageType,\n data: Record<string, unknown>,\n) => void;\ntype WebSocketVisionMode = \"off\" | \"enabled\" | \"disabled\";\n\n/**\n * Manages visual source controls. LiveKit publishes real video tracks;\n * WebSocket samples active sources into vision-frame messages.\n */\nexport class VideoManager extends EventEmitter implements VideoControls {\n private room: Room | null = null;\n private _isVideoEnabled: boolean = false;\n private _isVideoHidden: boolean = false;\n private _activeVisionSource: VisionSourceHandle | null = null;\n private pendingVisionSourceTracks = new WeakMap<\n MediaStreamTrack,\n VisionSourceKind\n >();\n private webSocketVisionMessageSender: WebSocketVisionMessageSender | null =\n null;\n private webSocketVisionMode: WebSocketVisionMode = \"off\";\n\n constructor(room?: Room) {\n super();\n if (room) {\n this.setRoom(room);\n }\n }\n\n get isVideoEnabled(): boolean {\n return this._isVideoEnabled;\n }\n\n get isVideoHidden(): boolean {\n return this._isVideoHidden;\n }\n\n get activeVisionSource(): VisionSourceHandle | null {\n return this.getLiveVisionSource();\n }\n\n get hasActiveVisionSource(): boolean {\n return this.activeVisionSource !== null;\n }\n\n get visionSourceState(): VisionSourceState {\n return this.makeVisionSourceState();\n }\n\n /**\n * Set the LiveKit room instance\n */\n setRoom(room: Room): void {\n // Clean up previous room listeners\n if (this.room) {\n this.cleanupListeners();\n }\n\n this.room = room;\n\n if (room) {\n this.setupListeners();\n this.updateState();\n }\n }\n\n setWebSocketVisionMessageSender(\n sender: WebSocketVisionMessageSender | null,\n ): void {\n this.webSocketVisionMessageSender = sender;\n this.webSocketVisionMode = sender ? \"enabled\" : \"off\";\n }\n\n setWebSocketVisionDisabled(): void {\n this.webSocketVisionMessageSender = null;\n this.webSocketVisionMode = \"disabled\";\n const activeSource = this._activeVisionSource;\n activeSource?.cleanup?.();\n if (\n activeSource?.stopTrackOnUnpublish &&\n activeSource.track.readyState !== \"ended\"\n ) {\n activeSource.track.stop();\n }\n this._activeVisionSource = null;\n this._isVideoEnabled = false;\n }\n\n /**\n * Setup event listeners for room\n */\n private setupListeners(): void {\n if (!this.room) return;\n\n const localParticipant = this.room.localParticipant;\n\n const handleTrackMuted = (track: any) => {\n if (this.isWebcamPublication(track)) {\n this._isVideoHidden = true;\n this.emitVideoStateChange(\"track_muted\", { isVideoHidden: true });\n }\n };\n\n const handleTrackUnmuted = (track: any) => {\n if (this.isWebcamPublication(track)) {\n this._isVideoHidden = false;\n this.emitVideoStateChange(\"track_unmuted\", { isVideoHidden: false });\n }\n };\n\n const handleTrackPublished = (publication: any) => {\n if (this.isWebcamPublication(publication)) {\n this._isVideoEnabled = true;\n if (!this._activeVisionSource) {\n const handle = this.createPublicationHandle(\n publication,\n \"webcam\",\n \"webcam\",\n false,\n );\n if (handle) {\n this.setActiveVisionSource(handle);\n }\n }\n this.emitVideoStateChange(\"track_published\", { isVideoEnabled: true });\n }\n };\n\n const handleTrackUnpublished = (publication: any) => {\n if (this.isCameraLikeSource(publication?.source)) {\n const isWebcam = this.isWebcamPublication(publication);\n this.clearActiveVisionSourceForPublication(\n publication,\n isWebcam ? \"track_unpublished\" : \"vision_source_unpublished\",\n );\n this.updateState();\n this.emitVideoStateChange(\n isWebcam ? \"track_unpublished\" : \"vision_source_unpublished\",\n {\n isVideoEnabled: this._isVideoEnabled,\n },\n );\n }\n };\n\n localParticipant.on(\"trackMuted\", handleTrackMuted);\n localParticipant.on(\"trackUnmuted\", handleTrackUnmuted);\n localParticipant.on(\"trackPublished\", handleTrackPublished);\n localParticipant.on(\"trackUnpublished\", handleTrackUnpublished);\n }\n\n /**\n * Clean up event listeners\n */\n private cleanupListeners(): void {\n if (!this.room) return;\n // LiveKit handles cleanup automatically when participant is removed\n }\n\n /**\n * Update video state from room\n */\n private updateState(): void {\n if (!this.room || this.room.state === \"disconnected\") {\n this._isVideoEnabled = false;\n this._isVideoHidden = false;\n this._activeVisionSource?.cleanup?.();\n this._activeVisionSource = null;\n return;\n }\n\n let activeSource = this.getLiveVisionSource();\n const localParticipant = this.room.localParticipant;\n if (!activeSource && localParticipant.isCameraEnabled) {\n const handle = this.createPublicationHandle(\n localParticipant.getTrackPublication(Track.Source.Camera),\n \"webcam\",\n \"webcam\",\n false,\n );\n if (handle) {\n this.setActiveVisionSource(handle);\n activeSource = handle;\n }\n }\n this._isVideoEnabled =\n isWebcamVisionSource(activeSource?.source) ||\n (!activeSource && localParticipant.isCameraEnabled);\n this._isVideoHidden = false; // LiveKit doesn't have a direct hidden state for video\n }\n\n /**\n * Enable video\n */\n async enableVideo(): Promise<void> {\n if (this.isWebSocketVisionTransport()) {\n this.assertWebSocketVisionEnabled();\n const stream = await navigator.mediaDevices.getUserMedia({\n video: true,\n audio: false,\n });\n const track = stream.getVideoTracks()[0];\n if (!track) {\n throw new Error(\"getUserMedia() produced no video track\");\n }\n try {\n await this.publishVideoTrack(track, {\n name: \"webcam\",\n source: \"webcam\",\n stopTrackOnUnpublish: true,\n });\n } catch (error) {\n track.stop();\n throw error;\n }\n return;\n }\n\n if (!this.room) {\n throw new Error(\"Room not initialized\");\n }\n\n try {\n await this.replaceActiveVisionSource({ source: \"webcam\" });\n const publication = await this.room.localParticipant.setCameraEnabled(true);\n this._isVideoEnabled = true;\n const handle = this.createPublicationHandle(\n publication ||\n this.room.localParticipant.getTrackPublication(Track.Source.Camera),\n \"webcam\",\n \"webcam\",\n false,\n );\n if (handle) {\n this.setActiveVisionSource(handle);\n }\n this.emitVideoStateChange(\"webcam_enabled\", { isVideoEnabled: true });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Disable video\n */\n async disableVideo(): Promise<void> {\n if (this.isWebSocketVisionTransport()) {\n const activeSource = this._activeVisionSource;\n if (activeSource) {\n await this.unpublishVisionSource(activeSource);\n }\n this._isVideoEnabled = false;\n this.emitVideoStateChange(\"webcam_disabled\", { isVideoEnabled: false });\n return;\n }\n\n if (!this.room) {\n throw new Error(\"Room not initialized\");\n }\n\n try {\n await this.room.localParticipant.setCameraEnabled(false);\n this._isVideoEnabled = false;\n const activeSource = this._activeVisionSource;\n if (activeSource) {\n if (isWebcamVisionSource(activeSource.source)) {\n activeSource.cleanup?.();\n this._activeVisionSource = null;\n } else {\n await this.unpublishVisionSource(activeSource);\n }\n }\n this.emitVideoStateChange(\"webcam_disabled\", { isVideoEnabled: false });\n } catch (error) {\n throw error;\n }\n }\n\n /**\n * Hide video\n */\n async hideVideo(): Promise<void> {\n await this.disableVideo();\n }\n\n /**\n * Show video\n */\n async showVideo(): Promise<void> {\n await this.enableVideo();\n }\n\n /**\n * Toggle video\n */\n async toggleVideo(): Promise<void> {\n if (this._isVideoEnabled) {\n await this.disableVideo();\n } else {\n await this.enableVideo();\n }\n }\n\n /**\n * Set video device\n */\n async setVideoDevice(deviceId: string): Promise<void> {\n if (this.isWebSocketVisionTransport()) {\n this.assertWebSocketVisionEnabled();\n const stream = await navigator.mediaDevices.getUserMedia({\n video: { deviceId: { exact: deviceId } },\n audio: false,\n });\n const track = stream.getVideoTracks()[0];\n if (!track) {\n throw new Error(\"getUserMedia() produced no video track\");\n }\n try {\n await this.publishVideoTrack(track, {\n name: \"webcam\",\n source: \"webcam\",\n stopTrackOnUnpublish: true,\n });\n } catch (error) {\n track.stop();\n throw error;\n }\n return;\n }\n\n if (!this.room) {\n throw new Error(\"Room not initialized\");\n }\n\n try {\n await this.replaceActiveVisionSource({ source: \"webcam\" });\n const publication = await this.room.localParticipant.setCameraEnabled(true, {\n deviceId,\n });\n const handle = this.createPublicationHandle(\n publication ||\n this.room.localParticipant.getTrackPublication(Track.Source.Camera),\n \"webcam\",\n \"webcam\",\n false,\n );\n if (handle) {\n this.setActiveVisionSource(handle);\n }\n this._isVideoEnabled = true;\n this.emitVideoStateChange(\"webcam_device_selected\", {\n isVideoEnabled: true,\n });\n } catch (error) {\n logger.error(\"Failed to set video device:\", error);\n throw error;\n }\n }\n\n /**\n * Get available video devices\n */\n async getVideoDevices(): Promise<MediaDeviceInfo[]> {\n try {\n const devices = await navigator.mediaDevices.enumerateDevices();\n const videoDevices = devices.filter((device) => device.kind === \"videoinput\");\n return videoDevices;\n } catch (error) {\n logger.error(\"Failed to get video devices:\", error);\n throw error;\n }\n }\n\n /**\n * Set video quality\n */\n async setVideoQuality(quality: \"low\" | \"medium\" | \"high\"): Promise<void> {\n if (this.isWebSocketVisionTransport()) {\n this.assertWebSocketVisionEnabled();\n return;\n }\n\n if (!this.room) {\n throw new Error(\"Room not initialized\");\n }\n\n try {\n // TODO: Implement video quality settings when LiveKit provides the API\n } catch (error) {\n throw error;\n }\n }\n\n async publishCanvas(\n canvas: HTMLCanvasElement,\n options: PublishCanvasOptions = {},\n ): Promise<VisionSourceHandle> {\n const captureStream = canvas.captureStream;\n if (typeof captureStream !== \"function\") {\n throw new Error(\"Canvas captureStream() is not supported in this browser\");\n }\n\n const stream = canvas.captureStream(options.fps ?? 1);\n const track = stream.getVideoTracks()[0];\n if (!track) {\n throw new Error(\"Canvas captureStream() produced no video track\");\n }\n\n try {\n return await this.publishVideoTrack(track, {\n name: options.name ?? \"canvas-pov\",\n source: options.source ?? \"canvas\",\n fps: options.fps,\n stopTrackOnUnpublish: options.stopTrackOnUnpublish ?? true,\n });\n } catch (error) {\n if (track.readyState !== \"ended\") {\n track.stop();\n }\n throw error;\n }\n }\n\n async publishVideoTrack(\n track: MediaStreamTrack,\n options: PublishVideoTrackOptions = {},\n ): Promise<VisionSourceHandle> {\n if (this.isWebSocketVisionTransport()) {\n this.assertWebSocketVisionEnabled();\n return this.publishWebSocketVideoTrack(track, options);\n }\n\n if (!this.room) {\n throw new Error(\"Room not initialized\");\n }\n\n const source = options.source ?? \"custom\";\n const sourceName = options.name ?? source;\n const publicationName = sourceName.toLowerCase().includes(source.toLowerCase())\n ? sourceName\n : `${source}:${sourceName}`;\n const stopTrackOnUnpublish = options.stopTrackOnUnpublish ?? false;\n\n await this.replaceActiveVisionSource({ source, track });\n\n this.pendingVisionSourceTracks.set(track, source);\n let publication;\n try {\n publication = await this.room.localParticipant.publishTrack(track, {\n name: publicationName,\n source: this.toLiveKitSource(source),\n } as any);\n } catch (error) {\n this.pendingVisionSourceTracks.delete(track);\n throw error;\n }\n\n const handle: VisionSourceHandle = {\n track,\n publication,\n transport: \"livekit\",\n sourceName,\n source,\n stopTrackOnUnpublish,\n unpublish: async () => this.unpublishVisionSource(handle),\n };\n this.addTrackEndedListener(handle);\n this.setActiveVisionSource(handle);\n this._isVideoEnabled = isWebcamVisionSource(source);\n this.emitVideoStateChange(\"vision_source_published\", {\n isVideoEnabled: this._isVideoEnabled,\n });\n return handle;\n }\n\n async unpublishVisionSource(\n source?: VisionSourceHandle | MediaStreamTrack,\n ): Promise<void> {\n const handle = this.resolveVisionSource(source);\n if (!handle) return;\n\n if (handle.transport === \"websocket\") {\n const wasActive = this._activeVisionSource?.track === handle.track;\n handle.cleanup?.();\n if (handle.stopTrackOnUnpublish && handle.track.readyState !== \"ended\") {\n handle.track.stop();\n }\n if (wasActive) {\n this._activeVisionSource = null;\n if (isWebcamVisionSource(handle.source)) {\n this._isVideoEnabled = false;\n }\n this.sendWebSocketVisionSourceState(false, handle.source);\n this.emitVideoStateChange(\"vision_source_unpublished\", {\n isVideoEnabled: this._isVideoEnabled,\n });\n }\n return;\n }\n\n if (!this.room) {\n throw new Error(\"Room not initialized\");\n }\n\n await this.room.localParticipant.unpublishTrack(\n handle.track,\n handle.stopTrackOnUnpublish,\n );\n if (handle.stopTrackOnUnpublish && handle.track.readyState !== \"ended\") {\n handle.track.stop();\n }\n if (this._activeVisionSource?.track === handle.track) {\n this._activeVisionSource.cleanup?.();\n this._activeVisionSource = null;\n }\n this.updateState();\n this.emitVideoStateChange(\"vision_source_unpublished\", {\n isVideoEnabled: this._isVideoEnabled,\n });\n }\n\n private async publishWebSocketVideoTrack(\n track: MediaStreamTrack,\n options: PublishVideoTrackOptions = {},\n ): Promise<VisionSourceHandle> {\n const source = options.source ?? \"custom\";\n const sourceName = options.name ?? source;\n const stopTrackOnUnpublish = options.stopTrackOnUnpublish ?? false;\n const fps = this.normalizeWebSocketFps(options.fps ?? 1);\n\n const activeSource = this._activeVisionSource;\n if (activeSource?.track === track) {\n activeSource.cleanup?.();\n this._activeVisionSource = null;\n } else {\n await this.replaceActiveVisionSource({ source, track });\n }\n\n const stream = new MediaStream([track]);\n const video = document.createElement(\"video\");\n video.muted = true;\n video.playsInline = true;\n video.srcObject = stream;\n\n const canvas = document.createElement(\"canvas\");\n const context = canvas.getContext(\"2d\");\n if (!context) {\n throw new Error(\"Unable to create canvas context for WebSocket vision\");\n }\n\n let intervalId: number | null = null;\n let stopped = false;\n let captureWarningLogged = false;\n let handle: VisionSourceHandle;\n\n const publishFrame = () => {\n if (stopped) return;\n if (track.readyState !== \"live\") {\n this.clearEndedVisionSource(handle);\n return;\n }\n if (!this.webSocketVisionMessageSender) return;\n\n const width = video.videoWidth || track.getSettings?.().width || 0;\n const height = video.videoHeight || track.getSettings?.().height || 0;\n if (!width || !height) return;\n\n try {\n if (canvas.width !== width) canvas.width = width;\n if (canvas.height !== height) canvas.height = height;\n context.drawImage(video, 0, 0, width, height);\n this.webSocketVisionMessageSender(\"vision-frame\", {\n image: canvas.toDataURL(\"image/jpeg\", 0.82),\n source_label: this.toBackendVisionSourceLabel(source),\n capture_pts_ns: String(Math.round(performance.now() * 1_000_000)),\n });\n } catch (error) {\n if (!captureWarningLogged) {\n captureWarningLogged = true;\n logger.warn(\"Unable to capture WebSocket vision frame:\", error);\n }\n }\n };\n\n const cleanupCapture = () => {\n stopped = true;\n if (intervalId !== null) {\n window.clearInterval(intervalId);\n intervalId = null;\n }\n video.pause();\n video.srcObject = null;\n };\n\n handle = {\n track,\n transport: \"websocket\",\n sourceName,\n source,\n stopTrackOnUnpublish,\n unpublish: async () => this.unpublishVisionSource(handle),\n cleanup: cleanupCapture,\n };\n this.addTrackEndedListener(handle);\n this.setActiveVisionSource(handle);\n this._isVideoEnabled = isWebcamVisionSource(source);\n this.emitVideoStateChange(\"vision_source_published\", {\n isVideoEnabled: this._isVideoEnabled,\n });\n this.sendWebSocketVisionSourceState(true, source);\n try {\n await video.play();\n } catch (error) {\n logger.warn(\"WebSocket vision video playback did not start immediately:\", error);\n }\n publishFrame();\n if (!stopped) {\n intervalId = window.setInterval(publishFrame, Math.round(1000 / fps));\n }\n return handle;\n }\n\n private resolveVisionSource(\n source?: VisionSourceHandle | MediaStreamTrack,\n ): VisionSourceHandle | null {\n if (!source) return this._activeVisionSource;\n if (\"track\" in source) return source;\n if (this._activeVisionSource?.track === source) {\n return this._activeVisionSource;\n }\n return {\n track: source,\n sourceName: source.label || \"custom\",\n source: \"custom\",\n transport: this.isWebSocketVisionTransport() ? \"websocket\" : \"livekit\",\n stopTrackOnUnpublish: false,\n unpublish: async () => this.unpublishVisionSource(source),\n };\n }\n\n private isWebSocketVisionTransport(): boolean {\n return this.webSocketVisionMode !== \"off\";\n }\n\n private assertWebSocketVisionEnabled(): void {\n if (\n this.webSocketVisionMode !== \"enabled\" ||\n !this.webSocketVisionMessageSender\n ) {\n throw new Error(\"WebSocket vision input is disabled for this session\");\n }\n }\n\n private normalizeWebSocketFps(fps: number): number {\n if (!Number.isFinite(fps) || fps <= 0) return 1;\n return Math.max(0.2, Math.min(10, fps));\n }\n\n private sendWebSocketVisionSourceState(\n active: boolean,\n source: VisionSourceKind,\n ): void {\n if (!this.webSocketVisionMessageSender) return;\n this.webSocketVisionMessageSender(\"vision-source-state\", {\n active,\n source_label: this.toBackendVisionSourceLabel(source),\n });\n }\n\n private toBackendVisionSourceLabel(\n source: VisionSourceKind,\n ): \"webcam\" | \"canvas\" | \"screen\" | \"custom\" {\n if (source === \"webcam\" || source === \"camera\") return \"webcam\";\n if (source === \"canvas\") return \"canvas\";\n if (source === \"screen\" || source === \"screen_share\") return \"screen\";\n return \"custom\";\n }\n\n private toLiveKitSource(source: VisionSourceKind): Track.Source {\n if (source === \"screen\" || source === \"screen_share\") {\n return Track.Source.ScreenShare;\n }\n if (source === \"unknown\") return Track.Source.Unknown;\n // P1 backend sampling listens on the video channel. Keep webcam/canvas/custom\n // as camera-compatible LiveKit video tracks while preserving semantic labels\n // in SDK state and track names.\n return Track.Source.Camera;\n }\n\n private getLiveVisionSource(): VisionSourceHandle | null {\n const source = this._activeVisionSource;\n if (!source) return null;\n return source.track.readyState === \"live\" ? source : null;\n }\n\n private makeVisionSourceState(reason?: string): VisionSourceState {\n const source = this.getLiveVisionSource();\n const stateReason =\n reason ??\n (this.webSocketVisionMode === \"disabled\"\n ? \"websocket_vision_disabled\"\n : undefined);\n return {\n active: !!source,\n source: source?.source ?? null,\n sourceName: source?.sourceName ?? null,\n trackState: source?.track.readyState ?? null,\n transport:\n source?.transport ??\n (this.isWebSocketVisionTransport() ? \"websocket\" : undefined),\n ...(stateReason ? { reason: stateReason } : {}),\n };\n }\n\n private emitVideoStateChange(\n reason?: string,\n extra: Record<string, unknown> = {},\n ): void {\n this.emit(\"videoStateChange\", {\n isVideoEnabled: this._isVideoEnabled,\n isVideoHidden: this._isVideoHidden,\n activeVisionSource: this.activeVisionSource,\n hasActiveVisionSource: this.hasActiveVisionSource,\n visionSourceState: this.makeVisionSourceState(reason),\n ...extra,\n });\n }\n\n private setActiveVisionSource(handle: VisionSourceHandle): void {\n if (this._activeVisionSource?.track !== handle.track) {\n this._activeVisionSource?.cleanup?.();\n }\n this._activeVisionSource = handle;\n }\n\n private async replaceActiveVisionSource(next: {\n source: VisionSourceKind;\n track?: MediaStreamTrack;\n }): Promise<void> {\n const current = this._activeVisionSource;\n if (!current) return;\n if (next.track && current.track === next.track) return;\n if (\n shouldKeepExistingVisionSource(\n current.source,\n next.source,\n next.track !== undefined,\n )\n ) {\n return;\n }\n await current.unpublish();\n }\n\n private createPublicationHandle(\n publication: any,\n source: VisionSourceKind,\n sourceName: string,\n stopTrackOnUnpublish: boolean,\n ): VisionSourceHandle | null {\n const track = this.mediaTrackFromPublication(publication);\n if (!track) return null;\n\n let handle: VisionSourceHandle;\n handle = {\n track,\n publication,\n transport: \"livekit\",\n sourceName,\n source,\n stopTrackOnUnpublish,\n unpublish: async () => {\n if (isWebcamVisionSource(source)) {\n await this.disableVideo();\n return;\n }\n await this.unpublishVisionSource(handle);\n },\n };\n this.addTrackEndedListener(handle);\n return handle;\n }\n\n private addTrackEndedListener(handle: VisionSourceHandle): void {\n const previousCleanup = handle.cleanup;\n const onEnded = () => this.clearEndedVisionSource(handle);\n handle.track.addEventListener?.(\"ended\", onEnded, { once: true });\n handle.cleanup = () => {\n handle.track.removeEventListener?.(\"ended\", onEnded);\n previousCleanup?.();\n };\n }\n\n private clearEndedVisionSource(handle: VisionSourceHandle): void {\n if (this._activeVisionSource?.track !== handle.track) return;\n handle.cleanup?.();\n this._activeVisionSource = null;\n if (handle.transport === \"websocket\") {\n this.sendWebSocketVisionSourceState(false, handle.source);\n if (isWebcamVisionSource(handle.source)) {\n this._isVideoEnabled = false;\n }\n this.emitVideoStateChange(\"track_ended\");\n return;\n }\n this.updateState();\n this.emitVideoStateChange(\"track_ended\");\n }\n\n private clearActiveVisionSourceForPublication(\n publication: any,\n reason: string,\n ): void {\n const current = this._activeVisionSource;\n if (!current) return;\n if (\n current.publication !== publication &&\n current.track !== this.mediaTrackFromPublication(publication)\n ) {\n return;\n }\n current.cleanup?.();\n this._activeVisionSource = null;\n this.emitVideoStateChange(reason);\n }\n\n private mediaTrackFromPublication(publication: any): MediaStreamTrack | null {\n const track = publication?.track;\n const mediaTrack = track?.mediaStreamTrack ?? track;\n if (mediaTrack && typeof mediaTrack.readyState === \"string\") {\n return mediaTrack as MediaStreamTrack;\n }\n return null;\n }\n\n private semanticSourceForPublication(\n publication: any,\n ): VisionSourceKind | undefined {\n const track = this.mediaTrackFromPublication(publication);\n if (!track) return undefined;\n if (this._activeVisionSource?.track === track) {\n return this._activeVisionSource.source;\n }\n return this.pendingVisionSourceTracks.get(track);\n }\n\n private isWebcamPublication(publication: any): boolean {\n const semanticSource = this.semanticSourceForPublication(publication);\n if (semanticSource !== undefined) {\n return isWebcamVisionSource(semanticSource);\n }\n return this.isCameraLikeSource(publication?.source);\n }\n\n private isCameraLikeSource(source: unknown): boolean {\n return source === \"camera\" || source === Track.Source.Camera;\n }\n\n /**\n * Reset state on disconnect\n */\n reset(): void {\n this._isVideoEnabled = false;\n this._isVideoHidden = false;\n this.webSocketVisionMessageSender = null;\n this.webSocketVisionMode = \"off\";\n const activeSource = this._activeVisionSource;\n activeSource?.cleanup?.();\n if (\n activeSource?.stopTrackOnUnpublish &&\n activeSource.track.readyState !== \"ended\"\n ) {\n activeSource.track.stop();\n }\n this._activeVisionSource = null;\n this.emit(\"videoStateChange\", {\n isVideoEnabled: false,\n isVideoHidden: false,\n activeVisionSource: null,\n hasActiveVisionSource: false,\n visionSourceState: this.makeVisionSourceState(\"reset\"),\n });\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"connectRequest.js","sourceRoot":"","sources":["../../src/core/connectRequest.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAgE;IAEhE,MAAM,kBAAkB,GACtB,MAAM,CAAC,aAAa,KAAK,IAAI;QAC7B,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,KAAK,KAAK,CAAC;IAE1D,OAAO;QACL,mBAAmB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;QACxE,iBAAiB,EAAE;YACjB,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,IAAI,KAAK;YAChD,sBAAsB,EACpB,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,IAAI,GAAG;YACxD,yEAAyE;YACzE,qEAAqE;YACrE,wEAAwE;YACxE,gBAAgB;YAChB,UAAU,EAAE,kBAAkB;gBAC5B,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,IAAI,EAAE;gBAC3C,CAAC,CAAC,EAAE;YACN,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"connectRequest.js","sourceRoot":"","sources":["../../src/core/connectRequest.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,UAAU,4BAA4B,CAC1C,MAAgE;IAEhE,MAAM,kBAAkB,GACtB,MAAM,CAAC,aAAa,KAAK,IAAI;QAC7B,MAAM,CAAC,gBAAgB,EAAE,oBAAoB,KAAK,KAAK,CAAC;IAE1D,OAAO;QACL,mBAAmB,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc;QACxE,iBAAiB,EAAE;YACjB,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,IAAI,KAAK;YAChD,sBAAsB,EACpB,MAAM,CAAC,gBAAgB,EAAE,sBAAsB,IAAI,GAAG;YACxD,yEAAyE;YACzE,qEAAqE;YACrE,wEAAwE;YACxE,gBAAgB;YAChB,UAAU,EAAE,kBAAkB;gBAC5B,CAAC,CAAC,MAAM,CAAC,gBAAgB,EAAE,UAAU,IAAI,EAAE;gBAC3C,CAAC,CAAC,EAAE;YACN,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D;KACF,CAAC;AACJ,CAAC","sourcesContent":["import type { ConvaiConfig } from \"./types\";\n\nexport interface BlendshapeConnectRequestConfig {\n blendshape_provider: \"neurosync\" | \"not_provided\";\n blendshape_config: {\n enable_chunking: true;\n chunk_size: number;\n format: \"arkit\" | \"mha\";\n frames_buffer_duration: number;\n output_fps: number;\n deliver_chunks_ahead?: true;\n };\n}\n\n/**\n * Build the lipsync part of the /connect request.\n *\n * Ahead-delivery changes the client contract because frames can arrive before\n * bot-started-speaking and cancellation must be handled with owner metadata.\n * It is the default now that server support is verified; callers can fall back\n * to the legacy paced path with deliver_chunks_ahead: false.\n */\nexport function buildBlendshapeConnectConfig(\n config: Pick<ConvaiConfig, \"enableLipsync\" | \"blendshapeConfig\">,\n): BlendshapeConnectRequestConfig {\n const deliverChunksAhead =\n config.enableLipsync === true &&\n config.blendshapeConfig?.deliver_chunks_ahead !== false;\n\n return {\n blendshape_provider: config.enableLipsync ? \"neurosync\" : \"not_provided\",\n blendshape_config: {\n enable_chunking: true,\n chunk_size: 10,\n format: config.blendshapeConfig?.format || \"mha\",\n frames_buffer_duration:\n config.blendshapeConfig?.frames_buffer_duration ?? 0.1,\n // In the legacy paced path, output_fps is a delivery cadence and the SDK\n // player keeps its 60fps visual timeline. Only ahead-delivery treats\n // output_fps as a client-visible timeline override because chunks carry\n // fps metadata.\n output_fps: deliverChunksAhead\n ? config.blendshapeConfig?.output_fps ?? 60\n : 90,\n ...(deliverChunksAhead ? { deliver_chunks_ahead: true } : {}),\n },\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"contextUpdateRequest.js","sourceRoot":"","sources":["../../src/core/contextUpdateRequest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qCAAqC,CACnD,OAA+D;IAE/D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,YAAY,KAAK,cAAc,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,WAAoC;IAEpC,OAAO,WAAW,KAAK,cAAc,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"contextUpdateRequest.js","sourceRoot":"","sources":["../../src/core/contextUpdateRequest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qCAAqC,CACnD,OAA+D;IAE/D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO,OAAO,CAAC,OAAO,KAAK,MAAM,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,YAAY,KAAK,cAAc,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,mCAAmC,CACjD,WAAoC;IAEpC,OAAO,WAAW,KAAK,cAAc,CAAC;AACxC,CAAC","sourcesContent":["import type { ContextUpdateOptions, RespondMode } from \"./types\";\n\nexport function shouldPreemptForContextUpdateResponse(\n options: Pick<ContextUpdateOptions, \"run_llm\" | \"respond_mode\">,\n): boolean {\n if (options.run_llm !== undefined) {\n return options.run_llm === \"true\";\n }\n return options.respond_mode === \"must_respond\";\n}\n\nexport function shouldPreemptForExplicitRespondMode(\n respondMode: RespondMode | undefined,\n): boolean {\n return respondMode === \"must_respond\";\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,4CAA4C;AAC5C,cAAc,SAAS,CAAC;AAExB,mBAAmB;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAKrD,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,qCAAqC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,4CAA4C;AAC5C,cAAc,SAAS,CAAC;AAExB,mBAAmB;AACnB,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAKrD,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,+BAA+B;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGpD,qCAAqC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC","sourcesContent":["// Main client\nexport { ConvaiClient } from './ConvaiClient';\n\n// Types (including IConvaiClient interface)\nexport * from './types';\n\n// Helper functions\nexport { getDisconnectReasonMessage } from './types';\n\n// Type alias for easier usage\nexport type { ConvaiClient as ConvaiClientType } from './ConvaiClient';\n\n// Managers (for advanced usage)\nexport { AudioManager } from './AudioManager';\nexport { VideoManager } from './VideoManager';\nexport { ScreenShareManager } from './ScreenShareManager';\nexport { MessageHandler } from './MessageHandler';\nexport { MemoryManager } from './MemoryManager';\n\n// Blendshape queue for lipsync\nexport { BlendshapeQueue } from './BlendshapeQueue';\nexport type { TurnStats, BlendshapeChunkMetadata } from './BlendshapeQueue';\n\n// Event Emitter (for advanced usage)\nexport { EventEmitter } from './EventEmitter';\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,CAAC;IACtB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;CACP,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAA+B;IACxE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,cAAc;YACtC,OAAO,sCAAsC,CAAC;QAChD,KAAK,oBAAoB,CAAC,gBAAgB;YACxC,OAAO,mBAAmB,CAAC;QAC7B,KAAK,oBAAoB,CAAC,kBAAkB;YAC1C,OAAO,0CAA0C,CAAC;QACpD,KAAK,oBAAoB,CAAC,eAAe;YACvC,OAAO,yBAAyB,CAAC;QACnC,KAAK,oBAAoB,CAAC,mBAAmB;YAC3C,OAAO,kCAAkC,CAAC;QAC5C,KAAK,oBAAoB,CAAC,YAAY;YACpC,OAAO,+BAA+B,CAAC;QACzC,KAAK,oBAAoB,CAAC,cAAc;YACtC,OAAO,gBAAgB,CAAC;QAC1B,KAAK,oBAAoB,CAAC,YAAY;YACpC,OAAO,gBAAgB,CAAC;QAC1B,KAAK,oBAAoB,CAAC,SAAS;YACjC,OAAO,qCAAqC,CAAC;QAC/C,KAAK,oBAAoB,CAAC,YAAY;YACpC,OAAO,0BAA0B,CAAC;QACpC;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAuBA;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE,CAAC;IACjB,gBAAgB,EAAE,CAAC;IACnB,kBAAkB,EAAE,CAAC;IACrB,eAAe,EAAE,CAAC;IAClB,mBAAmB,EAAE,CAAC;IACtB,YAAY,EAAE,CAAC;IACf,cAAc,EAAE,CAAC;IACjB,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,YAAY,EAAE,CAAC;CACP,CAAC;AAEX;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAA+B;IACxE,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,cAAc;YACtC,OAAO,sCAAsC,CAAC;QAChD,KAAK,oBAAoB,CAAC,gBAAgB;YACxC,OAAO,mBAAmB,CAAC;QAC7B,KAAK,oBAAoB,CAAC,kBAAkB;YAC1C,OAAO,0CAA0C,CAAC;QACpD,KAAK,oBAAoB,CAAC,eAAe;YACvC,OAAO,yBAAyB,CAAC;QACnC,KAAK,oBAAoB,CAAC,mBAAmB;YAC3C,OAAO,kCAAkC,CAAC;QAC5C,KAAK,oBAAoB,CAAC,YAAY;YACpC,OAAO,+BAA+B,CAAC;QACzC,KAAK,oBAAoB,CAAC,cAAc;YACtC,OAAO,gBAAgB,CAAC;QAC1B,KAAK,oBAAoB,CAAC,YAAY;YACpC,OAAO,gBAAgB,CAAC;QAC1B,KAAK,oBAAoB,CAAC,SAAS;YACjC,OAAO,qCAAqC,CAAC;QAC/C,KAAK,oBAAoB,CAAC,YAAY;YACpC,OAAO,0BAA0B,CAAC;QACpC;YACE,OAAO,cAAc,CAAC;IAC1B,CAAC;AACH,CAAC","sourcesContent":["import { Room, DisconnectReason as LiveKitDisconnectReason } from 'livekit-client';\nimport { BlendshapeQueue } from './BlendshapeQueue';\n\n/**\n * LiveKit disconnect reasons.\n * Helps determine why a participant was disconnected from the room.\n * \n * These values map to LiveKit's DisconnectReason enum:\n * - UNKNOWN_REASON (0): Unknown disconnect reason\n * - CLIENT_INITIATED (1): Client called disconnect() - intentional disconnect\n * - DUPLICATE_IDENTITY (2): Another client with the same identity joined the room\n * - SERVER_SHUTDOWN (3): LiveKit server is shutting down\n * - PARTICIPANT_REMOVED (4): Participant was removed by RemoveParticipant API\n * - ROOM_DELETED (5): Room was ended via DeleteRoom API\n * - STATE_MISMATCH (6): State mismatch between client and server\n * - JOIN_FAILURE (7): Failed to join the room\n * - MIGRATION (8): Participant moved to a different room\n * - SIGNAL_CLOSE (9): Signal connection was closed\n * \n * @see https://docs.livekit.io/reference/client-sdk-js/enums/DisconnectReason.html\n */\nexport type DisconnectReason = LiveKitDisconnectReason;\n\n/**\n * Export LiveKit's DisconnectReason enum values for easy access\n */\nexport const DisconnectReasonEnum = {\n UNKNOWN_REASON: 0,\n CLIENT_INITIATED: 1,\n DUPLICATE_IDENTITY: 2,\n SERVER_SHUTDOWN: 3,\n PARTICIPANT_REMOVED: 4,\n ROOM_DELETED: 5,\n STATE_MISMATCH: 6,\n JOIN_FAILURE: 7,\n MIGRATION: 8,\n SIGNAL_CLOSE: 9,\n} as const;\n\n/**\n * Get a human-readable message for a disconnect reason.\n * \n * @param reason - The disconnect reason code from LiveKit\n * @returns A human-readable message describing the disconnect reason\n * \n * @example\n * ```typescript\n * client.on('disconnect', (reason) => {\n * console.log(getDisconnectReasonMessage(reason));\n * // Output: \"User disconnected\"\n * });\n * ```\n */\nexport function getDisconnectReasonMessage(reason: DisconnectReason | null): string {\n if (reason === null) {\n return 'Connected';\n }\n\n switch (reason) {\n case DisconnectReasonEnum.UNKNOWN_REASON:\n return 'Network unavailable or unknown cause';\n case DisconnectReasonEnum.CLIENT_INITIATED:\n return 'User disconnected';\n case DisconnectReasonEnum.DUPLICATE_IDENTITY:\n return 'Another client with same identity joined';\n case DisconnectReasonEnum.SERVER_SHUTDOWN:\n return 'Server is shutting down';\n case DisconnectReasonEnum.PARTICIPANT_REMOVED:\n return 'Removed by RemoveParticipant API';\n case DisconnectReasonEnum.ROOM_DELETED:\n return 'Room ended via DeleteRoom API';\n case DisconnectReasonEnum.STATE_MISMATCH:\n return 'State mismatch';\n case DisconnectReasonEnum.JOIN_FAILURE:\n return 'Failed to join';\n case DisconnectReasonEnum.MIGRATION:\n return 'Participant moved to different room';\n case DisconnectReasonEnum.SIGNAL_CLOSE:\n return 'Signal connection closed';\n default:\n return 'Disconnected';\n }\n}\n\n/**\n * Dynamic information structure for passing real-time context to the character.\n * Pass a text description of the current dynamic context.\n * \n * @example\n * ```typescript\n * const dynamicInfo = \"Player health is low, in combat mode\";\n * ```\n */\nexport type DynamicInfo = string;\n\n/**\n * Minimal contract that ConvaiClient and AudioManager require from a WebSocket\n * session implementation. Defined here so core has zero import dependency on\n * the pipecat packages — the concrete class lives in the vanilla/websocket subpath.\n */\nexport interface IWebSocketSession {\n readonly isConnected: boolean;\n connectWithUrl(wsUrl: string): Promise<void>;\n disconnect(): Promise<void>;\n sendMessage(type: string, data: unknown): void;\n enableMic(enable: boolean): void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n on(event: string, listener: (...args: any[]) => void): () => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n off(event: string, listener: (...args: any[]) => void): void;\n}\n\n/**\n * Factory function signature used to register a WebSocket transport implementation\n * via {@link ConvaiClient.registerWebSocketTransport}. Import\n * `@convai/web-sdk/vanilla/websocket` (or `@convai/web-sdk/react/websocket`) as a\n * side-effect to register the default Pipecat-based implementation.\n */\nexport type WebSocketSessionFactory = (\n onMessage: (payload: Uint8Array) => void,\n enableMic: boolean,\n) => IWebSocketSession;\n\n/**\n * Options for {@link IConvaiClient.uploadFile}.\n *\n * Supported formats: JPEG, PNG, GIF, WebP. Maximum file size: 10 MB.\n * Files are sent as raw binary over the WebRTC byte stream — not base64 encoded.\n */\nexport interface UploadFileOptions {\n /** Server routing topic. Defaults to `'file-upload'`. */\n topic?: string;\n /**\n * Progress callback. Called with an integer percentage (0–100) as the upload proceeds.\n */\n onProgress?: (progressPercent: number) => void;\n}\n\n/**\n * Extra data returned in a server-response for specific event types.\n */\nexport interface ServerResponseExtras {\n // context-update extras\n token_count?: number;\n static_token_count?: number;\n runtime_token_count?: number;\n max_tokens?: number;\n static_max_tokens?: number;\n runtime_max_tokens?: number;\n remaining_tokens?: number;\n /** Full retained runtime dynamic context text after the update */\n content?: string;\n // tts-toggle extras\n enabled?: boolean;\n // stt-toggle extras\n muted?: boolean;\n // trigger-message extras\n trigger_name?: string;\n has_speak_tag?: boolean;\n // user_text_message extras\n text?: string;\n // kill-pipeline extras\n room_name?: string;\n // unknown-message-type error extras\n supported_types?: string[];\n // vision-status / vision-trigger extras\n vision_buffer?: VisionBufferStatus;\n requested_respond_mode?: RespondMode;\n actual_respond_mode?: RespondMode;\n requested_run_llm?: \"true\" | \"false\" | \"auto\";\n actual_run_llm?: \"true\" | \"false\" | \"auto\";\n llm_triggered?: boolean;\n downgraded?: boolean;\n downgrade_reason?: string | null;\n interrupted?: boolean;\n vision_frames_attached?: number;\n vision_image_tokens_est?: number;\n vision_detail_level?: string | null;\n vision_attach_outcome?: string;\n vision_source_participant?: string | null;\n attached_frame_pts?: number[];\n frame_binding?: string;\n frame_binding_error?: string | null;\n requested_frame_indices?: [number, number] | number[] | null;\n requested_frame_ids?: number[] | null;\n frame_indices_clamped?: boolean;\n frame_ids_stale_exempt?: boolean;\n [key: string]: unknown;\n}\n\n/**\n * Acknowledgment sent by the server for every client-to-server message.\n * Analogous to an HTTP response: use `status` to check success/failure and\n * `extras` for event-specific data such as context token counts.\n *\n * @example\n * ```typescript\n * client.on('serverResponse', (response) => {\n * if (response.event_type === 'context-update') {\n * const { remaining_tokens, max_tokens } = response.extras ?? {};\n * console.log(`Tokens remaining: ${remaining_tokens} / ${max_tokens}`);\n * }\n * if (response.status === 'error') {\n * console.error('Server error:', response.message);\n * }\n * });\n * ```\n */\nexport interface ServerResponse {\n /** The original client message type that triggered this response */\n event_type: string;\n /** Processing status */\n status: 'success' | 'error' | 'processing' | 'pending';\n /** Human-readable description of the result */\n message: string | null;\n /** Additional event-specific data */\n extras: ServerResponseExtras | null;\n}\n\n/**\n * Emitted when the server assigns an interaction ID to the session.\n * Store the interactionId for analytics or session tracking.\n */\nexport interface InteractionCreated {\n /** Unique identifier for this interaction session */\n interactionId: string;\n /** Character session identifier */\n characterSessionId: string;\n}\n\n/**\n * A single action the character performs, emitted via the `actionResponse`\n * event. When `target` is present the action is *parameterized* (the character\n * acts on a specific object/character); simple actions (e.g. `\"Wave\"`) omit it.\n */\nexport interface ConvaiAction {\n /** Base action name, e.g. `\"Move To\"`, `\"Pick Up\"`, `\"Wave\"`. */\n name: string;\n /**\n * The object or character the action targets — must match a name from\n * `actionConfig.objects[]` / `actionConfig.characters[]`. Absent for simple\n * (non-parameterized) actions.\n */\n target?: string;\n}\n\n/**\n * Payload of the `actionResponse` event. Actions execute sequentially; an\n * empty array is a valid \"no action\" turn.\n */\nexport interface ActionResponseEvent {\n actions: ConvaiAction[];\n}\n\n/**\n * Options for updating the bot's temporary runtime context.\n * Provides flexible control over how context is managed during conversation.\n * \n * @example\n * ```typescript\n * // Append to existing context\n * client.updateContext({\n * text: \"User just completed dragon quest\",\n * mode: \"append\",\n * run_llm: \"false\"\n * });\n * \n * // Replace entire context\n * client.updateContext({\n * text: \"New game state: level 5, combat mode\",\n * mode: \"replace\",\n * run_llm: \"auto\"\n * });\n * \n * // Reset/clear context\n * client.updateContext({\n * mode: \"reset\"\n * });\n * ```\n */\nexport interface ContextUpdateOptions {\n /**\n * The context text to inject.\n * Required unless mode is \"reset\" or only current_attention_object is being updated.\n */\n text?: string;\n /**\n * How to apply the context:\n * - \"append\" (default): Add text to existing ephemeral context\n * - \"replace\": Replace existing ephemeral context with new text\n * - \"reset\": Clear ephemeral context; text is optional\n */\n mode?: \"append\" | \"replace\" | \"reset\";\n /**\n * Whether to trigger LLM response:\n * - \"true\": Always trigger a response from the bot and preempt active local playback\n * - \"false\": Never trigger a response\n * - \"auto\" (default): Server decides based on context without preempting active playback\n */\n run_llm?: \"true\" | \"false\" | \"auto\";\n /**\n * Optional respond-mode alias for backends that expose unified respond modes.\n * If `run_llm` is provided, it takes precedence.\n */\n respond_mode?: RespondMode;\n /**\n * The object the character should currently focus on.\n * Must match one of action_config.objects[].name.\n * Pass an empty string to clear current attention.\n */\n current_attention_object?: string;\n}\n\nexport type RespondMode = \"must_respond\" | \"auto\" | \"silent\";\n\nexport type RespondModality =\n | \"text\"\n | \"audio\"\n | \"vision\"\n | \"context_update\"\n | \"trigger\"\n | \"scene_metadata\";\n\nexport interface RespondModesConfig {\n text?: \"must_respond\";\n audio?: \"must_respond\";\n vision?: RespondMode;\n contextUpdate?: RespondMode;\n trigger?: RespondMode;\n sceneMetadata?: RespondMode;\n}\n\nexport interface VisionSamplingWindowConfig {\n count: number;\n intervalMs: number;\n}\n\nexport interface VisionInputConfig {\n /**\n * Enable unified vision context for this session.\n *\n * Defaults to true when enableVideo is true. Set false to keep the video\n * channel available while opting out of unified vision context.\n */\n enabled?: boolean;\n sampleIntervalSecs?: number;\n framesPerTurn?: number;\n bufferFrames?: number;\n samplingWindows?: VisionSamplingWindowConfig[];\n stalenessSeconds?: number;\n maxResolution?: number | null;\n replacePreviousVisionContext?: boolean;\n}\n\nexport interface VisionBufferStatus {\n enabled?: boolean;\n first_frame_pts?: number | null;\n last_frame_pts?: number | null;\n first_frame_index?: number | null;\n retained_frames?: number;\n buffer_frames?: number;\n frames_per_turn?: number;\n replace_previous_vision_context?: boolean;\n evicted_frames?: number;\n effective_fps?: number | null;\n selected_participant?: string | null;\n frames_admitted?: number;\n frames_dropped_foreign_source?: number;\n frames_dropped_inactive_source?: number;\n frames_dropped_rate_limited?: number;\n last_attach?: {\n vision_frames_attached?: number;\n vision_image_tokens_est?: number;\n vision_detail_level?: string | null;\n vision_attach_outcome?: string;\n vision_source_participant?: string | null;\n attached_frame_pts?: number[];\n };\n}\n\nexport interface VisionStatusOptions {\n updateId?: string;\n}\n\nexport interface VisionTriggerOptions {\n updateId?: string;\n text?: string;\n respondMode?: RespondMode;\n frameIndices?: [number, number];\n frameIds?: number[];\n}\n\nexport interface RespondModeUpdateOptions {\n updateId?: string;\n modality: RespondModality;\n mode: RespondMode;\n}\n\nexport interface UpdateSceneMetadataOptions {\n respondMode?: RespondMode;\n}\n\nexport type VisionSourceKind =\n | \"webcam\"\n | \"canvas\"\n | \"screen\"\n | \"custom\"\n // Backward-compatible aliases accepted by the existing SDK surface.\n | \"camera\"\n | \"screen_share\"\n | \"unknown\";\n\nexport interface VisionSourceState {\n active: boolean;\n source: VisionSourceKind | null;\n sourceName: string | null;\n trackState: MediaStreamTrackState | null;\n transport?: \"livekit\" | \"websocket\";\n reason?: string;\n}\n\nexport interface PublishCanvasOptions {\n fps?: number;\n name?: string;\n source?: VisionSourceKind;\n stopTrackOnUnpublish?: boolean;\n}\n\nexport interface PublishVideoTrackOptions {\n name?: string;\n source?: VisionSourceKind;\n /** WebSocket transport frame publish cadence. LiveKit publishes the track continuously. */\n fps?: number;\n stopTrackOnUnpublish?: boolean;\n}\n\nexport interface VisionSourceHandle {\n track: MediaStreamTrack;\n publication?: unknown;\n transport?: \"livekit\" | \"websocket\";\n sourceName: string;\n source: VisionSourceKind;\n stopTrackOnUnpublish: boolean;\n unpublish: () => Promise<void>;\n cleanup?: () => void;\n}\n\n/**\n * Audio processing settings for the microphone input.\n * These settings help optimize the audio quality and reduce interruptions.\n * @internal - This is a fixed configuration and should not be modified by users\n */\nexport interface AudioSettings {\n /** Enable echo cancellation to prevent audio feedback (default: true) */\n echoCancellation?: boolean;\n /** Enable noise suppression to reduce background noise (default: true) */\n noiseSuppression?: boolean;\n /** Enable automatic gain control for consistent volume (default: true) */\n autoGainControl?: boolean;\n /** Audio sample rate in Hz (default: 48000) */\n sampleRate?: number;\n /** Number of audio channels, 1 for mono, 2 for stereo (default: 1) */\n channelCount?: number;\n}\n\n/**\n * Configuration object for connecting to a Convai character.\n * \n * @example\n * ```typescript\n * const config: ConvaiConfig = {\n * apiKey: 'your-api-key',\n * characterId: 'your-character-id',\n * endUserId: 'user-uuid', // Optional: enables long-term memory and analytics\n * enableVideo: false, // If false, connection_type will be \"audio\"\n * };\n * ```\n */\nexport interface ConvaiConfig {\n /** Your Convai API key or Auth Token (at least one is required) */\n apiKey?: string;\n authToken?: string;\n /** The Character ID to connect to (required) */\n characterId: string;\n /** Temporary character state of mind sent as `state_of_mind` on connect. */\n stateOfMind?: string | null;\n /**\n * Stable identifier for the end user (optional).\n *\n * Any non-empty string is accepted. Use a value that uniquely identifies the\n * user across sessions — a UUID or email address are the most common choices:\n *\n * ```ts\n * endUserId: 'a1b2c3d4-...' // UUID (preferred)\n * endUserId: 'user@example.com' // email\n * endUserId: 'device-fingerprint' // any stable unique string\n * ```\n *\n * When provided:\n * - Enables long-term memory: character remembers context from previous sessions\n * - Enables per-user analytics and engagement tracking\n *\n * When omitted the session is anonymous — no memory, no cross-session tracking.\n */\n endUserId?: string;\n /** Optional metadata object for the end user (sent as end_user_metadata to the API) */\n endUserMetadata?: Record<string, unknown>;\n /** Custom Convai API URL (optional, defaults to production endpoint) */\n url?: string;\n /** Transport layer to use. Default: \"livekit\". Use \"websocket\" for Pipecat WebSocket transport. */\n transport?: \"livekit\" | \"websocket\";\n /**\n * Character session ID (optional). Pass to resume an existing session;\n * otherwise populated from the connect API response after first connection.\n */\n characterSessionId?: string;\n /** \n * Enable video capability (default: false).\n * If true, connection_type will be \"video\" (supports audio, video, and screenshare).\n * If false, connection_type will be \"audio\" (audio only).\n */\n enableVideo?: boolean;\n /** \n * Start with video camera on when connecting (default: false).\n * Only works if enableVideo is true. If false, camera stays off until user enables it.\n */\n startWithVideoOn?: boolean;\n /** \n * Start with microphone on when connecting (default: false).\n * If false, microphone stays off until user enables it using audioControls.enableAudio().\n * Useful for text-only modes where you want to defer microphone permission until voice mode.\n */\n startWithAudioOn?: boolean;\n /**\n * Dynamic vision context controls for discrete vision-capable backends.\n * Defaults to enabled when enableVideo=true. Set\n * visionInputConfig.enabled=false to opt out while keeping the video channel.\n */\n visionInputConfig?: VisionInputConfig;\n /** Connect-time respond-mode defaults by modality. */\n respondModes?: RespondModesConfig;\n /** Enable text-to-speech audio generation (default: true) */\n ttsEnabled?: boolean;\n /** \n * Enable lipsync/facial animation blendshapes (default: false).\n * When true, sets blendshape_provider to \"neurosync\".\n * When false, sets blendshape_provider to \"none\" (no facial animation data).\n */\n enableLipsync?: boolean;\n /** Enable emotion detection and bot-emotion updates (default: false) */\n enableEmotion?: boolean;\n /** Blendshape configuration for facial animation format */\n blendshapeConfig?: {\n /** Format of blendshapes: \"arkit\" or \"mha\" (Meta Human Animation, default: \"mha\") */\n format?: \"arkit\" | \"mha\";\n /** \n * Custom mapper function to transform incoming blendshapes.\n * Use this to map Convai blendshapes to your character's morph targets.\n * The function receives the raw blendshape array and should return a Float32Array.\n * \n * @example\n * ```typescript\n * import { createARKitNameMapper } from '@convai/web-sdk/lipsync-helpers';\n * \n * const mapper = createARKitNameMapper({\n * 'Character__Mouth_Open': ['Jaw_Open'],\n * 'Character__EyeL_Blink': ['Eye_Blink_L'],\n * }, 'optimized');\n * \n * const config = {\n * blendshapeConfig: {\n * format: 'arkit',\n * customMapper: mapper,\n * }\n * };\n * ```\n */\n customMapper?: (input: number[] | Float32Array) => Float32Array;\n /** \n * Buffer duration for blendshape frames in seconds (default: 1).\n * Controls how much time the server should wait after generating blendshapes before playing the audio.\n */\n frames_buffer_duration?: number;\n /**\n * Enable server ahead-delivery for NeuroSync chunks.\n *\n * Defaults to `true` when `enableLipsync` is on. The server may send\n * indexed blendshape chunks before audio playback, so use the SDK\n * BlendshapeQueue/player path, which handles owner-scoped cancellation and\n * buffered-frame drops on interruption.\n *\n * Set `false` to fall back to the legacy paced delivery path.\n */\n deliver_chunks_ahead?: boolean;\n /**\n * Requested ahead-delivery blendshape timeline FPS.\n * Applies to the ahead-delivery path, where chunks carry fps\n * metadata for the SDK player. The legacy paced path keeps its fixed 90fps\n * delivery cadence for backward compatibility while SDK playback remains on\n * the normal visual timeline.\n */\n output_fps?: number;\n };\n /** Emotion configuration for character emotional state (sent to server on connect) */\n emotionConfig?:\n | {\n /** LLM-based emotion detection — infers emotion from response context (default) */\n provider: \"llm\";\n }\n | {\n /** NRCLex word-level lexicon lookup */\n provider: \"nrclex\";\n /** Minimum word threshold for emotion detection */\n min_word_threshold?: number;\n /** Low intensity threshold (0–1) */\n low_intensity_threshold?: number;\n /** High intensity threshold (0–1) */\n high_intensity_threshold?: number;\n };\n /** Configuration for character actions and environmental context */\n actionConfig?: {\n /** List of action names the character can perform */\n actions: string[];\n /** Other characters present in the scene or conversation */\n characters: Array<{\n /** Character name */\n name: string;\n /** Character biography or description */\n bio: string;\n }>;\n /** Objects available in the scene or environment */\n objects: Array<{\n /** Object name */\n name: string;\n /** Object description or properties */\n description: string;\n }>;\n /** Name of the object the character is currently focused on. Must match one of objects[].name. */\n current_attention_object?: string;\n };\n /** \n * Dynamic contextual information about the current situation.\n * This can be updated during the conversation to provide real-time context.\n * Use the DynamicInfo type to pass flexible key-value pairs with a required \"text\" field.\n */\n dynamicInfo?: DynamicInfo;\n /**\n * Template key values for Narrative Design placeholder substitution,\n * sent as `narrative_template_keys` in the /connect request.\n *\n * Narrative Design section objectives and speak tags may contain\n * placeholders such as `{player_name}` or `{quest_item}`; they are replaced\n * with these values when the section is evaluated, so one narrative graph\n * can serve many personalized sessions. Keys are case-sensitive; missing\n * keys resolve to an empty string.\n *\n * To change the keys mid-session, call `updateTemplateKeys()` — it replaces\n * this same map at runtime (before the next trigger fires).\n *\n * @example\n * ```typescript\n * const client = new ConvaiClient({\n * apiKey: 'your-api-key',\n * characterId: 'your-character-id',\n * narrativeTemplateKeys: {\n * player_name: 'Alex',\n * location: 'Engineering Deck',\n * quest_item: 'oxygen generator',\n * },\n * });\n * ```\n */\n narrativeTemplateKeys?: Record<string, string>;\n /**\n * Keep dynamic info in context as a static prompt (default: false).\n * \n * When true:\n * - Dynamic info behaves as a static prompt sent to the LLM for that WebRTC connection\n * - Dynamic info persists throughout the session\n * - You need to set it again after disconnecting/reconnecting\n * \n * When false:\n * - Allows resetting and updating via updateContext() or updateDynamicInfo()\n * - Dynamic info can be changed during the session\n */\n keepInContext?: boolean;\n /** \n * Enable debug mode for additional logging and diagnostics (default: false).\n */\n debug?: boolean;\n /**\n * Log decoded RTVI data messages to the browser console (default: true).\n * Set to false to silence incoming and outgoing RTVI message logs.\n */\n logRtviMessages?: boolean;\n /** \n * Metadata about the invocation source and client information.\n * Used for analytics and debugging purposes.\n */\n invocationMetadata?: {\n /** Source of the invocation (e.g., \"web\", \"mobile\", \"unity\") */\n source?: string;\n /** Client SDK version */\n clientVersion?: string;\n /** Additional custom metadata */\n extraMetadata?: Record<string, unknown>;\n };\n}\n\n/**\n * Represents a single message in the chat conversation.\n * Different message types are used for various parts of the conversation flow.\n */\nexport interface ChatMessage {\n /** Unique identifier for the message */\n id: string;\n /** \n * Type of message:\n * - `user`: User's sent message\n * - `convai`: Character's response\n * - `user-transcription`: Real-time speech-to-text from user\n * - `bot-llm-text`: Character's LLM-generated text (token-by-token streaming)\n * - `bot-output`: Aggregated bot output (sentence/word-level chunks with spoken status)\n * - `emotion`: Character's emotional state\n * - `behavior-tree`: Behavior tree response\n * - `action`: Action execution\n * - `bot-emotion`: Bot emotional response\n * - `user-llm-text`: User text processed by LLM\n * - `interrupt-bot`: Interrupt the bot's current response\n * - `idle-warning`: Server idle-timeout warning; `content` holds remaining seconds as a numeric string (e.g. `\"45\"`)\n * - `llm-no-response`: LLM deliberately did not respond (abstain); `content` is always `\"\"`\n */\n type: 'user' | 'convai' | 'emotion' | 'behavior-tree' | 'action' | 'user-transcription' | 'bot-llm-text' | 'bot-output' | 'bot-emotion' | 'user-llm-text' | 'interrupt-bot' | 'idle-warning' | 'llm-no-response';\n /** The text content of the message */\n content: string;\n /** ISO timestamp string of when the message was created */\n timestamp: string;\n /** Whether this message is still streaming (mutable); false when finalized */\n isStreaming?: boolean;\n}\n\n/**\n * Represents a single metrics event from the server.\n * Multiple metrics may be received during a conversation.\n */\nexport interface ConvaiMetrics {\n /** Raw metrics data from the server */\n data: Record<string, unknown>;\n /** Timestamp when the metrics were received */\n timestamp: string;\n /** Unique identifier for this metrics event */\n id: string;\n}\n\n/**\n * Represents the current state of the Convai client connection and activity.\n * Use this to provide UI feedback about the conversation state.\n * \n * @example\n * ```typescript\n * const { state } = convaiClient;\n * \n * if (state.isConnected) {\n * console.log('Connected to character');\n * }\n * \n * if (state.isSpeaking) {\n * console.log('Character is speaking');\n * }\n * \n * // Or use the combined state\n * console.log(state.agentState); // 'listening' | 'thinking' | 'speaking'\n * \n * // Access end user information\n * console.log(state.endUserId); // 'user@example.com'\n * console.log(state.endUserMetadata); // { name: 'John', age: '30' }\n * \n * // Access metrics for the current conversation\n * console.log(state.metrics); // Array of metrics events\n * \n * // Check disconnect reason\n * if (state.disconnectReason !== null) {\n * console.log('Disconnected due to:', state.disconnectReason);\n * }\n * ```\n */\nexport interface ConvaiClientState {\n /** Whether the client is currently connected to Convai */\n isConnected: boolean;\n /** Whether a connection attempt is in progress */\n isConnecting: boolean;\n /** True from user-started-speaking until user-stopped-speaking (user is speaking, bot is listening). Priority below isSpeaking. */\n isListening: boolean;\n /** Whether the character is processing/thinking about a response */\n isThinking: boolean;\n /** Whether the character is currently speaking */\n isSpeaking: boolean;\n /** \n * Combined state indicator for the character's current activity.\n * Priority: speaking > listening (user speaking) > thinking > connected.\n */\n agentState: 'disconnected' | 'connected' | 'listening' | 'thinking' | 'speaking';\n /** Current bot emotion (name and optional scale). Updated when bot-emotion messages are received. */\n emotion: { emotion: string; scale?: number } | null;\n /** \n * End user ID returned from the connection response.\n * This is the actual end user ID used by the server (may differ from the one provided in config).\n */\n endUserId: string | null;\n /** \n * End user metadata returned from the connection response.\n * Contains additional information about the end user.\n */\n endUserMetadata: Record<string, unknown> | null;\n /** \n * Array of metrics events received during the current session.\n * Multiple metrics may be received per conversation.\n * Clears when resetSession() is called.\n */\n metrics: ConvaiMetrics[];\n /** \n * Disconnect reason from LiveKit when disconnected.\n * null when connected, otherwise contains the reason code.\n * Use this to differentiate between client-initiated disconnects and network/server issues.\n * \n * Notable reasons:\n * - CLIENT_INITIATED (1): User disconnected intentionally\n * - DUPLICATE_IDENTITY (2): Another client with same identity joined\n * - SERVER_SHUTDOWN (3): Server shutting down\n * - PARTICIPANT_REMOVED (4): Removed by API\n * - ROOM_DELETED (5): Room was ended\n * \n * Non-CLIENT_INITIATED reasons may indicate network disruptions where reconnection is appropriate.\n * \n * @see DisconnectReason\n */\n disconnectReason: DisconnectReason | null;\n}\n\n/**\n * Audio control interface for managing microphone\n */\nexport interface AudioControls {\n isAudioEnabled: boolean;\n isAudioMuted: boolean;\n audioLevel: number;\n enableAudio: () => Promise<void>;\n disableAudio: () => Promise<void>;\n muteAudio: () => Promise<void>;\n unmuteAudio: () => Promise<void>;\n toggleAudio: () => Promise<void>;\n setAudioDevice: (deviceId: string) => Promise<void>;\n getAudioDevices: () => Promise<MediaDeviceInfo[]>;\n startAudioLevelMonitoring: () => void;\n stopAudioLevelMonitoring: () => void;\n // EventEmitter methods for React integration\n on: (event: string, callback: (...args: any[]) => void) => () => void;\n off: (event: string, callback: (...args: any[]) => void) => void;\n}\n\n/**\n * Video control interface for managing camera\n */\nexport interface VideoControls {\n isVideoEnabled: boolean;\n isVideoHidden: boolean;\n activeVisionSource: VisionSourceHandle | null;\n hasActiveVisionSource: boolean;\n visionSourceState: VisionSourceState;\n enableVideo: () => Promise<void>;\n disableVideo: () => Promise<void>;\n hideVideo: () => Promise<void>;\n showVideo: () => Promise<void>;\n toggleVideo: () => Promise<void>;\n setVideoDevice: (deviceId: string) => Promise<void>;\n getVideoDevices: () => Promise<MediaDeviceInfo[]>;\n setVideoQuality: (quality: 'low' | 'medium' | 'high') => Promise<void>;\n publishCanvas: (\n canvas: HTMLCanvasElement,\n options?: PublishCanvasOptions,\n ) => Promise<VisionSourceHandle>;\n publishVideoTrack: (\n track: MediaStreamTrack,\n options?: PublishVideoTrackOptions,\n ) => Promise<VisionSourceHandle>;\n unpublishVisionSource: (\n source?: VisionSourceHandle | MediaStreamTrack,\n ) => Promise<void>;\n // EventEmitter methods for React integration\n on: (event: string, callback: (...args: any[]) => void) => () => void;\n off: (event: string, callback: (...args: any[]) => void) => void;\n}\n\n/**\n * Screen share control interface\n */\nexport interface ScreenShareControls {\n isScreenShareEnabled: boolean;\n isScreenShareActive: boolean;\n enableScreenShare: () => Promise<void>;\n disableScreenShare: () => Promise<void>;\n toggleScreenShare: () => Promise<void>;\n enableScreenShareWithAudio: () => Promise<void>;\n getScreenShareTracks: () => Promise<any[]>;\n // EventEmitter methods for React integration\n on: (event: string, callback: (...args: any[]) => void) => () => void;\n off: (event: string, callback: (...args: any[]) => void) => void;\n}\n\n/**\n * Main Convai client interface.\n * Provides complete control over Convai character connections and interactions.\n * \n * @example\n * ```typescript\n * import { ConvaiClient } from '@convai/web-sdk/core';\n * \n * const client = new ConvaiClient();\n * \n * // Connect to character\n * await client.connect({\n * apiKey: 'your-api-key',\n * characterId: 'your-character-id',\n * endUserId: '-1' // Dev mode\n * });\n * \n * // Send a message\n * client.sendUserTextMessage('Hello!');\n * \n * // Listen for state changes\n * client.on('stateChange', (state) => {\n * console.log('State:', state);\n * });\n * \n * // Listen for messages\n * client.on('message', (message) => {\n * console.log('New message:', message);\n * });\n * ```\n */\n/**\n * Memory API Types\n * Types for Convai's long-term memory management APIs\n */\n\n/**\n * Memory object returned from the API\n */\nexport interface Memory {\n /** Unique memory identifier (UUID) */\n id: string;\n /** Memory text content */\n memory: string;\n /** ISO timestamp when the memory was created */\n created_at: string;\n /** ISO timestamp when the memory was last updated */\n updated_at: string;\n}\n\n/**\n * Memory event object from add operation\n */\nexport interface MemoryAddEvent {\n /** Memory identifier */\n id: string;\n /** Event type (always \"ADD\" for add operations) */\n event: 'ADD';\n /** Memory text content */\n memory: string;\n}\n\n/**\n * Request to add memories\n */\nexport interface MemoryAddRequest {\n /** Character UUID */\n character_id: string;\n /** End user identifier */\n end_user_id: string;\n /** Array of memory strings to add */\n memories: string[];\n}\n\n/**\n * Response from add memories operation\n */\nexport interface MemoryAddResponse {\n /** Array of added memories with their IDs */\n memories: MemoryAddEvent[];\n}\n\n/**\n * Request to list memories with pagination\n */\nexport interface MemoryListRequest {\n /** Character UUID */\n character_id: string;\n /** End user identifier */\n end_user_id: string;\n /** Page number (default: 1, clamped to 1-1000) */\n page?: number;\n /** Number of memories per page (default: 50, clamped to 1-100) */\n page_size?: number;\n}\n\n/**\n * Response from list memories operation\n */\nexport interface MemoryListResponse {\n /** Array of memories */\n memories: Memory[];\n /** Total count of memories for this character/user pair */\n total_count: number;\n /** Current page number */\n page: number;\n /** Number of memories per page */\n page_size: number;\n /** Whether there are more pages available */\n has_more: boolean;\n}\n\n/**\n * Request to get a single memory\n */\nexport interface MemoryGetRequest {\n /** Character UUID */\n character_id: string;\n /** End user identifier */\n end_user_id: string;\n /** Memory UUID to fetch */\n memory_id: string;\n}\n\n/**\n * Response from get memory operation\n */\nexport type MemoryGetResponse = Memory;\n\n/**\n * Request to delete a memory\n */\nexport interface MemoryDeleteRequest {\n /** Character UUID */\n character_id: string;\n /** End user identifier */\n end_user_id: string;\n /** Memory UUID to delete */\n memory_id: string;\n}\n\n/**\n * Response from delete memory operation\n */\nexport interface MemoryDeleteResponse {\n /** Success message */\n message: string;\n /** Memory ID that was deleted */\n memory_id: string;\n /** Whether the memory was successfully deleted */\n deleted: boolean;\n}\n\n/**\n * Request to delete all memories\n */\nexport interface MemoryDeleteAllRequest {\n /** Character UUID */\n character_id: string;\n /** End user identifier */\n end_user_id: string;\n}\n\n/**\n * Response from delete all memories operation\n */\nexport interface MemoryDeleteAllResponse {\n /** Status message (deletion is asynchronous) */\n message: string;\n /** Character ID for which memories are being deleted */\n character_id: string;\n /** End user ID for which memories are being deleted */\n end_user_id: string;\n}\n\n/**\n * Error response from Memory API\n */\nexport interface MemoryError {\n /** Error message */\n ERROR: string;\n /** Transaction reference ID for debugging */\n 'Reference ID': string;\n}\n\nexport interface IConvaiClient {\n /** Current connection and activity state of the client */\n readonly state: ConvaiClientState;\n \n /** \n * Connection type: \"audio\" (audio only) or \"video\" (audio + video + screenshare).\n * Set based on enableVideo in connect config.\n */\n readonly connectionType: 'audio' | 'video' | null;\n \n /** API key used for the current connection, if apiKey was used (null otherwise) */\n readonly apiKey?: string | null;\n\n /** Auth token used for the current connection, if authToken was used (null otherwise) */\n readonly authToken?: string | null;\n\n /** Character ID used for the current connection (null if not connected) */\n readonly characterId: string | null;\n \n /** Internal LiveKit Room instance (for advanced usage) */\n readonly room: Room;\n \n /** Array of all chat messages in the current conversation */\n readonly chatMessages: ChatMessage[];\n \n /** Current real-time transcription of user speech */\n readonly userTranscription: string;\n \n /** Unique session ID for the current character conversation */\n readonly characterSessionId: string | null;\n \n /** Whether the bot is ready to receive messages (true after bot-ready message) */\n readonly isBotReady: boolean;\n \n /** Audio control methods for managing microphone mute/unmute */\n readonly audioControls: AudioControls;\n \n /** Video control methods for enabling/disabling camera */\n readonly videoControls: VideoControls;\n \n /** Screen sharing control methods */\n readonly screenShareControls: ScreenShareControls;\n \n /** Blendshape queue for time-based lipsync synchronization */\n readonly blendshapeQueue: BlendshapeQueue;\n \n /** Incremental turn session ID used by conversation events (e.g. conversationStart, turnEnd) */\n readonly conversationSessionId: number;\n \n /** \n * Memory manager for long-term memory operations.\n * Returns null if no API key or end user ID is available.\n * \n * @example\n * ```typescript\n * const memoryManager = client.memoryManager;\n * if (memoryManager) {\n * const memories = await memoryManager.listMemories();\n * }\n * ```\n */\n readonly memoryManager: import('./MemoryManager').MemoryManager | null;\n \n /** \n * Connect to a Convai character.\n */\n connect: (config?: ConvaiConfig) => Promise<void>;\n \n /** Disconnect from the current character session */\n disconnect: () => Promise<void>;\n \n /** Reconnect - disconnect and connect again using stored config */\n reconnect: () => Promise<void>;\n \n /** Reset the session ID to start a new conversation (clears history) */\n resetSession: () => void;\n \n /** Send a text message to the character */\n sendUserTextMessage: (text: string) => void;\n \n /** \n * Send a trigger message to invoke specific character actions or responses.\n * @param triggerName - Name of the trigger to invoke\n * @param triggerMessage - Optional message to accompany the trigger\n */\n sendTriggerMessage: (triggerName?: string, triggerMessage?: string) => void;\n \n /**\n * Send an interrupt message to stop the bot's current response.\n * This can be used to interrupt the bot when the user wants to speak.\n */\n sendInterruptMessage: () => void;\n\n /**\n * Reset the server-side idle timer.\n * Call this on any user activity (clicks, UI interactions, etc.) to prevent\n * the session from being disconnected due to inactivity.\n * The server sends `user-idle-warning` events (via the `idleWarning` event) before\n * disconnecting; use this method to keep the session alive.\n */\n resetIdleTimer: () => void;\n \n /**\n * Replace the Narrative Design template keys on the live session.\n *\n * These are the same keys as the `narrativeTemplateKeys` config option\n * (which seeds them at `/connect`) — this method REPLACES the entire map\n * at runtime, so include every key you still need. New values apply when\n * the next section objective or speak tag is evaluated (i.e. set them\n * before firing the next narrative trigger).\n *\n * Requires a character with Narrative Design enabled; otherwise the server\n * acks `update-template-keys` with error \"Narrative design service not\n * available\". Placeholders use single braces (`{player_name}`), keys are\n * case-sensitive, and missing keys resolve to an empty string.\n *\n * @example\n * ```typescript\n * client.updateTemplateKeys({ player_name: 'Aria', quest_item: 'lantern' });\n * client.sendTriggerMessage('QuestUpdate');\n * ```\n */\n updateTemplateKeys: (templateKeys: { [key: string]: string }) => void;\n \n /** \n * Update dynamic information about the current context.\n * This helps the character understand the current situation.\n * Pass any key-value pairs you want, but \"text\" field is required.\n */\n updateDynamicInfo: (dynamicInfo: DynamicInfo) => void;\n \n /**\n * Update the bot's temporary runtime context in a unified way.\n * Provides flexible control over ephemeral context management.\n * \n * @param options - Context update configuration\n * \n * @example\n * ```typescript\n * // Append to context\n * client.updateContext({ \n * text: \"User completed quest\", \n * mode: \"append\",\n * run_llm: \"false\"\n * });\n * \n * // Replace context\n * client.updateContext({ \n * text: \"New game state\", \n * mode: \"replace\",\n * run_llm: \"auto\"\n * });\n * \n * // Clear context\n * client.updateContext({ mode: \"reset\" });\n * ```\n */\n updateContext: (options: ContextUpdateOptions) => void;\n\n /** Request a server ack containing the current vision buffer status. */\n visionStatus: (options?: VisionStatusOptions) => string | null;\n\n /** Attach buffered frames and optionally trigger a response. */\n visionTrigger: (options?: VisionTriggerOptions) => string | null;\n\n /** Update a session respond-mode default. */\n respondModeUpdate: (options: RespondModeUpdateOptions) => string | null;\n\n /**\n * Set or clear the character's temporary state of mind without triggering a response.\n * Pass `null` (or `\"neutral\"`) to clear it.\n */\n updateEmotion: (stateOfMind: string | null) => void;\n\n /**\n * Send descriptive scene updates so the bot knows what is visible or nearby.\n * Does not modify actionConfig.\n */\n updateSceneMetadata: (\n items: Array<{ name: string; description: string }>,\n options?: UpdateSceneMetadataOptions,\n ) => void;\n\n /**\n * Toggle text-to-speech on or off.\n * When disabled, character responses won't be spoken aloud.\n */\n toggleTts: (enabled: boolean) => void;\n \n /** \n * Toggle speech-to-text on or off.\n * When enabled, user speech is transcribed to text (e.g. for dictation).\n * When disabled, STT is off.\n */\n toggleStt: (enabled: boolean) => void;\n\n /**\n * Upload a file to the character via the LiveKit byte stream transport.\n * Only works when connected with the LiveKit transport.\n *\n * @param file - The File object to send\n * @param options - Optional upload options\n * @returns Promise that resolves when the upload is complete\n *\n * @example\n * ```typescript\n * await client.uploadFile(file, {\n * topic: 'file-upload',\n * onProgress: (pct) => console.log(`${pct}% uploaded`),\n * });\n * ```\n */\n uploadFile: (file: File, options?: UploadFileOptions) => Promise<void>;\n\n /**\n * Subscribe to an event\n * @param event Event name ('stateChange', 'message', 'connect', 'disconnect', 'error')\n * @param callback Callback function\n * @returns Unsubscribe function\n */\n on: (event: string, callback: (...args: any[]) => void) => () => void;\n \n /**\n * Unsubscribe from an event\n * @param event Event name\n * @param callback Callback function to remove\n */\n off: (event: string, callback: (...args: any[]) => void) => void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"videoSourceState.js","sourceRoot":"","sources":["../../src/core/videoSourceState.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAClC,MAAgC;IAEhC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,aAA+B,EAC/B,UAA4B,EAC5B,mBAA4B;IAE5B,OAAO,CACL,CAAC,mBAAmB;QACpB,oBAAoB,CAAC,aAAa,CAAC;QACnC,oBAAoB,CAAC,UAAU,CAAC,CACjC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"videoSourceState.js","sourceRoot":"","sources":["../../src/core/videoSourceState.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,oBAAoB,CAClC,MAAgC;IAEhC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,aAA+B,EAC/B,UAA4B,EAC5B,mBAA4B;IAE5B,OAAO,CACL,CAAC,mBAAmB;QACpB,oBAAoB,CAAC,aAAa,CAAC;QACnC,oBAAoB,CAAC,UAAU,CAAC,CACjC,CAAC;AACJ,CAAC","sourcesContent":["import type { VisionSourceKind } from \"./types\";\n\nexport function isWebcamVisionSource(\n source?: VisionSourceKind | null,\n): boolean {\n return source === \"webcam\" || source === \"camera\";\n}\n\nexport function shouldKeepExistingVisionSource(\n currentSource: VisionSourceKind,\n nextSource: VisionSourceKind,\n hasReplacementTrack: boolean,\n): boolean {\n return (\n !hasReplacementTrack &&\n isWebcamVisionSource(currentSource) &&\n isWebcamVisionSource(nextSource)\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"visionRequest.js","sourceRoot":"","sources":["../../src/core/visionRequest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,MAA+D;IAE/D,IAAI,MAAM,CAAC,iBAAiB,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,iBAAiB,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,iBAAiB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAyB;IAEzB,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,IAAI;YAC7C,oBAAoB,EAAE,MAAM,CAAC,kBAAkB;SAChD,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI;YACxC,eAAe,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI;YACvC,aAAa,EAAE,MAAM,CAAC,YAAY;SACnC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI;YAC1C,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,UAAU;aAC/B,CAAC,CAAC;SACJ,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI;YAC3C,iBAAiB,EAAE,MAAM,CAAC,gBAAgB;SAC3C,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI;YACxC,cAAc,EAAE,MAAM,CAAC,aAAa;SACrC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,4BAA4B,KAAK,SAAS,IAAI;YACvD,+BAA+B,EAAE,MAAM,CAAC,4BAA4B;SACrE,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"visionRequest.js","sourceRoot":"","sources":["../../src/core/visionRequest.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,wBAAwB,CACtC,MAA+D;IAE/D,IAAI,MAAM,CAAC,iBAAiB,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,iBAAiB,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO;YACL,GAAG,CAAC,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC;YACnC,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,iBAAiB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAyB;IAEzB,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS,IAAI;YAC7C,oBAAoB,EAAE,MAAM,CAAC,kBAAkB;SAChD,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI;YACxC,eAAe,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,YAAY,KAAK,SAAS,IAAI;YACvC,aAAa,EAAE,MAAM,CAAC,YAAY;SACnC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,eAAe,KAAK,SAAS,IAAI;YAC1C,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACxD,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,UAAU;aAC/B,CAAC,CAAC;SACJ,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,IAAI;YAC3C,iBAAiB,EAAE,MAAM,CAAC,gBAAgB;SAC3C,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI;YACxC,cAAc,EAAE,MAAM,CAAC,aAAa;SACrC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,4BAA4B,KAAK,SAAS,IAAI;YACvD,+BAA+B,EAAE,MAAM,CAAC,4BAA4B;SACrE,CAAC;KACH,CAAC;AACJ,CAAC","sourcesContent":["import type { ConvaiConfig, VisionInputConfig } from \"./types\";\n\nexport function resolveVisionInputConfig(\n config: Pick<ConvaiConfig, \"enableVideo\" | \"visionInputConfig\">,\n): VisionInputConfig | undefined {\n if (config.visionInputConfig?.enabled === false) {\n return config.visionInputConfig;\n }\n if (config.enableVideo) {\n return {\n ...(config.visionInputConfig ?? {}),\n enabled: true,\n };\n }\n return config.visionInputConfig;\n}\n\nexport function serializeVisionInputConfig(\n config: VisionInputConfig,\n): Record<string, unknown> {\n return {\n ...(config.enabled !== undefined && { enabled: config.enabled }),\n ...(config.sampleIntervalSecs !== undefined && {\n sample_interval_secs: config.sampleIntervalSecs,\n }),\n ...(config.framesPerTurn !== undefined && {\n frames_per_turn: config.framesPerTurn,\n }),\n ...(config.bufferFrames !== undefined && {\n buffer_frames: config.bufferFrames,\n }),\n ...(config.samplingWindows !== undefined && {\n sampling_windows: config.samplingWindows.map((window) => ({\n count: window.count,\n interval_ms: window.intervalMs,\n })),\n }),\n ...(config.stalenessSeconds !== undefined && {\n staleness_seconds: config.stalenessSeconds,\n }),\n ...(config.maxResolution !== undefined && {\n max_resolution: config.maxResolution,\n }),\n ...(config.replacePreviousVisionContext !== undefined && {\n replace_previous_vision_context: config.replacePreviousVisionContext,\n }),\n };\n}\n"]}