@convai/web-sdk 0.1.1-beta.4 → 0.2.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 +735 -189
- package/dist/core/AudioManager.d.ts +8 -0
- package/dist/core/AudioManager.d.ts.map +1 -1
- package/dist/core/AudioManager.js +45 -5
- package/dist/core/AudioManager.js.map +1 -1
- package/dist/core/ConvaiClient.d.ts +22 -9
- package/dist/core/ConvaiClient.d.ts.map +1 -1
- package/dist/core/ConvaiClient.js +92 -41
- package/dist/core/ConvaiClient.js.map +1 -1
- package/dist/core/MessageHandler.d.ts.map +1 -1
- package/dist/core/MessageHandler.js +27 -24
- package/dist/core/MessageHandler.js.map +1 -1
- package/dist/core/ScreenShareManager.d.ts.map +1 -1
- package/dist/core/ScreenShareManager.js +4 -0
- package/dist/core/ScreenShareManager.js.map +1 -1
- package/dist/core/VideoManager.d.ts.map +1 -1
- package/dist/core/VideoManager.js +2 -0
- package/dist/core/VideoManager.js.map +1 -1
- package/dist/core/types.d.ts +13 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/react/components/ConvaiWidget.d.ts +3 -0
- package/dist/react/components/ConvaiWidget.d.ts.map +1 -1
- package/dist/react/components/ConvaiWidget.js +25 -22
- package/dist/react/components/ConvaiWidget.js.map +1 -1
- package/dist/react/components/index.d.ts +0 -1
- package/dist/react/components/index.d.ts.map +1 -1
- package/dist/react/components/index.js +0 -2
- package/dist/react/components/index.js.map +1 -1
- package/dist/react/hooks/useConvaiClient.d.ts +3 -0
- package/dist/react/hooks/useConvaiClient.d.ts.map +1 -1
- package/dist/react/hooks/useConvaiClient.js +46 -9
- package/dist/react/hooks/useConvaiClient.js.map +1 -1
- package/dist/types/index.d.ts +1 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/vanilla/AudioRenderer.d.ts +45 -0
- package/dist/vanilla/AudioRenderer.d.ts.map +1 -0
- package/dist/vanilla/AudioRenderer.js +126 -0
- package/dist/vanilla/AudioRenderer.js.map +1 -0
- package/dist/vanilla/ConvaiWidget.d.ts +39 -0
- package/dist/vanilla/ConvaiWidget.d.ts.map +1 -0
- package/dist/vanilla/ConvaiWidget.js +1835 -0
- package/dist/vanilla/ConvaiWidget.js.map +1 -0
- package/dist/vanilla/icons.d.ts +34 -0
- package/dist/vanilla/icons.d.ts.map +1 -0
- package/dist/vanilla/icons.js +215 -0
- package/dist/vanilla/icons.js.map +1 -0
- package/dist/vanilla/index.d.ts +35 -0
- package/dist/vanilla/index.d.ts.map +1 -0
- package/dist/vanilla/index.js +37 -0
- package/dist/vanilla/index.js.map +1 -0
- package/dist/{components/rtc-widget/styles/theme.d.ts → vanilla/styles.d.ts} +14 -50
- package/dist/vanilla/styles.d.ts.map +1 -0
- package/dist/vanilla/styles.js +287 -0
- package/dist/vanilla/styles.js.map +1 -0
- package/dist/vanilla/types.d.ts +38 -0
- package/dist/vanilla/types.d.ts.map +1 -0
- package/dist/vanilla/types.js +2 -0
- package/dist/vanilla/types.js.map +1 -0
- package/package.json +12 -5
- package/dist/components/ConvaiWidget.d.ts +0 -59
- package/dist/components/ConvaiWidget.d.ts.map +0 -1
- package/dist/components/ConvaiWidget.js +0 -421
- package/dist/components/ConvaiWidget.js.map +0 -1
- package/dist/components/index.d.ts +0 -3
- package/dist/components/index.d.ts.map +0 -1
- package/dist/components/index.js +0 -5
- package/dist/components/index.js.map +0 -1
- package/dist/components/rtc-widget/components/AudioSettingsPanel.d.ts +0 -10
- package/dist/components/rtc-widget/components/AudioSettingsPanel.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/AudioSettingsPanel.js +0 -316
- package/dist/components/rtc-widget/components/AudioSettingsPanel.js.map +0 -1
- package/dist/components/rtc-widget/components/ConviMessage.d.ts +0 -10
- package/dist/components/rtc-widget/components/ConviMessage.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/ConviMessage.js +0 -14
- package/dist/components/rtc-widget/components/ConviMessage.js.map +0 -1
- package/dist/components/rtc-widget/components/FloatingVideo.d.ts +0 -9
- package/dist/components/rtc-widget/components/FloatingVideo.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/FloatingVideo.js +0 -122
- package/dist/components/rtc-widget/components/FloatingVideo.js.map +0 -1
- package/dist/components/rtc-widget/components/MarkdownRenderer.d.ts +0 -7
- package/dist/components/rtc-widget/components/MarkdownRenderer.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/MarkdownRenderer.js +0 -68
- package/dist/components/rtc-widget/components/MarkdownRenderer.js.map +0 -1
- package/dist/components/rtc-widget/components/MessageBubble.d.ts +0 -10
- package/dist/components/rtc-widget/components/MessageBubble.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/MessageBubble.js +0 -23
- package/dist/components/rtc-widget/components/MessageBubble.js.map +0 -1
- package/dist/components/rtc-widget/components/MessageList.d.ts +0 -11
- package/dist/components/rtc-widget/components/MessageList.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/MessageList.js +0 -89
- package/dist/components/rtc-widget/components/MessageList.js.map +0 -1
- package/dist/components/rtc-widget/components/UserMessage.d.ts +0 -9
- package/dist/components/rtc-widget/components/UserMessage.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/UserMessage.js +0 -15
- package/dist/components/rtc-widget/components/UserMessage.js.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.d.ts +0 -6
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.js +0 -15
- package/dist/components/rtc-widget/components/conviComponents/ConviButton.js.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.d.ts +0 -25
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.js +0 -172
- package/dist/components/rtc-widget/components/conviComponents/ConviFooter.js.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.d.ts +0 -17
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.js +0 -66
- package/dist/components/rtc-widget/components/conviComponents/ConviHeader.js.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.d.ts +0 -12
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.js +0 -68
- package/dist/components/rtc-widget/components/conviComponents/SettingsTray.js.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.d.ts +0 -8
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js +0 -199
- package/dist/components/rtc-widget/components/conviComponents/VoiceModeOverlay.js.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/index.d.ts +0 -6
- package/dist/components/rtc-widget/components/conviComponents/index.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/conviComponents/index.js +0 -6
- package/dist/components/rtc-widget/components/conviComponents/index.js.map +0 -1
- package/dist/components/rtc-widget/components/index.d.ts +0 -8
- package/dist/components/rtc-widget/components/index.d.ts.map +0 -1
- package/dist/components/rtc-widget/components/index.js +0 -13
- package/dist/components/rtc-widget/components/index.js.map +0 -1
- package/dist/components/rtc-widget/index.d.ts +0 -6
- package/dist/components/rtc-widget/index.d.ts.map +0 -1
- package/dist/components/rtc-widget/index.js +0 -9
- package/dist/components/rtc-widget/index.js.map +0 -1
- package/dist/components/rtc-widget/styles/framerConfig.d.ts +0 -116
- package/dist/components/rtc-widget/styles/framerConfig.d.ts.map +0 -1
- package/dist/components/rtc-widget/styles/framerConfig.js +0 -73
- package/dist/components/rtc-widget/styles/framerConfig.js.map +0 -1
- package/dist/components/rtc-widget/styles/icons.d.ts +0 -28
- package/dist/components/rtc-widget/styles/icons.d.ts.map +0 -1
- package/dist/components/rtc-widget/styles/icons.js +0 -257
- package/dist/components/rtc-widget/styles/icons.js.map +0 -1
- package/dist/components/rtc-widget/styles/index.d.ts +0 -6
- package/dist/components/rtc-widget/styles/index.d.ts.map +0 -1
- package/dist/components/rtc-widget/styles/index.js +0 -9
- package/dist/components/rtc-widget/styles/index.js.map +0 -1
- package/dist/components/rtc-widget/styles/styledComponents.d.ts +0 -90
- package/dist/components/rtc-widget/styles/styledComponents.d.ts.map +0 -1
- package/dist/components/rtc-widget/styles/styledComponents.js +0 -661
- package/dist/components/rtc-widget/styles/styledComponents.js.map +0 -1
- package/dist/components/rtc-widget/styles/theme.d.ts.map +0 -1
- package/dist/components/rtc-widget/styles/theme.js +0 -290
- package/dist/components/rtc-widget/styles/theme.js.map +0 -1
- package/dist/components/rtc-widget/types/index.d.ts +0 -60
- package/dist/components/rtc-widget/types/index.d.ts.map +0 -1
- package/dist/components/rtc-widget/types/index.js +0 -2
- package/dist/components/rtc-widget/types/index.js.map +0 -1
- package/dist/hooks/index.d.ts +0 -13
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js +0 -14
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/useAudioControls.d.ts +0 -41
- package/dist/hooks/useAudioControls.d.ts.map +0 -1
- package/dist/hooks/useAudioControls.js +0 -208
- package/dist/hooks/useAudioControls.js.map +0 -1
- package/dist/hooks/useCharacterInfo.d.ts +0 -17
- package/dist/hooks/useCharacterInfo.d.ts.map +0 -1
- package/dist/hooks/useCharacterInfo.js +0 -60
- package/dist/hooks/useCharacterInfo.js.map +0 -1
- package/dist/hooks/useConvaiClient.d.ts +0 -30
- package/dist/hooks/useConvaiClient.d.ts.map +0 -1
- package/dist/hooks/useConvaiClient.js +0 -349
- package/dist/hooks/useConvaiClient.js.map +0 -1
- package/dist/hooks/useDynamicInfoUpdater.d.ts +0 -33
- package/dist/hooks/useDynamicInfoUpdater.d.ts.map +0 -1
- package/dist/hooks/useDynamicInfoUpdater.js +0 -49
- package/dist/hooks/useDynamicInfoUpdater.js.map +0 -1
- package/dist/hooks/useLocalCameraTrack.d.ts +0 -22
- package/dist/hooks/useLocalCameraTrack.d.ts.map +0 -1
- package/dist/hooks/useLocalCameraTrack.js +0 -34
- package/dist/hooks/useLocalCameraTrack.js.map +0 -1
- package/dist/hooks/useMessageHandler.d.ts +0 -28
- package/dist/hooks/useMessageHandler.d.ts.map +0 -1
- package/dist/hooks/useMessageHandler.js +0 -267
- package/dist/hooks/useMessageHandler.js.map +0 -1
- package/dist/hooks/useScreenShare.d.ts +0 -45
- package/dist/hooks/useScreenShare.d.ts.map +0 -1
- package/dist/hooks/useScreenShare.js +0 -186
- package/dist/hooks/useScreenShare.js.map +0 -1
- package/dist/hooks/useTemplateKeysUpdater.d.ts +0 -35
- package/dist/hooks/useTemplateKeysUpdater.d.ts.map +0 -1
- package/dist/hooks/useTemplateKeysUpdater.js +0 -51
- package/dist/hooks/useTemplateKeysUpdater.js.map +0 -1
- package/dist/hooks/useTriggerMessageSender.d.ts +0 -28
- package/dist/hooks/useTriggerMessageSender.d.ts.map +0 -1
- package/dist/hooks/useTriggerMessageSender.js +0 -46
- package/dist/hooks/useTriggerMessageSender.js.map +0 -1
- package/dist/hooks/useTtsToggle.d.ts +0 -37
- package/dist/hooks/useTtsToggle.d.ts.map +0 -1
- package/dist/hooks/useTtsToggle.js +0 -63
- package/dist/hooks/useTtsToggle.js.map +0 -1
- package/dist/hooks/useUserTextMessageSender.d.ts +0 -28
- package/dist/hooks/useUserTextMessageSender.d.ts.map +0 -1
- package/dist/hooks/useUserTextMessageSender.js +0 -58
- package/dist/hooks/useUserTextMessageSender.js.map +0 -1
- package/dist/hooks/useVideoControls.d.ts +0 -39
- package/dist/hooks/useVideoControls.d.ts.map +0 -1
- package/dist/hooks/useVideoControls.js +0 -193
- package/dist/hooks/useVideoControls.js.map +0 -1
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
interface CharacterInfo {
|
|
2
|
-
name: string;
|
|
3
|
-
image: string | null;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Hook to fetch character information from Convai API
|
|
7
|
-
*
|
|
8
|
-
* @param characterId - The character ID to fetch information for (optional)
|
|
9
|
-
* @param apiKey - The Convai API key (optional)
|
|
10
|
-
* @returns Character information including name and image URL
|
|
11
|
-
*/
|
|
12
|
-
export declare const useCharacterInfo: (characterId?: string, apiKey?: string) => CharacterInfo & {
|
|
13
|
-
isLoading: boolean;
|
|
14
|
-
error: Error | null;
|
|
15
|
-
};
|
|
16
|
-
export {};
|
|
17
|
-
//# sourceMappingURL=useCharacterInfo.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCharacterInfo.d.ts","sourceRoot":"","sources":["../../src/hooks/useCharacterInfo.ts"],"names":[],"mappings":"AAGA,UAAU,aAAa;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,gBAAgB,GAC3B,cAAc,MAAM,EACpB,SAAS,MAAM,KACd,aAAa,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CAyD3D,CAAC"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { useState, useEffect } from "react";
|
|
2
|
-
import { logger } from "../utils/logger";
|
|
3
|
-
/**
|
|
4
|
-
* Hook to fetch character information from Convai API
|
|
5
|
-
*
|
|
6
|
-
* @param characterId - The character ID to fetch information for (optional)
|
|
7
|
-
* @param apiKey - The Convai API key (optional)
|
|
8
|
-
* @returns Character information including name and image URL
|
|
9
|
-
*/
|
|
10
|
-
export const useCharacterInfo = (characterId, apiKey) => {
|
|
11
|
-
const [characterInfo, setCharacterInfo] = useState({
|
|
12
|
-
name: "Convi",
|
|
13
|
-
image: null,
|
|
14
|
-
});
|
|
15
|
-
const [isLoading, setIsLoading] = useState(true);
|
|
16
|
-
const [error, setError] = useState(null);
|
|
17
|
-
useEffect(() => {
|
|
18
|
-
const fetchCharacterInfo = async () => {
|
|
19
|
-
if (!characterId || !apiKey) {
|
|
20
|
-
setIsLoading(false);
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
try {
|
|
24
|
-
setIsLoading(true);
|
|
25
|
-
setError(null);
|
|
26
|
-
const response = await fetch("https://api.convai.com/character/get", {
|
|
27
|
-
method: "POST",
|
|
28
|
-
headers: {
|
|
29
|
-
"Content-Type": "application/json",
|
|
30
|
-
"CONVAI-API-KEY": apiKey,
|
|
31
|
-
},
|
|
32
|
-
body: JSON.stringify({ charID: characterId }),
|
|
33
|
-
});
|
|
34
|
-
if (!response.ok) {
|
|
35
|
-
throw new Error(`Failed to fetch character info: ${response.status}`);
|
|
36
|
-
}
|
|
37
|
-
const data = await response.json();
|
|
38
|
-
// Extract character name and image with fallbacks
|
|
39
|
-
const name = data.character_name || "Convi";
|
|
40
|
-
const image = data.model_details?.METAHUMAN?.avatar_image_square ||
|
|
41
|
-
data.model_details?.METAHUMAN?.avatar_image ||
|
|
42
|
-
data.model_details?.modelPlaceholder ||
|
|
43
|
-
null;
|
|
44
|
-
setCharacterInfo({ name, image });
|
|
45
|
-
}
|
|
46
|
-
catch (err) {
|
|
47
|
-
const error = err instanceof Error ? err : new Error("Unknown error");
|
|
48
|
-
logger.error("Failed to fetch character info:", error);
|
|
49
|
-
setError(error);
|
|
50
|
-
// Keep default values on error
|
|
51
|
-
}
|
|
52
|
-
finally {
|
|
53
|
-
setIsLoading(false);
|
|
54
|
-
}
|
|
55
|
-
};
|
|
56
|
-
fetchCharacterInfo();
|
|
57
|
-
}, [characterId, apiKey]);
|
|
58
|
-
return { ...characterInfo, isLoading, error };
|
|
59
|
-
};
|
|
60
|
-
//# sourceMappingURL=useCharacterInfo.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useCharacterInfo.js","sourceRoot":"","sources":["../../src/hooks/useCharacterInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAOzC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,WAAoB,EACpB,MAAe,EAC8C,EAAE;IAC/D,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAgB;QAChE,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,IAAI;KACZ,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;YACpC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5B,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAEf,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,sCAAsC,EAAE;oBACnE,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE;wBACP,cAAc,EAAE,kBAAkB;wBAClC,gBAAgB,EAAE,MAAM;qBACzB;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;iBAC9C,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,MAAM,IAAI,KAAK,CAAC,mCAAmC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;gBACxE,CAAC;gBAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAEnC,kDAAkD;gBAClD,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,IAAI,OAAO,CAAC;gBAC5C,MAAM,KAAK,GACT,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,mBAAmB;oBAClD,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY;oBAC3C,IAAI,CAAC,aAAa,EAAE,gBAAgB;oBACpC,IAAI,CAAC;gBAEP,gBAAgB,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YACpC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBACtE,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;gBACvD,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,+BAA+B;YACjC,CAAC;oBAAS,CAAC;gBACT,YAAY,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;QACH,CAAC,CAAC;QAEF,kBAAkB,EAAE,CAAC;IACvB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;IAE1B,OAAO,EAAE,GAAG,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAChD,CAAC,CAAC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { ConvaiConfig, ConvaiClient, ChatMessage } from "../types";
|
|
2
|
-
/**
|
|
3
|
-
* Main hook for managing Convai client connection and functionality.
|
|
4
|
-
*
|
|
5
|
-
* Provides a complete interface for connecting to Convai's AI-powered voice assistants,
|
|
6
|
-
* managing real-time audio/video conversations, and handling various message types.
|
|
7
|
-
*
|
|
8
|
-
* @param config - Optional configuration to auto-connect on mount
|
|
9
|
-
* @returns {ConvaiClient & { activity: string; chatMessages: ChatMessage[] }} Complete client interface with connection state, methods, and message history
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```tsx
|
|
13
|
-
* function App() {
|
|
14
|
-
* const convaiClient = useConvaiClient({
|
|
15
|
-
* apiKey: 'your-api-key',
|
|
16
|
-
* characterId: 'your-character-id',
|
|
17
|
-
* enableVideo: true,
|
|
18
|
-
* });
|
|
19
|
-
*
|
|
20
|
-
* return (
|
|
21
|
-
* <ConvaiWidget convaiClient={convaiClient} />
|
|
22
|
-
* );
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*/
|
|
26
|
-
export declare const useConvaiClient: (config?: ConvaiConfig) => ConvaiClient & {
|
|
27
|
-
activity: string;
|
|
28
|
-
chatMessages: ChatMessage[];
|
|
29
|
-
};
|
|
30
|
-
//# sourceMappingURL=useConvaiClient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useConvaiClient.d.ts","sourceRoot":"","sources":["../../src/hooks/useConvaiClient.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,YAAY,EACZ,YAAY,EAEZ,WAAW,EAEZ,MAAM,UAAU,CAAC;AAalB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,eAAe,GAAI,SAAS,YAAY,KAAG,YAAY,GAAG;IACrE,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,WAAW,EAAE,CAAC;CAgX7B,CAAC"}
|
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
import { useState, useCallback, useMemo, useEffect } from "react";
|
|
2
|
-
import { Room, RoomEvent } from "livekit-client";
|
|
3
|
-
import { useUserTextMessageSender } from "./useUserTextMessageSender";
|
|
4
|
-
import { useTriggerMessageSender } from "./useTriggerMessageSender";
|
|
5
|
-
import { useTemplateKeysUpdater } from "./useTemplateKeysUpdater";
|
|
6
|
-
import { useDynamicInfoUpdater } from "./useDynamicInfoUpdater";
|
|
7
|
-
import { useMessageHandler } from "./useMessageHandler";
|
|
8
|
-
import { useAudioControls } from "./useAudioControls";
|
|
9
|
-
import { useVideoControls } from "./useVideoControls";
|
|
10
|
-
import { useScreenShare } from "./useScreenShare";
|
|
11
|
-
import { logger } from "../utils/logger";
|
|
12
|
-
import { useTtsToggle } from "./useTtsToggle";
|
|
13
|
-
import { resolveSpeakerId } from "../utils/speakerManagement";
|
|
14
|
-
/**
|
|
15
|
-
* Main hook for managing Convai client connection and functionality.
|
|
16
|
-
*
|
|
17
|
-
* Provides a complete interface for connecting to Convai's AI-powered voice assistants,
|
|
18
|
-
* managing real-time audio/video conversations, and handling various message types.
|
|
19
|
-
*
|
|
20
|
-
* @param config - Optional configuration to auto-connect on mount
|
|
21
|
-
* @returns {ConvaiClient & { activity: string; chatMessages: ChatMessage[] }} Complete client interface with connection state, methods, and message history
|
|
22
|
-
*
|
|
23
|
-
* @example
|
|
24
|
-
* ```tsx
|
|
25
|
-
* function App() {
|
|
26
|
-
* const convaiClient = useConvaiClient({
|
|
27
|
-
* apiKey: 'your-api-key',
|
|
28
|
-
* characterId: 'your-character-id',
|
|
29
|
-
* enableVideo: true,
|
|
30
|
-
* });
|
|
31
|
-
*
|
|
32
|
-
* return (
|
|
33
|
-
* <ConvaiWidget convaiClient={convaiClient} />
|
|
34
|
-
* );
|
|
35
|
-
* }
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
|
-
export const useConvaiClient = (config) => {
|
|
39
|
-
const [room] = useState(new Room());
|
|
40
|
-
const [isConnected, setIsConnected] = useState(false);
|
|
41
|
-
const [isConnecting, setIsConnecting] = useState(false);
|
|
42
|
-
const [isBotReady, setIsBotReady] = useState(false); // Bot is ready to receive messages
|
|
43
|
-
const [activity, setActivity] = useState("Idle");
|
|
44
|
-
const [chatMessages, setChatMessages] = useState([]);
|
|
45
|
-
const [userTranscription, setUserTranscription] = useState("");
|
|
46
|
-
const [isBotResponding, setIsBotResponding] = useState(false);
|
|
47
|
-
const [participantSid, setParticipantSid] = useState("");
|
|
48
|
-
const [isSpeaking, setIsSpeaking] = useState(false);
|
|
49
|
-
const [characterSessionId, setCharacterSessionId] = useState("-1");
|
|
50
|
-
const [connectionType, setConnectionType] = useState(null);
|
|
51
|
-
const [apiKey, setApiKey] = useState(null);
|
|
52
|
-
const [characterId, setCharacterId] = useState(null);
|
|
53
|
-
const [speakerId, setSpeakerId] = useState(null);
|
|
54
|
-
// Store config for later use (without auto-connecting)
|
|
55
|
-
// Config is captured once on mount - changing the config prop won't update it
|
|
56
|
-
const [storedConfig] = useState(config);
|
|
57
|
-
// Default to Noisy Mode for optimal interruption handling
|
|
58
|
-
const [audioSettings, setAudioSettings] = useState({
|
|
59
|
-
echoCancellation: true,
|
|
60
|
-
noiseSuppression: true,
|
|
61
|
-
autoGainControl: true,
|
|
62
|
-
sampleRate: 48000,
|
|
63
|
-
channelCount: 1,
|
|
64
|
-
});
|
|
65
|
-
// Initialize message sender hooks
|
|
66
|
-
const { sendUserTextMessage } = useUserTextMessageSender(room, participantSid);
|
|
67
|
-
const { sendTriggerMessage } = useTriggerMessageSender(room, participantSid);
|
|
68
|
-
const { updateTemplateKeys } = useTemplateKeysUpdater(room, participantSid);
|
|
69
|
-
const { updateDynamicInfo } = useDynamicInfoUpdater(room, participantSid);
|
|
70
|
-
const { toggleTts } = useTtsToggle(room);
|
|
71
|
-
// Initialize message handler
|
|
72
|
-
const { setupMessageListener } = useMessageHandler(room, setChatMessages, setUserTranscription, setIsBotResponding, isBotResponding, setIsSpeaking, setIsConnected, // Pass callback to update connection state when bot-ready is received
|
|
73
|
-
setActivity, // Pass callback to update activity state when bot-ready is received
|
|
74
|
-
setIsBotReady);
|
|
75
|
-
// Initialize media controls
|
|
76
|
-
const audioControls = useAudioControls(room);
|
|
77
|
-
const videoControls = useVideoControls(room);
|
|
78
|
-
const screenShareControls = useScreenShare(room);
|
|
79
|
-
// Data message listener effect
|
|
80
|
-
useEffect(() => {
|
|
81
|
-
const cleanup = setupMessageListener();
|
|
82
|
-
return cleanup;
|
|
83
|
-
}, [setupMessageListener]);
|
|
84
|
-
// Listen for room disconnection events (PC manager closed, network issues, etc.)
|
|
85
|
-
useEffect(() => {
|
|
86
|
-
if (!room)
|
|
87
|
-
return;
|
|
88
|
-
const handleDisconnected = () => {
|
|
89
|
-
setIsConnected(false);
|
|
90
|
-
setIsBotReady(false); // Reset bot-ready state on disconnect
|
|
91
|
-
setActivity("Disconnected");
|
|
92
|
-
setChatMessages([]);
|
|
93
|
-
setIsBotResponding(false);
|
|
94
|
-
};
|
|
95
|
-
const handleConnectionStateChanged = (state) => {
|
|
96
|
-
if (state === "disconnected") {
|
|
97
|
-
setIsConnected(false);
|
|
98
|
-
setActivity("Disconnected");
|
|
99
|
-
setChatMessages([]);
|
|
100
|
-
setIsBotResponding(false);
|
|
101
|
-
}
|
|
102
|
-
else if (state === "connected") {
|
|
103
|
-
setIsConnected(true);
|
|
104
|
-
setIsBotReady(false); // Room connected but bot not ready yet
|
|
105
|
-
setActivity("Connected");
|
|
106
|
-
}
|
|
107
|
-
else if (state === "connecting") {
|
|
108
|
-
setIsConnecting(true);
|
|
109
|
-
setIsBotReady(false); // Reset bot-ready when reconnecting
|
|
110
|
-
setActivity("Connecting");
|
|
111
|
-
}
|
|
112
|
-
};
|
|
113
|
-
// Listen for disconnection events
|
|
114
|
-
room.on(RoomEvent.Disconnected, handleDisconnected);
|
|
115
|
-
room.on(RoomEvent.ConnectionStateChanged, handleConnectionStateChanged);
|
|
116
|
-
return () => {
|
|
117
|
-
room.off(RoomEvent.Disconnected, handleDisconnected);
|
|
118
|
-
room.off(RoomEvent.ConnectionStateChanged, handleConnectionStateChanged);
|
|
119
|
-
};
|
|
120
|
-
}, [room]);
|
|
121
|
-
// Create client state
|
|
122
|
-
const state = useMemo(() => ({
|
|
123
|
-
isConnected,
|
|
124
|
-
isConnecting,
|
|
125
|
-
isListening: false,
|
|
126
|
-
isThinking: false,
|
|
127
|
-
isSpeaking,
|
|
128
|
-
agentState: "disconnected",
|
|
129
|
-
}), [isConnected, isConnecting, isSpeaking]);
|
|
130
|
-
// Connect function - uses stored config or accepts override
|
|
131
|
-
const connect = useCallback(async (configOverride) => {
|
|
132
|
-
// Use override config or stored config
|
|
133
|
-
const finalConfig = configOverride || storedConfig;
|
|
134
|
-
if (!finalConfig) {
|
|
135
|
-
throw new Error("No configuration provided. Pass config to useConvaiClient() or to connect()");
|
|
136
|
-
}
|
|
137
|
-
// Add default URL if not provided
|
|
138
|
-
const configWithDefaults = {
|
|
139
|
-
url: "https://realtime-api.convai.com",
|
|
140
|
-
...finalConfig,
|
|
141
|
-
};
|
|
142
|
-
if (!configWithDefaults.apiKey ||
|
|
143
|
-
!configWithDefaults.characterId) {
|
|
144
|
-
throw new Error("apiKey and characterId are required");
|
|
145
|
-
}
|
|
146
|
-
setIsConnecting(true);
|
|
147
|
-
setActivity("Connecting...");
|
|
148
|
-
try {
|
|
149
|
-
// Store connection config
|
|
150
|
-
setApiKey(configWithDefaults.apiKey);
|
|
151
|
-
setCharacterId(configWithDefaults.characterId);
|
|
152
|
-
// Resolve speaker ID based on endUserId
|
|
153
|
-
if (configWithDefaults.endUserId) {
|
|
154
|
-
logger.info(`Resolving speaker ID for endUserId: ${configWithDefaults.endUserId}`);
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
logger.info('Connecting in anonymous mode (no endUserId provided)');
|
|
158
|
-
}
|
|
159
|
-
const resolvedSpeakerId = await resolveSpeakerId(configWithDefaults.endUserId, configWithDefaults.apiKey);
|
|
160
|
-
setSpeakerId(resolvedSpeakerId);
|
|
161
|
-
if (resolvedSpeakerId) {
|
|
162
|
-
logger.info(`Speaker ID resolved: ${resolvedSpeakerId.substring(0, 8)}...`);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
logger.info('No speaker ID - connecting without persistent memory');
|
|
166
|
-
}
|
|
167
|
-
// Determine connection type based on enableVideo
|
|
168
|
-
const connType = configWithDefaults.enableVideo ? "video" : "audio";
|
|
169
|
-
setConnectionType(connType);
|
|
170
|
-
// Prepare request body with required parameters
|
|
171
|
-
const requestBody = {
|
|
172
|
-
character_id: configWithDefaults.characterId,
|
|
173
|
-
...(resolvedSpeakerId && { speaker_id: resolvedSpeakerId }),
|
|
174
|
-
transport: "livekit",
|
|
175
|
-
connection_type: connType,
|
|
176
|
-
llm_provider: "dynamic",
|
|
177
|
-
default_tts_enabled: configWithDefaults.ttsEnabled !== undefined ? configWithDefaults.ttsEnabled : true, // Use config value or default to true
|
|
178
|
-
...(characterSessionId &&
|
|
179
|
-
characterSessionId !== "-1" && {
|
|
180
|
-
character_session_id: characterSessionId,
|
|
181
|
-
}), // Resume with existing session if available (skip if -1)
|
|
182
|
-
...(configWithDefaults.actionConfig && { action_config: configWithDefaults.actionConfig }),
|
|
183
|
-
};
|
|
184
|
-
// Call Core Service API
|
|
185
|
-
const response = await fetch(`${configWithDefaults.url}/connect`, {
|
|
186
|
-
method: "POST",
|
|
187
|
-
headers: {
|
|
188
|
-
"x-api-key": configWithDefaults.apiKey,
|
|
189
|
-
"Content-Type": "application/json",
|
|
190
|
-
},
|
|
191
|
-
body: JSON.stringify(requestBody),
|
|
192
|
-
});
|
|
193
|
-
if (!response.ok) {
|
|
194
|
-
const errorText = await response.text();
|
|
195
|
-
logger.error("API Error Response:", {
|
|
196
|
-
status: response.status,
|
|
197
|
-
statusText: response.statusText,
|
|
198
|
-
body: errorText,
|
|
199
|
-
});
|
|
200
|
-
let errorMessage = `HTTP error! status: ${response.status}`;
|
|
201
|
-
try {
|
|
202
|
-
const errorData = JSON.parse(errorText);
|
|
203
|
-
if (errorData.message) {
|
|
204
|
-
errorMessage = errorData.message;
|
|
205
|
-
}
|
|
206
|
-
else if (errorData.error) {
|
|
207
|
-
errorMessage = errorData.error;
|
|
208
|
-
}
|
|
209
|
-
else if (errorData.detail) {
|
|
210
|
-
errorMessage = errorData.detail;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
catch (e) {
|
|
214
|
-
// If we can't parse the error, use the raw text
|
|
215
|
-
if (errorText) {
|
|
216
|
-
errorMessage = `${errorMessage}: ${errorText}`;
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
throw new Error(errorMessage);
|
|
220
|
-
}
|
|
221
|
-
const connectionData = await response.json();
|
|
222
|
-
// Capture character_session_id from connection response
|
|
223
|
-
if (connectionData.character_session_id) {
|
|
224
|
-
setCharacterSessionId(connectionData.character_session_id);
|
|
225
|
-
}
|
|
226
|
-
// Connect to LiveKit room
|
|
227
|
-
await room.connect(connectionData.room_url, connectionData.token, {
|
|
228
|
-
rtcConfig: {
|
|
229
|
-
iceTransportPolicy: "relay",
|
|
230
|
-
},
|
|
231
|
-
});
|
|
232
|
-
// Enable microphone only if startWithAudioOn is true (default: false)
|
|
233
|
-
// If false, microphone stays off until user enables it via audioControls
|
|
234
|
-
if (configWithDefaults.startWithAudioOn) {
|
|
235
|
-
await room.localParticipant.setMicrophoneEnabled(true, {
|
|
236
|
-
echoCancellation: audioSettings.echoCancellation,
|
|
237
|
-
noiseSuppression: audioSettings.noiseSuppression,
|
|
238
|
-
autoGainControl: audioSettings.autoGainControl,
|
|
239
|
-
sampleRate: audioSettings.sampleRate,
|
|
240
|
-
channelCount: audioSettings.channelCount,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
// Enable camera only if enableVideo is true AND startWithVideoOn is true
|
|
244
|
-
if (configWithDefaults.enableVideo && configWithDefaults.startWithVideoOn) {
|
|
245
|
-
await room.localParticipant.setCameraEnabled(true);
|
|
246
|
-
}
|
|
247
|
-
// Capture participant SID
|
|
248
|
-
setParticipantSid(room.localParticipant.sid);
|
|
249
|
-
setIsConnected(true);
|
|
250
|
-
setActivity("Connected");
|
|
251
|
-
}
|
|
252
|
-
catch (error) {
|
|
253
|
-
logger.error("Connection failed:", error);
|
|
254
|
-
setIsConnected(false);
|
|
255
|
-
setActivity("Connection failed");
|
|
256
|
-
throw error;
|
|
257
|
-
}
|
|
258
|
-
finally {
|
|
259
|
-
setIsConnecting(false);
|
|
260
|
-
}
|
|
261
|
-
}, [room, characterSessionId, storedConfig]);
|
|
262
|
-
// Disconnect function
|
|
263
|
-
const disconnect = useCallback(async () => {
|
|
264
|
-
if (room && room.state !== "disconnected") {
|
|
265
|
-
try {
|
|
266
|
-
await room.disconnect();
|
|
267
|
-
setIsConnected(false);
|
|
268
|
-
setIsBotReady(false); // Reset bot-ready state on disconnect
|
|
269
|
-
setConnectionType(null); // Reset connection type
|
|
270
|
-
setApiKey(null); // Clear API key
|
|
271
|
-
setCharacterId(null); // Clear character ID
|
|
272
|
-
setSpeakerId(null); // Clear speaker ID
|
|
273
|
-
setActivity("Disconnected");
|
|
274
|
-
setChatMessages([]);
|
|
275
|
-
setIsBotResponding(false);
|
|
276
|
-
// Keep characterSessionId for reconnection - only clear on explicit reset
|
|
277
|
-
}
|
|
278
|
-
catch (error) {
|
|
279
|
-
// Handle disconnect errors gracefully
|
|
280
|
-
// ConnectionError "Client initiated disconnect" is expected in some cases
|
|
281
|
-
if (!(error instanceof Error && error.message.includes("disconnect"))) {
|
|
282
|
-
logger.error("Disconnect error:", error);
|
|
283
|
-
}
|
|
284
|
-
// Still update state even if disconnect throws
|
|
285
|
-
setIsConnected(false);
|
|
286
|
-
setIsBotReady(false); // Reset bot-ready state on disconnect
|
|
287
|
-
setConnectionType(null); // Reset connection type
|
|
288
|
-
setApiKey(null); // Clear API key
|
|
289
|
-
setCharacterId(null); // Clear character ID
|
|
290
|
-
setSpeakerId(null); // Clear speaker ID
|
|
291
|
-
setActivity("Disconnected");
|
|
292
|
-
setChatMessages([]);
|
|
293
|
-
setIsBotResponding(false);
|
|
294
|
-
// Keep characterSessionId for reconnection - only clear on explicit reset
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}, [room]);
|
|
298
|
-
// Reset session function - clears character_session_id for a fresh session
|
|
299
|
-
const resetSession = useCallback(() => {
|
|
300
|
-
setCharacterSessionId("-1");
|
|
301
|
-
}, []);
|
|
302
|
-
// Send RTVI trigger
|
|
303
|
-
const sendRTVI = useCallback((triggerName, message) => {
|
|
304
|
-
if (room && room.localParticipant) {
|
|
305
|
-
const data = {
|
|
306
|
-
type: "rtvi-trigger",
|
|
307
|
-
trigger: triggerName,
|
|
308
|
-
message: message || "",
|
|
309
|
-
};
|
|
310
|
-
room.localParticipant.publishData(new TextEncoder().encode(JSON.stringify(data)), {
|
|
311
|
-
reliable: true,
|
|
312
|
-
});
|
|
313
|
-
}
|
|
314
|
-
}, [room]);
|
|
315
|
-
// Reconnect function - disconnect and connect again with stored config
|
|
316
|
-
const reconnect = useCallback(async () => {
|
|
317
|
-
await disconnect();
|
|
318
|
-
await connect();
|
|
319
|
-
}, [disconnect, connect]);
|
|
320
|
-
// Return client object with activity and chat messages
|
|
321
|
-
return {
|
|
322
|
-
state,
|
|
323
|
-
connectionType,
|
|
324
|
-
apiKey,
|
|
325
|
-
characterId,
|
|
326
|
-
speakerId,
|
|
327
|
-
connect,
|
|
328
|
-
disconnect,
|
|
329
|
-
reconnect,
|
|
330
|
-
resetSession,
|
|
331
|
-
room,
|
|
332
|
-
videoTrack: null,
|
|
333
|
-
audioTrack: null,
|
|
334
|
-
sendUserTextMessage,
|
|
335
|
-
sendTriggerMessage,
|
|
336
|
-
updateTemplateKeys,
|
|
337
|
-
updateDynamicInfo,
|
|
338
|
-
activity,
|
|
339
|
-
chatMessages,
|
|
340
|
-
userTranscription,
|
|
341
|
-
characterSessionId,
|
|
342
|
-
isBotReady,
|
|
343
|
-
audioControls,
|
|
344
|
-
videoControls,
|
|
345
|
-
screenShareControls,
|
|
346
|
-
toggleTts,
|
|
347
|
-
};
|
|
348
|
-
};
|
|
349
|
-
//# sourceMappingURL=useConvaiClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useConvaiClient.js","sourceRoot":"","sources":["../../src/hooks/useConvaiClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { Room } from "livekit-client";
|
|
2
|
-
export interface DynamicInfo {
|
|
3
|
-
text: string;
|
|
4
|
-
}
|
|
5
|
-
/**
|
|
6
|
-
* Hook for updating dynamic information in Convai.
|
|
7
|
-
*
|
|
8
|
-
* Updates contextual information that can be used by the AI assistant
|
|
9
|
-
* to provide more relevant and up-to-date responses.
|
|
10
|
-
*
|
|
11
|
-
* @param {Room} room - LiveKit room instance
|
|
12
|
-
* @param {string} participantSid - Participant session ID
|
|
13
|
-
* @returns {Object} Object containing updateDynamicInfo function
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```tsx
|
|
17
|
-
* function DynamicInfoComponent() {
|
|
18
|
-
* const { updateDynamicInfo } = useDynamicInfoUpdater(room, participantSid);
|
|
19
|
-
*
|
|
20
|
-
* const handleUpdate = () => {
|
|
21
|
-
* updateDynamicInfo({
|
|
22
|
-
* text: "The user is now exploring a virtual museum"
|
|
23
|
-
* });
|
|
24
|
-
* };
|
|
25
|
-
*
|
|
26
|
-
* return <button onClick={handleUpdate}>Update Info</button>;
|
|
27
|
-
* }
|
|
28
|
-
* ```
|
|
29
|
-
*/
|
|
30
|
-
export declare const useDynamicInfoUpdater: (room: Room, participantSid: string) => {
|
|
31
|
-
updateDynamicInfo: (dynamicInfo: DynamicInfo) => void;
|
|
32
|
-
};
|
|
33
|
-
//# sourceMappingURL=useDynamicInfoUpdater.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDynamicInfoUpdater.d.ts","sourceRoot":"","sources":["../../src/hooks/useDynamicInfoUpdater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,IAAI,EACV,gBAAgB,MAAM;qCAGN,WAAW;CAwB5B,CAAC"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import { useCallback } from "react";
|
|
2
|
-
/**
|
|
3
|
-
* Hook for updating dynamic information in Convai.
|
|
4
|
-
*
|
|
5
|
-
* Updates contextual information that can be used by the AI assistant
|
|
6
|
-
* to provide more relevant and up-to-date responses.
|
|
7
|
-
*
|
|
8
|
-
* @param {Room} room - LiveKit room instance
|
|
9
|
-
* @param {string} participantSid - Participant session ID
|
|
10
|
-
* @returns {Object} Object containing updateDynamicInfo function
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```tsx
|
|
14
|
-
* function DynamicInfoComponent() {
|
|
15
|
-
* const { updateDynamicInfo } = useDynamicInfoUpdater(room, participantSid);
|
|
16
|
-
*
|
|
17
|
-
* const handleUpdate = () => {
|
|
18
|
-
* updateDynamicInfo({
|
|
19
|
-
* text: "The user is now exploring a virtual museum"
|
|
20
|
-
* });
|
|
21
|
-
* };
|
|
22
|
-
*
|
|
23
|
-
* return <button onClick={handleUpdate}>Update Info</button>;
|
|
24
|
-
* }
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export const useDynamicInfoUpdater = (room, participantSid) => {
|
|
28
|
-
const updateDynamicInfo = useCallback((dynamicInfo) => {
|
|
29
|
-
if (room && room.localParticipant && dynamicInfo.text?.trim()) {
|
|
30
|
-
const message = {
|
|
31
|
-
type: "update-dynamic-info",
|
|
32
|
-
data: {
|
|
33
|
-
dynamic_info: {
|
|
34
|
-
text: dynamicInfo.text.trim(),
|
|
35
|
-
},
|
|
36
|
-
participant_sid: participantSid || room.localParticipant.sid,
|
|
37
|
-
},
|
|
38
|
-
};
|
|
39
|
-
const encodedData = new TextEncoder().encode(JSON.stringify(message));
|
|
40
|
-
room.localParticipant.publishData(encodedData, {
|
|
41
|
-
reliable: true,
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
}, [room, participantSid]);
|
|
45
|
-
return {
|
|
46
|
-
updateDynamicInfo,
|
|
47
|
-
};
|
|
48
|
-
};
|
|
49
|
-
//# sourceMappingURL=useDynamicInfoUpdater.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDynamicInfoUpdater.js","sourceRoot":"","sources":["../../src/hooks/useDynamicInfoUpdater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAQpC;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,IAAU,EACV,cAAsB,EACtB,EAAE;IACF,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,WAAwB,EAAE,EAAE;QAC3B,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YAC9D,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,qBAAqB;gBAC3B,IAAI,EAAE;oBACJ,YAAY,EAAE;wBACZ,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE;qBAC9B;oBACD,eAAe,EAAE,cAAc,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG;iBAC7D;aACF,CAAC;YAEF,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACtE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,EAAE;gBAC7C,QAAQ,EAAE,IAAI;aACf,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EACD,CAAC,IAAI,EAAE,cAAc,CAAC,CACvB,CAAC;IAEF,OAAO;QACL,iBAAiB;KAClB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { TrackReferenceOrPlaceholder } from "@livekit/components-react";
|
|
2
|
-
/**
|
|
3
|
-
* Hook to get the local camera track reference from LiveKit.
|
|
4
|
-
*
|
|
5
|
-
* Returns a track reference that can be used with LiveKit components
|
|
6
|
-
* to display the local participant's camera feed.
|
|
7
|
-
*
|
|
8
|
-
* @returns {TrackReferenceOrPlaceholder} Track reference for the local camera
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```tsx
|
|
12
|
-
* function VideoComponent() {
|
|
13
|
-
* const cameraTrackRef = useLocalCameraTrack();
|
|
14
|
-
*
|
|
15
|
-
* return (
|
|
16
|
-
* <VideoTrack trackRef={cameraTrackRef} />
|
|
17
|
-
* );
|
|
18
|
-
* }
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export declare const useLocalCameraTrack: () => TrackReferenceOrPlaceholder;
|
|
22
|
-
//# sourceMappingURL=useLocalCameraTrack.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalCameraTrack.d.ts","sourceRoot":"","sources":["../../src/hooks/useLocalCameraTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,EAE5B,MAAM,2BAA2B,CAAC;AAInC;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,mBAAmB,mCAY/B,CAAC"}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { useLocalParticipant, } from "@livekit/components-react";
|
|
2
|
-
import { Track } from "livekit-client";
|
|
3
|
-
import { useMemo } from "react";
|
|
4
|
-
/**
|
|
5
|
-
* Hook to get the local camera track reference from LiveKit.
|
|
6
|
-
*
|
|
7
|
-
* Returns a track reference that can be used with LiveKit components
|
|
8
|
-
* to display the local participant's camera feed.
|
|
9
|
-
*
|
|
10
|
-
* @returns {TrackReferenceOrPlaceholder} Track reference for the local camera
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```tsx
|
|
14
|
-
* function VideoComponent() {
|
|
15
|
-
* const cameraTrackRef = useLocalCameraTrack();
|
|
16
|
-
*
|
|
17
|
-
* return (
|
|
18
|
-
* <VideoTrack trackRef={cameraTrackRef} />
|
|
19
|
-
* );
|
|
20
|
-
* }
|
|
21
|
-
* ```
|
|
22
|
-
*/
|
|
23
|
-
export const useLocalCameraTrack = () => {
|
|
24
|
-
const { cameraTrack, localParticipant } = useLocalParticipant();
|
|
25
|
-
const cameraTrackRef = useMemo(() => {
|
|
26
|
-
return {
|
|
27
|
-
participant: localParticipant,
|
|
28
|
-
source: Track.Source.Camera,
|
|
29
|
-
publication: cameraTrack,
|
|
30
|
-
};
|
|
31
|
-
}, [localParticipant, cameraTrack]);
|
|
32
|
-
return cameraTrackRef;
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=useLocalCameraTrack.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useLocalCameraTrack.js","sourceRoot":"","sources":["../../src/hooks/useLocalCameraTrack.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,mBAAmB,GACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEhC;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE;IACtC,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAEhE,MAAM,cAAc,GAAgC,OAAO,CAAC,GAAG,EAAE;QAC/D,OAAO;YACL,WAAW,EAAE,gBAAgB;YAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM;YAC3B,WAAW,EAAE,WAAW;SACzB,CAAC;IACJ,CAAC,EAAE,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC,CAAC;IAEpC,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC"}
|