diff --git a/package.json b/package.json index de330d97..6409435e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@d-id/client-sdk", "private": false, - "version": "1.1.33", + "version": "1.1.34", "type": "module", "description": "d-id client sdk", "repository": { diff --git a/src/services/socket-manager/message-queue.ts b/src/services/socket-manager/message-queue.ts index d2d26571..1e5160a9 100644 --- a/src/services/socket-manager/message-queue.ts +++ b/src/services/socket-manager/message-queue.ts @@ -110,10 +110,12 @@ export function createMessageEventQueue( ) { let chatEventQueue: ChatEventQueue = {}; const clearQueue = () => (chatEventQueue = {}); + let lastMessageType: 'answer' | 'partial' | 'user' = 'answer'; const onNewMessage: AgentManagerOptions['callbacks']['onNewMessage'] = (messages, event) => { if (event === 'user') { clearQueue(); } + lastMessageType = event; options.callbacks.onNewMessage?.(messages, event); }; @@ -145,7 +147,19 @@ export function createMessageEventQueue( if (event === SEvent.StreamVideoCreated) { analytics.linkTrack('agent-video', props, SEvent.StreamVideoCreated, ['start']); - } else if (completedEvents.includes(event)) { + + // Attach sentiment to the last assistant message if present + if (data.sentiment) { + const lastMessage = items.messages[items.messages.length - 1]; + if (lastMessage?.role === 'assistant') { + const updatedMessage = { ...lastMessage, sentiment: data.sentiment }; + items.messages[items.messages.length - 1] = updatedMessage; + onNewMessage?.([...items.messages], lastMessageType); + } + } + } + + if (completedEvents.includes(event)) { // Stream video event const streamEvent = event.split('/')[1]; diff --git a/src/services/streaming-manager/livekit-manager.ts b/src/services/streaming-manager/livekit-manager.ts index df0191f9..61c12ff0 100644 --- a/src/services/streaming-manager/livekit-manager.ts +++ b/src/services/streaming-manager/livekit-manager.ts @@ -4,6 +4,7 @@ import { ConnectivityState, CreateSessionV2Options, CreateStreamOptions, + Message, PayloadType, StreamEvents, StreamingManagerOptions, @@ -69,6 +70,8 @@ export enum DataChannelTopic { Interrupt = 'did.interrupt', } +type VideoMessageData = Pick; + export function handleInitError( error: unknown, log: (message?: any, ...optionalParams: any[]) => void, @@ -320,9 +323,17 @@ export async function createLiveKitStreamingManager