@memori.ai/memori-react 9.0.0-alpha.8 → 9.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (875) hide show
  1. package/CHANGELOG.md +760 -37
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +8 -9
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.css +14 -7
  6. package/dist/components/Auth/Auth.d.ts +1 -1
  7. package/dist/components/Auth/Auth.js +46 -34
  8. package/dist/components/Auth/Auth.js.map +1 -1
  9. package/dist/components/Avatar/Avatar.js +1 -1
  10. package/dist/components/Avatar/Avatar.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -1
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +6 -6
  15. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  16. package/dist/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +3 -3
  17. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +8 -7
  18. package/dist/components/ChangeMode/ChangeMode.css +1 -1
  19. package/dist/components/Chat/Chat.css +228 -45
  20. package/dist/components/Chat/Chat.d.ts +3 -0
  21. package/dist/components/Chat/Chat.js +123 -77
  22. package/dist/components/Chat/Chat.js.map +1 -1
  23. package/dist/components/ChatBubble/ChatBubble.css +399 -89
  24. package/dist/components/ChatBubble/ChatBubble.d.ts +2 -0
  25. package/dist/components/ChatBubble/ChatBubble.js +199 -97
  26. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  27. package/dist/components/ChatHistoryDrawer/ChatHistory.css +180 -706
  28. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  29. package/dist/components/ChatHistoryDrawer/ChatHistory.js +229 -613
  30. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  31. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +9 -298
  32. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +5 -2
  33. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -80
  34. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  35. package/dist/components/ChatInputs/ChatInputs.css +303 -155
  36. package/dist/components/ChatInputs/ChatInputs.d.ts +2 -0
  37. package/dist/components/ChatInputs/ChatInputs.js +15 -9
  38. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  39. package/dist/components/ChatTextArea/ChatTextArea.css +54 -21
  40. package/dist/components/ChatTextArea/ChatTextArea.js +0 -17
  41. package/dist/components/ChatTextArea/ChatTextArea.js.map +1 -1
  42. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.css +1 -1
  43. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +380 -68
  44. package/dist/components/ContentPreviewModal/ContentPreviewModal.d.ts +4 -1
  45. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +71 -6
  46. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  47. package/dist/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  48. package/dist/components/ContentPreviewModal/DocumentMarkdown.js +31 -0
  49. package/dist/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  50. package/dist/components/ContentPreviewModal/index.d.ts +2 -0
  51. package/dist/components/ContentPreviewModal/index.js +5 -1
  52. package/dist/components/ContentPreviewModal/index.js.map +1 -1
  53. package/dist/components/DateSelector/DateSelector.css +93 -7
  54. package/dist/components/DateSelector/DateSelector.js +5 -1
  55. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  56. package/dist/components/DrawerFooter/DrawerFooter.css +39 -39
  57. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +1 -7
  58. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  59. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  60. package/dist/components/ExportHistoryButton/ExportHistoryButton.css +1 -1
  61. package/dist/components/FeedbackButtons/FeedbackButtons.css +3 -3
  62. package/dist/components/FeedbackButtons/FeedbackButtons.js +2 -2
  63. package/dist/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  64. package/dist/components/FilePreview/FilePreview.css +123 -223
  65. package/dist/components/FilePreview/FilePreview.d.ts +2 -1
  66. package/dist/components/FilePreview/FilePreview.js +37 -86
  67. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  68. package/dist/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  69. package/dist/components/Header/ChatConsumptionDropdown.js +31 -6
  70. package/dist/components/Header/ChatConsumptionDropdown.js.map +1 -1
  71. package/dist/components/Header/Header.css +216 -53
  72. package/dist/components/Header/Header.d.ts +1 -0
  73. package/dist/components/Header/Header.js +201 -105
  74. package/dist/components/Header/Header.js.map +1 -1
  75. package/dist/components/IconButton/IconButton.css +135 -0
  76. package/dist/components/IconButton/IconButton.d.ts +9 -0
  77. package/dist/components/IconButton/IconButton.js +36 -0
  78. package/dist/components/IconButton/IconButton.js.map +1 -0
  79. package/dist/components/KnownFacts/KnownFacts.css +132 -35
  80. package/dist/components/KnownFacts/KnownFacts.js +184 -182
  81. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  82. package/dist/components/LoginDrawer/LoginDrawer.css +114 -74
  83. package/dist/components/LoginDrawer/LoginDrawer.js +66 -16
  84. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  85. package/dist/components/MediaWidget/MediaItemWidget.css +141 -121
  86. package/dist/components/MediaWidget/MediaItemWidget.js +15 -14
  87. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  88. package/dist/components/MediaWidget/MediaItemWidget.utils.d.ts +14 -0
  89. package/dist/components/MediaWidget/MediaItemWidget.utils.js +68 -4
  90. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  91. package/dist/components/MediaWidget/MediaPreviewModal.js +12 -19
  92. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  93. package/dist/components/MediaWidget/MediaWidget.css +2 -2
  94. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +9 -4
  95. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  96. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  97. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +14 -12
  98. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  99. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +43 -132
  100. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +393 -211
  101. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +48 -56
  102. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  103. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +48 -10
  104. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +20 -16
  105. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  106. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +46 -25
  107. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +206 -62
  108. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  109. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +30 -21
  110. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +1 -1
  111. package/dist/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  112. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  113. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +65 -1
  114. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  115. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  116. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +19 -14
  117. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  118. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  119. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  120. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  121. package/dist/components/MemoriWidget/MemoriWidget.css +8 -5
  122. package/dist/components/MemoriWidget/MemoriWidget.d.ts +3 -1
  123. package/dist/components/MemoriWidget/MemoriWidget.js +142 -81
  124. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  125. package/dist/components/MicrophoneButton/MicrophoneButton.css +4 -131
  126. package/dist/components/MicrophoneButton/MicrophoneButton.js +3 -1
  127. package/dist/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  128. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +122 -19
  129. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  130. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +75 -113
  131. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  132. package/dist/components/PositionPopover/PositionPopover.css +9 -10
  133. package/dist/components/PositionPopover/PositionPopover.d.ts +2 -0
  134. package/dist/components/PositionPopover/PositionPopover.js +57 -36
  135. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  136. package/dist/components/PoweredBy/PoweredBy.css +4 -3
  137. package/dist/components/ReasoningBlock/ReasoningBlock.css +156 -0
  138. package/dist/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  139. package/dist/components/ReasoningBlock/ReasoningBlock.js +61 -0
  140. package/dist/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  141. package/dist/components/SendOnEnterMenu/SendOnEnterMenu.css +1 -1
  142. package/dist/components/SettingsDrawer/SettingsDrawer.js +2 -4
  143. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  144. package/dist/components/ShareButton/ShareButton.css +101 -57
  145. package/dist/components/ShareButton/ShareButton.js +10 -9
  146. package/dist/components/ShareButton/ShareButton.js.map +1 -1
  147. package/dist/components/SideDrawer/SideDrawer.css +112 -0
  148. package/dist/components/SideDrawer/SideDrawer.d.ts +22 -0
  149. package/dist/components/SideDrawer/SideDrawer.js +17 -0
  150. package/dist/components/SideDrawer/SideDrawer.js.map +1 -0
  151. package/dist/components/Snippet/Snippet.css +10 -40
  152. package/dist/components/Snippet/Snippet.js +3 -1
  153. package/dist/components/Snippet/Snippet.js.map +1 -1
  154. package/dist/components/StartPanel/StartPanel.css +297 -49
  155. package/dist/components/StartPanel/StartPanel.d.ts +1 -0
  156. package/dist/components/StartPanel/StartPanel.js +45 -30
  157. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  158. package/dist/components/Typing/Typing.js +1 -1
  159. package/dist/components/Typing/Typing.js.map +1 -1
  160. package/dist/components/UploadButton/UploadButton.css +44 -62
  161. package/dist/components/UploadButton/UploadButton.d.ts +1 -0
  162. package/dist/components/UploadButton/UploadButton.js +17 -21
  163. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  164. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  165. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +23 -144
  166. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  167. package/dist/components/UploadButton/UploadImages/UploadImages.js +2 -8
  168. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  169. package/dist/components/VenueWidget/VenueWidget.css +6 -6
  170. package/dist/components/WhyThisAnswer/WhyThisAnswer.css +181 -107
  171. package/dist/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -1
  172. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +169 -20
  173. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  174. package/dist/components/layouts/Chat.js +66 -73
  175. package/dist/components/layouts/Chat.js.map +1 -1
  176. package/dist/components/layouts/FullPage.js +160 -39
  177. package/dist/components/layouts/FullPage.js.map +1 -1
  178. package/dist/components/layouts/HiddenChat.js +29 -19
  179. package/dist/components/layouts/HiddenChat.js.map +1 -1
  180. package/dist/components/layouts/Totem.js +10 -1
  181. package/dist/components/layouts/Totem.js.map +1 -1
  182. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +106 -6
  183. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  184. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +206 -73
  185. package/dist/components/layouts/ZoomedFullBody.js +158 -39
  186. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  187. package/dist/components/layouts/chat.css +260 -75
  188. package/dist/components/layouts/fullpage.css +295 -86
  189. package/dist/components/layouts/hidden-chat.css +211 -72
  190. package/dist/components/layouts/totem.css +194 -51
  191. package/dist/components/layouts/zoomed-full-body.css +292 -92
  192. package/dist/helpers/artifactPanel.d.ts +6 -0
  193. package/dist/helpers/artifactPanel.js +42 -0
  194. package/dist/helpers/artifactPanel.js.map +1 -0
  195. package/dist/helpers/chatScroll.d.ts +12 -0
  196. package/dist/helpers/chatScroll.js +14 -0
  197. package/dist/helpers/chatScroll.js.map +1 -0
  198. package/dist/helpers/constants.d.ts +3 -1
  199. package/dist/helpers/constants.js +25 -3
  200. package/dist/helpers/constants.js.map +1 -1
  201. package/dist/helpers/conversationHistory.d.ts +16 -0
  202. package/dist/helpers/conversationHistory.js +89 -0
  203. package/dist/helpers/conversationHistory.js.map +1 -0
  204. package/dist/helpers/conversationTitle.d.ts +8 -0
  205. package/dist/helpers/conversationTitle.js +27 -0
  206. package/dist/helpers/conversationTitle.js.map +1 -0
  207. package/dist/helpers/convertDocument.d.ts +1 -0
  208. package/dist/helpers/convertDocument.js +24 -0
  209. package/dist/helpers/convertDocument.js.map +1 -0
  210. package/dist/helpers/error.js +2 -1
  211. package/dist/helpers/error.js.map +1 -1
  212. package/dist/helpers/highlightMatches.d.ts +2 -0
  213. package/dist/helpers/highlightMatches.js +54 -0
  214. package/dist/helpers/highlightMatches.js.map +1 -0
  215. package/dist/helpers/media.js +18 -3
  216. package/dist/helpers/media.js.map +1 -1
  217. package/dist/helpers/message.js +4 -1
  218. package/dist/helpers/message.js.map +1 -1
  219. package/dist/helpers/nats/getNatsConfig.js.map +1 -1
  220. package/dist/helpers/nats/useNats.d.ts +2 -1
  221. package/dist/helpers/nats/useNats.js +87 -20
  222. package/dist/helpers/nats/useNats.js.map +1 -1
  223. package/dist/helpers/nats/useNatsSession.d.ts +6 -1
  224. package/dist/helpers/nats/useNatsSession.js +48 -7
  225. package/dist/helpers/nats/useNatsSession.js.map +1 -1
  226. package/dist/helpers/positionPopover.d.ts +3 -1
  227. package/dist/helpers/positionPopover.js +17 -2
  228. package/dist/helpers/positionPopover.js.map +1 -1
  229. package/dist/helpers/reasoning.d.ts +7 -0
  230. package/dist/helpers/reasoning.js +43 -0
  231. package/dist/helpers/reasoning.js.map +1 -0
  232. package/dist/helpers/relativeTime.d.ts +3 -0
  233. package/dist/helpers/relativeTime.js +56 -0
  234. package/dist/helpers/relativeTime.js.map +1 -0
  235. package/dist/helpers/sourcesCount.d.ts +2 -0
  236. package/dist/helpers/sourcesCount.js +22 -0
  237. package/dist/helpers/sourcesCount.js.map +1 -0
  238. package/dist/helpers/tts/muteSpeaker.d.ts +13 -0
  239. package/dist/helpers/tts/muteSpeaker.js +26 -0
  240. package/dist/helpers/tts/muteSpeaker.js.map +1 -0
  241. package/dist/helpers/tts/useTTS.js +18 -9
  242. package/dist/helpers/tts/useTTS.js.map +1 -1
  243. package/dist/helpers/usePressTooltip.d.ts +6 -1
  244. package/dist/helpers/usePressTooltip.js +16 -1
  245. package/dist/helpers/usePressTooltip.js.map +1 -1
  246. package/dist/helpers/utils.d.ts +3 -1
  247. package/dist/helpers/utils.js +20 -6
  248. package/dist/helpers/utils.js.map +1 -1
  249. package/dist/icons/MemoriIcon.js +1 -1
  250. package/dist/icons/MemoriIcon.js.map +1 -1
  251. package/dist/index.js +17 -17
  252. package/dist/index.js.map +1 -1
  253. package/dist/locales/de.json +81 -8
  254. package/dist/locales/en.json +79 -11
  255. package/dist/locales/es.json +78 -9
  256. package/dist/locales/fr.json +78 -9
  257. package/dist/locales/it.json +79 -11
  258. package/dist/styles/motion.css +25 -0
  259. package/dist/styles.css +1 -1
  260. package/dist/version.d.ts +1 -1
  261. package/dist/version.js +1 -1
  262. package/dist/version.js.map +1 -1
  263. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +8 -9
  264. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -3
  265. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  266. package/esm/components/Auth/Auth.css +14 -7
  267. package/esm/components/Auth/Auth.d.ts +1 -1
  268. package/esm/components/Auth/Auth.js +47 -35
  269. package/esm/components/Auth/Auth.js.map +1 -1
  270. package/esm/components/Avatar/Avatar.js +1 -1
  271. package/esm/components/Avatar/Avatar.js.map +1 -1
  272. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +2 -2
  273. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  274. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  275. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +4 -5
  276. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  277. package/esm/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +3 -3
  278. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +8 -7
  279. package/esm/components/ChangeMode/ChangeMode.css +1 -1
  280. package/esm/components/Chat/Chat.css +228 -45
  281. package/esm/components/Chat/Chat.d.ts +3 -0
  282. package/esm/components/Chat/Chat.js +125 -79
  283. package/esm/components/Chat/Chat.js.map +1 -1
  284. package/esm/components/ChatBubble/ChatBubble.css +399 -89
  285. package/esm/components/ChatBubble/ChatBubble.d.ts +2 -0
  286. package/esm/components/ChatBubble/ChatBubble.js +200 -98
  287. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  288. package/esm/components/ChatHistoryDrawer/ChatHistory.css +180 -706
  289. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  290. package/esm/components/ChatHistoryDrawer/ChatHistory.js +233 -617
  291. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  292. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +9 -298
  293. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +5 -2
  294. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -82
  295. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  296. package/esm/components/ChatInputs/ChatInputs.css +303 -155
  297. package/esm/components/ChatInputs/ChatInputs.d.ts +2 -0
  298. package/esm/components/ChatInputs/ChatInputs.js +16 -10
  299. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  300. package/esm/components/ChatTextArea/ChatTextArea.css +54 -21
  301. package/esm/components/ChatTextArea/ChatTextArea.js +0 -17
  302. package/esm/components/ChatTextArea/ChatTextArea.js.map +1 -1
  303. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.css +1 -1
  304. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +380 -68
  305. package/esm/components/ContentPreviewModal/ContentPreviewModal.d.ts +4 -1
  306. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +72 -7
  307. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  308. package/esm/components/ContentPreviewModal/DocumentMarkdown.d.ts +7 -0
  309. package/esm/components/ContentPreviewModal/DocumentMarkdown.js +28 -0
  310. package/esm/components/ContentPreviewModal/DocumentMarkdown.js.map +1 -0
  311. package/esm/components/ContentPreviewModal/index.d.ts +2 -0
  312. package/esm/components/ContentPreviewModal/index.js +2 -0
  313. package/esm/components/ContentPreviewModal/index.js.map +1 -1
  314. package/esm/components/DateSelector/DateSelector.css +93 -7
  315. package/esm/components/DateSelector/DateSelector.js +5 -1
  316. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  317. package/esm/components/DrawerFooter/DrawerFooter.css +39 -39
  318. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +1 -7
  319. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +1 -3
  320. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  321. package/esm/components/ExportHistoryButton/ExportHistoryButton.css +1 -1
  322. package/esm/components/FeedbackButtons/FeedbackButtons.css +3 -3
  323. package/esm/components/FeedbackButtons/FeedbackButtons.js +2 -2
  324. package/esm/components/FeedbackButtons/FeedbackButtons.js.map +1 -1
  325. package/esm/components/FilePreview/FilePreview.css +123 -223
  326. package/esm/components/FilePreview/FilePreview.d.ts +2 -1
  327. package/esm/components/FilePreview/FilePreview.js +39 -88
  328. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  329. package/esm/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  330. package/esm/components/Header/ChatConsumptionDropdown.js +33 -8
  331. package/esm/components/Header/ChatConsumptionDropdown.js.map +1 -1
  332. package/esm/components/Header/Header.css +216 -53
  333. package/esm/components/Header/Header.d.ts +1 -0
  334. package/esm/components/Header/Header.js +202 -106
  335. package/esm/components/Header/Header.js.map +1 -1
  336. package/esm/components/IconButton/IconButton.css +135 -0
  337. package/esm/components/IconButton/IconButton.d.ts +9 -0
  338. package/esm/components/IconButton/IconButton.js +33 -0
  339. package/esm/components/IconButton/IconButton.js.map +1 -0
  340. package/esm/components/KnownFacts/KnownFacts.css +132 -35
  341. package/esm/components/KnownFacts/KnownFacts.js +185 -184
  342. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  343. package/esm/components/LoginDrawer/LoginDrawer.css +114 -74
  344. package/esm/components/LoginDrawer/LoginDrawer.js +67 -17
  345. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  346. package/esm/components/MediaWidget/MediaItemWidget.css +141 -121
  347. package/esm/components/MediaWidget/MediaItemWidget.js +16 -15
  348. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  349. package/esm/components/MediaWidget/MediaItemWidget.utils.d.ts +14 -0
  350. package/esm/components/MediaWidget/MediaItemWidget.utils.js +65 -4
  351. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  352. package/esm/components/MediaWidget/MediaPreviewModal.js +13 -20
  353. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  354. package/esm/components/MediaWidget/MediaWidget.css +2 -2
  355. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +9 -4
  356. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  357. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  358. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +15 -13
  359. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  360. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +43 -132
  361. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +393 -211
  362. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +50 -58
  363. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  364. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +48 -10
  365. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js +21 -18
  366. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.js.map +1 -1
  367. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +46 -25
  368. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +208 -64
  369. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  370. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +30 -21
  371. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js +2 -2
  372. package/esm/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.js.map +1 -1
  373. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  374. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +66 -2
  375. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  376. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  377. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +19 -14
  378. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  379. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  380. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  381. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  382. package/esm/components/MemoriWidget/MemoriWidget.css +8 -5
  383. package/esm/components/MemoriWidget/MemoriWidget.d.ts +3 -1
  384. package/esm/components/MemoriWidget/MemoriWidget.js +144 -84
  385. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  386. package/esm/components/MicrophoneButton/MicrophoneButton.css +4 -131
  387. package/esm/components/MicrophoneButton/MicrophoneButton.js +3 -2
  388. package/esm/components/MicrophoneButton/MicrophoneButton.js.map +1 -1
  389. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +122 -19
  390. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -0
  391. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +76 -114
  392. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  393. package/esm/components/PositionPopover/PositionPopover.css +9 -10
  394. package/esm/components/PositionPopover/PositionPopover.d.ts +2 -0
  395. package/esm/components/PositionPopover/PositionPopover.js +58 -37
  396. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  397. package/esm/components/PoweredBy/PoweredBy.css +4 -3
  398. package/esm/components/ReasoningBlock/ReasoningBlock.css +156 -0
  399. package/esm/components/ReasoningBlock/ReasoningBlock.d.ts +7 -0
  400. package/esm/components/ReasoningBlock/ReasoningBlock.js +58 -0
  401. package/esm/components/ReasoningBlock/ReasoningBlock.js.map +1 -0
  402. package/esm/components/SendOnEnterMenu/SendOnEnterMenu.css +1 -1
  403. package/esm/components/SettingsDrawer/SettingsDrawer.js +2 -4
  404. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  405. package/esm/components/ShareButton/ShareButton.css +101 -57
  406. package/esm/components/ShareButton/ShareButton.js +11 -10
  407. package/esm/components/ShareButton/ShareButton.js.map +1 -1
  408. package/esm/components/SideDrawer/SideDrawer.css +112 -0
  409. package/esm/components/SideDrawer/SideDrawer.d.ts +22 -0
  410. package/esm/components/SideDrawer/SideDrawer.js +12 -0
  411. package/esm/components/SideDrawer/SideDrawer.js.map +1 -0
  412. package/esm/components/Snippet/Snippet.css +10 -40
  413. package/esm/components/Snippet/Snippet.js +4 -2
  414. package/esm/components/Snippet/Snippet.js.map +1 -1
  415. package/esm/components/StartPanel/StartPanel.css +297 -49
  416. package/esm/components/StartPanel/StartPanel.d.ts +1 -0
  417. package/esm/components/StartPanel/StartPanel.js +46 -31
  418. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  419. package/esm/components/Typing/Typing.js +1 -1
  420. package/esm/components/Typing/Typing.js.map +1 -1
  421. package/esm/components/UploadButton/UploadButton.css +44 -62
  422. package/esm/components/UploadButton/UploadButton.d.ts +1 -0
  423. package/esm/components/UploadButton/UploadButton.js +18 -22
  424. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  425. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.d.ts +1 -6
  426. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +25 -146
  427. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  428. package/esm/components/UploadButton/UploadImages/UploadImages.js +2 -8
  429. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  430. package/esm/components/VenueWidget/VenueWidget.css +6 -6
  431. package/esm/components/WhyThisAnswer/WhyThisAnswer.css +181 -107
  432. package/esm/components/WhyThisAnswer/WhyThisAnswer.d.ts +4 -1
  433. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +172 -23
  434. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  435. package/esm/components/layouts/Chat.js +69 -76
  436. package/esm/components/layouts/Chat.js.map +1 -1
  437. package/esm/components/layouts/FullPage.js +162 -41
  438. package/esm/components/layouts/FullPage.js.map +1 -1
  439. package/esm/components/layouts/HiddenChat.js +29 -19
  440. package/esm/components/layouts/HiddenChat.js.map +1 -1
  441. package/esm/components/layouts/Totem.js +10 -1
  442. package/esm/components/layouts/Totem.js.map +1 -1
  443. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +107 -7
  444. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  445. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +206 -73
  446. package/esm/components/layouts/ZoomedFullBody.js +160 -41
  447. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  448. package/esm/components/layouts/chat.css +260 -75
  449. package/esm/components/layouts/fullpage.css +295 -86
  450. package/esm/components/layouts/hidden-chat.css +211 -72
  451. package/esm/components/layouts/totem.css +194 -51
  452. package/esm/components/layouts/zoomed-full-body.css +292 -92
  453. package/esm/helpers/artifactPanel.d.ts +6 -0
  454. package/esm/helpers/artifactPanel.js +37 -0
  455. package/esm/helpers/artifactPanel.js.map +1 -0
  456. package/esm/helpers/chatScroll.d.ts +12 -0
  457. package/esm/helpers/chatScroll.js +9 -0
  458. package/esm/helpers/chatScroll.js.map +1 -0
  459. package/esm/helpers/constants.d.ts +3 -1
  460. package/esm/helpers/constants.js +24 -2
  461. package/esm/helpers/constants.js.map +1 -1
  462. package/esm/helpers/conversationHistory.d.ts +16 -0
  463. package/esm/helpers/conversationHistory.js +82 -0
  464. package/esm/helpers/conversationHistory.js.map +1 -0
  465. package/esm/helpers/conversationTitle.d.ts +8 -0
  466. package/esm/helpers/conversationTitle.js +23 -0
  467. package/esm/helpers/conversationTitle.js.map +1 -0
  468. package/esm/helpers/convertDocument.d.ts +1 -0
  469. package/esm/helpers/convertDocument.js +20 -0
  470. package/esm/helpers/convertDocument.js.map +1 -0
  471. package/esm/helpers/error.js +2 -1
  472. package/esm/helpers/error.js.map +1 -1
  473. package/esm/helpers/highlightMatches.d.ts +2 -0
  474. package/esm/helpers/highlightMatches.js +49 -0
  475. package/esm/helpers/highlightMatches.js.map +1 -0
  476. package/esm/helpers/media.js +18 -3
  477. package/esm/helpers/media.js.map +1 -1
  478. package/esm/helpers/message.js +5 -2
  479. package/esm/helpers/message.js.map +1 -1
  480. package/esm/helpers/nats/getNatsConfig.js.map +1 -1
  481. package/esm/helpers/nats/useNats.d.ts +2 -1
  482. package/esm/helpers/nats/useNats.js +87 -20
  483. package/esm/helpers/nats/useNats.js.map +1 -1
  484. package/esm/helpers/nats/useNatsSession.d.ts +6 -1
  485. package/esm/helpers/nats/useNatsSession.js +48 -8
  486. package/esm/helpers/nats/useNatsSession.js.map +1 -1
  487. package/esm/helpers/positionPopover.d.ts +3 -1
  488. package/esm/helpers/positionPopover.js +15 -2
  489. package/esm/helpers/positionPopover.js.map +1 -1
  490. package/esm/helpers/reasoning.d.ts +7 -0
  491. package/esm/helpers/reasoning.js +39 -0
  492. package/esm/helpers/reasoning.js.map +1 -0
  493. package/esm/helpers/relativeTime.d.ts +3 -0
  494. package/esm/helpers/relativeTime.js +50 -0
  495. package/esm/helpers/relativeTime.js.map +1 -0
  496. package/esm/helpers/sourcesCount.d.ts +2 -0
  497. package/esm/helpers/sourcesCount.js +18 -0
  498. package/esm/helpers/sourcesCount.js.map +1 -0
  499. package/esm/helpers/tts/muteSpeaker.d.ts +13 -0
  500. package/esm/helpers/tts/muteSpeaker.js +21 -0
  501. package/esm/helpers/tts/muteSpeaker.js.map +1 -0
  502. package/esm/helpers/tts/useTTS.js +18 -9
  503. package/esm/helpers/tts/useTTS.js.map +1 -1
  504. package/esm/helpers/usePressTooltip.d.ts +6 -1
  505. package/esm/helpers/usePressTooltip.js +17 -2
  506. package/esm/helpers/usePressTooltip.js.map +1 -1
  507. package/esm/helpers/utils.d.ts +3 -1
  508. package/esm/helpers/utils.js +18 -6
  509. package/esm/helpers/utils.js.map +1 -1
  510. package/esm/icons/MemoriIcon.js +1 -1
  511. package/esm/icons/MemoriIcon.js.map +1 -1
  512. package/esm/index.js +18 -18
  513. package/esm/index.js.map +1 -1
  514. package/esm/locales/de.json +81 -8
  515. package/esm/locales/en.json +79 -11
  516. package/esm/locales/es.json +78 -9
  517. package/esm/locales/fr.json +78 -9
  518. package/esm/locales/it.json +79 -11
  519. package/esm/styles/motion.css +25 -0
  520. package/esm/styles.css +1 -1
  521. package/esm/version.d.ts +1 -1
  522. package/esm/version.js +1 -1
  523. package/esm/version.js.map +1 -1
  524. package/package.json +15 -55
  525. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  526. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -64
  527. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  528. package/dist/context/widgetSurfaceContext.d.ts +0 -3
  529. package/dist/context/widgetSurfaceContext.js +0 -11
  530. package/dist/context/widgetSurfaceContext.js.map +0 -1
  531. package/dist/testUtils.d.ts +0 -5
  532. package/dist/testUtils.js +0 -18
  533. package/dist/testUtils.js.map +0 -1
  534. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
  535. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -62
  536. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
  537. package/esm/context/widgetSurfaceContext.d.ts +0 -3
  538. package/esm/context/widgetSurfaceContext.js +0 -7
  539. package/esm/context/widgetSurfaceContext.js.map +0 -1
  540. package/esm/testUtils.d.ts +0 -5
  541. package/esm/testUtils.js +0 -15
  542. package/esm/testUtils.js.map +0 -1
  543. package/src/I18nWrapper.tsx +0 -13
  544. package/src/Showcase.stories.tsx +0 -641
  545. package/src/__snapshots__/index.test.tsx.snap +0 -126
  546. package/src/components/AgeVerificationModal/AgeVerificationModal.css +0 -118
  547. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +0 -49
  548. package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +0 -34
  549. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -125
  550. package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +0 -43
  551. package/src/components/Auth/Auth.css +0 -61
  552. package/src/components/Auth/Auth.stories.tsx +0 -90
  553. package/src/components/Auth/Auth.test.tsx +0 -63
  554. package/src/components/Auth/Auth.tsx +0 -216
  555. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +0 -199
  556. package/src/components/Avatar/Avatar.css +0 -151
  557. package/src/components/Avatar/Avatar.stories.tsx +0 -160
  558. package/src/components/Avatar/Avatar.test.tsx +0 -158
  559. package/src/components/Avatar/Avatar.tsx +0 -248
  560. package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +0 -103
  561. package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +0 -105
  562. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +0 -338
  563. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +0 -44
  564. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +0 -1091
  565. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.ts +0 -83
  566. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +0 -301
  567. package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +0 -100
  568. package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +0 -152
  569. package/src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx +0 -31
  570. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +0 -141
  571. package/src/components/Avatar/AvatarView/AvatarComponent/lights/Lights.tsx +0 -145
  572. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +0 -111
  573. package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +0 -199
  574. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +0 -254
  575. package/src/components/Avatar/AvatarView/index.tsx +0 -194
  576. package/src/components/Avatar/AvatarView/utils/hideHands.ts +0 -11
  577. package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +0 -100
  578. package/src/components/Avatar/AvatarView/utils/useHeadMovement.ts +0 -72
  579. package/src/components/Avatar/AvatarView/utils/useLoadingMorphAnim.ts +0 -38
  580. package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +0 -93
  581. package/src/components/Avatar/AvatarView/utils/useSmile.ts +0 -39
  582. package/src/components/Avatar/AvatarView/utils/utils.ts +0 -55
  583. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -284
  584. package/src/components/Blob/Blob.css +0 -288
  585. package/src/components/Blob/Blob.stories.tsx +0 -53
  586. package/src/components/Blob/Blob.test.tsx +0 -18
  587. package/src/components/Blob/Blob.tsx +0 -26
  588. package/src/components/Blob/__snapshots__/Blob.test.tsx.snap +0 -80
  589. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +0 -40
  590. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +0 -58
  591. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.test.tsx +0 -53
  592. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.tsx +0 -74
  593. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +0 -226
  594. package/src/components/ChangeMode/ChangeMode.css +0 -24
  595. package/src/components/ChangeMode/ChangeMode.stories.tsx +0 -50
  596. package/src/components/ChangeMode/ChangeMode.test.tsx +0 -24
  597. package/src/components/ChangeMode/ChangeMode.tsx +0 -52
  598. package/src/components/ChangeMode/__snapshots__/ChangeMode.test.tsx.snap +0 -77
  599. package/src/components/Chat/Chat.css +0 -361
  600. package/src/components/Chat/Chat.stories.tsx +0 -1687
  601. package/src/components/Chat/Chat.test.tsx +0 -381
  602. package/src/components/Chat/Chat.tsx +0 -768
  603. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +0 -10134
  604. package/src/components/ChatBubble/ChatBubble.css +0 -568
  605. package/src/components/ChatBubble/ChatBubble.stories.tsx +0 -1185
  606. package/src/components/ChatBubble/ChatBubble.test.tsx +0 -486
  607. package/src/components/ChatBubble/ChatBubble.tsx +0 -887
  608. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +0 -9849
  609. package/src/components/ChatHistoryDrawer/ChatHistory.css +0 -848
  610. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +0 -449
  611. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +0 -116
  612. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -1295
  613. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +0 -367
  614. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +0 -295
  615. package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +0 -24
  616. package/src/components/ChatInputs/ChatInputs.css +0 -357
  617. package/src/components/ChatInputs/ChatInputs.stories.tsx +0 -254
  618. package/src/components/ChatInputs/ChatInputs.tsx +0 -510
  619. package/src/components/ChatTextArea/ChatTextArea.css +0 -211
  620. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  621. package/src/components/ChatTextArea/ChatTextArea.test.tsx +0 -28
  622. package/src/components/ChatTextArea/ChatTextArea.tsx +0 -175
  623. package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +0 -74
  624. package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +0 -36
  625. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +0 -296
  626. package/src/components/CompletionProviderStatus/CompletionProviderStatus.test.tsx +0 -31
  627. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +0 -230
  628. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +0 -111
  629. package/src/components/ContentPreviewModal/ContentPreviewModal.css +0 -173
  630. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -71
  631. package/src/components/ContentPreviewModal/index.ts +0 -2
  632. package/src/components/CustomGLBModelViewer/ModelViewer.css +0 -11
  633. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  634. package/src/components/CustomGLBModelViewer/ModelViewer.test.tsx +0 -13
  635. package/src/components/CustomGLBModelViewer/ModelViewer.tsx +0 -37
  636. package/src/components/CustomGLBModelViewer/__snapshots__/ModelViewer.test.tsx.snap +0 -20
  637. package/src/components/DateSelector/DateSelector.css +0 -156
  638. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  639. package/src/components/DateSelector/DateSelector.test.tsx +0 -149
  640. package/src/components/DateSelector/DateSelector.tsx +0 -258
  641. package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +0 -1954
  642. package/src/components/DrawerFooter/DrawerFooter.css +0 -62
  643. package/src/components/DrawerFooter/DrawerFooter.tsx +0 -58
  644. package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -54
  645. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -64
  646. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +0 -54
  647. package/src/components/ExpertsDrawer/ExpertsDrawer.test.tsx +0 -53
  648. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -72
  649. package/src/components/ExpertsDrawer/__snapshots__/ExpertsDrawer.test.tsx.snap +0 -10
  650. package/src/components/ExportHistoryButton/ExportHistoryButton.css +0 -22
  651. package/src/components/FeedbackButtons/FeedbackButtons.css +0 -109
  652. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +0 -55
  653. package/src/components/FeedbackButtons/FeedbackButtons.test.tsx +0 -11
  654. package/src/components/FeedbackButtons/FeedbackButtons.tsx +0 -179
  655. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +0 -55
  656. package/src/components/FilePreview/FilePreview.css +0 -374
  657. package/src/components/FilePreview/FilePreview.stories.tsx +0 -66
  658. package/src/components/FilePreview/FilePreview.test.tsx +0 -26
  659. package/src/components/FilePreview/FilePreview.tsx +0 -286
  660. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +0 -254
  661. package/src/components/Header/ChatConsumptionDropdown.test.tsx +0 -154
  662. package/src/components/Header/ChatConsumptionDropdown.tsx +0 -353
  663. package/src/components/Header/Header.css +0 -746
  664. package/src/components/Header/Header.stories.tsx +0 -404
  665. package/src/components/Header/Header.test.tsx +0 -399
  666. package/src/components/Header/Header.tsx +0 -1235
  667. package/src/components/Header/__snapshots__/Header.test.tsx.snap +0 -2016
  668. package/src/components/KnownFacts/KnownFacts.css +0 -58
  669. package/src/components/KnownFacts/KnownFacts.stories.tsx +0 -83
  670. package/src/components/KnownFacts/KnownFacts.test.tsx +0 -57
  671. package/src/components/KnownFacts/KnownFacts.tsx +0 -392
  672. package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +0 -43
  673. package/src/components/LoginDrawer/LoginDrawer.css +0 -1741
  674. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -105
  675. package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -199
  676. package/src/components/LoginDrawer/LoginDrawer.tsx +0 -781
  677. package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +0 -169
  678. package/src/components/MediaWidget/DocumentCard.test.tsx +0 -45
  679. package/src/components/MediaWidget/DocumentCard.tsx +0 -19
  680. package/src/components/MediaWidget/MediaItemWidget.css +0 -1444
  681. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +0 -423
  682. package/src/components/MediaWidget/MediaItemWidget.test.tsx +0 -248
  683. package/src/components/MediaWidget/MediaItemWidget.tsx +0 -983
  684. package/src/components/MediaWidget/MediaItemWidget.types.ts +0 -65
  685. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +0 -367
  686. package/src/components/MediaWidget/MediaItemWidget.utils.ts +0 -227
  687. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +0 -271
  688. package/src/components/MediaWidget/MediaPreviewModal.tsx +0 -425
  689. package/src/components/MediaWidget/MediaWidget.css +0 -131
  690. package/src/components/MediaWidget/MediaWidget.stories.tsx +0 -319
  691. package/src/components/MediaWidget/MediaWidget.test.tsx +0 -41
  692. package/src/components/MediaWidget/MediaWidget.tsx +0 -97
  693. package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +0 -24
  694. package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +0 -608
  695. package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +0 -140
  696. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  697. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +0 -159
  698. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +0 -240
  699. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +0 -30
  700. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +0 -464
  701. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +0 -91
  702. package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +0 -620
  703. package/src/components/MemoriArtifactSystem/components/ArtifactActions/index.ts +0 -9
  704. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +0 -500
  705. package/src/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.tsx +0 -90
  706. package/src/components/MemoriArtifactSystem/components/ArtifactActions/types.ts +0 -73
  707. package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +0 -454
  708. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +0 -1100
  709. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -440
  710. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +0 -20
  711. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +0 -63
  712. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +0 -283
  713. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +0 -397
  714. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +0 -354
  715. package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +0 -159
  716. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +0 -80
  717. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +0 -18
  718. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +0 -308
  719. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +0 -384
  720. package/src/components/MemoriWidget/MemoriWidget.css +0 -167
  721. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +0 -295
  722. package/src/components/MemoriWidget/MemoriWidget.tsx +0 -4054
  723. package/src/components/MicrophoneButton/MicrophoneButton.css +0 -162
  724. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +0 -52
  725. package/src/components/MicrophoneButton/MicrophoneButton.tsx +0 -135
  726. package/src/components/MobileSessionPanel/MobileSessionPanel.css +0 -437
  727. package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +0 -808
  728. package/src/components/PositionPopover/PositionPopover.css +0 -219
  729. package/src/components/PositionPopover/PositionPopover.stories.tsx +0 -37
  730. package/src/components/PositionPopover/PositionPopover.tsx +0 -367
  731. package/src/components/PoweredBy/PoweredBy.css +0 -49
  732. package/src/components/PoweredBy/PoweredBy.stories.tsx +0 -75
  733. package/src/components/PoweredBy/PoweredBy.test.tsx +0 -15
  734. package/src/components/PoweredBy/PoweredBy.tsx +0 -36
  735. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +0 -287
  736. package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +0 -47
  737. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +0 -58
  738. package/src/components/SendOnEnterMenu/SendOnEnterMenu.test.tsx +0 -17
  739. package/src/components/SendOnEnterMenu/SendOnEnterMenu.tsx +0 -48
  740. package/src/components/SendOnEnterMenu/__snapshots__/SendOnEnterMenu.test.tsx.snap +0 -105
  741. package/src/components/SettingsDrawer/SettingsDrawer.css +0 -24
  742. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +0 -94
  743. package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +0 -202
  744. package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -247
  745. package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +0 -52
  746. package/src/components/ShareButton/ShareButton.css +0 -319
  747. package/src/components/ShareButton/ShareButton.stories.tsx +0 -103
  748. package/src/components/ShareButton/ShareButton.test.tsx +0 -53
  749. package/src/components/ShareButton/ShareButton.tsx +0 -749
  750. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +0 -739
  751. package/src/components/Snippet/Snippet.css +0 -178
  752. package/src/components/Snippet/Snippet.stories.tsx +0 -286
  753. package/src/components/Snippet/Snippet.test.tsx +0 -176
  754. package/src/components/Snippet/Snippet.tsx +0 -148
  755. package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +0 -619
  756. package/src/components/StartPanel/StartPanel.css +0 -896
  757. package/src/components/StartPanel/StartPanel.stories.tsx +0 -394
  758. package/src/components/StartPanel/StartPanel.test.tsx +0 -371
  759. package/src/components/StartPanel/StartPanel.tsx +0 -745
  760. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +0 -3347
  761. package/src/components/Typing/Typing.stories.tsx +0 -130
  762. package/src/components/Typing/Typing.test.tsx +0 -62
  763. package/src/components/Typing/Typing.tsx +0 -232
  764. package/src/components/Typing/__snapshots__/Typing.test.tsx.snap +0 -173
  765. package/src/components/UploadButton/UploadButton.css +0 -573
  766. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  767. package/src/components/UploadButton/UploadButton.test.tsx +0 -14
  768. package/src/components/UploadButton/UploadButton.tsx +0 -705
  769. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -585
  770. package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -554
  771. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +0 -160
  772. package/src/components/VenueWidget/VenueWidget.css +0 -223
  773. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  774. package/src/components/VenueWidget/VenueWidget.test.tsx +0 -49
  775. package/src/components/VenueWidget/VenueWidget.tsx +0 -578
  776. package/src/components/VenueWidget/__snapshots__/VenueWidget.test.tsx.snap +0 -776
  777. package/src/components/WhyThisAnswer/WhyThisAnswer.css +0 -171
  778. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +0 -288
  779. package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +0 -245
  780. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -245
  781. package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +0 -57
  782. package/src/components/icons/GasStation.tsx +0 -36
  783. package/src/components/layouts/Chat.test.tsx +0 -41
  784. package/src/components/layouts/Chat.tsx +0 -430
  785. package/src/components/layouts/FullBody/FullBody.stories.tsx +0 -110
  786. package/src/components/layouts/FullPage.test.tsx +0 -66
  787. package/src/components/layouts/FullPage.tsx +0 -382
  788. package/src/components/layouts/HiddenChat.test.tsx +0 -41
  789. package/src/components/layouts/HiddenChat.tsx +0 -377
  790. package/src/components/layouts/Totem/Totem.stories.tsx +0 -131
  791. package/src/components/layouts/Totem.test.tsx +0 -41
  792. package/src/components/layouts/Totem.tsx +0 -53
  793. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
  794. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.test.tsx +0 -43
  795. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +0 -150
  796. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +0 -80
  797. package/src/components/layouts/WebsiteAssistant/website-assistant.css +0 -710
  798. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +0 -131
  799. package/src/components/layouts/ZoomedFullBody.test.tsx +0 -41
  800. package/src/components/layouts/ZoomedFullBody.tsx +0 -379
  801. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +0 -762
  802. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +0 -1497
  803. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +0 -562
  804. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +0 -802
  805. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +0 -749
  806. package/src/components/layouts/chat.css +0 -645
  807. package/src/components/layouts/fullpage.css +0 -419
  808. package/src/components/layouts/hidden-chat.css +0 -516
  809. package/src/components/layouts/layouts.stories.tsx +0 -231
  810. package/src/components/layouts/totem.css +0 -230
  811. package/src/components/layouts/zoomed-full-body.css +0 -373
  812. package/src/context/visemeContext.tsx +0 -384
  813. package/src/context/widgetSurfaceContext.tsx +0 -14
  814. package/src/helpers/chatPdfExport.ts +0 -547
  815. package/src/helpers/configuration.ts +0 -42
  816. package/src/helpers/constants.ts +0 -244
  817. package/src/helpers/credits.ts +0 -54
  818. package/src/helpers/error.test.ts +0 -29
  819. package/src/helpers/error.ts +0 -278
  820. package/src/helpers/imageCompression.ts +0 -230
  821. package/src/helpers/llmUsage.ts +0 -328
  822. package/src/helpers/markedExtendedTables.js +0 -217
  823. package/src/helpers/media.test.ts +0 -133
  824. package/src/helpers/media.ts +0 -54
  825. package/src/helpers/message.test.ts +0 -126
  826. package/src/helpers/message.ts +0 -204
  827. package/src/helpers/nats/getNatsConfig.ts +0 -145
  828. package/src/helpers/nats/isSessionExpiredError.test.ts +0 -38
  829. package/src/helpers/nats/isSessionExpiredError.ts +0 -51
  830. package/src/helpers/nats/useNats.ts +0 -124
  831. package/src/helpers/nats/useNatsSession.ts +0 -394
  832. package/src/helpers/piiDetection.test.ts +0 -186
  833. package/src/helpers/piiDetection.ts +0 -91
  834. package/src/helpers/positionPopover.test.ts +0 -33
  835. package/src/helpers/positionPopover.ts +0 -13
  836. package/src/helpers/sanitizer.ts +0 -17
  837. package/src/helpers/statistics.ts +0 -58
  838. package/src/helpers/stt/useSTT.ts +0 -515
  839. package/src/helpers/translations.ts +0 -39
  840. package/src/helpers/tts/ttsVoiceUtility.ts +0 -275
  841. package/src/helpers/tts/useTTS.ts +0 -621
  842. package/src/helpers/usePressTooltip.ts +0 -29
  843. package/src/helpers/utils.test.ts +0 -321
  844. package/src/helpers/utils.ts +0 -588
  845. package/src/helpers/venue.ts +0 -36
  846. package/src/i18n.ts +0 -41
  847. package/src/icons/FacebookIcon.tsx +0 -23
  848. package/src/icons/LinkedinIcon.tsx +0 -23
  849. package/src/icons/MemoriIcon.tsx +0 -80
  850. package/src/icons/TelegramIcon.tsx +0 -19
  851. package/src/icons/TwitterIcon.tsx +0 -8
  852. package/src/icons/WhatsappIcon.tsx +0 -23
  853. package/src/icons/artifacts/DocumentIcon.tsx +0 -19
  854. package/src/icons/artifacts/HtmlIcon.tsx +0 -38
  855. package/src/icons/artifacts/JavascriptIcon.tsx +0 -19
  856. package/src/icons/artifacts/MarkdownIcon.tsx +0 -19
  857. package/src/icons/artifacts/PythonIcon.tsx +0 -17
  858. package/src/icons/artifacts/SvgIcon.tsx +0 -34
  859. package/src/icons/artifacts/XmlIcon.tsx +0 -34
  860. package/src/icons/artifacts/cssIcon.tsx +0 -34
  861. package/src/index.stories.tsx +0 -226
  862. package/src/index.test.tsx +0 -156
  863. package/src/index.tsx +0 -595
  864. package/src/locales/de.json +0 -738
  865. package/src/locales/en.json +0 -812
  866. package/src/locales/es.json +0 -739
  867. package/src/locales/fr.json +0 -740
  868. package/src/locales/it.json +0 -808
  869. package/src/mocks/data.ts +0 -790
  870. package/src/styles.css +0 -223
  871. package/src/testUtils.tsx +0 -42
  872. package/src/types/integration.test.ts +0 -32
  873. package/src/types/integration.ts +0 -31
  874. package/src/types/layout.ts +0 -50
  875. package/src/version.ts +0 -2
@@ -1,1295 +0,0 @@
1
- import { Drawer, useAlertManager, createAlertOptions } from '@memori.ai/ui';
2
- import { useTranslation } from 'react-i18next';
3
- import memoriApiClient from '@memori.ai/memori-api-client';
4
- import React, { useEffect, useMemo, useState, useCallback } from 'react';
5
- import {
6
- ChatLog,
7
- ChatLogLine,
8
- Memori,
9
- Message,
10
- ChatLogFilters,
11
- } from '@memori.ai/memori-api-client/dist/types';
12
- import { Button } from '@memori.ai/ui';
13
- import {
14
- MessageCircle,
15
- ChevronLeft,
16
- ChevronRight,
17
- Download,
18
- } from 'lucide-react';
19
- import { stripHTML } from '../../helpers/utils';
20
- import { stripAllInternalTags } from '../../helpers/message';
21
- import debounce from 'lodash/debounce';
22
- import { Spin } from '@memori.ai/ui';
23
- import { SelectBox } from '@memori.ai/ui';
24
- import { useWidgetSurfaceEl } from '../../context/widgetSurfaceContext';
25
- // Helpers / Utils
26
- import { getTranslation } from '../../helpers/translations';
27
- import ChatResumeDrawer from './ChatResumeDrawer';
28
-
29
- export interface Props {
30
- open: boolean;
31
- onClose: () => void;
32
- apiClient: ReturnType<typeof memoriApiClient>;
33
- sessionId: string;
34
- memori: Memori;
35
- resumeSession: (chatLog: ChatLog) => void;
36
- baseUrl: string;
37
- apiUrl: string;
38
- history: Message[];
39
- loginToken?: string;
40
- language: string;
41
- userLang: string;
42
- isMultilanguageEnabled?: boolean;
43
- }
44
-
45
- const ITEMS_PER_PAGE = 8;
46
- const DEBOUNCE_DELAY = 300;
47
- const ICON_BACKGROUND_COLORS = [
48
- 'var(--chat-history-icon-purple, #EEEDFE)',
49
- 'var(--chat-history-icon-teal, #E1F5EE)',
50
- 'var(--chat-history-icon-amber, #FAEEDA)',
51
- 'var(--chat-history-icon-coral, #FAECE7)',
52
- ] as const;
53
-
54
- type ContentTypeFilter = 'all' | 'with_images' | 'with_files';
55
-
56
- const isImageMimeType = (mimeType?: string) =>
57
- mimeType?.startsWith('image/') ?? false;
58
-
59
- const isFileMimeType = (mimeType?: string) => !isImageMimeType(mimeType);
60
-
61
- // This function calculates the title of the chat log based on the most meaningful user message
62
- const calculateTitle = (lines: ChatLogLine[]): string => {
63
- const userMessages = lines.filter(line => line.inbound);
64
- if (userMessages.length === 0) return '';
65
-
66
- // Common non-significant phrases that shouldn't be used as titles (English and Italian)
67
- const insignificantPhrases = [
68
- // English phrases
69
- 'hello',
70
- 'hi',
71
- 'hey',
72
- 'good morning',
73
- 'good afternoon',
74
- 'good evening',
75
- 'thanks',
76
- 'thank you',
77
- 'thx',
78
- 'tnx',
79
- 'ty',
80
- 'thanks!',
81
- 'thank you!',
82
- 'ok',
83
- 'okay',
84
- 'k',
85
- 'yes',
86
- 'no',
87
- 'yep',
88
- 'nope',
89
- 'yeah',
90
- 'nah',
91
- 'good',
92
- 'great',
93
- 'nice',
94
- 'cool',
95
- 'awesome',
96
- 'perfect',
97
- 'excellent',
98
- 'bye',
99
- 'goodbye',
100
- 'see you',
101
- 'see ya',
102
- 'later',
103
- 'good night',
104
- 'how are you',
105
- 'how are you doing',
106
- "what's up",
107
- 'sup',
108
- 'please',
109
- 'pls',
110
- 'sorry',
111
- 'excuse me',
112
- 'pardon',
113
- 'i see',
114
- 'i understand',
115
- 'got it',
116
- 'gotcha',
117
- 'understood',
118
- 'continue',
119
- 'go on',
120
- 'tell me more',
121
- 'more',
122
- 'next',
123
- 'start',
124
- 'begin',
125
- "let's start",
126
- "let's begin",
127
- 'help',
128
- 'can you help',
129
- 'i need help',
130
- 'test',
131
- 'testing',
132
- 'test message',
133
- '?',
134
- '??',
135
- '???',
136
- '!',
137
- '!!',
138
- '!!!',
139
- '...',
140
- '..',
141
- '.',
142
- 'a',
143
- 'an',
144
- 'the',
145
- 'and',
146
- 'or',
147
- 'but',
148
- 'in',
149
- 'on',
150
- 'at',
151
- 'to',
152
- 'for',
153
- 'of',
154
- 'with',
155
- 'by',
156
-
157
- // Italian phrases
158
- 'ciao',
159
- 'salve',
160
- 'buongiorno',
161
- 'buonasera',
162
- 'buonanotte',
163
- 'grazie',
164
- 'grazie mille',
165
- 'grazie!',
166
- 'grazie mille!',
167
- 'thx',
168
- 'tnx',
169
- 'ok',
170
- 'va bene',
171
- 'va bene così',
172
- 'perfetto',
173
- 'ottimo',
174
- 'bene',
175
- 'sì',
176
- 'si',
177
- 'no',
178
- 'certo',
179
- 'certamente',
180
- 'assolutamente',
181
- 'arrivederci',
182
- 'a presto',
183
- 'a dopo',
184
- 'ci vediamo',
185
- 'addio',
186
- 'come stai',
187
- 'come va',
188
- 'tutto bene',
189
- 'che succede',
190
- 'per favore',
191
- 'per piacere',
192
- 'scusa',
193
- 'scusami',
194
- 'mi dispiace',
195
- 'capisco',
196
- 'ho capito',
197
- 'capito',
198
- 'perfetto',
199
- 'continua',
200
- 'vai avanti',
201
- 'dimmi di più',
202
- 'altro',
203
- 'altro ancora',
204
- 'inizia',
205
- 'iniziamo',
206
- 'comincia',
207
- 'cominciamo',
208
- 'aiuto',
209
- 'puoi aiutarmi',
210
- 'ho bisogno di aiuto',
211
- 'test',
212
- 'prova',
213
- 'messaggio di prova',
214
- '?',
215
- '??',
216
- '???',
217
- '!',
218
- '!!',
219
- '!!!',
220
- '...',
221
- '..',
222
- '.',
223
- 'un',
224
- 'una',
225
- 'il',
226
- 'la',
227
- 'gli',
228
- 'le',
229
- 'e',
230
- 'o',
231
- 'ma',
232
- 'in',
233
- 'su',
234
- 'a',
235
- 'per',
236
- 'di',
237
- 'con',
238
- 'da',
239
- ];
240
-
241
- // Function to calculate message significance score
242
- const calculateSignificanceScore = (message: string): number => {
243
- const cleanMessage = message.toLowerCase().trim();
244
-
245
- // Check if it's an insignificant phrase
246
- if (insignificantPhrases.includes(cleanMessage)) {
247
- return 0;
248
- }
249
-
250
- // Check if it's too short (less than 3 words)
251
- const wordCount = cleanMessage
252
- .split(/\s+/)
253
- .filter(word => word.length > 0).length;
254
- if (wordCount < 3) {
255
- return 0.1;
256
- }
257
-
258
- // Check if it's just punctuation or very short
259
- if (cleanMessage.length < 5) {
260
- return 0.1;
261
- }
262
-
263
- // Check if it's a question (questions are often more significant) - English and Italian
264
- const isQuestion =
265
- /\?$/.test(cleanMessage) ||
266
- // English question starters
267
- /^(what|how|why|when|where|who|which|can|could|would|will|do|does|did|is|are|was|were)/.test(
268
- cleanMessage
269
- ) ||
270
- // Italian question starters
271
- /^(cosa|come|perché|perche|quando|dove|chi|quale|quali|può|puo|potrebbe|vorrebbe|sarà|sara|fa|fai|fanno|è|e|sono|era|erano)/.test(
272
- cleanMessage
273
- );
274
-
275
- // Calculate base score
276
- let score = 0.5;
277
-
278
- // Boost score for questions
279
- if (isQuestion) score += 0.3;
280
-
281
- // Boost score for longer, more detailed messages
282
- if (wordCount > 5) score += 0.2;
283
- if (wordCount > 10) score += 0.2;
284
-
285
- // Reduce score for very long messages (might be too verbose for a title)
286
- if (wordCount > 20) score -= 0.1;
287
-
288
- // Boost score for messages with specific details (numbers, dates, names)
289
- if (/\d/.test(cleanMessage)) score += 0.1;
290
- if (
291
- /[A-ZÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞŸ][a-zàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ]+/.test(
292
- message
293
- )
294
- )
295
- score += 0.1; // Proper nouns (including accented characters)
296
-
297
- return Math.min(score, 1.0);
298
- };
299
-
300
- // Score all user messages
301
- const scoredMessages = userMessages.map((msg, index) => {
302
- const cleanText = stripHTML(stripAllInternalTags(msg.text || ''));
303
- const score = calculateSignificanceScore(cleanText);
304
- return {
305
- text: cleanText,
306
- score,
307
- index,
308
- originalIndex: index,
309
- };
310
- });
311
-
312
- // Sort by score (highest first) and then by position (earlier messages preferred for same score)
313
- scoredMessages.sort((a, b) => {
314
- if (Math.abs(a.score - b.score) < 0.1) {
315
- // If scores are close, prefer earlier messages
316
- return a.index - b.index;
317
- }
318
- return b.score - a.score;
319
- });
320
-
321
- // Find the best message
322
- let bestMessage = scoredMessages[0];
323
-
324
- // If the best message has a very low score, try to find a better one
325
- if (bestMessage.score < 0.3) {
326
- // Look for the first message that's not completely insignificant
327
- const betterMessage = scoredMessages.find(msg => msg.score > 0.1);
328
- if (betterMessage) {
329
- bestMessage = betterMessage;
330
- }
331
- }
332
-
333
- // If we still don't have a good message, try to create a title from multiple messages
334
- if (bestMessage.score < 0.2) {
335
- // Try to combine first few meaningful messages
336
- const meaningfulMessages = scoredMessages
337
- .filter(msg => msg.score > 0.1)
338
- .slice(0, 3)
339
- .sort((a, b) => a.index - b.index);
340
-
341
- if (meaningfulMessages.length > 1) {
342
- const combinedText = meaningfulMessages
343
- .map(msg => msg.text)
344
- .join(' - ')
345
- .substring(0, 80);
346
- return combinedText.length > 80 ? `${combinedText}...` : combinedText;
347
- }
348
- }
349
-
350
- // Format the final title
351
- const title = bestMessage.text;
352
- const maxLength = 100;
353
-
354
- if (title.length > maxLength) {
355
- // Try to cut at a word boundary
356
- const truncated = title.substring(0, maxLength);
357
- const lastSpace = truncated.lastIndexOf(' ');
358
- if (lastSpace > maxLength * 0.7) {
359
- // If we can cut at a word boundary without losing too much
360
- return `${truncated.substring(0, lastSpace)}...`;
361
- }
362
- return `${truncated}...`;
363
- }
364
-
365
- return title;
366
- };
367
-
368
- // Function to translate all chat logs lines
369
- const translateChatLogs = async (
370
- chatLogs: ChatLog[],
371
- fromLanguage: string,
372
- toLanguage: string,
373
- baseUrl: string
374
- ): Promise<ChatLog[]> => {
375
- try {
376
- const translatedChatLogs = await Promise.all(
377
- chatLogs.map(async chatLog => {
378
- const translatedLines = await Promise.all(
379
- chatLog.lines.map(async line => {
380
- if (!line.text) return line;
381
-
382
- try {
383
- const translation = await getTranslation(
384
- line.text,
385
- toLanguage,
386
- fromLanguage,
387
- baseUrl
388
- );
389
-
390
- return {
391
- ...line,
392
- originalText: line.text,
393
- text: translation.text,
394
- };
395
- } catch (e) {
396
- console.error('Error translating line:', e);
397
- return line; // Return original line if translation fails
398
- }
399
- })
400
- );
401
-
402
- return {
403
- ...chatLog,
404
- lines: translatedLines,
405
- };
406
- })
407
- );
408
-
409
- return translatedChatLogs;
410
- } catch (e) {
411
- console.error('Error translating chat logs:', e);
412
- return chatLogs; // Return original chat logs if translation fails
413
- }
414
- };
415
-
416
- const downloadFile = (text: string, filename: string) => {
417
- const data = new Blob([text], { type: 'text/plain' });
418
- const url = URL.createObjectURL(data);
419
- const element = document.createElement('a');
420
- element.setAttribute('href', url);
421
- element.setAttribute('download', filename);
422
- element.style.display = 'none';
423
-
424
- document.body.appendChild(element);
425
- element.click();
426
- document.body.removeChild(element);
427
- };
428
-
429
- const ChatHistoryDrawer = ({
430
- open,
431
- onClose,
432
- apiClient,
433
- sessionId,
434
- memori,
435
- resumeSession,
436
- baseUrl,
437
- apiUrl,
438
- history,
439
- loginToken,
440
- language,
441
- userLang,
442
- isMultilanguageEnabled = false,
443
- }: Props) => {
444
- const surfaceEl = useWidgetSurfaceEl();
445
- const { t } = useTranslation();
446
- const { add } = useAlertManager();
447
- const { getUserChatLogsByTokenPaged } = apiClient.chatLogs;
448
-
449
- const textCurrentChat = `${t(
450
- 'write_and_speak.conversationStartedLabel'
451
- )} ${new Intl.DateTimeFormat('it', {
452
- dateStyle: 'short',
453
- timeStyle: 'short',
454
- }).format(new Date())}\n\n`.concat(
455
- history
456
- .map(m => `${m.fromUser ? 'YOU' : memori.name}: ${stripAllInternalTags(m.text)}`)
457
- .join('\n')
458
- );
459
- const [chatLogs, setChatLogs] = useState<ChatLog[]>([]);
460
- const [selectedChatLog, setSelectedChatLog] = useState<ChatLog | null>(null);
461
- const [currentPage, setCurrentPage] = useState(1);
462
- const [indexPage, setIndexPage] = useState(0);
463
- const [searchText, setSearchText] = useState('');
464
- const [isLoading, setIsLoading] = useState(false);
465
- const [error, setError] = useState<string | null>(null);
466
- const [sortOrder, setSortOrder] = useState<'asc' | 'desc'>('desc');
467
- const [dateRange, setDateRange] = useState<
468
- 'today' | 'yesterday' | 'last_7_days' | 'last_30_days' | 'all'
469
- >('all');
470
- const [totalItems, setTotalItems] = useState(0);
471
- const [totalPages, setTotalPages] = useState(0);
472
- const [isMobile, setIsMobile] = useState(false);
473
- const [isViewingChatDetail, setIsViewingChatDetail] = useState(false);
474
-
475
- // New filter for minimum messages per chat
476
- const [minimumMessagesPerChat, setMinimumMessagesPerChat] =
477
- useState<number>(3);
478
-
479
- const [customMinimumMessages, setCustomMinimumMessages] = useState<number>(1);
480
- const [contentTypeFilter, setContentTypeFilter] =
481
- useState<ContentTypeFilter>('all');
482
-
483
- const isSameDay = (dateA: Date, dateB: Date) =>
484
- dateA.getFullYear() === dateB.getFullYear() &&
485
- dateA.getMonth() === dateB.getMonth() &&
486
- dateA.getDate() === dateB.getDate();
487
-
488
- const getChatLogStats = (chatLog: ChatLog) => {
489
- const imageCount = chatLog.lines.reduce((total, line) => {
490
- const imagesInLine =
491
- line.media?.filter(medium => isImageMimeType(medium.mimeType))
492
- .length || 0;
493
- return total + imagesInLine;
494
- }, 0);
495
-
496
- const fileCount = chatLog.lines.reduce((total, line) => {
497
- const filesInLine =
498
- line.media?.filter(medium => isFileMimeType(medium.mimeType))
499
- .length || 0;
500
- return total + filesInLine;
501
- }, 0);
502
-
503
- const assistantReplies = chatLog.lines.filter(
504
- line => !line.inbound && line.text?.trim()
505
- );
506
- const previewSource = assistantReplies[1] || assistantReplies[0];
507
- const preview = stripHTML(previewSource?.text || '')
508
- .replace(/\s+/g, ' ')
509
- .trim();
510
-
511
- const allText = chatLog.lines
512
- .map(line => line.text || '')
513
- .join(' ')
514
- .toLowerCase();
515
- const isTestConversation =
516
- /\b(test|testing|experiment|esperimento|prova)\b/.test(allText);
517
-
518
- return {
519
- imageCount,
520
- fileCount,
521
- preview,
522
- isTestConversation,
523
- messageCount: chatLog.lines.length,
524
- };
525
- };
526
-
527
- const formatDateForAPI = (date: Date) => {
528
- const year = date.getFullYear();
529
- const month = String(date.getMonth() + 1).padStart(2, '0');
530
- const day = String(date.getDate()).padStart(2, '0');
531
- const hours = String(date.getHours()).padStart(2, '0');
532
- const minutes = String(date.getMinutes()).padStart(2, '0');
533
- const seconds = String(date.getSeconds()).padStart(2, '0');
534
- const milliseconds = String(date.getMilliseconds()).padStart(3, '0');
535
-
536
- return `${year}${month}${day}${hours}${minutes}${seconds}${milliseconds}`;
537
- };
538
-
539
- const formatDateRangeForAPI = (
540
- dateRange: 'today' | 'yesterday' | 'last_7_days' | 'last_30_days'
541
- ) => {
542
- if (dateRange === 'today') {
543
- const now = new Date();
544
- const yesterday = new Date(
545
- now.getFullYear(),
546
- now.getMonth(),
547
- now.getDate() - 1
548
- );
549
- const dateFrom = formatDateForAPI(yesterday);
550
- const dateTo = formatDateForAPI(now);
551
- return { dateFrom, dateTo };
552
- }
553
- if (dateRange === 'yesterday') {
554
- const now = new Date();
555
- const yesterday = new Date(
556
- now.getFullYear(),
557
- now.getMonth(),
558
- now.getDate() - 1
559
- );
560
- const dayBeforeYesterday = new Date(
561
- yesterday.getFullYear(),
562
- yesterday.getMonth(),
563
- yesterday.getDate() - 2
564
- );
565
- const dateFrom = formatDateForAPI(dayBeforeYesterday);
566
- const dateTo = formatDateForAPI(yesterday);
567
- return { dateFrom, dateTo };
568
- }
569
- if (dateRange === 'last_7_days') {
570
- const now = new Date();
571
- const sevenDaysAgo = new Date(
572
- now.getFullYear(),
573
- now.getMonth(),
574
- now.getDate() - 7
575
- );
576
- const dateFrom = formatDateForAPI(sevenDaysAgo);
577
- const dateTo = formatDateForAPI(now);
578
- return { dateFrom, dateTo };
579
- }
580
- if (dateRange === 'last_30_days') {
581
- const now = new Date();
582
- const thirtyDaysAgo = new Date(
583
- now.getFullYear(),
584
- now.getMonth(),
585
- now.getDate() - 30
586
- );
587
- const dateFrom = formatDateForAPI(thirtyDaysAgo);
588
- const dateTo = formatDateForAPI(now);
589
- return { dateFrom, dateTo };
590
- }
591
- };
592
-
593
- const fetchChatLogs = useCallback(
594
- async (
595
- dateRangeValue:
596
- | 'today'
597
- | 'yesterday'
598
- | 'last_7_days'
599
- | 'last_30_days'
600
- | 'all' = 'all'
601
- ) => {
602
- if (!loginToken) {
603
- setError(
604
- t('errorFetchingSession') ||
605
- 'Login token required to fetch chat history'
606
- );
607
- return;
608
- }
609
-
610
- // Calculate the index based on current page
611
- const calculatedIndex = ITEMS_PER_PAGE * (currentPage - 1);
612
- setIndexPage(calculatedIndex);
613
-
614
- setIsLoading(true);
615
- setError(null);
616
- let response;
617
- let filters: any = {
618
- loginToken: loginToken,
619
- memoriID: memori.engineMemoriID,
620
- dateFrom: undefined,
621
- dateTo: undefined,
622
- from: calculatedIndex,
623
- howMany: ITEMS_PER_PAGE,
624
- minimumMessagesPerChat:
625
- minimumMessagesPerChat === 0
626
- ? customMinimumMessages
627
- : minimumMessagesPerChat,
628
- };
629
- try {
630
- if (dateRangeValue === 'all') {
631
- response = await getUserChatLogsByTokenPaged(filters);
632
- } else {
633
- const { dateFrom, dateTo } =
634
- formatDateRangeForAPI(dateRangeValue) ?? {};
635
- response = await getUserChatLogsByTokenPaged({
636
- ...filters,
637
- dateFrom: dateFrom ?? undefined,
638
- dateTo: dateTo ?? undefined,
639
- });
640
- }
641
-
642
- const res = response;
643
-
644
- // Sort the chat logs by date
645
- let sortedChatLogs = res.chatLogs.sort((a: ChatLog, b: ChatLog) => {
646
- const dateA = Math.max(
647
- ...a.lines.map((l: any) => new Date(l.timestamp).getTime())
648
- );
649
- const dateB = Math.max(
650
- ...b.lines.map((l: any) => new Date(l.timestamp).getTime())
651
- );
652
- return sortOrder === 'desc' ? dateB - dateA : dateA - dateB;
653
- });
654
-
655
- // Translate chat logs if needed
656
- if (
657
- language.toUpperCase() !== userLang.toUpperCase() &&
658
- isMultilanguageEnabled
659
- ) {
660
- sortedChatLogs = await translateChatLogs(
661
- sortedChatLogs,
662
- language,
663
- userLang,
664
- baseUrl
665
- );
666
- }
667
-
668
- setChatLogs(sortedChatLogs);
669
- setTotalItems(res.count || sortedChatLogs.length);
670
- setTotalPages(
671
- Math.ceil((res.count || sortedChatLogs.length) / ITEMS_PER_PAGE)
672
- );
673
- } catch (err) {
674
- setError(t('errorFetchingSession') || 'Error loading chat history');
675
- console.error('Error fetching chat logs:', err);
676
- } finally {
677
- setIsLoading(false);
678
- }
679
- },
680
- [
681
- loginToken,
682
- memori.engineMemoriID,
683
- currentPage,
684
- sortOrder,
685
- apiUrl,
686
- minimumMessagesPerChat,
687
- customMinimumMessages,
688
- ]
689
- );
690
-
691
- // Mobile detection
692
- useEffect(() => {
693
- const checkMobile = () => {
694
- setIsMobile(window.innerWidth <= 768);
695
- };
696
-
697
- checkMobile();
698
- window.addEventListener('resize', checkMobile);
699
-
700
- return () => window.removeEventListener('resize', checkMobile);
701
- }, []);
702
-
703
- useEffect(() => {
704
- if (open) {
705
- setCurrentPage(1); // Reset to first page when opening
706
- setIndexPage(0); // Reset index to 0
707
- setIsViewingChatDetail(false); // Reset detail view when opening
708
- setSelectedChatLog(null); // Reset selected chat when opening
709
- }
710
- }, [open]);
711
-
712
- // Reset to first page when changing sort order, date range, or minimum messages filter
713
- useEffect(() => {
714
- if (open) {
715
- setCurrentPage(1);
716
- setIndexPage(0);
717
- }
718
- }, [
719
- sortOrder,
720
- dateRange,
721
- minimumMessagesPerChat,
722
- customMinimumMessages,
723
- open,
724
- ]);
725
-
726
- // Fetch chat logs when current page, date range, or minimum messages filter changes
727
- useEffect(() => {
728
- if (open && currentPage > 0) {
729
- fetchChatLogs(dateRange);
730
- }
731
- }, [
732
- currentPage,
733
- dateRange,
734
- minimumMessagesPerChat,
735
- customMinimumMessages,
736
- fetchChatLogs,
737
- open,
738
- ]);
739
-
740
- const debouncedSearch = useMemo(
741
- () => debounce((value: string) => setSearchText(value), DEBOUNCE_DELAY),
742
- []
743
- );
744
- // Remove client-side pagination since we're now using server-side pagination
745
- const paginatedChatLogs = useMemo(() => {
746
- if (contentTypeFilter === 'all') {
747
- return chatLogs;
748
- }
749
-
750
- return chatLogs.filter(chatLog => {
751
- const stats = getChatLogStats(chatLog);
752
- if (contentTypeFilter === 'with_images') {
753
- return stats.imageCount > 0;
754
- }
755
- return stats.fileCount > 0;
756
- });
757
- }, [chatLogs, contentTypeFilter]);
758
-
759
- const handleResumeChat = async (_prompt?: string) => {
760
- if (selectedChatLog) {
761
- resumeSession(selectedChatLog);
762
- add(
763
- createAlertOptions({
764
- description:
765
- t('write_and_speak.chatResumed') || 'Conversation resumed.',
766
- severity: 'success',
767
- })
768
- );
769
- onClose();
770
- }
771
- };
772
-
773
- const handleCloseResumeDrawer = () => {
774
- setIsViewingChatDetail(false);
775
- setSelectedChatLog(null);
776
- };
777
-
778
- const handleExportChat = (chatLog: ChatLog, e: React.MouseEvent) => {
779
- e.stopPropagation(); // Prevent the list item from toggling
780
- const text = `${t(
781
- 'write_and_speak.conversationStartedLabel'
782
- )} ${new Intl.DateTimeFormat(navigator.language, {
783
- dateStyle: 'short',
784
- timeStyle: 'short',
785
- }).format(new Date())}\n\n`.concat(
786
- chatLog.lines
787
- .map(line => `${line.inbound ? 'YOU' : memori.name}: ${stripAllInternalTags(line.text)}`)
788
- .join('\n')
789
- );
790
-
791
- downloadFile(
792
- text,
793
- `${memori.name.replace(/\W+/g, '-')}-chat-${chatLog.chatLogID.substring(
794
- 0,
795
- 4
796
- )}.txt`
797
- );
798
- };
799
-
800
- const handleExportSelectedChat = () => {
801
- if (!selectedChatLog) return;
802
- const text = `${t(
803
- 'write_and_speak.conversationStartedLabel'
804
- )} ${new Intl.DateTimeFormat(navigator.language, {
805
- dateStyle: 'short',
806
- timeStyle: 'short',
807
- }).format(new Date())}\n\n`.concat(
808
- selectedChatLog.lines
809
- .map(line => `${line.inbound ? 'YOU' : memori.name}: ${line.text}`)
810
- .join('\n')
811
- );
812
-
813
- downloadFile(
814
- text,
815
- `${memori.name.replace(
816
- /\W+/g,
817
- '-'
818
- )}-chat-${selectedChatLog.chatLogID.substring(0, 4)}.txt`
819
- );
820
- };
821
-
822
- const formatDate = (timestamp: string) => {
823
- return new Intl.DateTimeFormat(navigator.language, {
824
- dateStyle: 'medium',
825
- timeStyle: 'short',
826
- }).format(new Date(timestamp));
827
- };
828
-
829
- const formatCountLabel = (count: number, singular: string, plural: string) =>
830
- `${count} ${count === 1 ? singular : plural}`;
831
-
832
- const selectedChatSession = useMemo(() => {
833
- if (!selectedChatLog) return null;
834
-
835
- const title =
836
- calculateTitle(selectedChatLog.lines) ||
837
- 'Chat-' + selectedChatLog.chatLogID.substring(0, 4);
838
-
839
- const hasInterruptedLine = selectedChatLog.lines.some(
840
- line => !line.inbound && !line.text?.trim()
841
- );
842
- const lastMessageDate = Math.max(
843
- ...selectedChatLog.lines.map(line => new Date(line.timestamp).getTime())
844
- );
845
-
846
- return {
847
- title,
848
- subtitle: `${formatDate(new Date(lastMessageDate).toISOString())} · ${
849
- selectedChatLog.lines.length
850
- } ${t('write_and_speak.messages') || 'messages'}`,
851
- summary:
852
- t('write_and_speak.sessionSummaryDescription') ||
853
- 'Hai caricato un file Markdown con la presentazione del gruppo. L’AI stava elaborando una risposta.',
854
- messages: selectedChatLog.lines.map((line, index) => ({
855
- id: `${selectedChatLog.chatLogID}-${index}`,
856
- role: line.inbound ? ('user' as const) : ('assistant' as const),
857
- content: line.text || '',
858
- timestamp: line.timestamp,
859
- media: (line.media || []).map((medium, mediumIndex) => ({
860
- ...medium,
861
- mediumID:
862
- (medium as { mediumID?: string }).mediumID ||
863
- `${selectedChatLog.chatLogID}-${index}-${mediumIndex}`,
864
- })),
865
- status:
866
- !line.inbound && !line.text?.trim() && hasInterruptedLine
867
- ? ('interrupted' as const)
868
- : ('completed' as const),
869
- attachment:
870
- line.inbound && Array.isArray(line.media) && line.media.length > 0
871
- ? {
872
- name:
873
- line.media[0].url?.split('/').pop() ||
874
- line.media[0].url ||
875
- 'Attachment file',
876
- type: 'Markdown',
877
- size: '2.4 KB',
878
- ext: 'MD',
879
- }
880
- : undefined,
881
- })),
882
- quickActions: [
883
- {
884
- label:
885
- t('write_and_speak.summarizeSession') || 'Riassumi la sessione',
886
- prompt: 'Riassumi la sessione',
887
- },
888
- {
889
- label: t('write_and_speak.retryRequest') || 'Riprova la richiesta',
890
- prompt: 'Riprova la richiesta',
891
- },
892
- ],
893
- };
894
- }, [selectedChatLog, t]);
895
-
896
- const escapeUnderScore = (value: string) => {
897
- return value.replace(/_/g, ' ');
898
- };
899
-
900
- const renderContent = () => {
901
- if (isLoading) {
902
- return (
903
- <div className="memori-chat-history-drawer--loading">
904
- <Spin
905
- spinning={true}
906
- primary={true}
907
- className="memori-chat-history-drawer--loading--spinner"
908
- />
909
- <p className="memori-chat-history-drawer--loading--text">
910
- {t('write_and_speak.loadingChatHistory') ||
911
- 'Loading chat history...'}
912
- </p>
913
- </div>
914
- );
915
- }
916
-
917
- if (error) {
918
- return (
919
- <div className="memori-chat-history-drawer--error">
920
- <p>{error}</p>
921
- </div>
922
- );
923
- }
924
-
925
- if (!chatLogs.length) {
926
- return (
927
- <div className="memori-chat-history-drawer--empty">
928
- <MessageCircle className="memori-chat-history-drawer--empty--icon" />
929
- <p className="memori-chat-history-drawer--empty--text">
930
- {t('write_and_speak.noChatHistoryAvailable') ||
931
- 'No chat history available'}
932
- </p>
933
- </div>
934
- );
935
- }
936
-
937
- if (paginatedChatLogs.length === 0) {
938
- return (
939
- <div className="memori-chat-history-drawer--no-results">
940
- <p>
941
- {t('write_and_speak.noResultsFound', {
942
- searchText: searchText || '',
943
- }) || 'No results found'}
944
- </p>
945
- </div>
946
- );
947
- }
948
-
949
- return (
950
- <>
951
- <ul
952
- className="memori-chat-history-drawer--list"
953
- aria-label={t('write_and_speak.chatHistory') || 'Chat history'}
954
- >
955
- {paginatedChatLogs.map((chatLog: ChatLog, index: number) => {
956
- const lastMessageDate = Math.max(
957
- ...chatLog.lines.map(line => new Date(line.timestamp).getTime())
958
- );
959
- const stats = getChatLogStats(chatLog);
960
- const iconSymbol = stats.fileCount > 0
961
- ? '📄'
962
- : stats.isTestConversation
963
- ? '🧪'
964
- : '💬';
965
- const iconBackgroundColor =
966
- ICON_BACKGROUND_COLORS[index % ICON_BACKGROUND_COLORS.length];
967
- const isUpdatedToday = isSameDay(
968
- new Date(lastMessageDate),
969
- new Date()
970
- );
971
- const title =
972
- calculateTitle(chatLog.lines) ||
973
- 'Chat-' + chatLog.chatLogID.substring(0, 4);
974
-
975
- const isCurrentSession = chatLog?.sessionID === sessionId;
976
-
977
- return (
978
- <li key={chatLog.chatLogID}>
979
- <button
980
- type="button"
981
- aria-disabled={isCurrentSession || undefined}
982
- aria-label={title}
983
- className={`memori-chat-history-drawer--list-item ${
984
- selectedChatLog?.chatLogID === chatLog.chatLogID
985
- ? 'memori-chat-history-drawer--list-item--selected'
986
- : ''
987
- } ${
988
- !isCurrentSession
989
- ? 'memori-chat-history-drawer--list-item--hoverable'
990
- : ''
991
- } ${
992
- isCurrentSession
993
- ? 'memori-chat-history-drawer--list-item--disabled'
994
- : ''
995
- }`}
996
- onKeyDown={event => {
997
- if (
998
- isCurrentSession &&
999
- (event.key === 'Enter' || event.key === ' ')
1000
- ) {
1001
- event.preventDefault();
1002
- }
1003
- }}
1004
- onClick={async () => {
1005
- if (isCurrentSession) {
1006
- return;
1007
- }
1008
- if (selectedChatLog?.chatLogID === chatLog.chatLogID) {
1009
- setSelectedChatLog(null);
1010
- if (isMobile) {
1011
- setIsViewingChatDetail(false);
1012
- }
1013
- return;
1014
- }
1015
- setSelectedChatLog(chatLog);
1016
- // if (isMobile) {
1017
- setIsViewingChatDetail(true);
1018
- // }
1019
- }}
1020
- >
1021
- {/* <div
1022
- className="memori-chat-history-drawer--list-item--icon"
1023
- style={{ backgroundColor: iconBackgroundColor }}
1024
- aria-hidden="true"
1025
- >
1026
- {iconSymbol}
1027
- </div> */}
1028
- <div className="memori-chat-history-drawer--list-item--content">
1029
- <div className="memori-chat-history-drawer--list-item--title-wrapper">
1030
- <span className="memori-chat-history-drawer--list-item--title">
1031
- {title}
1032
- </span>
1033
- {isUpdatedToday && (
1034
- <span className="memori-chat-history-drawer--list-item--today-pill">
1035
- {t('today') || 'Today'}
1036
- </span>
1037
- )}
1038
- </div>
1039
- {/* {stats.preview && (
1040
- <p className="memori-chat-history-drawer--list-item--preview">
1041
- {stats.preview}
1042
- </p>
1043
- )} */}
1044
- <div className="memori-chat-history-drawer--list-item--meta">
1045
- <time
1046
- className="memori-chat-history-drawer--list-item--meta--time"
1047
- dateTime={new Date(lastMessageDate).toISOString()}
1048
- >
1049
- {formatDate(new Date(lastMessageDate).toISOString())}
1050
- </time>
1051
- <span className="memori-chat-history-drawer--list-item--meta-badge memori-chat-history-drawer--list-item--meta-badge-messages">
1052
- {formatCountLabel(
1053
- stats.messageCount,
1054
- t('write_and_speak.message') || 'message',
1055
- t('write_and_speak.messages') || 'messages'
1056
- )}
1057
- </span>
1058
- {stats.imageCount > 0 && (
1059
- <span className="memori-chat-history-drawer--list-item--meta-badge memori-chat-history-drawer--list-item--meta-badge-images">
1060
- {formatCountLabel(
1061
- stats.imageCount,
1062
- t('write_and_speak.image') || 'image',
1063
- t('write_and_speak.images') || 'images'
1064
- )}
1065
- </span>
1066
- )}
1067
- {stats.fileCount > 0 && (
1068
- <span className="memori-chat-history-drawer--list-item--meta-badge memori-chat-history-drawer--list-item--meta-badge-files">
1069
- {formatCountLabel(
1070
- stats.fileCount,
1071
- t('write_and_speak.file') || 'file',
1072
- t('write_and_speak.files') || 'files'
1073
- )}
1074
- </span>
1075
- )}
1076
- {chatLog.boardOfExperts && (
1077
- <span className="memori-chat-history-drawer--list-item--meta-badge memori-chat-history-drawer--list-item--meta-badge-boe">
1078
- boe
1079
- </span>
1080
- )}
1081
- </div>
1082
- </div>
1083
- </button>
1084
- {/* {!isMobile && (
1085
- <div className="memori-chat-history-drawer--list-item--actions">
1086
- <Button
1087
- variant="ghost"
1088
- onClick={(e: React.MouseEvent<HTMLButtonElement>) =>
1089
- handleExportChat(chatLog, e)
1090
- }
1091
- disabled={chatLog?.sessionID === sessionId}
1092
- icon={<Download />}
1093
- />
1094
- </div>
1095
- )} */}
1096
- </li>
1097
- );
1098
- })}
1099
- </ul>
1100
- </>
1101
- );
1102
- };
1103
-
1104
- const renderListPagination = () => {
1105
- if (totalPages <= 1) return null;
1106
- return (
1107
- <nav
1108
- className="memori-chat-history-drawer--pagination"
1109
- aria-label={
1110
- t('write_and_speak.chatHistory') || 'Chat history pagination'
1111
- }
1112
- >
1113
- <Button
1114
- variant="outline"
1115
- onClick={() => setCurrentPage(p => Math.max(1, p - 1))}
1116
- disabled={currentPage === 1}
1117
- className="memori-chat-history-drawer--pagination--button memori-chat-history-drawer--pagination--prev"
1118
- icon={<ChevronLeft />}
1119
- title={t('previous') || 'Previous'}
1120
- />
1121
- <span className="memori-chat-history-drawer--pagination--info">
1122
- {t('write_and_speak.page', {
1123
- current: currentPage,
1124
- total: totalPages,
1125
- })}
1126
- </span>
1127
- <Button
1128
- variant="outline"
1129
- onClick={() => setCurrentPage(p => Math.min(totalPages, p + 1))}
1130
- disabled={currentPage === totalPages}
1131
- className="memori-chat-history-drawer--pagination--button memori-chat-history-drawer--pagination--next"
1132
- icon={<ChevronRight />}
1133
- title={t('next') || 'Next'}
1134
- />
1135
- </nav>
1136
- );
1137
- };
1138
-
1139
- return (
1140
- <Drawer
1141
- container={surfaceEl ?? undefined}
1142
- className="memori-chat-history-drawer"
1143
- open={open}
1144
- onClose={onClose}
1145
- title={t('write_and_speak.chatHistory') || 'Chat History'}
1146
- closable={true}
1147
- anchor="left"
1148
- size="md"
1149
- description={t('write_and_speak.chatHistoryDescription')}
1150
- >
1151
- {selectedChatSession && isViewingChatDetail ? (
1152
- <div className="memori-chat-history-drawer--content memori-chat-history-drawer--content-with-footer">
1153
- <ChatResumeDrawer
1154
- embedded={true}
1155
- isOpen={true}
1156
- session={selectedChatSession}
1157
- onResume={handleResumeChat}
1158
- onBack={handleCloseResumeDrawer}
1159
- onClose={handleCloseResumeDrawer}
1160
- onExportChat={handleExportSelectedChat}
1161
- />
1162
- </div>
1163
- ) : (
1164
- <div className="memori-chat-history-drawer--content memori-chat-history-drawer--content-with-footer">
1165
- <div className="memori-chat-history-drawer--scrollable">
1166
- <div className="memori-chat-history-drawer--toolbar">
1167
- {/* New minimum messages filter */}
1168
- <div className="memori-chat-history-drawer--toolbar--min-messages-filter">
1169
- {/* <label className={styles.filterLabel}>
1170
- {t('chatLogs.minimumMessages', { ns: 'admin' })}
1171
- </label> */}
1172
- <SelectBox
1173
- placeholder={
1174
- (t('chatLogs.customMinimumMessages') ||
1175
- 'Customize the number of messages') ??
1176
- 'Customize the number of messages'
1177
- }
1178
- value={String(minimumMessagesPerChat)}
1179
- onChange={value => {
1180
- setMinimumMessagesPerChat(value ? Number(value) : 0);
1181
- }}
1182
- displayValue={
1183
- minimumMessagesPerChat === 0
1184
- ? t('chatLogs.customMinimumMessages') ||
1185
- 'Customize the number of messages'
1186
- : t('chatLogs.atLeast' + minimumMessagesPerChat) ||
1187
- 'At least ' + minimumMessagesPerChat + ' messages'
1188
- }
1189
- className="memori-chat-history-drawer--toolbar--min-messages-filter--select"
1190
- options={[
1191
- {
1192
- value: '1',
1193
- label: t('chatLogs.anyMessage') || 'Any message',
1194
- },
1195
- {
1196
- value: '2',
1197
- label: t('chatLogs.atLeast2') || 'At least 2 messages',
1198
- },
1199
- {
1200
- value: '3',
1201
- label: t('chatLogs.atLeast3') || 'At least 3 messages',
1202
- },
1203
- {
1204
- value: '5',
1205
- label: t('chatLogs.atLeast5') || 'At least 5 messages',
1206
- },
1207
- {
1208
- value: '10',
1209
- label: t('chatLogs.atLeast10') || 'At least 10 messages',
1210
- },
1211
- {
1212
- value: '15',
1213
- label: t('chatLogs.atLeast15') || 'At least 15 messages',
1214
- },
1215
- {
1216
- value: '20',
1217
- label: t('chatLogs.atLeast20') || 'At least 20 messages',
1218
- },
1219
- {
1220
- value: '0',
1221
- label:
1222
- t('chatLogs.customMinimumMessages') ||
1223
- 'Customize the number of messages',
1224
- },
1225
- ]}
1226
- />
1227
- {minimumMessagesPerChat === 0 && (
1228
- <input
1229
- type="number"
1230
- min={1}
1231
- value={customMinimumMessages}
1232
- onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
1233
- const value = parseInt(e.target.value, 10);
1234
- setCustomMinimumMessages(value);
1235
- }}
1236
- style={{ minWidth: 50 }}
1237
- className="memori-chat-history-drawer--toolbar--min-messages-filter--input-number"
1238
- />
1239
- )}
1240
- </div>
1241
- <div className="memori-chat-history-drawer--toolbar--actions">
1242
- <SelectBox
1243
- options={[
1244
- { label: t('all') || 'All', value: 'all' },
1245
- { label: t('today') || 'Today', value: 'today' },
1246
- {
1247
- label: t('yesterday') || 'Yesterday',
1248
- value: 'yesterday',
1249
- },
1250
- {
1251
- label: t('last_7_days') || 'Last 7 days',
1252
- value: 'last_7_days',
1253
- },
1254
- {
1255
- label: t('last_30_days') || 'Last 30 days',
1256
- value: 'last_30_days',
1257
- },
1258
- ]}
1259
- value={dateRange}
1260
- displayValue={
1261
- dateRange === 'all'
1262
- ? t('all') || 'All'
1263
- : t(dateRange) || dateRange
1264
- }
1265
- className="memori-chat-history-drawer--toolbar--actions--select"
1266
- onChange={value => {
1267
- if (value) {
1268
- setDateRange(
1269
- value as
1270
- | 'today'
1271
- | 'yesterday'
1272
- | 'last_7_days'
1273
- | 'last_30_days'
1274
- | 'all'
1275
- );
1276
- setCurrentPage(1);
1277
- }
1278
- }}
1279
- />
1280
- </div>
1281
- </div>
1282
- {renderContent()}
1283
- </div>
1284
- {totalPages > 1 && (
1285
- <div className="memori-chat-history-drawer--pagination-footer">
1286
- {renderListPagination()}
1287
- </div>
1288
- )}
1289
- </div>
1290
- )}
1291
- </Drawer>
1292
- );
1293
- };
1294
-
1295
- export default ChatHistoryDrawer;