UNPKG

@inworld/web-core

Version:
138 lines (137 loc) 6.12 kB
import { ClientRequest } from '../../proto/ai/inworld/engine/world-engine.pb.js'; import { InworldPacket as ProtoPacket } from '../../proto/ai/inworld/packets/packets.pb.js'; import { AudioSessionState, Awaitable, CancelResponsesProps, ChangeSceneProps, ClientConfiguration, ConversationState, GenerateSessionTokenFn, InternalClientConfiguration, User } from '../common/data_structures/index.js'; import { ConvesationInterface, Extension } from '../common/data_structures/extension.js'; import { HistoryChangedProps, HistoryItem } from '../common/data_structures/history.js'; import { InworldHistory } from '../components/history.js'; import { GrpcAudioPlayback } from '../components/sound/grpc_audio.playback.js'; import { GrpcWebRtcLoopbackBiDiSession } from '../components/sound/grpc_web_rtc_loopback_bidi.session.js'; import { Character } from '../entities/character.entity.js'; import { SessionContinuation } from '../entities/continuation/session_continuation.entity.js'; import { InworldError } from '../entities/error.entity.js'; import { InworldPacket } from '../entities/packets/inworld_packet.entity.js'; import { SessionToken } from '../entities/session_token.entity.js'; import { EventFactory } from '../factories/event.js'; interface ConnectionProps<InworldPacketT extends InworldPacket = InworldPacket, HistoryItemT extends HistoryItem = HistoryItem> { name: string; user?: User; client?: ClientRequest; config?: ClientConfiguration; sessionContinuation?: SessionContinuation; onReady?: () => Awaitable<void>; onError?: (err: InworldError) => Awaitable<void>; onMessage?: (packet: InworldPacketT) => Awaitable<void>; onWarning?: (packet: InworldPacketT) => Awaitable<void>; onDisconnect?: () => Awaitable<void>; onInterruption?: (props: CancelResponsesProps) => Awaitable<void>; onHistoryChange?: (history: HistoryItem[], props: HistoryChangedProps<HistoryItemT>) => Awaitable<void>; grpcAudioPlayer: GrpcAudioPlayback<InworldPacketT>; webRtcLoopbackBiDiSession: GrpcWebRtcLoopbackBiDiSession; generateSessionToken: GenerateSessionTokenFn; extension?: Extension<InworldPacketT, HistoryItemT>; } export declare class ConnectionService<InworldPacketT extends InworldPacket = InworldPacket, HistoryItemT extends HistoryItem = HistoryItem> { private player; private state; private audioSessionAction; private scene; private config; private characterMapping; private sceneIsLoaded; private session; private connection; private connectionProps; private eventFactory; private intervals; private packetQueue; private packetQueuePercievedLatency; private disconnectTimeoutId; private reconnectTimeoutId; private currentAudioConversation; readonly onDisconnect: () => Awaitable<void>; readonly onError: (err: InworldError) => Awaitable<void>; readonly onWarning: (message: InworldPacketT) => Awaitable<void>; readonly onMessage: (packet: ProtoPacket) => Awaitable<void>; readonly onReady: () => Awaitable<void>; readonly onHistoryChange: (history: HistoryItem[], props: HistoryChangedProps<HistoryItemT>) => Awaitable<void> | undefined; readonly history: InworldHistory; readonly conversations: Map<string, { service: ConvesationInterface<InworldPacketT>; state: ConversationState; }>; private cancelResponses; private extension; private MAX_LATENCY_QUEUE_SIZE; private previousError; private packetsInProgress; constructor(props?: ConnectionProps<InworldPacketT, HistoryItemT>); isActive(): boolean; isConnecting(): boolean; isInactive(): boolean; isAutoReconnected(): boolean; getSceneName(): string; getSessionId(): string; getCurrentAudioConversation(): ConvesationInterface<InworldPacketT>; setCurrentAudioConversation(conversation?: ConvesationInterface<InworldPacketT>): void; openManually(): Promise<void>; close(): Promise<void>; getHistory(): HistoryItem[]; clearHistory(): void; getEventFactory(): EventFactory; getTranscript(): string; getConfig(): InternalClientConfiguration; getClientConfig(): ClientConfiguration; getCharacters(): Promise<Character[]>; getCurrentCharacter(): Promise<Character>; getCharactersByIds(ids: string[]): Character[]; getCharactersByResourceNames(names: string[]): Character[]; setCurrentCharacter(character: Character): void; removeCharacters(names: string[]): void; open({ force }?: { force?: boolean; }): Promise<void>; change(name: string, props?: ChangeSceneProps): Promise<void>; send(getPacket: () => ProtoPacket, props?: { enforceHighPriority?: boolean; }): Promise<InworldPacketT>; setAudioSessionAction(action: AudioSessionState): void; getAudioSessionAction(): AudioSessionState; interrupt(): Promise<void>; private write; private afterWriting; private beforeWriting; private getActualCharacterId; private loadToken; ensureSessionToken(props?: { beforeLoading: () => void; }): Promise<SessionToken>; addInterval(interval: NodeJS.Timeout): void; removeInterval(interval: NodeJS.Timeout): void; markPacketAsHandled(packet: InworldPacket): void; private scheduleDisconnect; private setPreviousState; private cancelScheduler; private cancelReconnectScheduler; private reopenConversations; private releaseQueue; private clearQueue; private onReadyHandler; private onDisconnectHandler; private onErrorHandler; private onWarningHandler; private onMessageHandler; private onHistoryChangeHandler; private initializeConnection; private initializeExtension; private interruptByPacket; private sendCancelResponses; private addPacketToHistory; private getPacketsToSentOnOpen; private ensureCurrentCharacter; private setSceneFromProtoEvent; private buildConfiguration; private ensureGateway; private pushToPerceivedLatencyQueue; private findLastAudioSessionIndexes; } export {};