@convai/web-sdk 0.0.1
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 +239 -0
- package/dist/components/RTCWidget.d.ts +56 -0
- package/dist/components/RTCWidget.d.ts.map +1 -0
- package/dist/components/RTCWidget.js +419 -0
- package/dist/components/RTCWidget.js.map +1 -0
- package/dist/components/index.d.ts +3 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +5 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/rtc-widget/components/AudioSettingsPanel.d.ts +10 -0
- package/dist/components/rtc-widget/components/AudioSettingsPanel.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/AudioSettingsPanel.js +316 -0
- package/dist/components/rtc-widget/components/AudioSettingsPanel.js.map +1 -0
- package/dist/components/rtc-widget/components/ConviMessage.d.ts +10 -0
- package/dist/components/rtc-widget/components/ConviMessage.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/ConviMessage.js +14 -0
- package/dist/components/rtc-widget/components/ConviMessage.js.map +1 -0
- package/dist/components/rtc-widget/components/FloatingVideo.d.ts +9 -0
- package/dist/components/rtc-widget/components/FloatingVideo.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/FloatingVideo.js +122 -0
- package/dist/components/rtc-widget/components/FloatingVideo.js.map +1 -0
- package/dist/components/rtc-widget/components/MarkdownRenderer.d.ts +7 -0
- package/dist/components/rtc-widget/components/MarkdownRenderer.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/MarkdownRenderer.js +68 -0
- package/dist/components/rtc-widget/components/MarkdownRenderer.js.map +1 -0
- package/dist/components/rtc-widget/components/MessageBubble.d.ts +10 -0
- package/dist/components/rtc-widget/components/MessageBubble.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/MessageBubble.js +23 -0
- package/dist/components/rtc-widget/components/MessageBubble.js.map +1 -0
- package/dist/components/rtc-widget/components/MessageList.d.ts +11 -0
- package/dist/components/rtc-widget/components/MessageList.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/MessageList.js +89 -0
- package/dist/components/rtc-widget/components/MessageList.js.map +1 -0
- package/dist/components/rtc-widget/components/UserMessage.d.ts +9 -0
- package/dist/components/rtc-widget/components/UserMessage.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/UserMessage.js +15 -0
- package/dist/components/rtc-widget/components/UserMessage.js.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.d.ts +6 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.js +15 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.js.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.d.ts +25 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.js +172 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.js.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.d.ts +17 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.js +66 -0
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.js.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.d.ts +12 -0
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.js +68 -0
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.js.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.d.ts +8 -0
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js +199 -0
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/index.d.ts +6 -0
- package/dist/components/rtc-widget/components/conviComponents/index.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/conviComponents/index.js +6 -0
- package/dist/components/rtc-widget/components/conviComponents/index.js.map +1 -0
- package/dist/components/rtc-widget/components/index.d.ts +9 -0
- package/dist/components/rtc-widget/components/index.d.ts.map +1 -0
- package/dist/components/rtc-widget/components/index.js +13 -0
- package/dist/components/rtc-widget/components/index.js.map +1 -0
- package/dist/components/rtc-widget/index.d.ts +6 -0
- package/dist/components/rtc-widget/index.d.ts.map +1 -0
- package/dist/components/rtc-widget/index.js +7 -0
- package/dist/components/rtc-widget/index.js.map +1 -0
- package/dist/components/rtc-widget/styles/framerConfig.d.ts +116 -0
- package/dist/components/rtc-widget/styles/framerConfig.d.ts.map +1 -0
- package/dist/components/rtc-widget/styles/framerConfig.js +73 -0
- package/dist/components/rtc-widget/styles/framerConfig.js.map +1 -0
- package/dist/components/rtc-widget/styles/icons.d.ts +28 -0
- package/dist/components/rtc-widget/styles/icons.d.ts.map +1 -0
- package/dist/components/rtc-widget/styles/icons.js +257 -0
- package/dist/components/rtc-widget/styles/icons.js.map +1 -0
- package/dist/components/rtc-widget/styles/index.d.ts +6 -0
- package/dist/components/rtc-widget/styles/index.d.ts.map +1 -0
- package/dist/components/rtc-widget/styles/index.js +9 -0
- package/dist/components/rtc-widget/styles/index.js.map +1 -0
- package/dist/components/rtc-widget/styles/styledComponents.d.ts +90 -0
- package/dist/components/rtc-widget/styles/styledComponents.d.ts.map +1 -0
- package/dist/components/rtc-widget/styles/styledComponents.js +640 -0
- package/dist/components/rtc-widget/styles/styledComponents.js.map +1 -0
- package/dist/components/rtc-widget/styles/theme.d.ts +188 -0
- package/dist/components/rtc-widget/styles/theme.d.ts.map +1 -0
- package/dist/components/rtc-widget/styles/theme.js +290 -0
- package/dist/components/rtc-widget/styles/theme.js.map +1 -0
- package/dist/components/rtc-widget/types/index.d.ts +60 -0
- package/dist/components/rtc-widget/types/index.d.ts.map +1 -0
- package/dist/components/rtc-widget/types/index.js +2 -0
- package/dist/components/rtc-widget/types/index.js.map +1 -0
- package/dist/hooks/index.d.ts +13 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +14 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAudioControls.d.ts +41 -0
- package/dist/hooks/useAudioControls.d.ts.map +1 -0
- package/dist/hooks/useAudioControls.js +219 -0
- package/dist/hooks/useAudioControls.js.map +1 -0
- package/dist/hooks/useCharacterInfo.d.ts +17 -0
- package/dist/hooks/useCharacterInfo.d.ts.map +1 -0
- package/dist/hooks/useCharacterInfo.js +61 -0
- package/dist/hooks/useCharacterInfo.js.map +1 -0
- package/dist/hooks/useConvaiClient.d.ts +37 -0
- package/dist/hooks/useConvaiClient.d.ts.map +1 -0
- package/dist/hooks/useConvaiClient.js +348 -0
- package/dist/hooks/useConvaiClient.js.map +1 -0
- package/dist/hooks/useDynamicInfoUpdater.d.ts +33 -0
- package/dist/hooks/useDynamicInfoUpdater.d.ts.map +1 -0
- package/dist/hooks/useDynamicInfoUpdater.js +51 -0
- package/dist/hooks/useDynamicInfoUpdater.js.map +1 -0
- package/dist/hooks/useLocalCameraTrack.d.ts +22 -0
- package/dist/hooks/useLocalCameraTrack.d.ts.map +1 -0
- package/dist/hooks/useLocalCameraTrack.js +34 -0
- package/dist/hooks/useLocalCameraTrack.js.map +1 -0
- package/dist/hooks/useMessageHandler.d.ts +28 -0
- package/dist/hooks/useMessageHandler.d.ts.map +1 -0
- package/dist/hooks/useMessageHandler.js +317 -0
- package/dist/hooks/useMessageHandler.js.map +1 -0
- package/dist/hooks/useScreenShare.d.ts +45 -0
- package/dist/hooks/useScreenShare.d.ts.map +1 -0
- package/dist/hooks/useScreenShare.js +198 -0
- package/dist/hooks/useScreenShare.js.map +1 -0
- package/dist/hooks/useTemplateKeysUpdater.d.ts +35 -0
- package/dist/hooks/useTemplateKeysUpdater.d.ts.map +1 -0
- package/dist/hooks/useTemplateKeysUpdater.js +53 -0
- package/dist/hooks/useTemplateKeysUpdater.js.map +1 -0
- package/dist/hooks/useTriggerMessageSender.d.ts +28 -0
- package/dist/hooks/useTriggerMessageSender.d.ts.map +1 -0
- package/dist/hooks/useTriggerMessageSender.js +52 -0
- package/dist/hooks/useTriggerMessageSender.js.map +1 -0
- package/dist/hooks/useTtsToggle.d.ts +37 -0
- package/dist/hooks/useTtsToggle.d.ts.map +1 -0
- package/dist/hooks/useTtsToggle.js +65 -0
- package/dist/hooks/useTtsToggle.js.map +1 -0
- package/dist/hooks/useUserTextMessageSender.d.ts +28 -0
- package/dist/hooks/useUserTextMessageSender.d.ts.map +1 -0
- package/dist/hooks/useUserTextMessageSender.js +61 -0
- package/dist/hooks/useUserTextMessageSender.js.map +1 -0
- package/dist/hooks/useVideoControls.d.ts +39 -0
- package/dist/hooks/useVideoControls.d.ts.map +1 -0
- package/dist/hooks/useVideoControls.js +211 -0
- package/dist/hooks/useVideoControls.js.map +1 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +225 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/logger.d.ts +27 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +96 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +94 -0
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { Room } from 'livekit-client';
|
|
2
|
+
/**
|
|
3
|
+
* Audio processing settings for the microphone input.
|
|
4
|
+
* These settings help optimize the audio quality and reduce interruptions.
|
|
5
|
+
*/
|
|
6
|
+
export interface AudioSettings {
|
|
7
|
+
/** Enable echo cancellation to prevent audio feedback (default: true) */
|
|
8
|
+
echoCancellation?: boolean;
|
|
9
|
+
/** Enable noise suppression to reduce background noise (default: true) */
|
|
10
|
+
noiseSuppression?: boolean;
|
|
11
|
+
/** Enable automatic gain control for consistent volume (default: true) */
|
|
12
|
+
autoGainControl?: boolean;
|
|
13
|
+
/** Audio sample rate in Hz (default: 48000) */
|
|
14
|
+
sampleRate?: number;
|
|
15
|
+
/** Number of audio channels, 1 for mono, 2 for stereo (default: 1) */
|
|
16
|
+
channelCount?: number;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Configuration object for connecting to a Convai character.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```tsx
|
|
23
|
+
* const config: ConvaiConfig = {
|
|
24
|
+
* apiKey: 'your-api-key',
|
|
25
|
+
* characterId: 'your-character-id',
|
|
26
|
+
* enableVideo: true,
|
|
27
|
+
* enableAudio: true,
|
|
28
|
+
* audioSettings: {
|
|
29
|
+
* echoCancellation: true,
|
|
30
|
+
* noiseSuppression: true,
|
|
31
|
+
* autoGainControl: true,
|
|
32
|
+
* sampleRate: 48000,
|
|
33
|
+
* }
|
|
34
|
+
* };
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export interface ConvaiConfig {
|
|
38
|
+
/** Your Convai API key from convai.com dashboard (required) */
|
|
39
|
+
apiKey: string;
|
|
40
|
+
/** The Character ID to connect to (required) */
|
|
41
|
+
characterId: string;
|
|
42
|
+
/** Custom Convai API URL (optional, defaults to production endpoint) */
|
|
43
|
+
url?: string;
|
|
44
|
+
/** Enable audio capability (default: true) */
|
|
45
|
+
enableAudio?: boolean;
|
|
46
|
+
/** Enable video capability (default: false) */
|
|
47
|
+
enableVideo?: boolean;
|
|
48
|
+
/** Audio processing settings for microphone input */
|
|
49
|
+
audioSettings?: AudioSettings;
|
|
50
|
+
/** Configuration for character actions and environmental context */
|
|
51
|
+
actionConfig?: {
|
|
52
|
+
/** List of action names the character can perform */
|
|
53
|
+
actions: string[];
|
|
54
|
+
/** Other characters present in the scene or conversation */
|
|
55
|
+
characters: Array<{
|
|
56
|
+
/** Character name */
|
|
57
|
+
name: string;
|
|
58
|
+
/** Character biography or description */
|
|
59
|
+
bio: string;
|
|
60
|
+
}>;
|
|
61
|
+
/** Objects available in the scene or environment */
|
|
62
|
+
objects: Array<{
|
|
63
|
+
/** Object name */
|
|
64
|
+
name: string;
|
|
65
|
+
/** Object description or properties */
|
|
66
|
+
description: string;
|
|
67
|
+
}>;
|
|
68
|
+
/** Name of the object the character is currently focused on */
|
|
69
|
+
currentAttentionObject?: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Represents a single message in the chat conversation.
|
|
74
|
+
* Different message types are used for various parts of the conversation flow.
|
|
75
|
+
*/
|
|
76
|
+
export interface ChatMessage {
|
|
77
|
+
/** Unique identifier for the message */
|
|
78
|
+
id: string;
|
|
79
|
+
/**
|
|
80
|
+
* Type of message:
|
|
81
|
+
* - `user`: User's sent message
|
|
82
|
+
* - `convai`: Character's response
|
|
83
|
+
* - `user-transcription`: Real-time speech-to-text from user
|
|
84
|
+
* - `bot-llm-text`: Character's LLM-generated text
|
|
85
|
+
* - `emotion`: Character's emotional state
|
|
86
|
+
* - `behavior-tree`: Behavior tree response
|
|
87
|
+
* - `action`: Action execution
|
|
88
|
+
* - `bot-emotion`: Bot emotional response
|
|
89
|
+
* - `user-llm-text`: User text processed by LLM
|
|
90
|
+
*/
|
|
91
|
+
type: 'user' | 'convai' | 'emotion' | 'behavior-tree' | 'action' | 'user-transcription' | 'bot-llm-text' | 'bot-emotion' | 'user-llm-text';
|
|
92
|
+
/** The text content of the message */
|
|
93
|
+
content: string;
|
|
94
|
+
/** ISO timestamp string of when the message was created */
|
|
95
|
+
timestamp: string;
|
|
96
|
+
/** Whether this is the final version of the message (for streaming) */
|
|
97
|
+
isFinal?: boolean;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Represents the current state of the Convai client connection and activity.
|
|
101
|
+
* Use this to provide UI feedback about the conversation state.
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```tsx
|
|
105
|
+
* const { state } = convaiClient;
|
|
106
|
+
*
|
|
107
|
+
* if (state.isConnected) {
|
|
108
|
+
* console.log('Connected to character');
|
|
109
|
+
* }
|
|
110
|
+
*
|
|
111
|
+
* if (state.isSpeaking) {
|
|
112
|
+
* console.log('Character is speaking');
|
|
113
|
+
* }
|
|
114
|
+
*
|
|
115
|
+
* // Or use the combined state
|
|
116
|
+
* console.log(state.agentState); // 'listening' | 'thinking' | 'speaking'
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export interface ConvaiClientState {
|
|
120
|
+
/** Whether the client is currently connected to Convai */
|
|
121
|
+
isConnected: boolean;
|
|
122
|
+
/** Whether a connection attempt is in progress */
|
|
123
|
+
isConnecting: boolean;
|
|
124
|
+
/** Whether the system is actively listening to user input */
|
|
125
|
+
isListening: boolean;
|
|
126
|
+
/** Whether the character is processing/thinking about a response */
|
|
127
|
+
isThinking: boolean;
|
|
128
|
+
/** Whether the character is currently speaking */
|
|
129
|
+
isSpeaking: boolean;
|
|
130
|
+
/**
|
|
131
|
+
* Combined state indicator for the character's current activity.
|
|
132
|
+
* Use this as a single source of truth for UI state.
|
|
133
|
+
*/
|
|
134
|
+
agentState: 'disconnected' | 'connected' | 'listening' | 'thinking' | 'speaking';
|
|
135
|
+
}
|
|
136
|
+
import { AudioControls } from "../hooks/useAudioControls";
|
|
137
|
+
import { VideoControls } from "../hooks/useVideoControls";
|
|
138
|
+
import { ScreenShareControls } from "../hooks/useScreenShare";
|
|
139
|
+
/**
|
|
140
|
+
* Main Convai client interface returned by useConvaiClient() hook.
|
|
141
|
+
* Provides complete control over Convai character connections and interactions.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```tsx
|
|
145
|
+
* import { useConvaiClient } from '@convai/web-sdk';
|
|
146
|
+
*
|
|
147
|
+
* function App() {
|
|
148
|
+
* const convaiClient = useConvaiClient();
|
|
149
|
+
*
|
|
150
|
+
* // Connect to character
|
|
151
|
+
* await convaiClient.connect({
|
|
152
|
+
* apiKey: 'your-api-key',
|
|
153
|
+
* characterId: 'your-character-id'
|
|
154
|
+
* });
|
|
155
|
+
*
|
|
156
|
+
* // Send a message
|
|
157
|
+
* convaiClient.sendUserTextMessage('Hello!');
|
|
158
|
+
*
|
|
159
|
+
* // Check state
|
|
160
|
+
* console.log(convaiClient.state.isConnected);
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
export interface ConvaiClient {
|
|
165
|
+
/** Current connection and activity state of the client */
|
|
166
|
+
state: ConvaiClientState;
|
|
167
|
+
/** Connect to a Convai character with the provided configuration */
|
|
168
|
+
connect: (config: ConvaiConfig) => Promise<void>;
|
|
169
|
+
/** Disconnect from the current character session */
|
|
170
|
+
disconnect: () => Promise<void>;
|
|
171
|
+
/** Reset the session ID to start a new conversation (clears history) */
|
|
172
|
+
resetSession: () => void;
|
|
173
|
+
/** Internal LiveKit Room instance (for advanced usage) */
|
|
174
|
+
room: Room;
|
|
175
|
+
/** Current video track (for advanced usage) */
|
|
176
|
+
videoTrack: any;
|
|
177
|
+
/** Current audio track (for advanced usage) */
|
|
178
|
+
audioTrack: any;
|
|
179
|
+
/** Send a text message to the character */
|
|
180
|
+
sendUserTextMessage: (text: string) => void;
|
|
181
|
+
/**
|
|
182
|
+
* Send a trigger message to invoke specific character actions or responses.
|
|
183
|
+
* @param triggerName - Name of the trigger to invoke
|
|
184
|
+
* @param triggerMessage - Optional message to accompany the trigger
|
|
185
|
+
*/
|
|
186
|
+
sendTriggerMessage: (triggerName?: string, triggerMessage?: string) => void;
|
|
187
|
+
/**
|
|
188
|
+
* Update template keys in the character's context (e.g., user name, location).
|
|
189
|
+
* These keys can be referenced in the character's responses.
|
|
190
|
+
*/
|
|
191
|
+
updateTemplateKeys: (templateKeys: {
|
|
192
|
+
[key: string]: string;
|
|
193
|
+
}) => void;
|
|
194
|
+
/**
|
|
195
|
+
* Update dynamic information about the current context.
|
|
196
|
+
* This helps the character understand the current situation.
|
|
197
|
+
*/
|
|
198
|
+
updateDynamicInfo: (dynamicInfo: {
|
|
199
|
+
text: string;
|
|
200
|
+
}) => void;
|
|
201
|
+
/** Array of all chat messages in the current conversation */
|
|
202
|
+
chatMessages: ChatMessage[];
|
|
203
|
+
/** Current real-time transcription of user speech */
|
|
204
|
+
userTranscription: string;
|
|
205
|
+
/** Unique session ID for the current character conversation */
|
|
206
|
+
characterSessionId: string | null;
|
|
207
|
+
/** Whether the bot is ready to receive messages (true after bot-ready message) */
|
|
208
|
+
isBotReady: boolean;
|
|
209
|
+
/** Audio control methods for managing microphone mute/unmute */
|
|
210
|
+
audioControls: AudioControls;
|
|
211
|
+
/** Video control methods for enabling/disabling camera */
|
|
212
|
+
videoControls: VideoControls;
|
|
213
|
+
/** Screen sharing control methods */
|
|
214
|
+
screenShareControls: ScreenShareControls;
|
|
215
|
+
/**
|
|
216
|
+
* Toggle text-to-speech on or off.
|
|
217
|
+
* When disabled, character responses won't be spoken aloud.
|
|
218
|
+
*/
|
|
219
|
+
toggleTts: (enabled: boolean) => void;
|
|
220
|
+
/** Current audio processing settings */
|
|
221
|
+
audioSettings: AudioSettings;
|
|
222
|
+
/** Update audio processing settings dynamically */
|
|
223
|
+
updateAudioSettings: (settings: Partial<AudioSettings>) => Promise<void>;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility that only logs in development mode.
|
|
3
|
+
* Completely silent in production builds and npm packages.
|
|
4
|
+
*
|
|
5
|
+
* This logger is designed to be tree-shakeable and completely removed
|
|
6
|
+
* from production builds when not used.
|
|
7
|
+
*
|
|
8
|
+
* To test logger behavior:
|
|
9
|
+
* - Development: Set NODE_ENV=development or run on localhost
|
|
10
|
+
* - Production: Set NODE_ENV=production or deploy to production
|
|
11
|
+
*
|
|
12
|
+
* In npm packages, this logger will be completely silent by default.
|
|
13
|
+
*/
|
|
14
|
+
export declare const logger: {
|
|
15
|
+
log: (...args: any[]) => void;
|
|
16
|
+
warn: (...args: any[]) => void;
|
|
17
|
+
error: (...args: any[]) => void;
|
|
18
|
+
info: (...args: any[]) => void;
|
|
19
|
+
debug: (...args: any[]) => void;
|
|
20
|
+
trace: (...args: any[]) => void;
|
|
21
|
+
};
|
|
22
|
+
export declare const loggerConfig: {
|
|
23
|
+
environment: string;
|
|
24
|
+
isDevelopment: boolean;
|
|
25
|
+
isProduction: boolean;
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAuFH,eAAO,MAAM,MAAM;mBAnBF,GAAG,EAAE;oBACJ,GAAG,EAAE;qBACJ,GAAG,EAAE;oBACN,GAAG,EAAE;qBACJ,GAAG,EAAE;qBACL,GAAG,EAAE;CAcoC,CAAC;AAG7D,eAAO,MAAM,YAAY;;;;CAIxB,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger utility that only logs in development mode.
|
|
3
|
+
* Completely silent in production builds and npm packages.
|
|
4
|
+
*
|
|
5
|
+
* This logger is designed to be tree-shakeable and completely removed
|
|
6
|
+
* from production builds when not used.
|
|
7
|
+
*
|
|
8
|
+
* To test logger behavior:
|
|
9
|
+
* - Development: Set NODE_ENV=development or run on localhost
|
|
10
|
+
* - Production: Set NODE_ENV=production or deploy to production
|
|
11
|
+
*
|
|
12
|
+
* In npm packages, this logger will be completely silent by default.
|
|
13
|
+
*/
|
|
14
|
+
// Environment detection with multiple fallbacks
|
|
15
|
+
const detectEnvironment = () => {
|
|
16
|
+
// Check if we're in a browser environment
|
|
17
|
+
const isBrowser = typeof window !== 'undefined';
|
|
18
|
+
// Safe process.env access (Vite/Webpack replaces this at build time)
|
|
19
|
+
const getEnv = (key) => {
|
|
20
|
+
try {
|
|
21
|
+
// @ts-ignore - process.env is replaced at build time by bundlers
|
|
22
|
+
return typeof process !== 'undefined' && process.env ? process.env[key] : undefined;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return undefined;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
// Priority 1: Check NEXT_PUBLIC_ENVIRONMENT first (most explicit)
|
|
29
|
+
const publicEnv = getEnv('NEXT_PUBLIC_ENVIRONMENT');
|
|
30
|
+
if (publicEnv === 'PRODUCTION') {
|
|
31
|
+
return 'production';
|
|
32
|
+
}
|
|
33
|
+
if (publicEnv === 'PREVIEW' || publicEnv === 'STAGING') {
|
|
34
|
+
return 'development';
|
|
35
|
+
}
|
|
36
|
+
// Priority 2: Check NODE_ENV and REACT_APP_ENV (Vite replaces import.meta.env.MODE)
|
|
37
|
+
const nodeEnv = getEnv('NODE_ENV');
|
|
38
|
+
const reactEnv = getEnv('REACT_APP_ENV');
|
|
39
|
+
if (nodeEnv === 'production' || reactEnv === 'production') {
|
|
40
|
+
return 'production';
|
|
41
|
+
}
|
|
42
|
+
if (nodeEnv === 'development' || reactEnv === 'development') {
|
|
43
|
+
return 'development';
|
|
44
|
+
}
|
|
45
|
+
// Priority 3: Check for Vite dev server
|
|
46
|
+
const viteDevUrl = getEnv('VITE_DEV_SERVER_URL');
|
|
47
|
+
if (viteDevUrl !== undefined) {
|
|
48
|
+
return 'development';
|
|
49
|
+
}
|
|
50
|
+
// Priority 4: Check browser environment (only if no explicit env vars are set)
|
|
51
|
+
if (isBrowser) {
|
|
52
|
+
// Localhost is typically development
|
|
53
|
+
if (window.location?.hostname === 'localhost' || window.location?.hostname === '127.0.0.1') {
|
|
54
|
+
return 'development';
|
|
55
|
+
}
|
|
56
|
+
// Check for development ports
|
|
57
|
+
if (window.location?.port && ['3000', '3001', '5173', '8080'].includes(window.location.port)) {
|
|
58
|
+
return 'development';
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Default to production for safety
|
|
62
|
+
return 'production';
|
|
63
|
+
};
|
|
64
|
+
const environment = detectEnvironment();
|
|
65
|
+
const isDevelopment = environment === 'development';
|
|
66
|
+
// No-op function that gets completely removed by tree shaking
|
|
67
|
+
const noop = () => {
|
|
68
|
+
// This function is intentionally empty and will be removed in production
|
|
69
|
+
};
|
|
70
|
+
// Development logger functions
|
|
71
|
+
const devLogger = {
|
|
72
|
+
log: (...args) => console.log('[Convai]', ...args),
|
|
73
|
+
warn: (...args) => console.warn('[Convai]', ...args),
|
|
74
|
+
error: (...args) => console.error('[Convai]', ...args),
|
|
75
|
+
info: (...args) => console.info('[Convai]', ...args),
|
|
76
|
+
debug: (...args) => console.debug('[Convai]', ...args),
|
|
77
|
+
trace: (...args) => console.trace('[Convai]', ...args),
|
|
78
|
+
};
|
|
79
|
+
// Production logger functions (all no-ops)
|
|
80
|
+
const prodLogger = {
|
|
81
|
+
log: noop,
|
|
82
|
+
warn: noop,
|
|
83
|
+
error: noop,
|
|
84
|
+
info: noop,
|
|
85
|
+
debug: noop,
|
|
86
|
+
trace: noop,
|
|
87
|
+
};
|
|
88
|
+
// Export the appropriate logger based on environment
|
|
89
|
+
export const logger = isDevelopment ? devLogger : prodLogger;
|
|
90
|
+
// Export environment info for debugging
|
|
91
|
+
export const loggerConfig = {
|
|
92
|
+
environment,
|
|
93
|
+
isDevelopment,
|
|
94
|
+
isProduction: !isDevelopment,
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@convai/web-sdk",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "The convai/web-sdk helps power characters in websites (brain) and the communication UI with Convai characters. This SDK facilitates the capture of user audio streams and provides appropriate responses in the form of audio, actions, and facial expressions.",
|
|
5
|
+
"private": false,
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "dist/index.js",
|
|
8
|
+
"module": "dist/index.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"import": "./dist/index.js",
|
|
13
|
+
"types": "./dist/index.d.ts"
|
|
14
|
+
},
|
|
15
|
+
"./rtc-widget": {
|
|
16
|
+
"import": "./dist/components/rtc-widget/index.js",
|
|
17
|
+
"types": "./dist/components/rtc-widget/index.d.ts"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"sideEffects": false,
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public"
|
|
23
|
+
},
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc",
|
|
26
|
+
"build:prod": "NODE_ENV=production tsc",
|
|
27
|
+
"dev": "tsc --watch",
|
|
28
|
+
"clean": "rimraf dist",
|
|
29
|
+
"prepublishOnly": "npm run clean && npm run build:prod",
|
|
30
|
+
"changeset": "changeset",
|
|
31
|
+
"version": "changeset version",
|
|
32
|
+
"release": "npm run build:prod && changeset publish",
|
|
33
|
+
"example:react": "cd examples/react && pnpm dev",
|
|
34
|
+
"example:react:build": "cd examples/react && pnpm build",
|
|
35
|
+
"examples:dev": "pnpm example:react",
|
|
36
|
+
"examples:build": "pnpm example:react:build",
|
|
37
|
+
"examples:install": "pnpm install && cd examples/react && pnpm install",
|
|
38
|
+
"examples:clean": "pnpm clean && cd examples/react && pnpm clean"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [
|
|
41
|
+
"convai",
|
|
42
|
+
"livekit",
|
|
43
|
+
"react",
|
|
44
|
+
"typescript",
|
|
45
|
+
"ai",
|
|
46
|
+
"voice-assistant",
|
|
47
|
+
"video-chat",
|
|
48
|
+
"real-time",
|
|
49
|
+
"webrtc",
|
|
50
|
+
"cursor",
|
|
51
|
+
"ai-assistant",
|
|
52
|
+
"conversational-ai",
|
|
53
|
+
"voice-ui",
|
|
54
|
+
"chat-widget",
|
|
55
|
+
"speech-recognition",
|
|
56
|
+
"text-to-speech",
|
|
57
|
+
"rtc",
|
|
58
|
+
"character-ai",
|
|
59
|
+
"interactive-characters"
|
|
60
|
+
],
|
|
61
|
+
"author": "Convai <support@convai.com>",
|
|
62
|
+
"license": "MIT",
|
|
63
|
+
"repository": {
|
|
64
|
+
"type": "git",
|
|
65
|
+
"url": "https://github.com/convai/web-handsfree.git"
|
|
66
|
+
},
|
|
67
|
+
"bugs": {
|
|
68
|
+
"url": "https://github.com/convai/web-handsfree/issues"
|
|
69
|
+
},
|
|
70
|
+
"homepage": "https://github.com/convai/web-handsfree#readme",
|
|
71
|
+
"dependencies": {
|
|
72
|
+
"@livekit/components-react": "^2.9.3",
|
|
73
|
+
"@livekit/components-styles": "^1.1.4",
|
|
74
|
+
"framer-motion": "^11.18.0",
|
|
75
|
+
"livekit-client": "^2.8.0",
|
|
76
|
+
"react-icons": "^5.4.0",
|
|
77
|
+
"styled-components": "^6.1.15"
|
|
78
|
+
},
|
|
79
|
+
"devDependencies": {
|
|
80
|
+
"@changesets/cli": "^2.29.5",
|
|
81
|
+
"@types/node": "^20.17.13",
|
|
82
|
+
"@types/react": "^18.3.18",
|
|
83
|
+
"@types/react-dom": "^18.3.5",
|
|
84
|
+
"@types/styled-components": "^5.1.34",
|
|
85
|
+
"react": "^18.3.1",
|
|
86
|
+
"react-dom": "^18.3.1",
|
|
87
|
+
"rimraf": "^5.0.0",
|
|
88
|
+
"typescript": "^5.7.3"
|
|
89
|
+
},
|
|
90
|
+
"files": [
|
|
91
|
+
"dist",
|
|
92
|
+
"README.md"
|
|
93
|
+
]
|
|
94
|
+
}
|