@inworld/web-core
Version:
138 lines (137 loc) • 6.12 kB
TypeScript
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 {};