From e7a2bce950e0b9a0d259903e5988ac3b6450777c Mon Sep 17 00:00:00 2001 From: Dor Eitan Date: Mon, 22 Dec 2025 14:40:04 +0200 Subject: [PATCH 1/2] bump 1.1.20 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index f58fe079..6df1288b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "@d-id/client-sdk", "private": false, - "version": "1.1.19", + "version": "1.1.20", "type": "module", "description": "d-id client sdk", "repository": { From fc1200abb3084ae03606f143b7e2cb7ec692f17b Mon Sep 17 00:00:00 2001 From: ReutAtias3 <141619499+ReutAtias3@users.noreply.github.com> Date: Tue, 23 Dec 2025 12:26:44 +0200 Subject: [PATCH 2/2] Update endpoint (#246) * Update endpoint * review * tsc * prettier * test --------- Co-authored-by: Arik Sfaradi --- src/api/streams/streamsApiV2.ts | 6 +-- .../agent-manager/connect-to-manager.test.ts | 5 +-- .../agent-manager/connect-to-manager.ts | 45 ++++++++++--------- src/services/streaming-manager/common.ts | 4 +- .../streaming-manager/factory.test.ts | 6 +-- src/services/streaming-manager/factory.ts | 6 +-- .../streaming-manager/livekit-manager.ts | 39 +++++++--------- src/types/stream/streams-v2.ts | 13 +++--- 8 files changed, 59 insertions(+), 65 deletions(-) diff --git a/src/api/streams/streamsApiV2.ts b/src/api/streams/streamsApiV2.ts index da256947..1d5e7818 100644 --- a/src/api/streams/streamsApiV2.ts +++ b/src/api/streams/streamsApiV2.ts @@ -1,4 +1,4 @@ -import { Auth, CreateStreamV2Options, CreateStreamV2Response } from '@sdk/types'; +import { Auth, CreateSessionV2Options, CreateSessionV2Response } from '@sdk/types'; import { createClient } from '../apiClient'; export function createStreamApiV2( @@ -10,8 +10,8 @@ export function createStreamApiV2( const client = createClient(auth, `${host}/v2/agents/${agentId}`, onError); return { - async createStream(options: CreateStreamV2Options) { - return client.post('/streams', options); + async createStream(options: CreateSessionV2Options) { + return client.post('/sessions', options); }, }; } diff --git a/src/services/agent-manager/connect-to-manager.test.ts b/src/services/agent-manager/connect-to-manager.test.ts index 22dfa89c..6cf2763b 100644 --- a/src/services/agent-manager/connect-to-manager.test.ts +++ b/src/services/agent-manager/connect-to-manager.test.ts @@ -525,10 +525,9 @@ describe('connect-to-manager', () => { { version: StreamApiVersion.V2, transport_provider: TransportProvider.Livekit, - chat_id: 'chat-123', }, - expect.objectContaining({ - chatId: 'chat-123', + expect.not.objectContaining({ + chatId: expect.anything(), }) ); }); diff --git a/src/services/agent-manager/connect-to-manager.ts b/src/services/agent-manager/connect-to-manager.ts index 107980f0..a9ee16e0 100644 --- a/src/services/agent-manager/connect-to-manager.ts +++ b/src/services/agent-manager/connect-to-manager.ts @@ -14,8 +14,8 @@ import { ChatMode, ChatProgressCallback, ConnectionState, + CreateSessionV2Options, CreateStreamOptions, - CreateStreamV2Options, StreamEvents, StreamType, StreamingState, @@ -26,10 +26,10 @@ import { Analytics } from '../analytics/mixpanel'; import { interruptTimestampTracker, latencyTimestampTracker } from '../analytics/timestamp-tracker'; import { createChat } from '../chat'; -function getAgentStreamV2Options(options?: ConnectToManagerOptions): CreateStreamV2Options { +const ChatPrefix = 'cht'; +function getAgentStreamV2Options(): CreateSessionV2Options { return { transport_provider: TransportProvider.Livekit, - chat_id: options?.chatId, }; } @@ -56,7 +56,7 @@ function getAgentStreamV1Options(options?: ConnectToManagerOptions): CreateStrea function getAgentStreamOptions(agent: Agent, options?: ConnectToManagerOptions): ExtendedStreamOptions { return isStreamsV2Agent(agent.presenter.type) - ? { version: StreamApiVersion.V2, ...getAgentStreamV2Options(options) } + ? { version: StreamApiVersion.V2, ...getAgentStreamV2Options() } : { version: StreamApiVersion.V1, ...getAgentStreamV1Options(options) }; } @@ -169,12 +169,12 @@ function connectToManager( agent: Agent, options: ConnectToManagerOptions, analytics: Analytics -): Promise> { +): Promise> { latencyTimestampTracker.reset(); return new Promise(async (resolve, reject) => { try { - let streamingManager: StreamingManager; + let streamingManager: StreamingManager; let shouldResolveOnComplete = false; streamingManager = await createStreamingManager(agent, getAgentStreamOptions(agent, options), { @@ -240,22 +240,27 @@ export async function initializeStreamAndChat( agentsApi: AgentsAPI, analytics: Analytics, chat?: Chat -): Promise<{ chat?: Chat; streamingManager?: StreamingManager }> { +): Promise<{ chat?: Chat; streamingManager?: StreamingManager }> { const resolveStreamAndChat = async () => { if (isStreamsV2Agent(agent.presenter.type)) { - const chatResult = await createChat( - agent, - agentsApi, - analytics, - options.mode, - options.persistentChat, - chat - ); - const streamingManager = await connectToManager( - agent, - { ...options, chatId: chatResult.chat?.id }, - analytics - ); + const streamingManager = await connectToManager(agent, options, analytics); + const chatId = `${ChatPrefix}_${streamingManager.sessionId}`; + const now = new Date().toISOString(); + + const chatResult = { + chatMode: ChatMode.Functional, + chat: { + id: chatId, + agent_id: agent.id, + owner_id: agent.owner_id ?? '', + created: now, + modified: now, + agent_id__created_at: now, + agent_id__modified_at: now, + chat_mode: ChatMode.Functional, + messages: [], + }, + }; return { chatResult, streamingManager }; } else { const createChatPromise = createChat( diff --git a/src/services/streaming-manager/common.ts b/src/services/streaming-manager/common.ts index 60752df7..434c79ab 100644 --- a/src/services/streaming-manager/common.ts +++ b/src/services/streaming-manager/common.ts @@ -1,4 +1,4 @@ -import { CreateStreamOptions, CreateStreamV2Options, PayloadType, StreamType } from '@sdk/types'; +import { CreateSessionV2Options, CreateStreamOptions, PayloadType, StreamType } from '@sdk/types'; export const createStreamingLogger = (debug: boolean, prefix: string) => (message: string, extra?: any) => debug && console.log(`[${prefix}] ${message}`, extra ?? ''); @@ -7,7 +7,7 @@ export const createStreamingLogger = (debug: boolean, prefix: string) => (messag * Shared type for all streaming managers (LiveKit, WebRTC, etc.) * This type represents the return value of any streaming manager implementation */ -export type StreamingManager = { +export type StreamingManager = { /** * Method to send request to server to get clip or talk depending on payload * @param payload The payload to send to the streaming service diff --git a/src/services/streaming-manager/factory.test.ts b/src/services/streaming-manager/factory.test.ts index 7982ba2b..2dbb2244 100644 --- a/src/services/streaming-manager/factory.test.ts +++ b/src/services/streaming-manager/factory.test.ts @@ -1,7 +1,7 @@ import { AgentFactory, StreamingManagerOptionsFactory } from '../../test-utils/factories'; import { + CreateSessionV2Options, CreateStreamOptions, - CreateStreamV2Options, Providers, StreamingManagerOptions, TransportProvider, @@ -80,9 +80,9 @@ describe('createStreamingManager', () => { }, }); - const v2StreamOptions: CreateStreamV2Options = { + const v2StreamOptions: CreateSessionV2Options = { transport_provider: TransportProvider.Livekit, - chat_id: 'chat-123', + chat_persist: true, }; await createStreamingManager(agent, { version: StreamApiVersion.V2, ...v2StreamOptions }, mockOptions); diff --git a/src/services/streaming-manager/factory.ts b/src/services/streaming-manager/factory.ts index 865f7019..e3a282ee 100644 --- a/src/services/streaming-manager/factory.ts +++ b/src/services/streaming-manager/factory.ts @@ -1,7 +1,7 @@ import { Agent, + CreateSessionV2Options, CreateStreamOptions, - CreateStreamV2Options, StreamingManagerOptions, TransportProvider, } from '@sdk/types'; @@ -15,13 +15,13 @@ export enum StreamApiVersion { export type ExtendedStreamOptions = | ({ version: StreamApiVersion.V1 } & CreateStreamOptions) - | ({ version: StreamApiVersion.V2 } & CreateStreamV2Options); + | ({ version: StreamApiVersion.V2 } & CreateSessionV2Options); export async function createStreamingManager( agent: Agent, streamOptions: ExtendedStreamOptions, options: StreamingManagerOptions -): Promise> { +): Promise> { const agentId = agent.id; switch (streamOptions.version) { diff --git a/src/services/streaming-manager/livekit-manager.ts b/src/services/streaming-manager/livekit-manager.ts index cb0f166a..a6f1a37d 100644 --- a/src/services/streaming-manager/livekit-manager.ts +++ b/src/services/streaming-manager/livekit-manager.ts @@ -2,8 +2,8 @@ import { AgentActivityState, ConnectionState, ConnectivityState, + CreateSessionV2Options, CreateStreamOptions, - CreateStreamV2Options, PayloadType, StreamEvents, StreamingManagerOptions, @@ -65,29 +65,22 @@ export function handleInitError( log('Failed to connect to LiveKit room:', error); markInitialConnectionDone(); callbacks.onConnectionStateChange?.(ConnectionState.Fail); - callbacks.onError?.(error as Error, { streamId: '' }); + callbacks.onError?.(error as Error, { sessionId: '' }); throw error; } -export async function createLiveKitStreamingManager( +export async function createLiveKitStreamingManager( agentId: string, - agent: T, + sessionOptions: CreateSessionV2Options, options: StreamingManagerOptions ): Promise> { const log = createStreamingLogger(options.debug || false, 'LiveKitStreamingManager'); - const { - Room, - RoomEvent, - ConnectionState: LiveKitConnectionState, - RemoteParticipant, - RemoteTrack, - } = await importLiveKit(); + const { Room, RoomEvent, ConnectionState: LiveKitConnectionState } = await importLiveKit(); const { callbacks, auth, baseURL, analytics } = options; let room: Room | null = null; let isConnected = false; - let videoId: string | null = null; const streamType = StreamType.Fluent; let isInitialConnection = true; let sharedMediaStream: MediaStream | null = null; @@ -98,7 +91,6 @@ export async function createLiveKitStreamingManager