@messenger-box/tailwind-ui-inbox 10.0.3-alpha.100
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/CHANGELOG.md +104 -0
- package/LICENSE +21 -0
- package/jest.config.js +9 -0
- package/lib/cdm-locales/en/translations.json +31 -0
- package/lib/cdm-locales/es/translations.json +31 -0
- package/lib/components/AIAgent/AIAgent.d.ts +21 -0
- package/lib/components/AIAgent/AIAgent.d.ts.map +1 -0
- package/lib/components/AIAgent/AIAgent.js +904 -0
- package/lib/components/AIAgent/AIAgent.js.map +1 -0
- package/lib/components/AIAgent/index.d.ts +2 -0
- package/lib/components/AIAgent/index.d.ts.map +1 -0
- package/lib/components/InboxMessage/CommonMessage.d.ts +8 -0
- package/lib/components/InboxMessage/CommonMessage.d.ts.map +1 -0
- package/lib/components/InboxMessage/CommonMessage.js +35 -0
- package/lib/components/InboxMessage/CommonMessage.js.map +1 -0
- package/lib/components/InboxMessage/ConversationItem.d.ts +14 -0
- package/lib/components/InboxMessage/ConversationItem.d.ts.map +1 -0
- package/lib/components/InboxMessage/ConversationItem.js +200 -0
- package/lib/components/InboxMessage/ConversationItem.js.map +1 -0
- package/lib/components/InboxMessage/InputComponent.d.ts +12 -0
- package/lib/components/InboxMessage/InputComponent.d.ts.map +1 -0
- package/lib/components/InboxMessage/InputComponent.js +359 -0
- package/lib/components/InboxMessage/InputComponent.js.map +1 -0
- package/lib/components/InboxMessage/LeftSidebar.d.ts +20 -0
- package/lib/components/InboxMessage/LeftSidebar.d.ts.map +1 -0
- package/lib/components/InboxMessage/LeftSidebar.js +102 -0
- package/lib/components/InboxMessage/LeftSidebar.js.map +1 -0
- package/lib/components/InboxMessage/MessageInput.d.ts +9 -0
- package/lib/components/InboxMessage/MessageInput.d.ts.map +1 -0
- package/lib/components/InboxMessage/MessageInput.js +154 -0
- package/lib/components/InboxMessage/MessageInput.js.map +1 -0
- package/lib/components/InboxMessage/MessageInputComponent.d.ts +9 -0
- package/lib/components/InboxMessage/MessageInputComponent.d.ts.map +1 -0
- package/lib/components/InboxMessage/Messages.d.ts +17 -0
- package/lib/components/InboxMessage/Messages.d.ts.map +1 -0
- package/lib/components/InboxMessage/Messages.js +99 -0
- package/lib/components/InboxMessage/Messages.js.map +1 -0
- package/lib/components/InboxMessage/MessagesBuilderUi.d.ts +17 -0
- package/lib/components/InboxMessage/MessagesBuilderUi.d.ts.map +1 -0
- package/lib/components/InboxMessage/Popover.d.ts +3 -0
- package/lib/components/InboxMessage/Popover.d.ts.map +1 -0
- package/lib/components/InboxMessage/Popover.js +31 -0
- package/lib/components/InboxMessage/Popover.js.map +1 -0
- package/lib/components/InboxMessage/RightSidebar.d.ts +9 -0
- package/lib/components/InboxMessage/RightSidebar.d.ts.map +1 -0
- package/lib/components/InboxMessage/RightSidebar.js +9 -0
- package/lib/components/InboxMessage/RightSidebar.js.map +1 -0
- package/lib/components/InboxMessage/RightSidebarAi.d.ts +23 -0
- package/lib/components/InboxMessage/RightSidebarAi.d.ts.map +1 -0
- package/lib/components/InboxMessage/RightSidebarAi.js +9 -0
- package/lib/components/InboxMessage/RightSidebarAi.js.map +1 -0
- package/lib/components/InboxMessage/ServiceConversationItem.d.ts +12 -0
- package/lib/components/InboxMessage/ServiceConversationItem.d.ts.map +1 -0
- package/lib/components/InboxMessage/ServiceConversationItem.js +185 -0
- package/lib/components/InboxMessage/ServiceConversationItem.js.map +1 -0
- package/lib/components/InboxMessage/ServiceInboxItem.d.ts +12 -0
- package/lib/components/InboxMessage/ServiceInboxItem.d.ts.map +1 -0
- package/lib/components/InboxMessage/ServiceInboxItem.js +182 -0
- package/lib/components/InboxMessage/ServiceInboxItem.js.map +1 -0
- package/lib/components/InboxMessage/SubscriptionHandler.d.ts +19 -0
- package/lib/components/InboxMessage/SubscriptionHandler.d.ts.map +1 -0
- package/lib/components/InboxMessage/SubscriptionHandler.js +41 -0
- package/lib/components/InboxMessage/SubscriptionHandler.js.map +1 -0
- package/lib/components/InboxMessage/UploadImageButton.d.ts +7 -0
- package/lib/components/InboxMessage/UploadImageButton.d.ts.map +1 -0
- package/lib/components/InboxMessage/UploadImageButton.js +34 -0
- package/lib/components/InboxMessage/UploadImageButton.js.map +1 -0
- package/lib/components/InboxMessage/UserModalContent.d.ts +3 -0
- package/lib/components/InboxMessage/UserModalContent.d.ts.map +1 -0
- package/lib/components/InboxMessage/UserModalContent.js +60 -0
- package/lib/components/InboxMessage/UserModalContent.js.map +1 -0
- package/lib/components/InboxMessage/index.d.ts +17 -0
- package/lib/components/InboxMessage/index.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/CommonMessage.d.ts +11 -0
- package/lib/components/InboxMessage/message-widgets/CommonMessage.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/CommonMessage.js +44 -0
- package/lib/components/InboxMessage/message-widgets/CommonMessage.js.map +1 -0
- package/lib/components/InboxMessage/message-widgets/ErrorFixCard.d.ts +11 -0
- package/lib/components/InboxMessage/message-widgets/ErrorFixCard.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/ErrorFixCard.js +194 -0
- package/lib/components/InboxMessage/message-widgets/ErrorFixCard.js.map +1 -0
- package/lib/components/InboxMessage/message-widgets/MessageCard.d.ts +8 -0
- package/lib/components/InboxMessage/message-widgets/MessageCard.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.d.ts +12 -0
- package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.js +37 -0
- package/lib/components/InboxMessage/message-widgets/MessageSliceRenderer.js.map +1 -0
- package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.d.ts +18 -0
- package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.js +1082 -0
- package/lib/components/InboxMessage/message-widgets/ModernMessageGroup.js.map +1 -0
- package/lib/components/InboxMessage/message-widgets/PlainMessage.d.ts +8 -0
- package/lib/components/InboxMessage/message-widgets/PlainMessage.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/PlainMessage.js +14 -0
- package/lib/components/InboxMessage/message-widgets/PlainMessage.js.map +1 -0
- package/lib/components/InboxMessage/message-widgets/PropertyMessageWidget.d.ts +9 -0
- package/lib/components/InboxMessage/message-widgets/PropertyMessageWidget.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.d.ts +14 -0
- package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.d.ts.map +1 -0
- package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.js +333 -0
- package/lib/components/InboxMessage/message-widgets/SlackLikeMessageGroup.js.map +1 -0
- package/lib/components/InboxMessage/message-widgets/index.d.ts +4 -0
- package/lib/components/InboxMessage/message-widgets/index.d.ts.map +1 -0
- package/lib/components/ModelConfigPanel.d.ts +37 -0
- package/lib/components/ModelConfigPanel.d.ts.map +1 -0
- package/lib/components/ModelConfigPanel.js +317 -0
- package/lib/components/ModelConfigPanel.js.map +1 -0
- package/lib/components/filler-components/RightSiderBar.d.ts +24 -0
- package/lib/components/filler-components/RightSiderBar.d.ts.map +1 -0
- package/lib/components/filler-components/RightSiderBar.js +335 -0
- package/lib/components/filler-components/RightSiderBar.js.map +1 -0
- package/lib/components/inbox/FilesList.d.ts +20 -0
- package/lib/components/inbox/FilesList.d.ts.map +1 -0
- package/lib/components/inbox/FilesList.js +68 -0
- package/lib/components/inbox/FilesList.js.map +1 -0
- package/lib/components/inbox/MessageItem.d.ts +17 -0
- package/lib/components/inbox/MessageItem.d.ts.map +1 -0
- package/lib/components/inbox/MessageItem.js +50 -0
- package/lib/components/inbox/MessageItem.js.map +1 -0
- package/lib/components/inbox/ThreadItem.d.ts +11 -0
- package/lib/components/inbox/ThreadItem.d.ts.map +1 -0
- package/lib/components/inbox/ThreadItem.js +147 -0
- package/lib/components/inbox/ThreadItem.js.map +1 -0
- package/lib/components/inbox/index.d.ts +4 -0
- package/lib/components/inbox/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +7 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/live-code-editor/hybrid-live-editor.d.ts +20 -0
- package/lib/components/live-code-editor/hybrid-live-editor.d.ts.map +1 -0
- package/lib/components/live-code-editor/hybrid-live-editor.js +68 -0
- package/lib/components/live-code-editor/hybrid-live-editor.js.map +1 -0
- package/lib/components/live-code-editor/index.d.ts +4 -0
- package/lib/components/live-code-editor/index.d.ts.map +1 -0
- package/lib/components/live-code-editor/live-code-editor.d.ts +14 -0
- package/lib/components/live-code-editor/live-code-editor.d.ts.map +1 -0
- package/lib/components/live-code-editor/live-code-editor.js +207 -0
- package/lib/components/live-code-editor/live-code-editor.js.map +1 -0
- package/lib/components/slot-fill/chat-message-filler.d.ts +4 -0
- package/lib/components/slot-fill/chat-message-filler.d.ts.map +1 -0
- package/lib/components/slot-fill/chat-message-filler.js +5 -0
- package/lib/components/slot-fill/chat-message-filler.js.map +1 -0
- package/lib/components/slot-fill/chat-message-slot.d.ts +11 -0
- package/lib/components/slot-fill/chat-message-slot.d.ts.map +1 -0
- package/lib/components/slot-fill/chat-message-slot.js +6 -0
- package/lib/components/slot-fill/chat-message-slot.js.map +1 -0
- package/lib/components/slot-fill/index.d.ts +4 -0
- package/lib/components/slot-fill/index.d.ts.map +1 -0
- package/lib/components/slot-fill/right-sidebar-filler.d.ts +4 -0
- package/lib/components/slot-fill/right-sidebar-filler.d.ts.map +1 -0
- package/lib/components/slot-fill/right-sidebar-filler.js +13 -0
- package/lib/components/slot-fill/right-sidebar-filler.js.map +1 -0
- package/lib/components/ui/button.d.ts +9 -0
- package/lib/components/ui/button.d.ts.map +1 -0
- package/lib/compute.d.ts +8 -0
- package/lib/compute.d.ts.map +1 -0
- package/lib/compute.js +137 -0
- package/lib/compute.js.map +1 -0
- package/lib/config/env-config.d.ts +13 -0
- package/lib/config/env-config.d.ts.map +1 -0
- package/lib/config/env-config.js +34 -0
- package/lib/config/env-config.js.map +1 -0
- package/lib/config/index.d.ts +2 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/constants/breakpoints.d.ts +8 -0
- package/lib/constants/breakpoints.d.ts.map +1 -0
- package/lib/constants/index.d.ts +3 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/container/AiInbox.d.ts +15 -0
- package/lib/container/AiInbox.d.ts.map +1 -0
- package/lib/container/AiInboxWithLoader.d.ts +36 -0
- package/lib/container/AiInboxWithLoader.d.ts.map +1 -0
- package/lib/container/AiLandingInput.d.ts +4 -0
- package/lib/container/AiLandingInput.d.ts.map +1 -0
- package/lib/container/AiLandingInput.js +101 -0
- package/lib/container/AiLandingInput.js.map +1 -0
- package/lib/container/Inbox.d.ts +15 -0
- package/lib/container/Inbox.d.ts.map +1 -0
- package/lib/container/Inbox.js +955 -0
- package/lib/container/Inbox.js.map +1 -0
- package/lib/container/InboxAiMessagesLoader.d.ts +15 -0
- package/lib/container/InboxAiMessagesLoader.d.ts.map +1 -0
- package/lib/container/InboxAiMessagesLoader.js +30 -0
- package/lib/container/InboxAiMessagesLoader.js.map +1 -0
- package/lib/container/InboxContainer.d.ts +12 -0
- package/lib/container/InboxContainer.d.ts.map +1 -0
- package/lib/container/InboxContainer.js +31 -0
- package/lib/container/InboxContainer.js.map +1 -0
- package/lib/container/InboxTemplate1.d.ts +15 -0
- package/lib/container/InboxTemplate1.d.ts.map +1 -0
- package/lib/container/InboxTemplate1WithLoader.d.ts +36 -0
- package/lib/container/InboxTemplate1WithLoader.d.ts.map +1 -0
- package/lib/container/InboxTemplate2.d.ts +15 -0
- package/lib/container/InboxTemplate2.d.ts.map +1 -0
- package/lib/container/InboxWithAiLoader.d.ts +15 -0
- package/lib/container/InboxWithAiLoader.d.ts.map +1 -0
- package/lib/container/InboxWithAiLoader.js +56 -0
- package/lib/container/InboxWithAiLoader.js.map +1 -0
- package/lib/container/InboxWithLoader.d.ts +36 -0
- package/lib/container/InboxWithLoader.d.ts.map +1 -0
- package/lib/container/InboxWithLoader.js +277 -0
- package/lib/container/InboxWithLoader.js.map +1 -0
- package/lib/container/ServiceInbox.d.ts +9 -0
- package/lib/container/ServiceInbox.d.ts.map +1 -0
- package/lib/container/ServiceInbox.js +144 -0
- package/lib/container/ServiceInbox.js.map +1 -0
- package/lib/container/ThreadMessages.d.ts +13 -0
- package/lib/container/ThreadMessages.d.ts.map +1 -0
- package/lib/container/ThreadMessages.js +314 -0
- package/lib/container/ThreadMessages.js.map +1 -0
- package/lib/container/ThreadMessagesInbox.d.ts +14 -0
- package/lib/container/ThreadMessagesInbox.d.ts.map +1 -0
- package/lib/container/ThreadMessagesInbox.js +341 -0
- package/lib/container/ThreadMessagesInbox.js.map +1 -0
- package/lib/container/Threads.d.ts +8 -0
- package/lib/container/Threads.d.ts.map +1 -0
- package/lib/container/Threads.js +231 -0
- package/lib/container/Threads.js.map +1 -0
- package/lib/container/ThreadsInbox.d.ts +21 -0
- package/lib/container/ThreadsInbox.d.ts.map +1 -0
- package/lib/container/ThreadsInbox.js +244 -0
- package/lib/container/ThreadsInbox.js.map +1 -0
- package/lib/container/apply-footer-styles.d.ts +2 -0
- package/lib/container/apply-footer-styles.d.ts.map +1 -0
- package/lib/container/apply-footer-styles.js +16 -0
- package/lib/container/apply-footer-styles.js.map +1 -0
- package/lib/container/index.d.ts +13 -0
- package/lib/container/index.d.ts.map +1 -0
- package/lib/enums/index.d.ts +2 -0
- package/lib/enums/index.d.ts.map +1 -0
- package/lib/enums/messenger-slot-fill-name-enum.d.ts +5 -0
- package/lib/enums/messenger-slot-fill-name-enum.d.ts.map +1 -0
- package/lib/enums/messenger-slot-fill-name-enum.js +5 -0
- package/lib/enums/messenger-slot-fill-name-enum.js.map +1 -0
- package/lib/hooks/index.d.ts +3 -0
- package/lib/hooks/index.d.ts.map +1 -0
- package/lib/hooks/use-file-sync.d.ts +16 -0
- package/lib/hooks/use-file-sync.d.ts.map +1 -0
- package/lib/hooks/use-file-sync.js +63 -0
- package/lib/hooks/use-file-sync.js.map +1 -0
- package/lib/hooks/usePersistentModelConfig.d.ts +15 -0
- package/lib/hooks/usePersistentModelConfig.d.ts.map +1 -0
- package/lib/hooks/usePersistentModelConfig.js +46 -0
- package/lib/hooks/usePersistentModelConfig.js.map +1 -0
- package/lib/index.d.ts +10 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -0
- package/lib/interfaces/index.d.ts +2 -0
- package/lib/interfaces/index.d.ts.map +1 -0
- package/lib/interfaces/message-widgets.interface.d.ts +21 -0
- package/lib/interfaces/message-widgets.interface.d.ts.map +1 -0
- package/lib/machines/aiAgentMachine.d.ts +3 -0
- package/lib/machines/aiAgentMachine.d.ts.map +1 -0
- package/lib/machines/aiAgentMachine.js +1083 -0
- package/lib/machines/aiAgentMachine.js.map +1 -0
- package/lib/machines/aiAgentMachine.simple.d.ts +3 -0
- package/lib/machines/aiAgentMachine.simple.d.ts.map +1 -0
- package/lib/machines/aiAgentMachine.simple.js +108 -0
- package/lib/machines/aiAgentMachine.simple.js.map +1 -0
- package/lib/machines/index.d.ts +3 -0
- package/lib/machines/index.d.ts.map +1 -0
- package/lib/machines/types.d.ts +77 -0
- package/lib/machines/types.d.ts.map +1 -0
- package/lib/module.d.ts +7 -0
- package/lib/module.d.ts.map +1 -0
- package/lib/module.js +26 -0
- package/lib/module.js.map +1 -0
- package/lib/routes.json +98 -0
- package/lib/styles/responsive.css +76 -0
- package/lib/templates/InboxWithAi.d.ts +15 -0
- package/lib/templates/InboxWithAi.d.ts.map +1 -0
- package/lib/templates/InboxWithAi.js +440 -0
- package/lib/templates/InboxWithAi.js.map +1 -0
- package/lib/templates/InboxWithAi.tsx +533 -0
- package/lib/templates/index.d.ts +2 -0
- package/lib/templates/index.d.ts.map +1 -0
- package/lib/templates/index.ts +1 -0
- package/lib/utils/utils.d.ts +2 -0
- package/lib/utils/utils.d.ts.map +1 -0
- package/lib/utils/utils.js +3 -0
- package/lib/utils/utils.js.map +1 -0
- package/package.json +62 -0
- package/rollup.config.mjs +35 -0
- package/src/cdm-locales/en/translations.json +31 -0
- package/src/cdm-locales/es/translations.json +31 -0
- package/src/components/AIAgent/AIAgent.tsx +1103 -0
- package/src/components/AIAgent/AIAgent.tsx.bk +1365 -0
- package/src/components/AIAgent/README.md +82 -0
- package/src/components/AIAgent/index.ts +1 -0
- package/src/components/InboxMessage/CommonMessage.tsx +40 -0
- package/src/components/InboxMessage/ConversationItem.tsx +255 -0
- package/src/components/InboxMessage/InputComponent.tsx +462 -0
- package/src/components/InboxMessage/LeftSidebar.tsx +140 -0
- package/src/components/InboxMessage/MessageInput.tsx +209 -0
- package/src/components/InboxMessage/MessageInputComponent.tsx +245 -0
- package/src/components/InboxMessage/Messages.tsx +137 -0
- package/src/components/InboxMessage/MessagesBuilderUi.tsx +205 -0
- package/src/components/InboxMessage/Popover.tsx +42 -0
- package/src/components/InboxMessage/RightSidebar.tsx +22 -0
- package/src/components/InboxMessage/RightSidebarAi.tsx +37 -0
- package/src/components/InboxMessage/ServiceConversationItem.tsx +234 -0
- package/src/components/InboxMessage/ServiceInboxItem.tsx +223 -0
- package/src/components/InboxMessage/SubscriptionHandler.tsx +55 -0
- package/src/components/InboxMessage/UploadImageButton.tsx +46 -0
- package/src/components/InboxMessage/UserModalContent.tsx +60 -0
- package/src/components/InboxMessage/index.ts +16 -0
- package/src/components/InboxMessage/message-widgets/CommonMessage.tsx +69 -0
- package/src/components/InboxMessage/message-widgets/ErrorFixCard.tsx +240 -0
- package/src/components/InboxMessage/message-widgets/MessageCard.tsx +127 -0
- package/src/components/InboxMessage/message-widgets/MessageSliceRenderer.tsx +40 -0
- package/src/components/InboxMessage/message-widgets/ModernMessageGroup.tsx +1295 -0
- package/src/components/InboxMessage/message-widgets/PlainMessage.tsx +18 -0
- package/src/components/InboxMessage/message-widgets/PropertyMessageWidget.tsx +29 -0
- package/src/components/InboxMessage/message-widgets/SlackLikeMessageGroup.tsx +492 -0
- package/src/components/InboxMessage/message-widgets/index.ts +3 -0
- package/src/components/ModelConfigPanel.tsx +345 -0
- package/src/components/filler-components/RightSiderBar.tsx +408 -0
- package/src/components/inbox/FilesList.tsx +89 -0
- package/src/components/inbox/MessageItem.tsx +50 -0
- package/src/components/inbox/ThreadItem.tsx +295 -0
- package/src/components/inbox/index.ts +3 -0
- package/src/components/index.ts +22 -0
- package/src/components/live-code-editor/hybrid-live-editor.tsx +105 -0
- package/src/components/live-code-editor/index.ts +3 -0
- package/src/components/live-code-editor/live-code-editor.tsx +257 -0
- package/src/components/slot-fill/chat-message-filler.tsx +18 -0
- package/src/components/slot-fill/chat-message-slot.tsx +18 -0
- package/src/components/slot-fill/index.ts +3 -0
- package/src/components/slot-fill/right-sidebar-filler.tsx +39 -0
- package/src/components/ui/button.tsx +32 -0
- package/src/compute.ts +134 -0
- package/src/config/env-config.ts +17 -0
- package/src/config/index.ts +1 -0
- package/src/constants/breakpoints.ts +7 -0
- package/src/constants/index.ts +5 -0
- package/src/container/AiInbox.tsx +1819 -0
- package/src/container/AiInboxWithLoader.tsx +356 -0
- package/src/container/AiLandingInput.tsx +221 -0
- package/src/container/Inbox.tsx +1092 -0
- package/src/container/InboxAiMessagesLoader.tsx +44 -0
- package/src/container/InboxContainer.tsx +35 -0
- package/src/container/InboxTemplate1.tsx +1542 -0
- package/src/container/InboxTemplate1WithLoader.tsx +338 -0
- package/src/container/InboxTemplate2.tsx +1606 -0
- package/src/container/InboxWithAiLoader.tsx +76 -0
- package/src/container/InboxWithLoader.tsx +341 -0
- package/src/container/ServiceInbox.tsx +190 -0
- package/src/container/ThreadMessages.tsx +371 -0
- package/src/container/ThreadMessagesInbox.tsx +450 -0
- package/src/container/Threads.tsx +270 -0
- package/src/container/ThreadsInbox.tsx +354 -0
- package/src/container/apply-footer-styles.ts +17 -0
- package/src/container/index.ts +31 -0
- package/src/enums/index.ts +1 -0
- package/src/enums/messenger-slot-fill-name-enum.ts +4 -0
- package/src/hooks/index.ts +2 -0
- package/src/hooks/use-file-sync.ts +91 -0
- package/src/hooks/usePersistentModelConfig.ts +63 -0
- package/src/index.ts +37 -0
- package/src/interfaces/index.ts +1 -0
- package/src/interfaces/message-widgets.interface.ts +21 -0
- package/src/machines/aiAgentMachine.simple.ts +89 -0
- package/src/machines/aiAgentMachine.ts +1296 -0
- package/src/machines/aiAgentMachine.ts.bk +1296 -0
- package/src/machines/index.ts +2 -0
- package/src/machines/types.ts +59 -0
- package/src/module.tsx +32 -0
- package/src/styles/responsive.css +76 -0
- package/src/templates/InboxWithAi.tsx +533 -0
- package/src/templates/index.ts +1 -0
- package/src/utils/utils.ts +3 -0
- package/tsconfig.json +14 -0
- package/webpack.config.js +92 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# AI Agent Integration
|
|
2
|
+
|
|
3
|
+
This component integrates an AI-powered chat agent using XState state machines to provide intelligent conversation capabilities within the messenger inbox.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- **AI-Powered Conversations**: Uses Claude AI through the XState machine
|
|
8
|
+
- **Multi-Message Responses**: Automatically breaks down complex queries into multiple messages
|
|
9
|
+
- **Real-Time Data**: Integrates with MCP (Model Context Protocol) for web search and news
|
|
10
|
+
- **Smart Query Detection**: Automatically detects when queries need multi-message responses or real-time data
|
|
11
|
+
- **Toggle Mode**: Easy switch between regular messaging and AI agent mode
|
|
12
|
+
|
|
13
|
+
## Components
|
|
14
|
+
|
|
15
|
+
### AIAgent
|
|
16
|
+
|
|
17
|
+
The main AI agent component that handles:
|
|
18
|
+
|
|
19
|
+
- Message display and input
|
|
20
|
+
- AI response generation
|
|
21
|
+
- Multi-message planning and execution
|
|
22
|
+
- Real-time data integration
|
|
23
|
+
- Error handling and retry mechanisms
|
|
24
|
+
|
|
25
|
+
### aiAgentMachine
|
|
26
|
+
|
|
27
|
+
XState machine that manages:
|
|
28
|
+
|
|
29
|
+
- Message flow and state transitions
|
|
30
|
+
- AI response generation
|
|
31
|
+
- Multi-message planning
|
|
32
|
+
- MCP data fetching
|
|
33
|
+
- Error handling
|
|
34
|
+
|
|
35
|
+
## Usage
|
|
36
|
+
|
|
37
|
+
The AI Agent is integrated into the main inbox interface with a toggle switch. When enabled:
|
|
38
|
+
|
|
39
|
+
1. **Toggle AI Mode**: Use the toggle switch in the header to enable AI agent mode
|
|
40
|
+
2. **Chat with AI**: Send messages to the AI agent and receive intelligent responses
|
|
41
|
+
3. **Multi-Message**: Complex queries automatically trigger multi-message responses
|
|
42
|
+
4. **Real-Time Data**: Queries needing current information automatically fetch web search and news data
|
|
43
|
+
|
|
44
|
+
## Configuration
|
|
45
|
+
|
|
46
|
+
The AI Agent requires:
|
|
47
|
+
|
|
48
|
+
- Anthropic API key configured on the server
|
|
49
|
+
- MCP server running for real-time data
|
|
50
|
+
- XState and @xstate/react packages
|
|
51
|
+
|
|
52
|
+
## States
|
|
53
|
+
|
|
54
|
+
The AI Agent machine has several states:
|
|
55
|
+
|
|
56
|
+
- `idle`: Waiting for user input
|
|
57
|
+
- `analyzing`: Determining response strategy
|
|
58
|
+
- `planningMultiMessage`: Creating multi-message plan
|
|
59
|
+
- `multiProcessing`: Generating multi-message responses
|
|
60
|
+
- `fetchingData`: Retrieving real-time data
|
|
61
|
+
- `processing`: Generating AI response
|
|
62
|
+
- `error`: Handling errors
|
|
63
|
+
|
|
64
|
+
## Events
|
|
65
|
+
|
|
66
|
+
Supported events:
|
|
67
|
+
|
|
68
|
+
- `SEND_MESSAGE`: Send a user message
|
|
69
|
+
- `FORCE_MULTI_MESSAGE`: Force multi-message response
|
|
70
|
+
- `INPUT_CHANGE`: Update input field
|
|
71
|
+
- `RETRY`: Retry failed operations
|
|
72
|
+
- `CLEAR_ERROR`: Clear error state
|
|
73
|
+
|
|
74
|
+
## Integration Points
|
|
75
|
+
|
|
76
|
+
The AI Agent integrates with:
|
|
77
|
+
|
|
78
|
+
- Main inbox interface
|
|
79
|
+
- Message handling system
|
|
80
|
+
- User authentication
|
|
81
|
+
- Channel management
|
|
82
|
+
- File upload system
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AIAgent } from './AIAgent';
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { format } from 'date-fns';
|
|
3
|
+
import { BsFlag } from '@react-icons/all-files/bs/BsFlag.js';
|
|
4
|
+
import { FilesList } from '../inbox';
|
|
5
|
+
|
|
6
|
+
export const CommonMessage = ({ message, index, onOpen, currentUser }) => {
|
|
7
|
+
return (
|
|
8
|
+
<div className="w-full flex justify-start mb-7" key={`msgList_${index}`}>
|
|
9
|
+
<div className="flex flex-grow">
|
|
10
|
+
<img
|
|
11
|
+
className="w-8 h-8 bg-gray-500 rounded-full mr-4 cursor-pointer"
|
|
12
|
+
src={message?.imageUrl || ''}
|
|
13
|
+
alt="User avatar"
|
|
14
|
+
onClick={onOpen}
|
|
15
|
+
/>
|
|
16
|
+
<div className="flex-grow">
|
|
17
|
+
<div className="flex flex-grow mt-1">
|
|
18
|
+
<span className="text-sm text-gray-600 font-bold">
|
|
19
|
+
{message?.author?.familyName && message?.author?.givenName
|
|
20
|
+
? message?.author?.givenName + ' ' + message?.author?.familyName
|
|
21
|
+
: message?.author?.username}
|
|
22
|
+
</span>
|
|
23
|
+
<span className="text-sm text-gray-500 ml-2">
|
|
24
|
+
{format(new Date(message?.createdAt), 'MMM dd, yyyy hh:mm aaa')}
|
|
25
|
+
</span>
|
|
26
|
+
</div>
|
|
27
|
+
<div>
|
|
28
|
+
<p className="text-sm mt-1 mb-1 whitespace-pre-line">{message?.message}</p>
|
|
29
|
+
{message.files?.totalCount ? <FilesList uploaded files={message.files?.data} /> : null}
|
|
30
|
+
</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
{currentUser?.id !== message?.author?.id && (
|
|
34
|
+
<div className="ml-2">
|
|
35
|
+
<BsFlag className="text-gray-600 w-6 h-6" />
|
|
36
|
+
</div>
|
|
37
|
+
)}
|
|
38
|
+
</div>
|
|
39
|
+
);
|
|
40
|
+
};
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { useMessagesQuery, OnChatMessageAddedDocument as CHAT_MESSAGE_ADDED } from 'common/graphql';
|
|
2
|
+
import { format, isToday, isYesterday } from 'date-fns';
|
|
3
|
+
import React, { useMemo, useEffect, useState, useCallback } from 'react';
|
|
4
|
+
import { SubscriptionHandler } from './SubscriptionHandler';
|
|
5
|
+
|
|
6
|
+
const createdAtText = (value) => {
|
|
7
|
+
if (!value) return '';
|
|
8
|
+
let date = new Date(value);
|
|
9
|
+
if (isToday(date)) return 'Today';
|
|
10
|
+
if (isYesterday(date)) return 'Yesterday';
|
|
11
|
+
return format(new Date(value), 'MMM dd, yyyy');
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
// Custom Skeleton component for loading state
|
|
15
|
+
const Skeleton = ({ className = '' }) => {
|
|
16
|
+
return (
|
|
17
|
+
<div className={`animate-pulse bg-gray-300 dark:bg-gray-600 rounded ${className}`}>
|
|
18
|
+
<div className="h-4 bg-gray-300 dark:bg-gray-600 rounded w-3/4 mb-2"></div>
|
|
19
|
+
<div className="h-4 bg-gray-300 dark:bg-gray-600 rounded w-1/2"></div>
|
|
20
|
+
</div>
|
|
21
|
+
);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
interface ConversationItemProps {
|
|
25
|
+
showBorder: boolean;
|
|
26
|
+
currentUser: any;
|
|
27
|
+
filter: string;
|
|
28
|
+
channel: any;
|
|
29
|
+
handleSelectChannel: (channelId: string) => void;
|
|
30
|
+
users: any[];
|
|
31
|
+
selectedChannelId: string;
|
|
32
|
+
messagesQuery: any;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export const ConversationItem = React.memo(
|
|
36
|
+
({
|
|
37
|
+
showBorder,
|
|
38
|
+
currentUser,
|
|
39
|
+
filter,
|
|
40
|
+
channel,
|
|
41
|
+
handleSelectChannel,
|
|
42
|
+
users,
|
|
43
|
+
selectedChannelId,
|
|
44
|
+
messagesQuery: messagesQueryProp,
|
|
45
|
+
}: ConversationItemProps) => {
|
|
46
|
+
// const {
|
|
47
|
+
// data: messagesQuery,
|
|
48
|
+
// loading: messageLoading,
|
|
49
|
+
// } = useMessagesQuery({
|
|
50
|
+
// variables: {
|
|
51
|
+
// channelId: channel.id?.toString(),
|
|
52
|
+
// limit: 1,
|
|
53
|
+
// },
|
|
54
|
+
// fetchPolicy: 'cache-and-network',
|
|
55
|
+
// });
|
|
56
|
+
const [messages, setMessages] = useState([]);
|
|
57
|
+
const {
|
|
58
|
+
data: messagesQuery,
|
|
59
|
+
loading: messageLoading,
|
|
60
|
+
refetch: refetchMessages,
|
|
61
|
+
subscribeToMore,
|
|
62
|
+
} = useMessagesQuery({
|
|
63
|
+
variables: {
|
|
64
|
+
channelId: channel?.id?.toString(),
|
|
65
|
+
parentId: null,
|
|
66
|
+
limit: 10,
|
|
67
|
+
// sort: {
|
|
68
|
+
// key: 'updatedAt',
|
|
69
|
+
// value: SortEnum.Desc,
|
|
70
|
+
// },
|
|
71
|
+
},
|
|
72
|
+
fetchPolicy: 'cache-and-network',
|
|
73
|
+
refetchWritePolicy: 'merge',
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
// const {
|
|
77
|
+
// data: newMessage,
|
|
78
|
+
// loading: newMsgLoading,
|
|
79
|
+
// error: newMsgError,
|
|
80
|
+
// }: any = useOnChatMessageAddedSubscription({
|
|
81
|
+
// variables: {
|
|
82
|
+
// channelId: channel?.id?.toString(),
|
|
83
|
+
// },
|
|
84
|
+
// });
|
|
85
|
+
|
|
86
|
+
React.useEffect(() => {
|
|
87
|
+
if (channel?.id) {
|
|
88
|
+
refetchMessages({
|
|
89
|
+
channelId: channel?.id?.toString(),
|
|
90
|
+
parentId: null,
|
|
91
|
+
limit: 10,
|
|
92
|
+
// sort: {
|
|
93
|
+
// key: 'updatedAt',
|
|
94
|
+
// value: SortEnum.Desc,
|
|
95
|
+
// },
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}, [channel?.id, refetchMessages]);
|
|
99
|
+
|
|
100
|
+
React.useEffect(() => {
|
|
101
|
+
if (messagesQuery?.messages?.data?.length) {
|
|
102
|
+
setMessages(messagesQuery.messages.data);
|
|
103
|
+
}
|
|
104
|
+
}, [messagesQuery?.messages?.data]);
|
|
105
|
+
|
|
106
|
+
const chatUser = useMemo(
|
|
107
|
+
() =>
|
|
108
|
+
users?.find(({ id }) => {
|
|
109
|
+
const isNotCurrentUser = id !== currentUser?.id;
|
|
110
|
+
if (isNotCurrentUser) {
|
|
111
|
+
return channel?.members?.find(({ user }) => user.id === id);
|
|
112
|
+
}
|
|
113
|
+
if (channel?.members?.length === 1 && channel?.members?.[0]?.user?.id === currentUser?.id) {
|
|
114
|
+
return currentUser;
|
|
115
|
+
}
|
|
116
|
+
return isNotCurrentUser;
|
|
117
|
+
}),
|
|
118
|
+
[users, currentUser, channel],
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
// Last Message
|
|
122
|
+
// const lastMessage = useMemo(() => {
|
|
123
|
+
// if (!messagesQuery?.messages?.data?.length) {
|
|
124
|
+
// return null;
|
|
125
|
+
// }
|
|
126
|
+
// const { data } = messagesQuery.messages;
|
|
127
|
+
// return data[data.length - 1];
|
|
128
|
+
// }, [messagesQuery]);
|
|
129
|
+
const lastMessage = useMemo(() => {
|
|
130
|
+
if (!messages?.length) {
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
const data = messages;
|
|
134
|
+
const filteredData: any = data?.filter((p: any) => p?.message !== '');
|
|
135
|
+
|
|
136
|
+
//return filteredData[0];
|
|
137
|
+
let filteredLastMessage =
|
|
138
|
+
filteredData && filteredData?.length
|
|
139
|
+
? filteredData?.reduce((a, b) => {
|
|
140
|
+
return new Date(a?.updatedAt) > new Date(b?.updatedAt) ? a : b;
|
|
141
|
+
}, []) ?? null
|
|
142
|
+
: null;
|
|
143
|
+
return filteredLastMessage;
|
|
144
|
+
// //return data[data.length - 1];
|
|
145
|
+
}, [messages]);
|
|
146
|
+
|
|
147
|
+
const channelType = useMemo(() => {
|
|
148
|
+
return channel?.type;
|
|
149
|
+
}, [channel]);
|
|
150
|
+
|
|
151
|
+
if (
|
|
152
|
+
filter &&
|
|
153
|
+
!chatUser?.username?.toLowerCase().includes(filter.toLowerCase()) &&
|
|
154
|
+
!lastMessage?.message?.toLowerCase().includes(filter.toLowerCase())
|
|
155
|
+
) {
|
|
156
|
+
return null;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
return (
|
|
160
|
+
<div
|
|
161
|
+
key={`conv_channel_${channel.id}`}
|
|
162
|
+
className={`cursor-pointer flex items-center p-3 border-b ${
|
|
163
|
+
showBorder ? 'border-gray-300' : 'border-transparent'
|
|
164
|
+
} ${
|
|
165
|
+
channel.id == selectedChannelId
|
|
166
|
+
? 'bg-gray-300 dark:bg-gray-500'
|
|
167
|
+
: 'hover:bg-gray-50 dark:hover:bg-gray-700'
|
|
168
|
+
}`}
|
|
169
|
+
onClick={() => channel.id !== selectedChannelId && handleSelectChannel(channel.id)}
|
|
170
|
+
>
|
|
171
|
+
<img
|
|
172
|
+
className="w-10 h-10 rounded-full bg-gray-400 object-cover flex-shrink-0"
|
|
173
|
+
src={chatUser?.picture || '/default-avatar.svg'}
|
|
174
|
+
alt={chatUser?.givenName || 'User avatar'}
|
|
175
|
+
onError={(e) => {
|
|
176
|
+
// Prevent infinite loop by checking if we're already showing the fallback
|
|
177
|
+
if (e.currentTarget.src.includes('default-avatar.svg')) {
|
|
178
|
+
// If SVG also fails, use a data URL fallback
|
|
179
|
+
e.currentTarget.src =
|
|
180
|
+
'data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9IjAgMCA0MCA0MCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8Y2lyY2xlIGN4PSIyMCIgY3k9IjIwIiByPSIyMCIgZmlsbD0iI0U1RTdFQiIvPgogIDxjaXJjbGUgY3g9IjIwIiBjeT0iMTYiIHI9IjYiIGZpbGw9IiM5Q0EzQUYiLz4KICA8cGF0aCBkPSJNOCAzMmMwLTYuNjI3IDUuMzczLTEyIDEyLTEyczEyIDUuMzczIDEyIDEyIiBmaWxsPSIjOUNBM0FGIi8+Cjwvc3ZnPgo=';
|
|
181
|
+
} else {
|
|
182
|
+
e.currentTarget.src = '/default-avatar.svg';
|
|
183
|
+
}
|
|
184
|
+
}}
|
|
185
|
+
/>
|
|
186
|
+
<div className="ml-2 flex-grow min-w-10 max-w-96">
|
|
187
|
+
{messageLoading && <Skeleton className="w-full h-16" />}
|
|
188
|
+
{!messageLoading && (
|
|
189
|
+
<>
|
|
190
|
+
<LastMessageComponent
|
|
191
|
+
lastMessage={lastMessage}
|
|
192
|
+
channelType={channelType}
|
|
193
|
+
chatUser={chatUser}
|
|
194
|
+
/>
|
|
195
|
+
<SubscriptionHandler
|
|
196
|
+
subscribeToMore={subscribeToMore}
|
|
197
|
+
document={CHAT_MESSAGE_ADDED}
|
|
198
|
+
variables={{ channelId: channel?.id?.toString() }}
|
|
199
|
+
enabled={!!channel?.id && !!subscribeToMore}
|
|
200
|
+
updateQuery={(prev, { subscriptionData }: any) => {
|
|
201
|
+
if (!subscriptionData.data) return prev;
|
|
202
|
+
const newMessage: any = subscriptionData?.data?.chatMessageAdded;
|
|
203
|
+
console.log('ConversationItem: New message received via subscription:', newMessage);
|
|
204
|
+
const previousData = prev?.messages?.data
|
|
205
|
+
? [...prev.messages.data, newMessage]
|
|
206
|
+
: [];
|
|
207
|
+
const totalMsgCount = prev?.messages?.totalCount + 1;
|
|
208
|
+
const merged = {
|
|
209
|
+
...prev,
|
|
210
|
+
messages: {
|
|
211
|
+
...prev?.messages,
|
|
212
|
+
data: previousData,
|
|
213
|
+
totalCount: totalMsgCount,
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
return merged;
|
|
217
|
+
}}
|
|
218
|
+
onError={(error) => {
|
|
219
|
+
console.error('ConversationItem: Subscription error:', error);
|
|
220
|
+
}}
|
|
221
|
+
/>
|
|
222
|
+
</>
|
|
223
|
+
)}
|
|
224
|
+
</div>
|
|
225
|
+
</div>
|
|
226
|
+
);
|
|
227
|
+
},
|
|
228
|
+
);
|
|
229
|
+
|
|
230
|
+
interface LastMessageComponentProps {
|
|
231
|
+
lastMessage: any;
|
|
232
|
+
channelType: string;
|
|
233
|
+
chatUser: any;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
const LastMessageComponent = React.memo(({ lastMessage, channelType, chatUser }: LastMessageComponentProps) => {
|
|
237
|
+
return (
|
|
238
|
+
<div className="flex flex-col w-full">
|
|
239
|
+
<div className="w-full flex justify-between items-center">
|
|
240
|
+
<span className="text-xs text-green-500 truncate">{channelType}</span>
|
|
241
|
+
<span className="text-xs text-gray-500">
|
|
242
|
+
{lastMessage ? createdAtText(lastMessage?.createdAt) : ''}
|
|
243
|
+
</span>
|
|
244
|
+
</div>
|
|
245
|
+
<p className="text-sm text-gray-600 dark:text-gray-300 font-bold mt-1">
|
|
246
|
+
{chatUser?.givenName + ' ' + chatUser?.familyName}
|
|
247
|
+
</p>
|
|
248
|
+
<p className="text-sm text-gray-600 dark:text-gray-400 truncate w-4/5 mt-1 line-clamp-1">
|
|
249
|
+
{lastMessage?.message && lastMessage.message.length > 30
|
|
250
|
+
? lastMessage.message.slice(0, 30) + '…'
|
|
251
|
+
: lastMessage?.message}
|
|
252
|
+
</p>
|
|
253
|
+
</div>
|
|
254
|
+
);
|
|
255
|
+
});
|