@kaltura-sdk/avatars 1.14.0
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.
- package/README.md +1 -0
- package/index.d.ts +1 -0
- package/index.esm.js +24265 -0
- package/package.json +30 -0
- package/src/index.d.ts +5 -0
- package/src/lib/analytics.d.ts +27 -0
- package/src/lib/avatar-client-manager/avatar-client-manager.d.ts +174 -0
- package/src/lib/avatar-client-manager/index.d.ts +3 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/analytics/send-avatar-answer-analytics-event.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/analytics/send-avatar-conversation-started-analytics-event.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/append-avatar-chat-entry.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/append-user-chat-entry.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/append-user-text-entry.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/capture-user-mute-state-before-tap-to-talk.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/capture-user-mute-state.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/cleanup-rtc-and-set-peer-id.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/clear-caption-state.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/increment-agent-recovery-retry-count.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/increment-config-retry.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/log-agent-client-tool-call-result.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/log-agent-raw-text-message.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/log-analysis-ready-fallback.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/log-tap-to-talk-dropped.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/record-client-tool-call-log-entry.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/reset-agent-recovery-retry-count.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-agent-talking.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-caption-state.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-cast-mode.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-client-configuration.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-content-data.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-disconnect-data.d.ts +8 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-kaltura-context-is-active.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-peer-id.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-request-vars.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-screen-analysis-ready.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-screen-share-active.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-screen-share-stream.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-server-config.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-session-id.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-session-kickoff-required.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-tap-to-talk-active.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-tap-to-talk-button-visible.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-tap-to-talk-enabled.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-tap-to-talk-started-at.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-thread-id.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-user-agent-data.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/context/set-webrtc-url.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/external/publish-toggle-kaltura-context-active.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/notifications/show-agent-recovery-exhausted-notification.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/notifications/show-disconnect-notification.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/notifications/show-screen-share-error-notification.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/notifications/show-time-warning-notification.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/rtc/leave-asr.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/rtc/mute-asr.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/rtc/restore-mute-state-after-tap-to-talk.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/rtc/unmute-asr-for-tap-to-talk.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/rtc/unmute-asr.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/extend-pause-timeout.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-approved-permissions.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-ask-via-text.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-create-session.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-join-room.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-pause-conversation.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-reprocess-turn.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-resume-conversation.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-screen-share-pending.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-screen-share-started.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-screen-share-stopped.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-tap-to-talk-end.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-tap-to-talk-start.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/send-update-genie-context.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actions/server/toggle-tap-to-talk-mode.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/agent-recovery-monitor.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/connect-to-asr.d.ts +21 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/connect-web-socket.d.ts +11 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/destroy-connection.d.ts +6 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/get-user-agent-data.d.ts +7 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/get-user-media.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/init-rtc-session.d.ts +19 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-agent-client-tool-call.d.ts +10 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-agent-data.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-agent-raw-text.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-agent-start-speech.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-agent-talking.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-captions.d.ts +9 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-chat-log.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-conversation-ended.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-conversation-resumed.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-conversation-time-warning.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-error.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-init-response.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-join-room.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-kaltura-context-is-active-change.d.ts +7 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-pause-expiry-events.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-player-ready-state.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-resuming-session.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-screen-analysis-ready.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-server-connected.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-server-ready.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-session-created.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-session-kickoff-events.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-session-ready-for-resume.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-tap-to-talk-button-events.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/on-websocket-non-recovered-reconnect.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/resolve-server-config.d.ts +6 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/screen-capture-cycle.d.ts +7 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/actors/send-form-data.d.ts +11 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/avatar-connection-machine.d.ts +798 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/definitions.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/global-events.d.ts +3 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/had-avatar-type-in-turn.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/has-more-config-retries.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/has-more-recovery-retries.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-agent-talking.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-analysis-not-ready.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-captions-enabled.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-empty-agent-content.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-form-content.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-kaltura-context-enabled.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-session-kickoff-active.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-session-kickoff-requested.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-tap-to-talk-enabled.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/is-text-chat-enabled.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/just-exceeded-recovery-retries.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-create-websocket-connection.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-disable-tap-to-talk-mode.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-disconnect.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-enable-tap-to-talk-mode.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-show-device-permissions-denied.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-wait-before-purge.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/guards/should-wait-player-ready-state.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/index.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-state.d.ts +751 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/agent-recovery-monitor-state.d.ts +28 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/captions-state.d.ts +50 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/content-state.d.ts +21 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/conversation-state.d.ts +52 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/genie-intellect-state.d.ts +27 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/kaltura-context-state.d.ts +34 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/pause-lifecycle-state.d.ts +134 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/screen-sharing-state.d.ts +123 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/session-kickoff-state.d.ts +61 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/tap-to-talk-state.d.ts +153 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connected-states/text-communication-state.d.ts +49 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/connecting-state.d.ts +400 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/disconnected-state.d.ts +26 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/disconnecting-state.d.ts +54 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/error-state.d.ts +5 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/index.d.ts +6 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/states/preparing-state.d.ts +67 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/types/context.d.ts +90 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/types/events.d.ts +274 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/types/index.d.ts +26 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/types/input.d.ts +30 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/types/notifications.d.ts +4 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/types/schemas.d.ts +105 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/utils/agent-raw-text-blocks-creator.d.ts +32 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/utils/index.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/utils/resolve-active-kaltura-context.d.ts +2 -0
- package/src/lib/avatar-client-manager/machines/avatar-connection/utils/resolve-capabilities.d.ts +10 -0
- package/src/lib/avatar-client-manager/types.d.ts +4 -0
- package/src/lib/avatar-client-manager/utils/actor-manager.d.ts +54 -0
- package/src/lib/avatar-client-manager/utils/set-if-changed.d.ts +2 -0
- package/src/lib/server/avatar-rtc-client-manager.d.ts +104 -0
- package/src/lib/server/index.d.ts +2 -0
- package/src/lib/server/websocket-client-manager.d.ts +44 -0
- package/src/lib/timing-tracker.d.ts +158 -0
- package/src/lib/utils/create-tiny-pubsub-events-handler.d.ts +10 -0
- package/src/lib/utils/create-tiny-pubsub-events-source.d.ts +27 -0
- package/src/lib/utils/get-query-param.d.ts +4 -0
- package/src/lib/utils/index.d.ts +5 -0
- package/src/lib/utils/is-mobile-device.d.ts +8 -0
- package/src/lib/utils/logger-factory.d.ts +2 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { AnyActorRef, SnapshotFrom } from 'xstate';
|
|
2
|
+
import { TinyDataStore } from '@unisphere/core';
|
|
3
|
+
export type ActorSnapshot<TActor extends AnyActorRef> = SnapshotFrom<TActor>;
|
|
4
|
+
interface StoreBinding<TSnapshot> {
|
|
5
|
+
skip?: (snapshot: TSnapshot) => boolean;
|
|
6
|
+
apply: (snapshot: TSnapshot) => void;
|
|
7
|
+
reset: () => void;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Generic engine bridging one xstate actor to a set of `TinyDataStore`s:
|
|
11
|
+
* owns the actor's lifecycle (start/subscribe/stop), replays snapshots into
|
|
12
|
+
* bound stores, and resets/cleans up on disconnect. Knows nothing about
|
|
13
|
+
* avatars specifically — domain state and terminal-state detection are
|
|
14
|
+
* supplied by subclasses via the hooks below.
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class ActorManager<TActor extends AnyActorRef> {
|
|
17
|
+
protected _actor: TActor | null;
|
|
18
|
+
private _subscriptions;
|
|
19
|
+
/**
|
|
20
|
+
* Bindings registered by `_select()` below. Rebuilding all of them to
|
|
21
|
+
* their initial value (`_resetConnectionState`) is what replaces "throw
|
|
22
|
+
* away the old proxy instance and create a fresh one" on every
|
|
23
|
+
* disconnect/reconnect cycle.
|
|
24
|
+
*/
|
|
25
|
+
protected readonly _storeBindings: StoreBinding<ActorSnapshot<TActor>>[];
|
|
26
|
+
/**
|
|
27
|
+
* Registers a piece of connection state derived from the xstate snapshot.
|
|
28
|
+
* Cuts the old "TinyDataStore field + StoreBinding entry + getter" trio
|
|
29
|
+
* down to a single field declaration per property.
|
|
30
|
+
*/
|
|
31
|
+
protected _select<T>(initialValue: T, extract: (snapshot: ActorSnapshot<TActor>) => T, options?: {
|
|
32
|
+
equals?: (a: T, b: T) => boolean;
|
|
33
|
+
skip?: (snapshot: ActorSnapshot<TActor>) => boolean;
|
|
34
|
+
}): TinyDataStore<T>;
|
|
35
|
+
protected _setupActorSync(actor: TActor): void;
|
|
36
|
+
private _sync;
|
|
37
|
+
protected _resetConnectionState(): void;
|
|
38
|
+
protected _cleanupConnection(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Domain state derived from the snapshot that isn't a plain `_select`
|
|
41
|
+
* binding (cross-references external state, combines multiple checks,
|
|
42
|
+
* etc). Runs after all bindings have been applied.
|
|
43
|
+
*/
|
|
44
|
+
protected abstract _syncDerivedState(snapshot: ActorSnapshot<TActor>): void;
|
|
45
|
+
/** Whether this snapshot means the connection is done and should be torn down. */
|
|
46
|
+
protected abstract _isTerminalSnapshot(snapshot: ActorSnapshot<TActor>): boolean;
|
|
47
|
+
/** Called once, right after the first sync, before subscribing to further updates. */
|
|
48
|
+
protected abstract _onSetupActorSync(actor: TActor): void;
|
|
49
|
+
/** Called after all bindings have been reset back to their initial values. */
|
|
50
|
+
protected abstract _onReset(): void;
|
|
51
|
+
/** Called once, right before the actor is stopped. */
|
|
52
|
+
protected abstract _onCleanup(): void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { IceCandidateData } from '@kaltura-sdk/rtc-avatar';
|
|
2
|
+
import { DeviceType, GetUserMediaEveObj } from '@kaltura-sdk/rtc-core';
|
|
3
|
+
import { UserDevicesList } from '@unisphere/genie-types';
|
|
4
|
+
export interface RTCClientConfig {
|
|
5
|
+
turnServerUrl: string;
|
|
6
|
+
noiseReductionEnabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface SignalingCallbacks {
|
|
9
|
+
sendOfferCallback: (connectionId: string, offer: RTCSessionDescriptionInit, isReconnect: boolean) => Promise<RTCSessionDescriptionInit>;
|
|
10
|
+
sendICECandidateCallback: (connectionId: string, candidate: IceCandidateData) => Promise<void>;
|
|
11
|
+
}
|
|
12
|
+
export interface RTCClientStatus {
|
|
13
|
+
isInitialized: boolean;
|
|
14
|
+
hasSession: boolean;
|
|
15
|
+
asrConnected: boolean;
|
|
16
|
+
stvConnected: boolean;
|
|
17
|
+
}
|
|
18
|
+
export type AudioState = {
|
|
19
|
+
muted: boolean;
|
|
20
|
+
isSpeaking: boolean;
|
|
21
|
+
};
|
|
22
|
+
declare class AvatarRTCClientManager {
|
|
23
|
+
private _session;
|
|
24
|
+
private _isInitialized;
|
|
25
|
+
private _asrConnection;
|
|
26
|
+
private _stvConnection;
|
|
27
|
+
private _onStvConnectedCallback;
|
|
28
|
+
private _devicesList;
|
|
29
|
+
private _audioState;
|
|
30
|
+
private _audioVolumeLevel;
|
|
31
|
+
private _lastVolumeUpdateAt;
|
|
32
|
+
private _subscriptions;
|
|
33
|
+
private _unsubscribeConnectionState;
|
|
34
|
+
private _unsubscribeDevicesListChange;
|
|
35
|
+
private _unsubscribeDeviceChanged;
|
|
36
|
+
private _setupWSEventListeners;
|
|
37
|
+
private _setupAudioStateListeners;
|
|
38
|
+
private _updateAudioState;
|
|
39
|
+
get devicesList(): import("@unisphere/core").TinyDataStoreConsumer<UserDevicesList | null>;
|
|
40
|
+
get audioState(): import("@unisphere/core").TinyDataStoreConsumer<AudioState>;
|
|
41
|
+
get audioVolumeLevel(): import("@unisphere/core").TinyDataStoreConsumer<number>;
|
|
42
|
+
/**
|
|
43
|
+
* Initialize the eSelf SDK session
|
|
44
|
+
* Must be called before getUserMedia or joinASR
|
|
45
|
+
*/
|
|
46
|
+
initSession(config: RTCClientConfig): Promise<void>;
|
|
47
|
+
parseNoiseReductionParams(configEnabled?: boolean): {
|
|
48
|
+
nrEnabled: boolean;
|
|
49
|
+
nrMode: number;
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Get user media (microphone) via the SDK
|
|
53
|
+
* The SDK handles audio constraints internally
|
|
54
|
+
*/
|
|
55
|
+
getUserMedia(): Promise<{
|
|
56
|
+
gumResult: GetUserMediaEveObj;
|
|
57
|
+
stream: MediaStream | null;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Join ASR (Automatic Speech Recognition) connection with WebRTC
|
|
61
|
+
*
|
|
62
|
+
* @param signalingCallbacks - Callbacks for WebRTC signaling (offer/answer/ICE)
|
|
63
|
+
* @param sessionId - Session identifier (typically the socket peerId)
|
|
64
|
+
*/
|
|
65
|
+
joinASR(signalingCallbacks: SignalingCallbacks, sessionId: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* Leave ASR connection
|
|
68
|
+
*/
|
|
69
|
+
leaveASR(): void;
|
|
70
|
+
/**
|
|
71
|
+
* Join STV (Streaming Video) connection for avatar playback
|
|
72
|
+
* The SDK injects a <video> element into the container identified by videoContainerId
|
|
73
|
+
*
|
|
74
|
+
* @param videoContainerId - DOM element ID for the video container
|
|
75
|
+
* @param sessionId - STV session/stream identifier
|
|
76
|
+
* @param stvUrl - STV WHEP endpoint URL
|
|
77
|
+
* @param onConnected - Callback fired when the WebRTC peer connection is established
|
|
78
|
+
*/
|
|
79
|
+
joinSTV(videoContainerId: string, sessionId: string, stvUrl: string, onConnected: () => void): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Leave STV connection
|
|
82
|
+
*/
|
|
83
|
+
leaveSTV(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Get current connection status
|
|
86
|
+
*/
|
|
87
|
+
getStatus(): RTCClientStatus;
|
|
88
|
+
/**
|
|
89
|
+
* Leave ASR/STV peer connections without destroying the underlying session.
|
|
90
|
+
* Use on WS reconnect: the EselfSession, user media, and device listeners stay
|
|
91
|
+
* alive so connectToASR can rejoin without re-initializing from scratch.
|
|
92
|
+
*/
|
|
93
|
+
leaveConnections(): void;
|
|
94
|
+
/**
|
|
95
|
+
* Cleanup and destroy the SDK session
|
|
96
|
+
* Call this when disconnecting or on error
|
|
97
|
+
*/
|
|
98
|
+
cleanup(): void;
|
|
99
|
+
getDevices(): Promise<UserDevicesList>;
|
|
100
|
+
changeDevice(deviceType: DeviceType, deviceId: string): Promise<boolean>;
|
|
101
|
+
toggleMuteAudio(muted: boolean): Promise<void>;
|
|
102
|
+
}
|
|
103
|
+
export declare const avatarRTCClientManager: AvatarRTCClientManager;
|
|
104
|
+
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { Socket } from '../vendor/socket-io-esm';
|
|
2
|
+
import { TinyDataStore, TinyPubSub } from '@unisphere/core';
|
|
3
|
+
export declare const websocketRecoveryState: TinyDataStore<{
|
|
4
|
+
status: 'connected' | 'recovering' | 'disconnected';
|
|
5
|
+
}>;
|
|
6
|
+
export declare function resetWebsocketClientTeardownState(): void;
|
|
7
|
+
export declare const websocketMessage: TinyPubSub<{
|
|
8
|
+
name: string;
|
|
9
|
+
payload: unknown;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const websocketSystemMessage: TinyPubSub<{
|
|
12
|
+
name: string;
|
|
13
|
+
payload: unknown;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const websocketNonRecoveredReconnect: TinyPubSub<{
|
|
16
|
+
newSocketId: string;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const websocketDebugInfo: TinyDataStore<{
|
|
19
|
+
hostName: string;
|
|
20
|
+
socketId: string;
|
|
21
|
+
partnerId: string;
|
|
22
|
+
}>;
|
|
23
|
+
interface WebsocketClientManager {
|
|
24
|
+
createClient(serverUrl: string, query: Record<string, string>, params: {
|
|
25
|
+
ks: string;
|
|
26
|
+
}): Socket;
|
|
27
|
+
getClient(serverUrl: string): Socket | null;
|
|
28
|
+
destroyClient(serverUrl: string): void;
|
|
29
|
+
destroyAllClients(): void;
|
|
30
|
+
}
|
|
31
|
+
declare class DefaultWebsocketClientManager implements WebsocketClientManager {
|
|
32
|
+
private _instances;
|
|
33
|
+
constructor();
|
|
34
|
+
private _handleMessage;
|
|
35
|
+
createClient(serverUrl: string, query: Record<string, any>, params: {
|
|
36
|
+
ks: string;
|
|
37
|
+
}): Socket;
|
|
38
|
+
getClient(serverUrl: string): Socket | null;
|
|
39
|
+
destroyClient(serverUrl: string): void;
|
|
40
|
+
destroyAllClients(): void;
|
|
41
|
+
}
|
|
42
|
+
export declare const websocketClientManager: DefaultWebsocketClientManager;
|
|
43
|
+
export declare function initializeLogsCollectionIfNeeded(conversationManagerUrl: string, partnerId?: string, flowId?: string, ks?: string): void;
|
|
44
|
+
export {};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Avatar Timing Tracker Module
|
|
3
|
+
*
|
|
4
|
+
* Centralized module for tracking performance timing throughout the avatar connection session.
|
|
5
|
+
*
|
|
6
|
+
* TIMING FLOW OVERVIEW:
|
|
7
|
+
* ======================
|
|
8
|
+
* STEP 1: User clicks "Talk to Agent" → Runtime connects
|
|
9
|
+
* Measures: Initial button click to runtime connection
|
|
10
|
+
* Parameters: buttonClickTime → runtimeConnectTime
|
|
11
|
+
*
|
|
12
|
+
* STEP 2: Runtime connect → WebSocket connected
|
|
13
|
+
* Measures: WebSocket establishment
|
|
14
|
+
* Parameters: runtimeConnectTime → websocketConnectedTime
|
|
15
|
+
*
|
|
16
|
+
* STEP 3: WebSocket connected → Session created
|
|
17
|
+
* Measures: Backend session creation (join room + create session)
|
|
18
|
+
* Parameters: websocketConnectedTime → sessionCreatedTime
|
|
19
|
+
*
|
|
20
|
+
* STEP 4: Session created → User media granted
|
|
21
|
+
* Measures: User microphone permission and getUserMedia
|
|
22
|
+
* Parameters: sessionCreatedTime → userMediaGrantedTime
|
|
23
|
+
*
|
|
24
|
+
* STEP 5: User media granted → ASR WebRTC connected
|
|
25
|
+
* Measures: ASR peer connection establishment
|
|
26
|
+
* Parameters: userMediaGrantedTime → asrConnectedTime
|
|
27
|
+
* Sub-steps:
|
|
28
|
+
* 5a: ASR init signal sent
|
|
29
|
+
* 5b: ASR backend ready
|
|
30
|
+
* 5c: ASR peer connection established
|
|
31
|
+
*
|
|
32
|
+
* STEP 6: Session created → Video player URL available
|
|
33
|
+
* Measures: Time from session to video player component initialization
|
|
34
|
+
* Parameters: sessionCreatedTime → playerUrlAvailableTime
|
|
35
|
+
*
|
|
36
|
+
* STEP 7: Player URL available → SRS WebRTC connected
|
|
37
|
+
* Measures: SRS WHEP video connection establishment
|
|
38
|
+
* Parameters: playerUrlAvailableTime → srsWebrtcConnectedTime
|
|
39
|
+
* Sub-steps:
|
|
40
|
+
* 7a: SRS player manager start
|
|
41
|
+
* 7b: ICE gathering
|
|
42
|
+
* 7c: WHEP request
|
|
43
|
+
* 7d: Peer connection established
|
|
44
|
+
*
|
|
45
|
+
* STEP 8: SRS connected → Video playing
|
|
46
|
+
* Measures: Time from connection to first video frame
|
|
47
|
+
* Parameters: srsWebrtcConnectedTime → videoPlayingTime
|
|
48
|
+
*
|
|
49
|
+
* FILES INVOLVED:
|
|
50
|
+
* ===============
|
|
51
|
+
* - avatar-launcher-button.tsx: Sets buttonClickTime
|
|
52
|
+
* - runtime.tsx: Sets runtimeConnectTime
|
|
53
|
+
* - connecting-state.ts: Sets websocketConnectedTime, sessionCreatedTime
|
|
54
|
+
* - init-rtc-session.ts: Sets userMediaGrantedTime
|
|
55
|
+
* - connect-to-asr.ts: Sets asrInitSignalTime, asrBackendReadyTime, asrConnectedTime
|
|
56
|
+
* - avatar.tsx: Sets playerUrlAvailableTime
|
|
57
|
+
* - SRSWebRTCPlayerManager.ts: Sets srsWebrtcStartTime, srsWebrtcConnectedTime, videoPlayingTime
|
|
58
|
+
*
|
|
59
|
+
* WHEN TO RESET:
|
|
60
|
+
* ==============
|
|
61
|
+
* Call timingTracker.reset() at:
|
|
62
|
+
* - Start of new avatar connection (avatar-launcher-button.tsx before connection)
|
|
63
|
+
* - After connection is closed (avatar-client-manager.ts disconnect)
|
|
64
|
+
*
|
|
65
|
+
* Usage:
|
|
66
|
+
* ```ts
|
|
67
|
+
* import { timingTracker } from './timing-tracker';
|
|
68
|
+
*
|
|
69
|
+
* // Reset for new session
|
|
70
|
+
* timingTracker.reset();
|
|
71
|
+
*
|
|
72
|
+
* // Set a timing value
|
|
73
|
+
* timingTracker.buttonClickTime = performance.now();
|
|
74
|
+
*
|
|
75
|
+
* // Get a timing value
|
|
76
|
+
* const startTime = timingTracker.buttonClickTime;
|
|
77
|
+
*
|
|
78
|
+
* // Log summary
|
|
79
|
+
* timingTracker.logSummary();
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
declare class AvatarTimingTracker {
|
|
83
|
+
/**
|
|
84
|
+
* When "Talk to Agent" button is clicked by user
|
|
85
|
+
* Set in: avatar-launcher-button.tsx - handleLaunchAvatar()
|
|
86
|
+
*/
|
|
87
|
+
buttonClickTime: DOMHighResTimeStamp | null;
|
|
88
|
+
/**
|
|
89
|
+
* When runtime.connect() is called
|
|
90
|
+
* Set in: runtime.tsx - connect() method
|
|
91
|
+
*/
|
|
92
|
+
runtimeConnectTime: DOMHighResTimeStamp | null;
|
|
93
|
+
/**
|
|
94
|
+
* When WebSocket connection is established
|
|
95
|
+
* Set in: connecting-state.ts - connectingWebsocket onDone transition
|
|
96
|
+
*/
|
|
97
|
+
websocketConnectedTime: DOMHighResTimeStamp | null;
|
|
98
|
+
/**
|
|
99
|
+
* When stvNewSession request is sent to backend
|
|
100
|
+
* Set in: send-create-session.ts - when stvNewSession is emitted
|
|
101
|
+
*/
|
|
102
|
+
sessionRequestSentTime: DOMHighResTimeStamp | null;
|
|
103
|
+
/**
|
|
104
|
+
* When session is created (has sessionId and webrtcUrl)
|
|
105
|
+
* Set in: connecting-state.ts - creatingSession onDone transition
|
|
106
|
+
*/
|
|
107
|
+
sessionCreatedTime: DOMHighResTimeStamp | null;
|
|
108
|
+
/**
|
|
109
|
+
* When user grants microphone permission and getUserMedia completes
|
|
110
|
+
* Set in: init-rtc-session.ts - after getUserMedia() succeeds
|
|
111
|
+
*/
|
|
112
|
+
userMediaGrantedTime: DOMHighResTimeStamp | null;
|
|
113
|
+
/**
|
|
114
|
+
* When ASR init signal is sent to backend
|
|
115
|
+
* Set in: connect-to-asr.ts - after asr-webrtc-init emit
|
|
116
|
+
*/
|
|
117
|
+
asrInitSignalTime: DOMHighResTimeStamp | null;
|
|
118
|
+
/**
|
|
119
|
+
* When backend signals ASR is ready
|
|
120
|
+
* Set in: connect-to-asr.ts - on asr-webrtc-ready event
|
|
121
|
+
*/
|
|
122
|
+
asrBackendReadyTime: DOMHighResTimeStamp | null;
|
|
123
|
+
/**
|
|
124
|
+
* When ASR WebRTC peer connection is fully established
|
|
125
|
+
* Set in: connect-to-asr.ts - after joinASR() completes
|
|
126
|
+
*/
|
|
127
|
+
asrConnectedTime: DOMHighResTimeStamp | null;
|
|
128
|
+
/**
|
|
129
|
+
* When video player component receives URL and starts initialization
|
|
130
|
+
* Set in: avatar.tsx - when SRSWebRTCPlayer is rendered
|
|
131
|
+
*/
|
|
132
|
+
playerUrlAvailableTime: DOMHighResTimeStamp | null;
|
|
133
|
+
/**
|
|
134
|
+
* When SRS player manager starts connection process
|
|
135
|
+
* Set in: SRSWebRTCPlayerManager.ts - start() method begin
|
|
136
|
+
*/
|
|
137
|
+
srsWebrtcStartTime: DOMHighResTimeStamp | null;
|
|
138
|
+
/**
|
|
139
|
+
* When SRS WHEP WebRTC peer connection is established
|
|
140
|
+
* Set in: SRSWebRTCPlayerManager.ts - onconnectionstatechange when state='connected'
|
|
141
|
+
*/
|
|
142
|
+
srsWebrtcConnectedTime: DOMHighResTimeStamp | null;
|
|
143
|
+
/**
|
|
144
|
+
* When video element starts playing (first frame visible)
|
|
145
|
+
* Set in: SRSWebRTCPlayerManager.ts - video.play().then()
|
|
146
|
+
*/
|
|
147
|
+
videoPlayingTime: DOMHighResTimeStamp | null;
|
|
148
|
+
/**
|
|
149
|
+
* Reset all timing values (useful for new sessions)
|
|
150
|
+
*/
|
|
151
|
+
reset(): void;
|
|
152
|
+
/**
|
|
153
|
+
* Log complete timing summary
|
|
154
|
+
*/
|
|
155
|
+
logSummary(): void;
|
|
156
|
+
}
|
|
157
|
+
export declare const timingTracker: AvatarTimingTracker;
|
|
158
|
+
export {};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { EventPayloads, EventsData, TinyPubsubEventsSource } from './create-tiny-pubsub-events-source';
|
|
2
|
+
import { UnisphereLoggerType } from '@unisphere/core';
|
|
3
|
+
export type EventsHandlersMap<TEvents extends EventsData> = {
|
|
4
|
+
[K in keyof TEvents]?: (payload: EventPayloads<TEvents>[K]) => void;
|
|
5
|
+
};
|
|
6
|
+
export declare const createTinyPubsubEventsHandler: <TEvents extends EventsData>(data: {
|
|
7
|
+
source: TinyPubsubEventsSource<TEvents> | null | undefined;
|
|
8
|
+
handlers: EventsHandlersMap<TEvents>;
|
|
9
|
+
logger: UnisphereLoggerType;
|
|
10
|
+
}) => () => void;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { TinyPubSub, UnisphereLoggerType } from '@unisphere/core';
|
|
2
|
+
import z from 'zod/mini';
|
|
3
|
+
export type EventData<TSchema extends z.ZodMiniType | null = z.ZodMiniType | null> = {
|
|
4
|
+
schema: TSchema;
|
|
5
|
+
once?: boolean;
|
|
6
|
+
abortOnSchemaValidationError?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export type EventsData = Record<string, EventData>;
|
|
9
|
+
export type EventPayloads<TEvents extends EventsData> = {
|
|
10
|
+
[K in keyof TEvents]: TEvents[K]['schema'] extends z.ZodMiniType ? z.infer<TEvents[K]['schema']> : unknown;
|
|
11
|
+
};
|
|
12
|
+
export type Handler<TEvents extends EventsData> = <TEventName extends keyof TEvents & string>(eventName: TEventName, payload: EventPayloads<TEvents>[TEventName]) => void;
|
|
13
|
+
export interface TinyPubsubEventsSource<TEvents extends EventsData> {
|
|
14
|
+
setLogger: (logger: UnisphereLoggerType) => void;
|
|
15
|
+
setHandler: (handler: Handler<TEvents>) => void;
|
|
16
|
+
removeHandler: () => void;
|
|
17
|
+
destroy: () => void;
|
|
18
|
+
resetQueue: () => void;
|
|
19
|
+
}
|
|
20
|
+
export declare const createTinyPubsubEventsSource: <TEvents extends EventsData>(sourceEvent: TinyPubSub<{
|
|
21
|
+
name: string;
|
|
22
|
+
payload: unknown;
|
|
23
|
+
}>, eventsMap: TEvents, options?: {
|
|
24
|
+
logger?: UnisphereLoggerType;
|
|
25
|
+
queueWhilePending?: boolean;
|
|
26
|
+
abortOnSchemaValidationError?: boolean;
|
|
27
|
+
}) => TinyPubsubEventsSource<TEvents>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This function is direct copy from eself client to ensure compatibility.
|
|
3
|
+
* It detects if the current device is a mobile device based on the user agent string.
|
|
4
|
+
* Improve if needed to cover more edge cases.
|
|
5
|
+
*
|
|
6
|
+
* @return {boolean} True if the device is mobile, false otherwise.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isMobileDevice(): boolean;
|