@clikvn/agent-widget-embedded 1.1.5-dev-07 → 1.1.5-dev-09
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/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/.tsbuildinfo +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.js +26 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/commons/constants/variables.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.js +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Agent/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.js +161 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AgentThinking.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.js +228 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/AudioPlayer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.js +39 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Chat.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.js +36 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Header.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.js +45 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/HtmlContent.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.d.ts +198 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.js +233 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Icons.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.d.ts +38 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.js +23 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/LocationCard.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.js +97 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Markdown.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.d.ts +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.js +71 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Message.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.d.ts +28 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.js +350 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput copy.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.d.ts +28 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.js +401 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/MultimodalInput.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.js +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Overview.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.d.ts +6 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.js +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewAttachment.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.js +21 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/PreviewFileAttachment.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.js +205 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductDetail.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.d.ts +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.js +210 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ProductList.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.d.ts +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.js +86 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ScenariosList.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.d.ts +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.js +268 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/AudioPlayerSimplified.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.d.ts +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.js +301 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/MultimodalInputSimplified.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.js +30 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Simplified/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.js +31 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/SuggestedActions.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.js +84 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/UserContactForm.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.d.ts +17 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.js +71 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/VoiceRecordingUI.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.d.ts +42 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.js +198 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/Weather.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.js +34 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Button.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.d.ts +28 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.js +37 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/DropdownMenu.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.js +4 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Spinner.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.d.ts +6 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.js +9 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/Textarea.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.js +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/badge.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.d.ts +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.js +44 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/ui/collapsible.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.d.ts +14 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.js +53 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidget.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.d.ts +22 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.js +29 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/components/Chat/voice/VoiceWidgetChat.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.d.ts +97 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.js +95 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants/toolNames.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/constants.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.d.ts +48 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.js +23 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/features/AgentWidget/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.js +135 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioAnalyzer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.d.ts +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.js +39 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioMesseagePlayer.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.d.ts +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.js +59 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useAudioRecording.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.d.ts +29 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.js +225 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.js +66 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChatData.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.d.ts +79 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.js +23 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useConfiguration.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.js +29 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useScrollToBottom.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/index.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.js +76 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models/FlowiseClient.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.d.ts +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/models.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.d.ts +85 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.js +36 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/register.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.js +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/apis.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.js +13 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/bot.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.d.ts +53 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.js +163 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/chat.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.d.ts +14 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.js +181 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/services/vt360.service.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.d.ts +11 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/bot.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.d.ts +10 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/chat.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.d.ts +27 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/common.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.d.ts +160 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/flowise.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.d.ts +48 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/product.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.d.ts +14 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types/user.type.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.d.ts +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.js +2 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/types.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.d.ts +20 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.js +492 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/agentTraceUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.d.ts +21 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.js +296 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/audioRecording.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.d.ts +7 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.js +40 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/commonUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.js +18 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/currency.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.d.ts +3 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.js +46 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/fileUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.d.ts +4 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.js +17 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/functionUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.d.ts +37 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.js +55 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/messageUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.d.ts +16 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.js +79 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/requestUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.d.ts +5 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.js +12 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/streamUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.d.ts +105 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.js +178 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/utils/toolUtils.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.d.ts +8 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.js +5 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/web.js.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.d.ts +18 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.d.ts.map +1 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.js +31 -0
- package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/window.js.map +1 -0
- package/dist/components/Chat/Icons.d.ts +4 -3
- package/dist/components/Chat/Icons.d.ts.map +1 -1
- package/dist/components/Chat/MultimodalInput copy.d.ts +28 -0
- package/dist/components/Chat/MultimodalInput copy.d.ts.map +1 -0
- package/dist/components/Chat/MultimodalInput.d.ts.map +1 -1
- package/dist/components/Chat/PreviewFileAttachment.d.ts +7 -0
- package/dist/components/Chat/PreviewFileAttachment.d.ts.map +1 -0
- package/dist/components/Chat/VoiceRecordingUI.d.ts +17 -0
- package/dist/components/Chat/VoiceRecordingUI.d.ts.map +1 -0
- package/dist/hooks/useAudioAnalyzer.d.ts +1 -1
- package/dist/hooks/useAudioAnalyzer.d.ts.map +1 -1
- package/dist/hooks/useAudioRecording.d.ts +2 -1
- package/dist/hooks/useAudioRecording.d.ts.map +1 -1
- package/dist/index-old.html +108 -0
- package/dist/index.html +54 -37
- package/dist/web.js +1 -1
- package/dist/web.js.map +1 -0
- package/package.json +2 -1
- package/.claude/settings.local.json +0 -12
- package/.idea/clik-ai-chatbot-embedded.iml +0 -12
- package/.idea/codeStyles/Project.xml +0 -59
- package/.idea/codeStyles/codeStyleConfig.xml +0 -5
- package/.idea/inspectionProfiles/Project_Default.xml +0 -6
- package/.idea/jsLinters/eslint.xml +0 -6
- package/.idea/modules.xml +0 -8
- package/.idea/prettier.xml +0 -6
- package/.idea/vcs.xml +0 -6
- package/dist/utils/agentTraceUtils.test.d.ts +0 -2
- package/dist/utils/agentTraceUtils.test.d.ts.map +0 -1
- package/dist/utils/testGrouping.d.ts +0 -6
- package/dist/utils/testGrouping.d.ts.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import commonStyles from '../../assets/common.css';
|
|
3
|
+
import Agent from '../../components/Agent';
|
|
4
|
+
import { AudioMessagePlayerProvider } from '../../hooks/useAudioMesseagePlayer';
|
|
5
|
+
import { ChatDataProvider } from '../../hooks/useChatData';
|
|
6
|
+
import { ConfigurationProvider } from '../../hooks/useConfiguration';
|
|
7
|
+
const AgentWidget = (props) => {
|
|
8
|
+
return (_jsxs("div", { className: "w-full h-full", children: [_jsx("style", { children: commonStyles }), _jsx(ConfigurationProvider, { config: {
|
|
9
|
+
apiHost: props.apiHost,
|
|
10
|
+
agentId: props.agentId,
|
|
11
|
+
voice: props.voice,
|
|
12
|
+
overrideConfig: props.overrideConfig?.overrideConfig,
|
|
13
|
+
theme: props.theme,
|
|
14
|
+
skipSuggestion: props.overrideConfig?.skipSuggestion,
|
|
15
|
+
onLoaded: props.onLoaded,
|
|
16
|
+
}, children: _jsx(ChatDataProvider, { data: {
|
|
17
|
+
chatId: props.overrideConfig?.chatId,
|
|
18
|
+
suggestedActions: props.overrideConfig?.suggestedActions,
|
|
19
|
+
listeners: props.listeners,
|
|
20
|
+
}, children: _jsx(AudioMessagePlayerProvider, { children: _jsx(Agent, {}) }) }) })] }));
|
|
21
|
+
};
|
|
22
|
+
export default AgentWidget;
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/features/AgentWidget/index.tsx"],"names":[],"mappings":";AACA,OAAO,YAAY,MAAM,yBAAyB,CAAC;AACnD,OAAO,KAAK,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AA+CrE,MAAM,WAAW,GAAwB,CAAC,KAAsB,EAAE,EAAE;IAClE,OAAO,CACL,eAAK,SAAS,EAAC,eAAe,aAC5B,0BAAQ,YAAY,GAAS,EAC7B,KAAC,qBAAqB,IACpB,MAAM,EAAE;oBACN,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,OAAO,EAAE,KAAK,CAAC,OAAO;oBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,cAAc;oBACpD,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,cAAc;oBACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ;iBACzB,YAED,KAAC,gBAAgB,IACf,IAAI,EAAE;wBACJ,MAAM,EAAE,KAAK,CAAC,cAAc,EAAE,MAAM;wBACpC,gBAAgB,EAAE,KAAK,CAAC,cAAc,EAAE,gBAAgB;wBACxD,SAAS,EAAE,KAAK,CAAC,SAAS;qBAC3B,YAED,KAAC,0BAA0B,cACzB,KAAC,KAAK,KAAG,GACkB,GACZ,GACG,IACpB,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["import { FC } from 'react';\nimport commonStyles from '../../assets/common.css';\nimport Agent from '../../components/Agent';\nimport { AudioMessagePlayerProvider } from '../../hooks/useAudioMesseagePlayer';\nimport { ChatDataProvider } from '../../hooks/useChatData';\nimport { ConfigurationProvider } from '../../hooks/useConfiguration';\nimport { EVENT_TYPE } from '../../models';\nimport { ConfigMessageType, SuggestionType } from '../../types/common.type';\n\nexport type ToolType = {\n setInput: (text?: string) => void;\n startRecording: () => Promise<void>;\n};\n\nexport type AgentWidgetType = {\n apiHost: string;\n agentId: string;\n voice?: {\n enable?: boolean;\n livekitUrl: string;\n };\n overrideConfig?: {\n chatId?: string | undefined;\n overrideConfig?: Record<string, unknown>;\n suggestedActions?: SuggestionType[];\n skipSuggestion?: boolean;\n } & Record<string, unknown>;\n theme?: {\n botMessage?: ConfigMessageType;\n userMessage?: ConfigMessageType;\n suggestion?: {\n defaultRows?: number; // only for scroll mode\n expandedRows?: number; // only for scroll mode\n layoutMode?: 'grid' | 'scroll';\n };\n input?: {\n placeholder?: string;\n recordingPlaceholder?: string;\n transcribingPlaceholder?: string;\n };\n overview?: {\n title: string;\n description?: string;\n };\n buttons?: {\n textBtnSpeak?: string;\n textBtnTalk?: string;\n };\n } & Record<string, unknown>;\n listeners?: Record<EVENT_TYPE, (props: any) => void>;\n onLoaded?: (tool: ToolType) => void;\n};\nconst AgentWidget: FC<AgentWidgetType> = (props: AgentWidgetType) => {\n return (\n <div className=\"w-full h-full\">\n <style>{commonStyles}</style>\n <ConfigurationProvider\n config={{\n apiHost: props.apiHost,\n agentId: props.agentId,\n voice: props.voice,\n overrideConfig: props.overrideConfig?.overrideConfig,\n theme: props.theme,\n skipSuggestion: props.overrideConfig?.skipSuggestion,\n onLoaded: props.onLoaded,\n }}\n >\n <ChatDataProvider\n data={{\n chatId: props.overrideConfig?.chatId,\n suggestedActions: props.overrideConfig?.suggestedActions,\n listeners: props.listeners,\n }}\n >\n <AudioMessagePlayerProvider>\n <Agent />\n </AudioMessagePlayerProvider>\n </ChatDataProvider>\n </ConfigurationProvider>\n </div>\n );\n};\n\nexport default AgentWidget;\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface AudioAnalyzerData {
|
|
2
|
+
volume: number;
|
|
3
|
+
frequencies: number[];
|
|
4
|
+
}
|
|
5
|
+
export declare const useAudioAnalyzer: (maxHistoryLength?: number) => {
|
|
6
|
+
audioData: AudioAnalyzerData;
|
|
7
|
+
isAnalyzing: boolean;
|
|
8
|
+
startAnalyzing: (stream: MediaStream) => void;
|
|
9
|
+
stopAnalyzing: () => void;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=useAudioAnalyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioAnalyzer.d.ts","sourceRoot":"","sources":["../../src/hooks/useAudioAnalyzer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAMD,eAAO,MAAM,gBAAgB,sBACT,MAAM;;;6BAsCb,WAAW;;CAuHvB,CAAC"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
let lastUpdateTime = 0;
|
|
3
|
+
const updateInterval = 100;
|
|
4
|
+
const DEFAULT_MAX_HISTORY_LENGTH = 65;
|
|
5
|
+
export const useAudioAnalyzer = (maxHistoryLength = DEFAULT_MAX_HISTORY_LENGTH) => {
|
|
6
|
+
const [audioData, setAudioData] = useState({
|
|
7
|
+
volume: 0,
|
|
8
|
+
frequencies: Array(maxHistoryLength).fill(1), // Dynamic array size
|
|
9
|
+
});
|
|
10
|
+
const [isAnalyzing, setIsAnalyzing] = useState(false);
|
|
11
|
+
const audioContextRef = useRef(null);
|
|
12
|
+
const analyzerRef = useRef(null);
|
|
13
|
+
const sourceRef = useRef(null);
|
|
14
|
+
const animationFrameRef = useRef(null);
|
|
15
|
+
// Update frequencies array when maxHistoryLength changes
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
setAudioData((prevData) => {
|
|
18
|
+
const newFrequencies = [...prevData.frequencies];
|
|
19
|
+
if (newFrequencies.length > maxHistoryLength) {
|
|
20
|
+
// Trim from beginning if too long
|
|
21
|
+
return {
|
|
22
|
+
...prevData,
|
|
23
|
+
frequencies: newFrequencies.slice(-maxHistoryLength),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
else if (newFrequencies.length < maxHistoryLength) {
|
|
27
|
+
// Pad with zeros if too short
|
|
28
|
+
const padding = Array(maxHistoryLength - newFrequencies.length).fill(0);
|
|
29
|
+
return {
|
|
30
|
+
...prevData,
|
|
31
|
+
frequencies: [...padding, ...newFrequencies],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
return prevData;
|
|
35
|
+
});
|
|
36
|
+
}, [maxHistoryLength]);
|
|
37
|
+
const startAnalyzing = useCallback((stream) => {
|
|
38
|
+
try {
|
|
39
|
+
// Create audio context
|
|
40
|
+
audioContextRef.current = new (window.AudioContext ||
|
|
41
|
+
window
|
|
42
|
+
.webkitAudioContext)();
|
|
43
|
+
// Create analyzer
|
|
44
|
+
analyzerRef.current = audioContextRef.current.createAnalyser();
|
|
45
|
+
analyzerRef.current.fftSize = 256;
|
|
46
|
+
analyzerRef.current.smoothingTimeConstant = 0.8;
|
|
47
|
+
// Create source from stream
|
|
48
|
+
sourceRef.current =
|
|
49
|
+
audioContextRef.current.createMediaStreamSource(stream);
|
|
50
|
+
sourceRef.current.connect(analyzerRef.current);
|
|
51
|
+
setIsAnalyzing(true);
|
|
52
|
+
// Add throttling variables
|
|
53
|
+
// Start analyzing
|
|
54
|
+
const analyze = () => {
|
|
55
|
+
if (!analyzerRef.current)
|
|
56
|
+
return;
|
|
57
|
+
const bufferLength = analyzerRef.current.frequencyBinCount;
|
|
58
|
+
const dataArray = new Uint8Array(bufferLength);
|
|
59
|
+
analyzerRef.current.getByteFrequencyData(dataArray);
|
|
60
|
+
// Calculate volume (0-100)
|
|
61
|
+
const sum = dataArray.reduce((acc, value) => acc + value, 0);
|
|
62
|
+
const average = sum / bufferLength;
|
|
63
|
+
const volume = Math.min(100, (average / 255) * 100);
|
|
64
|
+
// Throttle updates - only update every 150ms
|
|
65
|
+
const currentTime = Date.now();
|
|
66
|
+
if (currentTime - lastUpdateTime >= updateInterval) {
|
|
67
|
+
lastUpdateTime = currentTime;
|
|
68
|
+
// Use frequencies array to store volume history
|
|
69
|
+
setAudioData((prevData) => {
|
|
70
|
+
const newFrequencies = [...prevData.frequencies];
|
|
71
|
+
// Add current volume to the end of the array
|
|
72
|
+
newFrequencies.push(volume);
|
|
73
|
+
// Keep only the last DEFAULT_MAX_HISTORY_LENGTH volume values for waveform display
|
|
74
|
+
if (newFrequencies.length > maxHistoryLength) {
|
|
75
|
+
newFrequencies.shift(); // Remove oldest value
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
volume, // Always update current volume for real-time display
|
|
79
|
+
frequencies: newFrequencies,
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Still update current volume for real-time feedback
|
|
85
|
+
setAudioData((prevData) => ({
|
|
86
|
+
...prevData,
|
|
87
|
+
volume, // Update volume but keep same frequencies array
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
animationFrameRef.current = requestAnimationFrame(analyze);
|
|
91
|
+
};
|
|
92
|
+
analyze();
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error('Error starting audio analysis:', error);
|
|
96
|
+
}
|
|
97
|
+
}, [maxHistoryLength]);
|
|
98
|
+
const stopAnalyzing = useCallback(() => {
|
|
99
|
+
setIsAnalyzing(false);
|
|
100
|
+
if (animationFrameRef.current) {
|
|
101
|
+
cancelAnimationFrame(animationFrameRef.current);
|
|
102
|
+
animationFrameRef.current = null;
|
|
103
|
+
}
|
|
104
|
+
if (sourceRef.current) {
|
|
105
|
+
sourceRef.current.disconnect();
|
|
106
|
+
sourceRef.current = null;
|
|
107
|
+
}
|
|
108
|
+
if (analyzerRef.current) {
|
|
109
|
+
analyzerRef.current.disconnect();
|
|
110
|
+
analyzerRef.current = null;
|
|
111
|
+
}
|
|
112
|
+
if (audioContextRef.current) {
|
|
113
|
+
audioContextRef.current.close();
|
|
114
|
+
audioContextRef.current = null;
|
|
115
|
+
}
|
|
116
|
+
// Smooth reset: gradually fade out frequencies instead of instant reset
|
|
117
|
+
setAudioData((prevData) => ({
|
|
118
|
+
volume: 0,
|
|
119
|
+
frequencies: prevData.frequencies.map(() => 0), // Fade to 0 instead of defaultFrequencies
|
|
120
|
+
}));
|
|
121
|
+
}, []);
|
|
122
|
+
// Cleanup on unmount
|
|
123
|
+
useEffect(() => {
|
|
124
|
+
return () => {
|
|
125
|
+
stopAnalyzing();
|
|
126
|
+
};
|
|
127
|
+
}, [stopAnalyzing]);
|
|
128
|
+
return {
|
|
129
|
+
audioData,
|
|
130
|
+
isAnalyzing,
|
|
131
|
+
startAnalyzing,
|
|
132
|
+
stopAnalyzing,
|
|
133
|
+
};
|
|
134
|
+
};
|
|
135
|
+
//# sourceMappingURL=useAudioAnalyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioAnalyzer.js","sourceRoot":"","sources":["../../src/hooks/useAudioAnalyzer.ts"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nexport interface AudioAnalyzerData {\n volume: number; // 0-100\n frequencies: number[]; // Array of frequency data\n}\n\nlet lastUpdateTime = 0;\nconst updateInterval = 100;\nconst DEFAULT_MAX_HISTORY_LENGTH = 65;\n\nexport const useAudioAnalyzer = (\n maxHistoryLength: number = DEFAULT_MAX_HISTORY_LENGTH\n) => {\n const [audioData, setAudioData] = useState<AudioAnalyzerData>({\n volume: 0,\n frequencies: Array(maxHistoryLength).fill(1), // Dynamic array size\n });\n const [isAnalyzing, setIsAnalyzing] = useState(false);\n\n const audioContextRef = useRef<AudioContext | null>(null);\n const analyzerRef = useRef<AnalyserNode | null>(null);\n const sourceRef = useRef<MediaStreamAudioSourceNode | null>(null);\n const animationFrameRef = useRef<number | null>(null);\n\n // Update frequencies array when maxHistoryLength changes\n useEffect(() => {\n setAudioData((prevData) => {\n const newFrequencies = [...prevData.frequencies];\n\n if (newFrequencies.length > maxHistoryLength) {\n // Trim from beginning if too long\n return {\n ...prevData,\n frequencies: newFrequencies.slice(-maxHistoryLength),\n };\n } else if (newFrequencies.length < maxHistoryLength) {\n // Pad with zeros if too short\n const padding = Array(maxHistoryLength - newFrequencies.length).fill(0);\n return {\n ...prevData,\n frequencies: [...padding, ...newFrequencies],\n };\n }\n\n return prevData;\n });\n }, [maxHistoryLength]);\n\n const startAnalyzing = useCallback(\n (stream: MediaStream) => {\n try {\n // Create audio context\n audioContextRef.current = new (window.AudioContext ||\n (window as unknown as { webkitAudioContext: typeof AudioContext })\n .webkitAudioContext)();\n\n // Create analyzer\n analyzerRef.current = audioContextRef.current.createAnalyser();\n analyzerRef.current.fftSize = 256;\n analyzerRef.current.smoothingTimeConstant = 0.8;\n\n // Create source from stream\n sourceRef.current =\n audioContextRef.current.createMediaStreamSource(stream);\n sourceRef.current.connect(analyzerRef.current);\n\n setIsAnalyzing(true);\n\n // Add throttling variables\n\n // Start analyzing\n const analyze = () => {\n if (!analyzerRef.current) return;\n\n const bufferLength = analyzerRef.current.frequencyBinCount;\n const dataArray = new Uint8Array(bufferLength);\n analyzerRef.current.getByteFrequencyData(dataArray);\n\n // Calculate volume (0-100)\n const sum = dataArray.reduce((acc, value) => acc + value, 0);\n const average = sum / bufferLength;\n const volume = Math.min(100, (average / 255) * 100);\n\n // Throttle updates - only update every 150ms\n const currentTime = Date.now();\n if (currentTime - lastUpdateTime >= updateInterval) {\n lastUpdateTime = currentTime;\n\n // Use frequencies array to store volume history\n setAudioData((prevData) => {\n const newFrequencies = [...prevData.frequencies];\n\n // Add current volume to the end of the array\n newFrequencies.push(volume);\n\n // Keep only the last DEFAULT_MAX_HISTORY_LENGTH volume values for waveform display\n\n if (newFrequencies.length > maxHistoryLength) {\n newFrequencies.shift(); // Remove oldest value\n }\n\n return {\n volume, // Always update current volume for real-time display\n frequencies: newFrequencies,\n };\n });\n } else {\n // Still update current volume for real-time feedback\n setAudioData((prevData) => ({\n ...prevData,\n volume, // Update volume but keep same frequencies array\n }));\n }\n\n animationFrameRef.current = requestAnimationFrame(analyze);\n };\n\n analyze();\n } catch (error) {\n console.error('Error starting audio analysis:', error);\n }\n },\n [maxHistoryLength]\n );\n\n const stopAnalyzing = useCallback(() => {\n setIsAnalyzing(false);\n\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n animationFrameRef.current = null;\n }\n\n if (sourceRef.current) {\n sourceRef.current.disconnect();\n sourceRef.current = null;\n }\n\n if (analyzerRef.current) {\n analyzerRef.current.disconnect();\n analyzerRef.current = null;\n }\n\n if (audioContextRef.current) {\n audioContextRef.current.close();\n audioContextRef.current = null;\n }\n\n // Smooth reset: gradually fade out frequencies instead of instant reset\n setAudioData((prevData) => ({\n volume: 0,\n frequencies: prevData.frequencies.map(() => 0), // Fade to 0 instead of defaultFrequencies\n }));\n }, []);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n stopAnalyzing();\n };\n }, [stopAnalyzing]);\n\n return {\n audioData,\n isAnalyzing,\n startAnalyzing,\n stopAnalyzing,\n };\n};\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type AudioMessagePlayerData = {
|
|
3
|
+
playingId: string | null;
|
|
4
|
+
disable: boolean;
|
|
5
|
+
onPlay: (messageId: string | null, stopping?: boolean) => void;
|
|
6
|
+
setDisabled: (value: boolean) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare const AudioMessagePlayerProvider: ({ children, }: {
|
|
9
|
+
children: React.ReactNode;
|
|
10
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
export declare const useAudioMessage: () => AudioMessagePlayerData;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=useAudioMesseagePlayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioMesseagePlayer.d.ts","sourceRoot":"","sources":["../../src/hooks/useAudioMesseagePlayer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAqD,MAAM,OAAO,CAAC;AAG1E,KAAK,sBAAsB,GAAG;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACvC,CAAC;AAMF,eAAO,MAAM,0BAA0B,kBAEpC;IACD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,4CAqCA,CAAC;AAEF,eAAO,MAAM,eAAe,8BAQ3B,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { createContext, useEffect, useRef, useState } from 'react';
|
|
3
|
+
import { useScrollToBottom } from './useScrollToBottom';
|
|
4
|
+
const AudioMessagePlayerContext = createContext(undefined);
|
|
5
|
+
export const AudioMessagePlayerProvider = ({ children, }) => {
|
|
6
|
+
const [playingId, setPlayingId] = useState(null);
|
|
7
|
+
const [disable, setDisabled] = useState(false);
|
|
8
|
+
const timeoutRef = useRef(null);
|
|
9
|
+
const scroll = useScrollToBottom();
|
|
10
|
+
const onPlay = (messageId, stopping = false) => {
|
|
11
|
+
if (!timeoutRef.current) {
|
|
12
|
+
scroll[2](false);
|
|
13
|
+
timeoutRef.current = setTimeout(() => {
|
|
14
|
+
scroll[2](true);
|
|
15
|
+
timeoutRef.current = null;
|
|
16
|
+
}, 300);
|
|
17
|
+
}
|
|
18
|
+
if (stopping && messageId !== playingId) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const msgId = stopping && messageId === playingId ? null : messageId;
|
|
22
|
+
setPlayingId(msgId);
|
|
23
|
+
};
|
|
24
|
+
useEffect(() => { }, []);
|
|
25
|
+
return (_jsx(AudioMessagePlayerContext.Provider, { value: {
|
|
26
|
+
playingId,
|
|
27
|
+
onPlay,
|
|
28
|
+
disable,
|
|
29
|
+
setDisabled,
|
|
30
|
+
}, children: children }));
|
|
31
|
+
};
|
|
32
|
+
export const useAudioMessage = () => {
|
|
33
|
+
const context = React.useContext(AudioMessagePlayerContext);
|
|
34
|
+
if (context === undefined) {
|
|
35
|
+
throw new Error('useAudioMessage must be used within a AudioMessagePlayerContext');
|
|
36
|
+
}
|
|
37
|
+
return context;
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=useAudioMesseagePlayer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioMesseagePlayer.js","sourceRoot":"","sources":["../../src/hooks/useAudioMesseagePlayer.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AASxD,MAAM,yBAAyB,GAAG,aAAa,CAE7C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,EACzC,QAAQ,GAGT,EAAE,EAAE;IACH,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAChE,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,iBAAiB,EAAkB,CAAC;IAEnD,MAAM,MAAM,GAAG,CAAC,SAAwB,EAAE,WAAoB,KAAK,EAAE,EAAE;QACrE,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YACxB,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACjB,UAAU,CAAC,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;gBACnC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChB,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;YAC5B,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;QAED,IAAI,QAAQ,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,QAAQ,IAAI,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IAExB,OAAO,CACL,KAAC,yBAAyB,CAAC,QAAQ,IACjC,KAAK,EAAE;YACL,SAAS;YACT,MAAM;YACN,OAAO;YACP,WAAW;SACZ,YAEA,QAAQ,GAC0B,CACtC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAG,EAAE;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC","sourcesContent":["import React, { createContext, useEffect, useRef, useState } from 'react';\nimport { useScrollToBottom } from './useScrollToBottom';\n\ntype AudioMessagePlayerData = {\n playingId: string | null;\n disable: boolean;\n onPlay: (messageId: string | null, stopping?: boolean) => void;\n setDisabled: (value: boolean) => void;\n};\n\nconst AudioMessagePlayerContext = createContext<\n AudioMessagePlayerData | undefined\n>(undefined);\n\nexport const AudioMessagePlayerProvider = ({\n children,\n}: {\n children: React.ReactNode;\n}) => {\n const [playingId, setPlayingId] = useState<string | null>(null);\n const [disable, setDisabled] = useState<boolean>(false);\n const timeoutRef = useRef<NodeJS.Timeout | null>(null);\n const scroll = useScrollToBottom<HTMLDivElement>();\n\n const onPlay = (messageId: string | null, stopping: boolean = false) => {\n if (!timeoutRef.current) {\n scroll[2](false);\n timeoutRef.current = setTimeout(() => {\n scroll[2](true);\n timeoutRef.current = null;\n }, 300);\n }\n\n if (stopping && messageId !== playingId) {\n return;\n }\n\n const msgId = stopping && messageId === playingId ? null : messageId;\n setPlayingId(msgId);\n };\n\n useEffect(() => {}, []);\n\n return (\n <AudioMessagePlayerContext.Provider\n value={{\n playingId,\n onPlay,\n disable,\n setDisabled,\n }}\n >\n {children}\n </AudioMessagePlayerContext.Provider>\n );\n};\n\nexport const useAudioMessage = () => {\n const context = React.useContext(AudioMessagePlayerContext);\n if (context === undefined) {\n throw new Error(\n 'useAudioMessage must be used within a AudioMessagePlayerContext'\n );\n }\n return context;\n};\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const useAudioRecording: (maxHistoryLength?: number) => {
|
|
2
|
+
elapsedTime: string;
|
|
3
|
+
recordingNotSupported: boolean;
|
|
4
|
+
isLoadingRecording: boolean;
|
|
5
|
+
isRecording: boolean;
|
|
6
|
+
setIsRecording: import("react").Dispatch<import("react").SetStateAction<boolean>>;
|
|
7
|
+
onRecordingCancelled: () => void;
|
|
8
|
+
onRecordingStopped: (onStop: null | ((blob: Blob) => void)) => void;
|
|
9
|
+
onRecordingStarted: () => void;
|
|
10
|
+
audioData: import("./useAudioAnalyzer").AudioAnalyzerData;
|
|
11
|
+
updateMaxHistoryLength: (newLength: number) => void;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=useAudioRecording.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioRecording.d.ts","sourceRoot":"","sources":["../../src/hooks/useAudioRecording.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,iBAAiB,sBAAuB,MAAM;;;;;;;iCAoCrB,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;;;wCAYtB,MAAM;CAkBlD,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { cancelAudioRecording, startAudioRecording, stopAudioRecording, audioRecorder, } from '../utils/audioRecording';
|
|
3
|
+
import { useAudioAnalyzer } from './useAudioAnalyzer';
|
|
4
|
+
export const useAudioRecording = (maxHistoryLength) => {
|
|
5
|
+
const [elapsedTime, setElapsedTime] = useState('00:00');
|
|
6
|
+
const [recordingNotSupported, setRecordingNotSupported] = useState(false);
|
|
7
|
+
const [isLoadingRecording, setIsLoadingRecording] = useState(false);
|
|
8
|
+
const [isRecording, setIsRecording] = useState(false);
|
|
9
|
+
const [dynamicMaxLength, setDynamicMaxLength] = useState(maxHistoryLength || 65);
|
|
10
|
+
// Add audio analyzer with dynamic maxHistoryLength
|
|
11
|
+
const { audioData, startAnalyzing, stopAnalyzing } = useAudioAnalyzer(dynamicMaxLength);
|
|
12
|
+
const onRecordingStarted = () => {
|
|
13
|
+
setIsRecording(true);
|
|
14
|
+
setIsLoadingRecording(false);
|
|
15
|
+
startAudioRecording((recordingStarted) => {
|
|
16
|
+
setIsRecording(recordingStarted);
|
|
17
|
+
// Start analyzing audio when recording starts
|
|
18
|
+
if (recordingStarted && audioRecorder.streamBeingCaptured) {
|
|
19
|
+
startAnalyzing(audioRecorder.streamBeingCaptured);
|
|
20
|
+
}
|
|
21
|
+
}, setRecordingNotSupported, setElapsedTime);
|
|
22
|
+
};
|
|
23
|
+
const onRecordingCancelled = () => {
|
|
24
|
+
if (!recordingNotSupported)
|
|
25
|
+
cancelAudioRecording();
|
|
26
|
+
setIsRecording(false);
|
|
27
|
+
setRecordingNotSupported(false);
|
|
28
|
+
stopAnalyzing();
|
|
29
|
+
};
|
|
30
|
+
const onRecordingStopped = (onStop) => {
|
|
31
|
+
setIsLoadingRecording(true);
|
|
32
|
+
stopAnalyzing();
|
|
33
|
+
stopAudioRecording((blob) => {
|
|
34
|
+
setIsLoadingRecording(false);
|
|
35
|
+
setIsRecording(false);
|
|
36
|
+
if (onStop) {
|
|
37
|
+
onStop(blob);
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
};
|
|
41
|
+
const updateMaxHistoryLength = (newLength) => {
|
|
42
|
+
setDynamicMaxLength(newLength);
|
|
43
|
+
};
|
|
44
|
+
return {
|
|
45
|
+
elapsedTime,
|
|
46
|
+
recordingNotSupported,
|
|
47
|
+
isLoadingRecording,
|
|
48
|
+
isRecording,
|
|
49
|
+
setIsRecording,
|
|
50
|
+
onRecordingCancelled,
|
|
51
|
+
onRecordingStopped,
|
|
52
|
+
onRecordingStarted,
|
|
53
|
+
// Add audio data for visualization
|
|
54
|
+
audioData,
|
|
55
|
+
// Add function to update maxHistoryLength
|
|
56
|
+
updateMaxHistoryLength,
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=useAudioRecording.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAudioRecording.js","sourceRoot":"","sources":["../../src/hooks/useAudioRecording.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,GACd,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,gBAAyB,EAAE,EAAE;IAC7D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CACtD,gBAAgB,IAAI,EAAE,CACvB,CAAC;IAEF,mDAAmD;IACnD,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE,GAChD,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;IAErC,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,cAAc,CAAC,IAAI,CAAC,CAAC;QACrB,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,mBAAmB,CACjB,CAAC,gBAAyB,EAAE,EAAE;YAC5B,cAAc,CAAC,gBAAgB,CAAC,CAAC;YACjC,8CAA8C;YAC9C,IAAI,gBAAgB,IAAI,aAAa,CAAC,mBAAmB,EAAE,CAAC;gBAC1D,cAAc,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;YACpD,CAAC;QACH,CAAC,EACD,wBAAwB,EACxB,cAAc,CACf,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,GAAG,EAAE;QAChC,IAAI,CAAC,qBAAqB;YAAE,oBAAoB,EAAE,CAAC;QACnD,cAAc,CAAC,KAAK,CAAC,CAAC;QACtB,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAChC,aAAa,EAAE,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,CAAC,MAAqC,EAAE,EAAE;QACnE,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,aAAa,EAAE,CAAC;QAChB,kBAAkB,CAAC,CAAC,IAAU,EAAE,EAAE;YAChC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,cAAc,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,CAAC,IAAI,CAAC,CAAC;YACf,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,CAAC,SAAiB,EAAE,EAAE;QACnD,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,OAAO;QACL,WAAW;QACX,qBAAqB;QACrB,kBAAkB;QAClB,WAAW;QACX,cAAc;QACd,oBAAoB;QACpB,kBAAkB;QAClB,kBAAkB;QAClB,mCAAmC;QACnC,SAAS;QACT,0CAA0C;QAC1C,sBAAsB;KACvB,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { useState } from 'react';\nimport {\n cancelAudioRecording,\n startAudioRecording,\n stopAudioRecording,\n audioRecorder,\n} from '../utils/audioRecording';\nimport { useAudioAnalyzer } from './useAudioAnalyzer';\n\nexport const useAudioRecording = (maxHistoryLength?: number) => {\n const [elapsedTime, setElapsedTime] = useState('00:00');\n const [recordingNotSupported, setRecordingNotSupported] = useState(false);\n const [isLoadingRecording, setIsLoadingRecording] = useState(false);\n const [isRecording, setIsRecording] = useState(false);\n const [dynamicMaxLength, setDynamicMaxLength] = useState(\n maxHistoryLength || 65\n );\n\n // Add audio analyzer with dynamic maxHistoryLength\n const { audioData, startAnalyzing, stopAnalyzing } =\n useAudioAnalyzer(dynamicMaxLength);\n\n const onRecordingStarted = () => {\n setIsRecording(true);\n setIsLoadingRecording(false);\n startAudioRecording(\n (recordingStarted: boolean) => {\n setIsRecording(recordingStarted);\n // Start analyzing audio when recording starts\n if (recordingStarted && audioRecorder.streamBeingCaptured) {\n startAnalyzing(audioRecorder.streamBeingCaptured);\n }\n },\n setRecordingNotSupported,\n setElapsedTime\n );\n };\n\n const onRecordingCancelled = () => {\n if (!recordingNotSupported) cancelAudioRecording();\n setIsRecording(false);\n setRecordingNotSupported(false);\n stopAnalyzing();\n };\n\n const onRecordingStopped = (onStop: null | ((blob: Blob) => void)) => {\n setIsLoadingRecording(true);\n stopAnalyzing();\n stopAudioRecording((blob: Blob) => {\n setIsLoadingRecording(false);\n setIsRecording(false);\n if (onStop) {\n onStop(blob);\n }\n });\n };\n\n const updateMaxHistoryLength = (newLength: number) => {\n setDynamicMaxLength(newLength);\n };\n\n return {\n elapsedTime,\n recordingNotSupported,\n isLoadingRecording,\n isRecording,\n setIsRecording,\n onRecordingCancelled,\n onRecordingStopped,\n onRecordingStarted,\n // Add audio data for visualization\n audioData,\n // Add function to update maxHistoryLength\n updateMaxHistoryLength,\n };\n};\n"]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { SuggestionType } from 'types/common.type';
|
|
2
|
+
import { BotType } from '../types/bot.type';
|
|
3
|
+
import { ChatMessageType } from '../types/flowise.type';
|
|
4
|
+
type PropsType = {
|
|
5
|
+
id?: string;
|
|
6
|
+
agentId?: string;
|
|
7
|
+
initialMessages: ChatMessageType[];
|
|
8
|
+
initialInput?: string;
|
|
9
|
+
};
|
|
10
|
+
type ReturnType = {
|
|
11
|
+
messages?: ChatMessageType[];
|
|
12
|
+
setMessages: (messages: ChatMessageType[]) => void;
|
|
13
|
+
handleSubmit: (event?: {
|
|
14
|
+
preventDefault?: () => void;
|
|
15
|
+
}) => void;
|
|
16
|
+
input?: string;
|
|
17
|
+
setInput: (input: string) => void;
|
|
18
|
+
isLoading: boolean;
|
|
19
|
+
stop: () => void;
|
|
20
|
+
chatId: string;
|
|
21
|
+
append: (message: ChatMessageType) => Promise<void>;
|
|
22
|
+
bot: BotType | null;
|
|
23
|
+
enableTTS: boolean;
|
|
24
|
+
setEnableTTS: (value: boolean) => void;
|
|
25
|
+
suggestions: SuggestionType[];
|
|
26
|
+
};
|
|
27
|
+
export declare const useChat: (props: PropsType) => ReturnType;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=useChat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useChat.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAEL,eAAe,EAKhB,MAAM,uBAAuB,CAAC;AAS/B,KAAK,SAAS,GAAG;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,eAAe,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,WAAW,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IACnD,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,IAAI,CAAA;KAAE,KAAK,IAAI,CAAC;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,GAAG,EAAE,OAAO,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,WAAW,EAAE,cAAc,EAAE,CAAC;CAC/B,CAAC;AAEF,eAAO,MAAM,OAAO,UAAW,SAAS,KAAG,UAiR1C,CAAC"}
|
package/.rollup.cache/Users/tungthai/Desktop/Develop/clik-ai-chatbot-embedded/dist/hooks/useChat.js
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
2
|
+
import useSWR from 'swr';
|
|
3
|
+
import { getBot } from '../services/bot.service';
|
|
4
|
+
import { getSuggestions, predict } from '../services/chat.service';
|
|
5
|
+
import { generateUUID } from '../utils/commonUtils';
|
|
6
|
+
import { useConfiguration } from './useConfiguration';
|
|
7
|
+
import { parseTraceEventMessage, groupChatflowSteps as groupChatFlowSteps, groupAgentFlowSteps, } from 'utils/agentTraceUtils';
|
|
8
|
+
export const useChat = (props) => {
|
|
9
|
+
const { id, initialMessages, initialInput, agentId } = props;
|
|
10
|
+
const { apiHost, overrideConfig, theme, skipSuggestion = false, } = useConfiguration();
|
|
11
|
+
const idKey = id ?? generateUUID();
|
|
12
|
+
const chatIdRef = useRef(idKey);
|
|
13
|
+
const [chatId, setChatId] = useState(idKey);
|
|
14
|
+
const [bot, setBot] = useState(null);
|
|
15
|
+
const [enableTTS, setEnableTTS] = useState(false);
|
|
16
|
+
const [suggestions, setSuggestions] = useState([]);
|
|
17
|
+
const updateChatId = (uuid) => {
|
|
18
|
+
chatIdRef.current = uuid;
|
|
19
|
+
setChatId(uuid);
|
|
20
|
+
};
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (id) {
|
|
23
|
+
updateChatId(id);
|
|
24
|
+
}
|
|
25
|
+
}, [id]);
|
|
26
|
+
useEffect(() => {
|
|
27
|
+
getBot(agentId || 'default', apiHost).then((res) => setBot(res));
|
|
28
|
+
}, [agentId, apiHost]);
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
if (bot?.id && chatId) {
|
|
31
|
+
updateSuggestions(`Agent name: ${bot.name}, Title: ${theme?.overview?.title}`);
|
|
32
|
+
}
|
|
33
|
+
}, [bot?.id, chatId, skipSuggestion]);
|
|
34
|
+
const updateSuggestions = useCallback(async (question) => {
|
|
35
|
+
if (skipSuggestion) {
|
|
36
|
+
setSuggestions([]);
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const resSuggestions = await getSuggestions({
|
|
40
|
+
id: chatId,
|
|
41
|
+
question,
|
|
42
|
+
apiHost,
|
|
43
|
+
botId: bot?.id,
|
|
44
|
+
});
|
|
45
|
+
setSuggestions(resSuggestions);
|
|
46
|
+
}, [setSuggestions, chatId, bot?.id, skipSuggestion]);
|
|
47
|
+
const processResponseStream = async (msgs, req) => {
|
|
48
|
+
// Do an optimistic update to the chat state to show the updated messages immediately:
|
|
49
|
+
mutateMessages(msgs, false);
|
|
50
|
+
const newMessage = {
|
|
51
|
+
id: generateUUID(),
|
|
52
|
+
chatId: chatIdRef.current,
|
|
53
|
+
role: 'apiMessage',
|
|
54
|
+
content: '',
|
|
55
|
+
createdDate: new Date().toISOString(),
|
|
56
|
+
tts: enableTTS,
|
|
57
|
+
new: true,
|
|
58
|
+
agentSteps: [],
|
|
59
|
+
};
|
|
60
|
+
const onUpdate = (chunk) => {
|
|
61
|
+
if (chunk?.event === 'token') {
|
|
62
|
+
newMessage.content = newMessage.content + chunk.data;
|
|
63
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
64
|
+
}
|
|
65
|
+
else if (chunk.event == 'usedTools') {
|
|
66
|
+
newMessage.usedTools = chunk.data;
|
|
67
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
68
|
+
}
|
|
69
|
+
else if (chunk.event == 'sourceDocuments') {
|
|
70
|
+
newMessage.sourceDocuments = chunk.data;
|
|
71
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
72
|
+
}
|
|
73
|
+
else if (chunk.event == 'metadata') {
|
|
74
|
+
newMessage.metaData = chunk.data;
|
|
75
|
+
const lastMsg = msgs[msgs.length - 1];
|
|
76
|
+
if (lastMsg) {
|
|
77
|
+
lastMsg.content = newMessage.metaData.question;
|
|
78
|
+
}
|
|
79
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
80
|
+
updateSuggestions(`Agent name: ${bot?.name}, Title: ${theme?.overview?.title}`);
|
|
81
|
+
}
|
|
82
|
+
else if (chunk.event == 'audio') {
|
|
83
|
+
newMessage.ttsUrl = chunk.data;
|
|
84
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
85
|
+
}
|
|
86
|
+
else if (chunk.event == 'agent_trace') {
|
|
87
|
+
// Handle agent trace events for chatflow thinking display
|
|
88
|
+
const agentStep = parseTraceEventMessage(chunk);
|
|
89
|
+
if (agentStep) {
|
|
90
|
+
if (!newMessage.agentSteps) {
|
|
91
|
+
newMessage.agentSteps = [];
|
|
92
|
+
}
|
|
93
|
+
newMessage.agentSteps.push(agentStep);
|
|
94
|
+
newMessage.agentSteps = groupChatFlowSteps(newMessage.agentSteps);
|
|
95
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
else if (chunk.event == 'agentFlowEvent' ||
|
|
99
|
+
chunk.event == 'nextAgentFlow' ||
|
|
100
|
+
chunk.event == 'agentFlowExecutedData') {
|
|
101
|
+
// Handle AgentFlow events for multi-agent workflow display
|
|
102
|
+
const agentStep = parseTraceEventMessage(chunk);
|
|
103
|
+
if (agentStep) {
|
|
104
|
+
if (!newMessage.agentSteps) {
|
|
105
|
+
newMessage.agentSteps = [];
|
|
106
|
+
}
|
|
107
|
+
newMessage.agentSteps.push(agentStep);
|
|
108
|
+
// Combine both grouped step types
|
|
109
|
+
newMessage.agentSteps = groupAgentFlowSteps(newMessage.agentSteps);
|
|
110
|
+
mutateMessages([...msgs, { ...newMessage }]);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
return predict({
|
|
115
|
+
req,
|
|
116
|
+
apiHost,
|
|
117
|
+
onUpdate,
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
// Store a empty array as the initial messages
|
|
121
|
+
// (instead of using a default parameter value that gets re-created each time)
|
|
122
|
+
// to avoid re-renders:
|
|
123
|
+
const [initialMessagesFallback] = useState([]);
|
|
124
|
+
// Store the chat state in SWR, using the chatId as the key to share states.
|
|
125
|
+
const { data: messages, mutate: mutateMessages } = useSWR([chatId, 'messages'], null, { fallbackData: initialMessages ?? initialMessagesFallback });
|
|
126
|
+
// Keep the latest messages in a ref.
|
|
127
|
+
const messagesRef = useRef(messages || []);
|
|
128
|
+
useEffect(() => {
|
|
129
|
+
messagesRef.current = messages || [];
|
|
130
|
+
}, [messages]);
|
|
131
|
+
// We store loading state in another hook to sync loading states across hook invocations
|
|
132
|
+
const { data: isLoading = false, mutate: mutateLoading } = useSWR([chatId, 'loading'], null);
|
|
133
|
+
// Abort controller to cancel the current API call.
|
|
134
|
+
const abortControllerRef = useRef(null);
|
|
135
|
+
const triggerRequest = useCallback(async (msgs, req) => {
|
|
136
|
+
try {
|
|
137
|
+
mutateLoading(true);
|
|
138
|
+
const abortController = new AbortController();
|
|
139
|
+
abortControllerRef.current = abortController;
|
|
140
|
+
await processResponseStream(msgs, req);
|
|
141
|
+
abortControllerRef.current = null;
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
// Ignore abort errors as they are expected.
|
|
145
|
+
if (err.name === 'AbortError') {
|
|
146
|
+
abortControllerRef.current = null;
|
|
147
|
+
return null;
|
|
148
|
+
}
|
|
149
|
+
console.error(err);
|
|
150
|
+
}
|
|
151
|
+
finally {
|
|
152
|
+
mutateLoading(false);
|
|
153
|
+
}
|
|
154
|
+
}, [mutateMessages, mutateLoading, enableTTS]);
|
|
155
|
+
const append = async (message) => {
|
|
156
|
+
if (!message.content) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
const msgs = messagesRef.current.concat({
|
|
160
|
+
id: generateUUID(),
|
|
161
|
+
chatId: chatIdRef.current,
|
|
162
|
+
role: 'userMessage',
|
|
163
|
+
content: message.content,
|
|
164
|
+
createdDate: new Date().toISOString(),
|
|
165
|
+
});
|
|
166
|
+
triggerRequest(msgs, {
|
|
167
|
+
chatId: chatIdRef.current,
|
|
168
|
+
question: message.content,
|
|
169
|
+
chatflowId: bot?.id,
|
|
170
|
+
overrideConfig: overrideConfig,
|
|
171
|
+
tts: enableTTS,
|
|
172
|
+
});
|
|
173
|
+
setInput('');
|
|
174
|
+
};
|
|
175
|
+
const stop = useCallback(() => {
|
|
176
|
+
if (abortControllerRef.current) {
|
|
177
|
+
abortControllerRef.current?.abort();
|
|
178
|
+
abortControllerRef.current = null;
|
|
179
|
+
}
|
|
180
|
+
}, []);
|
|
181
|
+
const setMessages = useCallback((msgs) => {
|
|
182
|
+
mutateMessages(msgs, false);
|
|
183
|
+
messagesRef.current = msgs;
|
|
184
|
+
}, [mutateMessages]);
|
|
185
|
+
// Input state and handlers.
|
|
186
|
+
const [input, setInput] = useState(initialInput);
|
|
187
|
+
const handleSubmit = useCallback(async (event, files) => {
|
|
188
|
+
event?.preventDefault?.();
|
|
189
|
+
if (!input && !files)
|
|
190
|
+
return;
|
|
191
|
+
const msgs = messagesRef.current.concat({
|
|
192
|
+
id: generateUUID(),
|
|
193
|
+
chatId: chatIdRef.current,
|
|
194
|
+
role: 'userMessage',
|
|
195
|
+
content: input || '',
|
|
196
|
+
createdDate: new Date().toISOString(),
|
|
197
|
+
fileUploads: files || [],
|
|
198
|
+
});
|
|
199
|
+
triggerRequest(msgs, {
|
|
200
|
+
chatId: chatIdRef.current,
|
|
201
|
+
question: input || '',
|
|
202
|
+
uploads: files || [],
|
|
203
|
+
chatflowId: bot?.id,
|
|
204
|
+
overrideConfig: overrideConfig,
|
|
205
|
+
tts: enableTTS,
|
|
206
|
+
});
|
|
207
|
+
setInput('');
|
|
208
|
+
}, [input, triggerRequest, bot]);
|
|
209
|
+
return {
|
|
210
|
+
messages,
|
|
211
|
+
setMessages,
|
|
212
|
+
input,
|
|
213
|
+
setInput,
|
|
214
|
+
isLoading,
|
|
215
|
+
handleSubmit,
|
|
216
|
+
stop,
|
|
217
|
+
chatId,
|
|
218
|
+
append,
|
|
219
|
+
bot,
|
|
220
|
+
enableTTS,
|
|
221
|
+
setEnableTTS,
|
|
222
|
+
suggestions,
|
|
223
|
+
};
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=useChat.js.map
|