@convai/web-sdk 0.1.0 → 0.1.1-beta.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 +277 -185
- package/dist/components/ConvaiWidget.d.ts.map +1 -1
- package/dist/components/ConvaiWidget.js +13 -0
- package/dist/components/ConvaiWidget.js.map +1 -1
- package/dist/components/rtc-widget/components/AudioSettingsPanel.js +1 -1
- package/dist/components/rtc-widget/components/AudioSettingsPanel.js.map +1 -1
- package/dist/components/rtc-widget/styles/styledComponents.d.ts.map +1 -1
- package/dist/components/rtc-widget/styles/styledComponents.js +72 -51
- package/dist/components/rtc-widget/styles/styledComponents.js.map +1 -1
- package/dist/core/AudioManager.d.ts +75 -0
- package/dist/core/AudioManager.d.ts.map +1 -0
- package/dist/core/AudioManager.js +219 -0
- package/dist/core/AudioManager.js.map +1 -0
- package/dist/core/ConvaiClient.d.ts +122 -0
- package/dist/core/ConvaiClient.d.ts.map +1 -0
- package/dist/core/ConvaiClient.js +509 -0
- package/dist/core/ConvaiClient.js.map +1 -0
- package/dist/core/EventEmitter.d.ts +38 -0
- package/dist/core/EventEmitter.d.ts.map +1 -0
- package/dist/core/EventEmitter.js +68 -0
- package/dist/core/EventEmitter.js.map +1 -0
- package/dist/core/MessageHandler.d.ts +52 -0
- package/dist/core/MessageHandler.d.ts.map +1 -0
- package/dist/core/MessageHandler.js +281 -0
- package/dist/core/MessageHandler.js.map +1 -0
- package/dist/core/ScreenShareManager.d.ts +57 -0
- package/dist/core/ScreenShareManager.d.ts.map +1 -0
- package/dist/core/ScreenShareManager.js +206 -0
- package/dist/core/ScreenShareManager.js.map +1 -0
- package/dist/core/VideoManager.d.ts +69 -0
- package/dist/core/VideoManager.d.ts.map +1 -0
- package/dist/core/VideoManager.js +207 -0
- package/dist/core/VideoManager.js.map +1 -0
- package/dist/core/index.d.ts +9 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/types.d.ts +311 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/hooks/useConvaiClient.d.ts.map +1 -1
- package/dist/hooks/useConvaiClient.js +16 -0
- package/dist/hooks/useConvaiClient.js.map +1 -1
- package/dist/hooks/useMessageHandler.d.ts.map +1 -1
- package/dist/hooks/useMessageHandler.js +39 -14
- package/dist/hooks/useMessageHandler.js.map +1 -1
- package/dist/index.d.ts +1 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -10
- package/dist/index.js.map +1 -1
- package/dist/react/components/ConvaiWidget.d.ts +59 -0
- package/dist/react/components/ConvaiWidget.d.ts.map +1 -0
- package/dist/react/components/ConvaiWidget.js +421 -0
- package/dist/react/components/ConvaiWidget.js.map +1 -0
- package/dist/react/components/index.d.ts +3 -0
- package/dist/react/components/index.d.ts.map +1 -0
- package/dist/react/components/index.js +5 -0
- package/dist/react/components/index.js.map +1 -0
- package/dist/react/components/rtc-widget/components/AudioSettingsPanel.d.ts +10 -0
- package/dist/react/components/rtc-widget/components/AudioSettingsPanel.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/AudioSettingsPanel.js +316 -0
- package/dist/react/components/rtc-widget/components/AudioSettingsPanel.js.map +1 -0
- package/dist/react/components/rtc-widget/components/ConviMessage.d.ts +10 -0
- package/dist/react/components/rtc-widget/components/ConviMessage.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/ConviMessage.js +14 -0
- package/dist/react/components/rtc-widget/components/ConviMessage.js.map +1 -0
- package/dist/react/components/rtc-widget/components/FloatingVideo.d.ts +9 -0
- package/dist/react/components/rtc-widget/components/FloatingVideo.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/FloatingVideo.js +122 -0
- package/dist/react/components/rtc-widget/components/FloatingVideo.js.map +1 -0
- package/dist/react/components/rtc-widget/components/MarkdownRenderer.d.ts +7 -0
- package/dist/react/components/rtc-widget/components/MarkdownRenderer.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/MarkdownRenderer.js +68 -0
- package/dist/react/components/rtc-widget/components/MarkdownRenderer.js.map +1 -0
- package/dist/react/components/rtc-widget/components/MessageBubble.d.ts +10 -0
- package/dist/react/components/rtc-widget/components/MessageBubble.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/MessageBubble.js +23 -0
- package/dist/react/components/rtc-widget/components/MessageBubble.js.map +1 -0
- package/dist/react/components/rtc-widget/components/MessageList.d.ts +11 -0
- package/dist/react/components/rtc-widget/components/MessageList.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/MessageList.js +89 -0
- package/dist/react/components/rtc-widget/components/MessageList.js.map +1 -0
- package/dist/react/components/rtc-widget/components/UserMessage.d.ts +9 -0
- package/dist/react/components/rtc-widget/components/UserMessage.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/UserMessage.js +15 -0
- package/dist/react/components/rtc-widget/components/UserMessage.js.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.d.ts +6 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.js +15 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviButton.js.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.d.ts +25 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.js +172 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviFooter.js.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.d.ts +17 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.js +66 -0
- package/dist/react/components/rtc-widget/components/conviComponents/ConviHeader.js.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.d.ts +12 -0
- package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.js +68 -0
- package/dist/react/components/rtc-widget/components/conviComponents/SettingsTray.js.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.d.ts +8 -0
- package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js +199 -0
- package/dist/react/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/index.d.ts +6 -0
- package/dist/react/components/rtc-widget/components/conviComponents/index.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/conviComponents/index.js +6 -0
- package/dist/react/components/rtc-widget/components/conviComponents/index.js.map +1 -0
- package/dist/react/components/rtc-widget/components/index.d.ts +8 -0
- package/dist/react/components/rtc-widget/components/index.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/components/index.js +13 -0
- package/dist/react/components/rtc-widget/components/index.js.map +1 -0
- package/dist/react/components/rtc-widget/index.d.ts +6 -0
- package/dist/react/components/rtc-widget/index.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/index.js +9 -0
- package/dist/react/components/rtc-widget/index.js.map +1 -0
- package/dist/react/components/rtc-widget/styles/framerConfig.d.ts +116 -0
- package/dist/react/components/rtc-widget/styles/framerConfig.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/styles/framerConfig.js +73 -0
- package/dist/react/components/rtc-widget/styles/framerConfig.js.map +1 -0
- package/dist/react/components/rtc-widget/styles/icons.d.ts +28 -0
- package/dist/react/components/rtc-widget/styles/icons.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/styles/icons.js +257 -0
- package/dist/react/components/rtc-widget/styles/icons.js.map +1 -0
- package/dist/react/components/rtc-widget/styles/index.d.ts +6 -0
- package/dist/react/components/rtc-widget/styles/index.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/styles/index.js +9 -0
- package/dist/react/components/rtc-widget/styles/index.js.map +1 -0
- package/dist/react/components/rtc-widget/styles/styledComponents.d.ts +90 -0
- package/dist/react/components/rtc-widget/styles/styledComponents.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/styles/styledComponents.js +661 -0
- package/dist/react/components/rtc-widget/styles/styledComponents.js.map +1 -0
- package/dist/react/components/rtc-widget/styles/theme.d.ts +188 -0
- package/dist/react/components/rtc-widget/styles/theme.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/styles/theme.js +290 -0
- package/dist/react/components/rtc-widget/styles/theme.js.map +1 -0
- package/dist/react/components/rtc-widget/types/index.d.ts +60 -0
- package/dist/react/components/rtc-widget/types/index.d.ts.map +1 -0
- package/dist/react/components/rtc-widget/types/index.js +2 -0
- package/dist/react/components/rtc-widget/types/index.js.map +1 -0
- package/dist/react/hooks/index.d.ts +4 -0
- package/dist/react/hooks/index.d.ts.map +1 -0
- package/dist/react/hooks/index.js +6 -0
- package/dist/react/hooks/index.js.map +1 -0
- package/dist/react/hooks/useCharacterInfo.d.ts +17 -0
- package/dist/react/hooks/useCharacterInfo.d.ts.map +1 -0
- package/dist/react/hooks/useCharacterInfo.js +60 -0
- package/dist/react/hooks/useCharacterInfo.js.map +1 -0
- package/dist/react/hooks/useConvaiClient.d.ts +32 -0
- package/dist/react/hooks/useConvaiClient.d.ts.map +1 -0
- package/dist/react/hooks/useConvaiClient.js +140 -0
- package/dist/react/hooks/useConvaiClient.js.map +1 -0
- package/dist/react/hooks/useLocalCameraTrack.d.ts +22 -0
- package/dist/react/hooks/useLocalCameraTrack.d.ts.map +1 -0
- package/dist/react/hooks/useLocalCameraTrack.js +34 -0
- package/dist/react/hooks/useLocalCameraTrack.js.map +1 -0
- package/dist/react/index.d.ts +8 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +15 -0
- package/dist/react/index.js.map +1 -0
- package/dist/types/index.d.ts +20 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/speakerManagement.d.ts +22 -0
- package/dist/utils/speakerManagement.d.ts.map +1 -0
- package/dist/utils/speakerManagement.js +71 -0
- package/dist/utils/speakerManagement.js.map +1 -0
- package/dist/vanilla/index.d.ts +3 -0
- package/dist/vanilla/index.d.ts.map +1 -0
- package/dist/vanilla/index.js +5 -0
- package/dist/vanilla/index.js.map +1 -0
- package/package.json +22 -5
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
import { logger } from "../utils/logger";
|
|
2
|
+
import { EventEmitter } from "./EventEmitter";
|
|
3
|
+
/**
|
|
4
|
+
* Manages audio controls for LiveKit room
|
|
5
|
+
* Provides methods to enable/disable microphone, manage audio devices,
|
|
6
|
+
* and control audio state.
|
|
7
|
+
*/
|
|
8
|
+
export class AudioManager extends EventEmitter {
|
|
9
|
+
constructor(room) {
|
|
10
|
+
super();
|
|
11
|
+
this.room = null;
|
|
12
|
+
this._isAudioEnabled = false;
|
|
13
|
+
this._isAudioMuted = false;
|
|
14
|
+
this._audioLevel = 0;
|
|
15
|
+
if (room) {
|
|
16
|
+
this.setRoom(room);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
get isAudioEnabled() {
|
|
20
|
+
return this._isAudioEnabled;
|
|
21
|
+
}
|
|
22
|
+
get isAudioMuted() {
|
|
23
|
+
return this._isAudioMuted;
|
|
24
|
+
}
|
|
25
|
+
get audioLevel() {
|
|
26
|
+
return this._audioLevel;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Set the LiveKit room instance
|
|
30
|
+
*/
|
|
31
|
+
setRoom(room) {
|
|
32
|
+
// Clean up previous room listeners
|
|
33
|
+
if (this.room) {
|
|
34
|
+
this.cleanupListeners();
|
|
35
|
+
}
|
|
36
|
+
this.room = room;
|
|
37
|
+
if (room && room.state !== 'disconnected') {
|
|
38
|
+
this.setupListeners();
|
|
39
|
+
this.updateState();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Setup event listeners for room
|
|
44
|
+
*/
|
|
45
|
+
setupListeners() {
|
|
46
|
+
if (!this.room)
|
|
47
|
+
return;
|
|
48
|
+
const localParticipant = this.room.localParticipant;
|
|
49
|
+
const handleTrackMuted = (track) => {
|
|
50
|
+
if (track.source === 'microphone') {
|
|
51
|
+
this._isAudioMuted = true;
|
|
52
|
+
this._isAudioEnabled = false;
|
|
53
|
+
this.emit('audioStateChange', { isAudioMuted: true, isAudioEnabled: false });
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
const handleTrackUnmuted = (track) => {
|
|
57
|
+
if (track.source === 'microphone') {
|
|
58
|
+
this._isAudioMuted = false;
|
|
59
|
+
this._isAudioEnabled = true;
|
|
60
|
+
this.emit('audioStateChange', { isAudioMuted: false, isAudioEnabled: true });
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
const handleTrackPublished = (track) => {
|
|
64
|
+
if (track.source === 'microphone') {
|
|
65
|
+
this._isAudioEnabled = true;
|
|
66
|
+
this._isAudioMuted = false;
|
|
67
|
+
this.emit('audioStateChange', { isAudioMuted: false, isAudioEnabled: true });
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const handleTrackUnpublished = (track) => {
|
|
71
|
+
if (track.source === 'microphone') {
|
|
72
|
+
this._isAudioEnabled = false;
|
|
73
|
+
this._isAudioMuted = true;
|
|
74
|
+
this.emit('audioStateChange', { isAudioMuted: true, isAudioEnabled: false });
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
localParticipant.on('trackMuted', handleTrackMuted);
|
|
78
|
+
localParticipant.on('trackUnmuted', handleTrackUnmuted);
|
|
79
|
+
localParticipant.on('trackPublished', handleTrackPublished);
|
|
80
|
+
localParticipant.on('trackUnpublished', handleTrackUnpublished);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Clean up event listeners
|
|
84
|
+
*/
|
|
85
|
+
cleanupListeners() {
|
|
86
|
+
if (!this.room)
|
|
87
|
+
return;
|
|
88
|
+
// LiveKit handles cleanup automatically when participant is removed
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Update audio state from room
|
|
92
|
+
*/
|
|
93
|
+
updateState() {
|
|
94
|
+
if (!this.room || this.room.state === 'disconnected') {
|
|
95
|
+
this._isAudioEnabled = false;
|
|
96
|
+
this._isAudioMuted = false;
|
|
97
|
+
this._audioLevel = 0;
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const localParticipant = this.room.localParticipant;
|
|
101
|
+
this._isAudioEnabled = localParticipant.isMicrophoneEnabled;
|
|
102
|
+
this._isAudioMuted = false; // LiveKit doesn't have a direct muted state
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Enable audio
|
|
106
|
+
*/
|
|
107
|
+
async enableAudio() {
|
|
108
|
+
if (!this.room) {
|
|
109
|
+
throw new Error('Room not initialized');
|
|
110
|
+
}
|
|
111
|
+
try {
|
|
112
|
+
await this.room.localParticipant.setMicrophoneEnabled(true);
|
|
113
|
+
this._isAudioEnabled = true;
|
|
114
|
+
this._isAudioMuted = false;
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
logger.error("Failed to enable audio:", error);
|
|
118
|
+
throw error;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Disable audio
|
|
123
|
+
*/
|
|
124
|
+
async disableAudio() {
|
|
125
|
+
if (!this.room) {
|
|
126
|
+
throw new Error('Room not initialized');
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
await this.room.localParticipant.setMicrophoneEnabled(false);
|
|
130
|
+
this._isAudioEnabled = false;
|
|
131
|
+
this._isAudioMuted = true;
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
logger.error("Failed to disable audio:", error);
|
|
135
|
+
throw error;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Mute audio
|
|
140
|
+
*/
|
|
141
|
+
async muteAudio() {
|
|
142
|
+
await this.disableAudio();
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Unmute audio
|
|
146
|
+
*/
|
|
147
|
+
async unmuteAudio() {
|
|
148
|
+
await this.enableAudio();
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Toggle audio
|
|
152
|
+
*/
|
|
153
|
+
async toggleAudio() {
|
|
154
|
+
if (this._isAudioMuted) {
|
|
155
|
+
await this.unmuteAudio();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
await this.muteAudio();
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Set audio device
|
|
163
|
+
*/
|
|
164
|
+
async setAudioDevice(deviceId) {
|
|
165
|
+
if (!this.room) {
|
|
166
|
+
throw new Error('Room not initialized');
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
await this.room.localParticipant.setMicrophoneEnabled(true, { deviceId });
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
logger.error("Failed to set audio device:", error);
|
|
173
|
+
throw error;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Get available audio devices
|
|
178
|
+
*/
|
|
179
|
+
async getAudioDevices() {
|
|
180
|
+
try {
|
|
181
|
+
const devices = await navigator.mediaDevices.enumerateDevices();
|
|
182
|
+
const audioDevices = devices.filter(device => device.kind === 'audioinput');
|
|
183
|
+
return audioDevices;
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
logger.error("Failed to get audio devices:", error);
|
|
187
|
+
throw error;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Start audio level monitoring
|
|
192
|
+
*/
|
|
193
|
+
startAudioLevelMonitoring() {
|
|
194
|
+
if (!this.room) {
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// TODO: Implement audio level monitoring when LiveKit provides the API
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Stop audio level monitoring
|
|
201
|
+
*/
|
|
202
|
+
stopAudioLevelMonitoring() {
|
|
203
|
+
this._audioLevel = 0;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Reset state on disconnect
|
|
207
|
+
*/
|
|
208
|
+
reset() {
|
|
209
|
+
this._isAudioEnabled = false;
|
|
210
|
+
this._isAudioMuted = false;
|
|
211
|
+
this._audioLevel = 0;
|
|
212
|
+
this.emit('audioStateChange', {
|
|
213
|
+
isAudioMuted: false,
|
|
214
|
+
isAudioEnabled: false,
|
|
215
|
+
audioLevel: 0
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=AudioManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioManager.js","sourceRoot":"","sources":["../../src/core/AudioManager.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;;;GAIG;AACH,MAAM,OAAO,YAAa,SAAQ,YAAY;IAM5C,YAAY,IAAW;QACrB,KAAK,EAAE,CAAC;QANF,SAAI,GAAgB,IAAI,CAAC;QACzB,oBAAe,GAAY,KAAK,CAAC;QACjC,kBAAa,GAAY,KAAK,CAAC;QAC/B,gBAAW,GAAW,CAAC,CAAC;QAI9B,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAU;QAChB,mCAAmC;QACnC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAEjB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACK,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QAEvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAEpD,MAAM,gBAAgB,GAAG,CAAC,KAAU,EAAE,EAAE;YACtC,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,kBAAkB,GAAG,CAAC,KAAU,EAAE,EAAE;YACxC,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,oBAAoB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC1C,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;gBAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,sBAAsB,GAAG,CAAC,KAAU,EAAE,EAAE;YAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;gBAClC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/E,CAAC;QACH,CAAC,CAAC;QAEF,gBAAgB,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;QACpD,gBAAgB,CAAC,EAAE,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACxD,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,EAAE,oBAAoB,CAAC,CAAC;QAC5D,gBAAgB,CAAC,EAAE,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,oEAAoE;IACtE,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,cAAc,EAAE,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACpD,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC,mBAAmB,CAAC;QAC5D,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,4CAA4C;IAC1E,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YAC/C,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW;QACf,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACnD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,eAAe;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC;YAC5E,OAAO,YAAY,CAAC;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACpD,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,yBAAyB;QACvB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QACD,uEAAuE;IACzE,CAAC;IAED;;OAEG;IACH,wBAAwB;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,YAAY,EAAE,KAAK;YACnB,cAAc,EAAE,KAAK;YACrB,UAAU,EAAE,CAAC;SACd,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Room } from "livekit-client";
|
|
2
|
+
import { ConvaiConfig, ConvaiClientState, ChatMessage, IConvaiClient, AudioControls, VideoControls, ScreenShareControls } from "./types";
|
|
3
|
+
import { EventEmitter } from "./EventEmitter";
|
|
4
|
+
/**
|
|
5
|
+
* Main Convai client class for managing AI voice assistant connections
|
|
6
|
+
* Provides complete interface for connecting to Convai's voice assistants,
|
|
7
|
+
* managing real-time audio/video conversations, and handling messages.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* import { ConvaiClient } from '@convai/web-sdk/core';
|
|
12
|
+
*
|
|
13
|
+
* const client = new ConvaiClient();
|
|
14
|
+
*
|
|
15
|
+
* // Listen for state changes
|
|
16
|
+
* client.on('stateChange', (state) => {
|
|
17
|
+
* console.log('State:', state);
|
|
18
|
+
* });
|
|
19
|
+
*
|
|
20
|
+
* // Connect to character
|
|
21
|
+
* await client.connect({
|
|
22
|
+
* apiKey: 'your-api-key',
|
|
23
|
+
* characterId: 'your-character-id',
|
|
24
|
+
* endUserId: 'user-uuid' // Optional: enables memory & analytics
|
|
25
|
+
* });
|
|
26
|
+
*
|
|
27
|
+
* // Send a message
|
|
28
|
+
* client.sendUserTextMessage('Hello!');
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare class ConvaiClient extends EventEmitter implements IConvaiClient {
|
|
32
|
+
private _room;
|
|
33
|
+
private _state;
|
|
34
|
+
private _connectionType;
|
|
35
|
+
private _apiKey;
|
|
36
|
+
private _characterId;
|
|
37
|
+
private _speakerId;
|
|
38
|
+
private _characterSessionId;
|
|
39
|
+
private _isBotReady;
|
|
40
|
+
private _participantSid;
|
|
41
|
+
private _audioSettings;
|
|
42
|
+
private _storedConfig;
|
|
43
|
+
private _audioManager;
|
|
44
|
+
private _videoManager;
|
|
45
|
+
private _screenShareManager;
|
|
46
|
+
private _messageHandler;
|
|
47
|
+
constructor();
|
|
48
|
+
get state(): ConvaiClientState;
|
|
49
|
+
get connectionType(): 'audio' | 'video' | null;
|
|
50
|
+
get apiKey(): string | null;
|
|
51
|
+
get characterId(): string | null;
|
|
52
|
+
get speakerId(): string | null;
|
|
53
|
+
get room(): Room;
|
|
54
|
+
get chatMessages(): ChatMessage[];
|
|
55
|
+
get userTranscription(): string;
|
|
56
|
+
get characterSessionId(): string | null;
|
|
57
|
+
get isBotReady(): boolean;
|
|
58
|
+
get audioControls(): AudioControls;
|
|
59
|
+
get videoControls(): VideoControls;
|
|
60
|
+
get screenShareControls(): ScreenShareControls;
|
|
61
|
+
/**
|
|
62
|
+
* Setup event listeners for room and managers
|
|
63
|
+
*/
|
|
64
|
+
private setupEventListeners;
|
|
65
|
+
/**
|
|
66
|
+
* Handle room disconnection
|
|
67
|
+
*/
|
|
68
|
+
private handleDisconnected;
|
|
69
|
+
/**
|
|
70
|
+
* Handle connection state changes
|
|
71
|
+
*/
|
|
72
|
+
private handleConnectionStateChanged;
|
|
73
|
+
/**
|
|
74
|
+
* Update state and emit changes
|
|
75
|
+
*/
|
|
76
|
+
private updateState;
|
|
77
|
+
/**
|
|
78
|
+
* Connect to a Convai character
|
|
79
|
+
*/
|
|
80
|
+
connect(config?: ConvaiConfig): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Disconnect from the current character session
|
|
83
|
+
*/
|
|
84
|
+
disconnect(): Promise<void>;
|
|
85
|
+
/**
|
|
86
|
+
* Reset connection state
|
|
87
|
+
*/
|
|
88
|
+
private resetConnectionState;
|
|
89
|
+
/**
|
|
90
|
+
* Reconnect - disconnect and connect again using stored config
|
|
91
|
+
*/
|
|
92
|
+
reconnect(): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Reset the session ID to start a new conversation
|
|
95
|
+
*/
|
|
96
|
+
resetSession(): void;
|
|
97
|
+
/**
|
|
98
|
+
* Send a text message to the character
|
|
99
|
+
*/
|
|
100
|
+
sendUserTextMessage(text: string): void;
|
|
101
|
+
/**
|
|
102
|
+
* Send a trigger message to invoke specific character actions
|
|
103
|
+
*/
|
|
104
|
+
sendTriggerMessage(triggerName?: string, triggerMessage?: string): void;
|
|
105
|
+
/**
|
|
106
|
+
* Update template keys in the character's context
|
|
107
|
+
*/
|
|
108
|
+
updateTemplateKeys(templateKeys: {
|
|
109
|
+
[key: string]: string;
|
|
110
|
+
}): void;
|
|
111
|
+
/**
|
|
112
|
+
* Update dynamic information about the current context
|
|
113
|
+
*/
|
|
114
|
+
updateDynamicInfo(dynamicInfo: {
|
|
115
|
+
text: string;
|
|
116
|
+
}): void;
|
|
117
|
+
/**
|
|
118
|
+
* Toggle text-to-speech on or off
|
|
119
|
+
*/
|
|
120
|
+
toggleTts(enabled: boolean): void;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=ConvaiClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConvaiClient.d.ts","sourceRoot":"","sources":["../../src/core/ConvaiClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAa,MAAM,gBAAgB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,WAAW,EAEX,aAAa,EACb,aAAa,EACb,aAAa,EACb,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAKjB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAI9C;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,YAAa,SAAQ,YAAa,YAAW,aAAa;IACrE,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,eAAe,CAAkC;IACzD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,mBAAmB,CAAuB;IAClD,OAAO,CAAC,WAAW,CAAkB;IACrC,OAAO,CAAC,eAAe,CAAc;IACrC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,aAAa,CAA6B;IAGlD,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,aAAa,CAAe;IACpC,OAAO,CAAC,mBAAmB,CAAqB;IAChD,OAAO,CAAC,eAAe,CAAiB;;IAsCxC,IAAI,KAAK,IAAI,iBAAiB,CAE7B;IAED,IAAI,cAAc,IAAI,OAAO,GAAG,OAAO,GAAG,IAAI,CAE7C;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IAED,IAAI,IAAI,IAAI,IAAI,CAEf;IAED,IAAI,YAAY,IAAI,WAAW,EAAE,CAEhC;IAED,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAEtC;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,IAAI,aAAa,IAAI,aAAa,CAEjC;IAED,IAAI,mBAAmB,IAAI,mBAAmB,CAE7C;IAED;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA+B3B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAuBpC;;OAEG;IACH,OAAO,CAAC,WAAW;IAuBnB;;OAEG;IACG,OAAO,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAsJnD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAejC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmB5B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC;;OAEG;IACH,YAAY,IAAI,IAAI;IAKpB;;OAEG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IA6BvC;;OAEG;IACH,kBAAkB,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAkBvE;;OAEG;IACH,kBAAkB,CAAC,YAAY,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,IAAI;IAqBjE;;OAEG;IACH,iBAAiB,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAmBtD;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;CAsBlC"}
|