@memori.ai/memori-react 9.0.0-alpha.0 → 9.0.0-alpha.10

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 (942) hide show
  1. package/CHANGELOG.md +381 -0
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +8 -3
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  4. package/dist/components/Auth/Auth.js +3 -1
  5. package/dist/components/Auth/Auth.js.map +1 -1
  6. package/dist/components/Avatar/Avatar.js +5 -10
  7. package/dist/components/Avatar/Avatar.js.map +1 -1
  8. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +8 -1
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -0
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +14 -5
  14. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  15. package/dist/components/Chat/Chat.css +108 -20
  16. package/dist/components/Chat/Chat.d.ts +3 -0
  17. package/dist/components/Chat/Chat.js +63 -55
  18. package/dist/components/Chat/Chat.js.map +1 -1
  19. package/dist/components/ChatBubble/ChatBubble.css +42 -14
  20. package/dist/components/ChatBubble/ChatBubble.js +24 -16
  21. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  22. package/dist/components/ChatHistoryDrawer/ChatHistory.css +4 -0
  23. package/dist/components/ChatHistoryDrawer/ChatHistory.js +27 -10
  24. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  25. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +0 -1
  26. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +0 -1
  27. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  28. package/dist/components/ChatInputs/ChatInputs.css +292 -108
  29. package/dist/components/ChatInputs/ChatInputs.d.ts +1 -0
  30. package/dist/components/ChatInputs/ChatInputs.js +2 -2
  31. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  32. package/dist/components/ChatTextArea/ChatTextArea.css +30 -6
  33. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js +6 -3
  34. package/dist/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  35. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +3 -1
  36. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  37. package/dist/components/DateSelector/DateSelector.d.ts +2 -1
  38. package/dist/components/DateSelector/DateSelector.js +17 -7
  39. package/dist/components/DateSelector/DateSelector.js.map +1 -1
  40. package/dist/components/ExpertsDrawer/ExpertsDrawer.js +3 -1
  41. package/dist/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  42. package/dist/components/FilePreview/FilePreview.js +22 -5
  43. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  44. package/dist/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  45. package/dist/components/Header/ChatConsumptionDropdown.js +4 -3
  46. package/dist/components/Header/ChatConsumptionDropdown.js.map +1 -1
  47. package/dist/components/Header/Header.css +16 -10
  48. package/dist/components/Header/Header.js +103 -22
  49. package/dist/components/Header/Header.js.map +1 -1
  50. package/dist/components/KnownFacts/KnownFacts.js +7 -5
  51. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  52. package/dist/components/LoginDrawer/LoginDrawer.css +1 -0
  53. package/dist/components/LoginDrawer/LoginDrawer.js +3 -1
  54. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  55. package/dist/components/MediaWidget/MediaItemWidget.js +14 -12
  56. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  57. package/dist/components/MediaWidget/MediaItemWidget.utils.d.ts +3 -2
  58. package/dist/components/MediaWidget/MediaItemWidget.utils.js +28 -6
  59. package/dist/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  60. package/dist/components/MediaWidget/MediaPreviewModal.js +6 -7
  61. package/dist/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  62. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -4
  63. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +108 -42
  64. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +1 -0
  65. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +18 -10
  66. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  67. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +2 -2
  68. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  69. package/dist/components/MemoriWidget/MemoriWidget.css +5 -5
  70. package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -0
  71. package/dist/components/MemoriWidget/MemoriWidget.js +788 -430
  72. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  73. package/dist/components/MicrophoneButton/MicrophoneButton.css +50 -18
  74. package/dist/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -2
  75. package/dist/components/MobileSessionPanel/MobileSessionPanel.js +5 -5
  76. package/dist/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  77. package/dist/components/PoweredBy/PoweredBy.css +10 -2
  78. package/dist/components/SettingsDrawer/SettingsDrawer.js +3 -1
  79. package/dist/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  80. package/dist/components/ShareButton/ShareButton.js +2 -4
  81. package/dist/components/ShareButton/ShareButton.js.map +1 -1
  82. package/dist/components/StartPanel/StartPanel.js +13 -6
  83. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  84. package/dist/components/UploadButton/UploadButton.js +21 -5
  85. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  86. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +126 -60
  87. package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  88. package/dist/components/UploadButton/UploadImages/UploadImages.js +4 -2
  89. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  90. package/dist/components/WhyThisAnswer/WhyThisAnswer.js +3 -1
  91. package/dist/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  92. package/dist/components/layouts/Chat.js +25 -30
  93. package/dist/components/layouts/Chat.js.map +1 -1
  94. package/dist/components/layouts/FullPage.js +36 -9
  95. package/dist/components/layouts/FullPage.js.map +1 -1
  96. package/dist/components/layouts/HiddenChat.js +12 -237
  97. package/dist/components/layouts/HiddenChat.js.map +1 -1
  98. package/dist/components/layouts/Totem.js +10 -1
  99. package/dist/components/layouts/Totem.js.map +1 -1
  100. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js +29 -2
  101. package/dist/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  102. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +160 -59
  103. package/dist/components/layouts/ZoomedFullBody.js +36 -9
  104. package/dist/components/layouts/ZoomedFullBody.js.map +1 -1
  105. package/dist/components/layouts/chat.css +77 -63
  106. package/dist/components/layouts/fullpage.css +229 -84
  107. package/dist/components/layouts/hidden-chat.css +148 -33
  108. package/dist/components/layouts/totem.css +151 -50
  109. package/dist/components/layouts/zoomed-full-body.css +332 -33
  110. package/dist/context/widgetSurfaceContext.d.ts +3 -0
  111. package/dist/context/widgetSurfaceContext.js +11 -0
  112. package/dist/context/widgetSurfaceContext.js.map +1 -0
  113. package/dist/helpers/constants.d.ts +3 -0
  114. package/dist/helpers/constants.js +27 -1
  115. package/dist/helpers/constants.js.map +1 -1
  116. package/dist/helpers/credits.d.ts +5 -2
  117. package/dist/helpers/credits.js +5 -1
  118. package/dist/helpers/credits.js.map +1 -1
  119. package/dist/helpers/message.d.ts +1 -1
  120. package/dist/helpers/message.js +4 -4
  121. package/dist/helpers/message.js.map +1 -1
  122. package/dist/helpers/nats/getNatsConfig.d.ts +9 -0
  123. package/dist/helpers/nats/getNatsConfig.js +65 -0
  124. package/dist/helpers/nats/getNatsConfig.js.map +1 -0
  125. package/dist/helpers/nats/isSessionExpiredError.d.ts +3 -0
  126. package/dist/helpers/nats/isSessionExpiredError.js +36 -0
  127. package/dist/helpers/nats/isSessionExpiredError.js.map +1 -0
  128. package/dist/helpers/nats/useNats.d.ts +12 -0
  129. package/dist/helpers/nats/useNats.js +75 -0
  130. package/dist/helpers/nats/useNats.js.map +1 -0
  131. package/dist/helpers/nats/useNatsSession.d.ts +28 -0
  132. package/dist/helpers/nats/useNatsSession.js +212 -0
  133. package/dist/helpers/nats/useNatsSession.js.map +1 -0
  134. package/dist/helpers/positionPopover.d.ts +1 -0
  135. package/dist/helpers/positionPopover.js +7 -0
  136. package/dist/helpers/positionPopover.js.map +1 -0
  137. package/dist/helpers/usePressTooltip.d.ts +13 -0
  138. package/dist/helpers/usePressTooltip.js +23 -0
  139. package/dist/helpers/usePressTooltip.js.map +1 -0
  140. package/dist/helpers/utils.d.ts +21 -0
  141. package/dist/helpers/utils.js +75 -4
  142. package/dist/helpers/utils.js.map +1 -1
  143. package/dist/locales/de.json +11 -1
  144. package/dist/locales/en.json +12 -2
  145. package/dist/locales/es.json +11 -1
  146. package/dist/locales/fr.json +11 -1
  147. package/dist/locales/it.json +12 -2
  148. package/dist/styles.css +1 -161
  149. package/dist/types/integration.d.ts +3 -0
  150. package/dist/types/integration.js +16 -0
  151. package/dist/types/integration.js.map +1 -0
  152. package/dist/version.d.ts +1 -1
  153. package/dist/version.js +1 -1
  154. package/dist/version.js.map +1 -1
  155. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +8 -3
  156. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  157. package/esm/components/Auth/Auth.js +3 -1
  158. package/esm/components/Auth/Auth.js.map +1 -1
  159. package/esm/components/Avatar/Avatar.js +5 -10
  160. package/esm/components/Avatar/Avatar.js.map +1 -1
  161. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +9 -2
  162. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  163. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js +2 -2
  164. package/esm/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.js.map +1 -1
  165. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -0
  166. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +13 -4
  167. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  168. package/esm/components/Chat/Chat.css +108 -20
  169. package/esm/components/Chat/Chat.d.ts +3 -0
  170. package/esm/components/Chat/Chat.js +63 -55
  171. package/esm/components/Chat/Chat.js.map +1 -1
  172. package/esm/components/ChatBubble/ChatBubble.css +42 -14
  173. package/esm/components/ChatBubble/ChatBubble.js +24 -16
  174. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  175. package/esm/components/ChatHistoryDrawer/ChatHistory.css +4 -0
  176. package/esm/components/ChatHistoryDrawer/ChatHistory.js +27 -10
  177. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  178. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +0 -1
  179. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +0 -1
  180. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  181. package/esm/components/ChatInputs/ChatInputs.css +292 -108
  182. package/esm/components/ChatInputs/ChatInputs.d.ts +1 -0
  183. package/esm/components/ChatInputs/ChatInputs.js +2 -2
  184. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  185. package/esm/components/ChatTextArea/ChatTextArea.css +30 -6
  186. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js +6 -3
  187. package/esm/components/CompletionProviderStatus/CompletionProviderStatus.js.map +1 -1
  188. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +3 -1
  189. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  190. package/esm/components/DateSelector/DateSelector.d.ts +2 -1
  191. package/esm/components/DateSelector/DateSelector.js +17 -7
  192. package/esm/components/DateSelector/DateSelector.js.map +1 -1
  193. package/esm/components/ExpertsDrawer/ExpertsDrawer.js +3 -1
  194. package/esm/components/ExpertsDrawer/ExpertsDrawer.js.map +1 -1
  195. package/esm/components/FilePreview/FilePreview.js +24 -7
  196. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  197. package/esm/components/Header/ChatConsumptionDropdown.d.ts +3 -1
  198. package/esm/components/Header/ChatConsumptionDropdown.js +5 -4
  199. package/esm/components/Header/ChatConsumptionDropdown.js.map +1 -1
  200. package/esm/components/Header/Header.css +16 -10
  201. package/esm/components/Header/Header.js +104 -23
  202. package/esm/components/Header/Header.js.map +1 -1
  203. package/esm/components/KnownFacts/KnownFacts.js +7 -5
  204. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  205. package/esm/components/LoginDrawer/LoginDrawer.css +1 -0
  206. package/esm/components/LoginDrawer/LoginDrawer.js +3 -1
  207. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  208. package/esm/components/MediaWidget/MediaItemWidget.js +16 -14
  209. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  210. package/esm/components/MediaWidget/MediaItemWidget.utils.d.ts +3 -2
  211. package/esm/components/MediaWidget/MediaItemWidget.utils.js +27 -6
  212. package/esm/components/MediaWidget/MediaItemWidget.utils.js.map +1 -1
  213. package/esm/components/MediaWidget/MediaPreviewModal.js +6 -7
  214. package/esm/components/MediaWidget/MediaPreviewModal.js.map +1 -1
  215. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -4
  216. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +108 -42
  217. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.d.ts +1 -0
  218. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +18 -10
  219. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  220. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +2 -2
  221. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  222. package/esm/components/MemoriWidget/MemoriWidget.css +5 -5
  223. package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -0
  224. package/esm/components/MemoriWidget/MemoriWidget.js +789 -431
  225. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  226. package/esm/components/MicrophoneButton/MicrophoneButton.css +50 -18
  227. package/esm/components/MobileSessionPanel/MobileSessionPanel.d.ts +3 -2
  228. package/esm/components/MobileSessionPanel/MobileSessionPanel.js +5 -5
  229. package/esm/components/MobileSessionPanel/MobileSessionPanel.js.map +1 -1
  230. package/esm/components/PoweredBy/PoweredBy.css +10 -2
  231. package/esm/components/SettingsDrawer/SettingsDrawer.js +3 -1
  232. package/esm/components/SettingsDrawer/SettingsDrawer.js.map +1 -1
  233. package/esm/components/ShareButton/ShareButton.js +2 -4
  234. package/esm/components/ShareButton/ShareButton.js.map +1 -1
  235. package/esm/components/StartPanel/StartPanel.js +13 -6
  236. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  237. package/esm/components/UploadButton/UploadButton.js +21 -5
  238. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  239. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +126 -60
  240. package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
  241. package/esm/components/UploadButton/UploadImages/UploadImages.js +4 -2
  242. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  243. package/esm/components/WhyThisAnswer/WhyThisAnswer.js +3 -1
  244. package/esm/components/WhyThisAnswer/WhyThisAnswer.js.map +1 -1
  245. package/esm/components/layouts/Chat.js +25 -30
  246. package/esm/components/layouts/Chat.js.map +1 -1
  247. package/esm/components/layouts/FullPage.js +36 -9
  248. package/esm/components/layouts/FullPage.js.map +1 -1
  249. package/esm/components/layouts/HiddenChat.js +14 -239
  250. package/esm/components/layouts/HiddenChat.js.map +1 -1
  251. package/esm/components/layouts/Totem.js +10 -1
  252. package/esm/components/layouts/Totem.js.map +1 -1
  253. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js +29 -2
  254. package/esm/components/layouts/WebsiteAssistant/WebsiteAssistant.js.map +1 -1
  255. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +160 -59
  256. package/esm/components/layouts/ZoomedFullBody.js +36 -9
  257. package/esm/components/layouts/ZoomedFullBody.js.map +1 -1
  258. package/esm/components/layouts/chat.css +77 -63
  259. package/esm/components/layouts/fullpage.css +229 -84
  260. package/esm/components/layouts/hidden-chat.css +148 -33
  261. package/esm/components/layouts/totem.css +151 -50
  262. package/esm/components/layouts/zoomed-full-body.css +332 -33
  263. package/esm/context/widgetSurfaceContext.d.ts +3 -0
  264. package/esm/context/widgetSurfaceContext.js +7 -0
  265. package/esm/context/widgetSurfaceContext.js.map +1 -0
  266. package/esm/helpers/constants.d.ts +3 -0
  267. package/esm/helpers/constants.js +26 -0
  268. package/esm/helpers/constants.js.map +1 -1
  269. package/esm/helpers/credits.d.ts +5 -2
  270. package/esm/helpers/credits.js +5 -1
  271. package/esm/helpers/credits.js.map +1 -1
  272. package/esm/helpers/message.d.ts +1 -1
  273. package/esm/helpers/message.js +2 -2
  274. package/esm/helpers/message.js.map +1 -1
  275. package/esm/helpers/nats/getNatsConfig.d.ts +9 -0
  276. package/esm/helpers/nats/getNatsConfig.js +61 -0
  277. package/esm/helpers/nats/getNatsConfig.js.map +1 -0
  278. package/esm/helpers/nats/isSessionExpiredError.d.ts +3 -0
  279. package/esm/helpers/nats/isSessionExpiredError.js +32 -0
  280. package/esm/helpers/nats/isSessionExpiredError.js.map +1 -0
  281. package/esm/helpers/nats/useNats.d.ts +12 -0
  282. package/esm/helpers/nats/useNats.js +72 -0
  283. package/esm/helpers/nats/useNats.js.map +1 -0
  284. package/esm/helpers/nats/useNatsSession.d.ts +28 -0
  285. package/esm/helpers/nats/useNatsSession.js +208 -0
  286. package/esm/helpers/nats/useNatsSession.js.map +1 -0
  287. package/esm/helpers/positionPopover.d.ts +1 -0
  288. package/esm/helpers/positionPopover.js +4 -0
  289. package/esm/helpers/positionPopover.js.map +1 -0
  290. package/esm/helpers/usePressTooltip.d.ts +13 -0
  291. package/esm/helpers/usePressTooltip.js +20 -0
  292. package/esm/helpers/usePressTooltip.js.map +1 -0
  293. package/esm/helpers/utils.d.ts +21 -0
  294. package/esm/helpers/utils.js +68 -3
  295. package/esm/helpers/utils.js.map +1 -1
  296. package/esm/locales/de.json +11 -1
  297. package/esm/locales/en.json +12 -2
  298. package/esm/locales/es.json +11 -1
  299. package/esm/locales/fr.json +11 -1
  300. package/esm/locales/it.json +12 -2
  301. package/esm/styles.css +1 -161
  302. package/esm/types/integration.d.ts +3 -0
  303. package/esm/types/integration.js +11 -0
  304. package/esm/types/integration.js.map +1 -0
  305. package/esm/version.d.ts +1 -1
  306. package/esm/version.js +1 -1
  307. package/esm/version.js.map +1 -1
  308. package/package.json +13 -6
  309. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +9 -1
  310. package/src/components/Auth/Auth.tsx +3 -0
  311. package/src/components/Avatar/Avatar.stories.tsx +45 -28
  312. package/src/components/Avatar/Avatar.test.tsx +54 -0
  313. package/src/components/Avatar/Avatar.tsx +8 -12
  314. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +12 -5
  315. package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +2 -1
  316. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +16 -4
  317. package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +164 -0
  318. package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +10 -10
  319. package/src/components/Chat/Chat.css +108 -20
  320. package/src/components/Chat/Chat.tsx +28 -0
  321. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +7449 -7369
  322. package/src/components/ChatBubble/ChatBubble.css +42 -14
  323. package/src/components/ChatBubble/ChatBubble.tsx +44 -12
  324. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +90 -90
  325. package/src/components/ChatHistoryDrawer/ChatHistory.css +4 -0
  326. package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +77 -1
  327. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +59 -27
  328. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +0 -1
  329. package/src/components/ChatInputs/ChatInputs.css +292 -108
  330. package/src/components/ChatInputs/ChatInputs.tsx +14 -4
  331. package/src/components/ChatTextArea/ChatTextArea.css +30 -6
  332. package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +8 -4
  333. package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +6 -6
  334. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +3 -0
  335. package/src/components/DateSelector/DateSelector.stories.tsx +11 -2
  336. package/src/components/DateSelector/DateSelector.tsx +28 -9
  337. package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +3 -0
  338. package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +2 -2
  339. package/src/components/FilePreview/FilePreview.tsx +28 -7
  340. package/src/components/Header/ChatConsumptionDropdown.tsx +16 -5
  341. package/src/components/Header/Header.css +16 -10
  342. package/src/components/Header/Header.tsx +331 -53
  343. package/src/components/Header/__snapshots__/Header.test.tsx.snap +109 -83
  344. package/src/components/KnownFacts/KnownFacts.tsx +7 -0
  345. package/src/components/LoginDrawer/LoginDrawer.css +1 -0
  346. package/src/components/LoginDrawer/LoginDrawer.tsx +3 -0
  347. package/src/components/MediaWidget/MediaItemWidget.tsx +26 -13
  348. package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +45 -2
  349. package/src/components/MediaWidget/MediaItemWidget.utils.ts +39 -6
  350. package/src/components/MediaWidget/MediaPreviewModal.tsx +9 -7
  351. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +218 -2252
  352. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -4
  353. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +108 -42
  354. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +35 -14
  355. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +4 -3
  356. package/src/components/MemoriWidget/MemoriWidget.css +5 -5
  357. package/src/components/MemoriWidget/MemoriWidget.tsx +1234 -729
  358. package/src/components/MicrophoneButton/MicrophoneButton.css +50 -18
  359. package/src/components/MobileSessionPanel/MobileSessionPanel.tsx +44 -31
  360. package/src/components/PoweredBy/PoweredBy.css +10 -2
  361. package/src/components/SettingsDrawer/SettingsDrawer.tsx +3 -0
  362. package/src/components/ShareButton/ShareButton.tsx +6 -3
  363. package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +27 -18
  364. package/src/components/StartPanel/StartPanel.stories.tsx +22 -0
  365. package/src/components/StartPanel/StartPanel.test.tsx +64 -1
  366. package/src/components/StartPanel/StartPanel.tsx +29 -3
  367. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +293 -32
  368. package/src/components/UploadButton/UploadButton.tsx +30 -11
  369. package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +151 -61
  370. package/src/components/UploadButton/UploadImages/UploadImages.tsx +4 -1
  371. package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +4 -4
  372. package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +3 -0
  373. package/src/components/layouts/Chat.tsx +147 -148
  374. package/src/components/layouts/FullPage.tsx +92 -25
  375. package/src/components/layouts/HiddenChat.tsx +21 -413
  376. package/src/components/layouts/Totem.tsx +20 -3
  377. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.tsx +71 -15
  378. package/src/components/layouts/WebsiteAssistant/__snapshots__/WebsiteAssistant.test.tsx.snap +48 -44
  379. package/src/components/layouts/WebsiteAssistant/website-assistant.css +160 -59
  380. package/src/components/layouts/ZoomedFullBody.tsx +95 -27
  381. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +610 -582
  382. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +1235 -1165
  383. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +542 -438
  384. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +579 -602
  385. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +599 -564
  386. package/src/components/layouts/chat.css +77 -63
  387. package/src/components/layouts/fullpage.css +229 -84
  388. package/src/components/layouts/hidden-chat.css +148 -33
  389. package/src/components/layouts/layouts.stories.tsx +133 -13
  390. package/src/components/layouts/totem.css +151 -50
  391. package/src/components/layouts/zoomed-full-body.css +332 -33
  392. package/src/context/widgetSurfaceContext.tsx +14 -0
  393. package/src/helpers/constants.ts +32 -1
  394. package/src/helpers/credits.ts +16 -1
  395. package/src/helpers/message.test.ts +28 -1
  396. package/src/helpers/message.ts +4 -4
  397. package/src/helpers/nats/getNatsConfig.ts +145 -0
  398. package/src/helpers/nats/isSessionExpiredError.test.ts +38 -0
  399. package/src/helpers/nats/isSessionExpiredError.ts +51 -0
  400. package/src/helpers/nats/useNats.ts +124 -0
  401. package/src/helpers/nats/useNatsSession.ts +394 -0
  402. package/src/helpers/positionPopover.test.ts +33 -0
  403. package/src/helpers/positionPopover.ts +13 -0
  404. package/src/helpers/usePressTooltip.ts +29 -0
  405. package/src/helpers/utils.test.ts +162 -0
  406. package/src/helpers/utils.ts +108 -3
  407. package/src/index.stories.tsx +32 -0
  408. package/src/locales/de.json +11 -1
  409. package/src/locales/en.json +12 -2
  410. package/src/locales/es.json +11 -1
  411. package/src/locales/fr.json +11 -1
  412. package/src/locales/it.json +12 -2
  413. package/src/styles.css +98 -12
  414. package/src/types/integration.test.ts +32 -0
  415. package/src/types/integration.ts +31 -0
  416. package/src/version.ts +1 -1
  417. package/dist/components/PositionDrawer/PositionDrawer.d.ts +0 -12
  418. package/dist/components/PositionDrawer/PositionDrawer.js +0 -17
  419. package/dist/components/PositionDrawer/PositionDrawer.js.map +0 -1
  420. package/dist/components/icons/AI.d.ts +0 -6
  421. package/dist/components/icons/AI.js +0 -6
  422. package/dist/components/icons/AI.js.map +0 -1
  423. package/dist/components/icons/Alert.d.ts +0 -6
  424. package/dist/components/icons/Alert.js +0 -6
  425. package/dist/components/icons/Alert.js.map +0 -1
  426. package/dist/components/icons/ArrowUp.d.ts +0 -6
  427. package/dist/components/icons/ArrowUp.js +0 -6
  428. package/dist/components/icons/ArrowUp.js.map +0 -1
  429. package/dist/components/icons/Bug.d.ts +0 -6
  430. package/dist/components/icons/Bug.js +0 -6
  431. package/dist/components/icons/Bug.js.map +0 -1
  432. package/dist/components/icons/Chat.d.ts +0 -6
  433. package/dist/components/icons/Chat.js +0 -6
  434. package/dist/components/icons/Chat.js.map +0 -1
  435. package/dist/components/icons/ChevronDown.d.ts +0 -6
  436. package/dist/components/icons/ChevronDown.js +0 -6
  437. package/dist/components/icons/ChevronDown.js.map +0 -1
  438. package/dist/components/icons/ChevronLeft.d.ts +0 -6
  439. package/dist/components/icons/ChevronLeft.js +0 -6
  440. package/dist/components/icons/ChevronLeft.js.map +0 -1
  441. package/dist/components/icons/ChevronRight.d.ts +0 -6
  442. package/dist/components/icons/ChevronRight.js +0 -6
  443. package/dist/components/icons/ChevronRight.js.map +0 -1
  444. package/dist/components/icons/ChevronUp.d.ts +0 -6
  445. package/dist/components/icons/ChevronUp.js +0 -6
  446. package/dist/components/icons/ChevronUp.js.map +0 -1
  447. package/dist/components/icons/Clear.d.ts +0 -6
  448. package/dist/components/icons/Clear.js +0 -6
  449. package/dist/components/icons/Clear.js.map +0 -1
  450. package/dist/components/icons/Close.d.ts +0 -7
  451. package/dist/components/icons/Close.js +0 -6
  452. package/dist/components/icons/Close.js.map +0 -1
  453. package/dist/components/icons/Code.d.ts +0 -6
  454. package/dist/components/icons/Code.js +0 -6
  455. package/dist/components/icons/Code.js.map +0 -1
  456. package/dist/components/icons/Copy.d.ts +0 -6
  457. package/dist/components/icons/Copy.js +0 -6
  458. package/dist/components/icons/Copy.js.map +0 -1
  459. package/dist/components/icons/DeepThought.d.ts +0 -6
  460. package/dist/components/icons/DeepThought.js +0 -6
  461. package/dist/components/icons/DeepThought.js.map +0 -1
  462. package/dist/components/icons/Delete.d.ts +0 -6
  463. package/dist/components/icons/Delete.js +0 -6
  464. package/dist/components/icons/Delete.js.map +0 -1
  465. package/dist/components/icons/Document.d.ts +0 -5
  466. package/dist/components/icons/Document.js +0 -10
  467. package/dist/components/icons/Document.js.map +0 -1
  468. package/dist/components/icons/Download.d.ts +0 -6
  469. package/dist/components/icons/Download.js +0 -6
  470. package/dist/components/icons/Download.js.map +0 -1
  471. package/dist/components/icons/Edit.d.ts +0 -6
  472. package/dist/components/icons/Edit.js +0 -6
  473. package/dist/components/icons/Edit.js.map +0 -1
  474. package/dist/components/icons/Expand.d.ts +0 -6
  475. package/dist/components/icons/Expand.js +0 -6
  476. package/dist/components/icons/Expand.js.map +0 -1
  477. package/dist/components/icons/Eye.d.ts +0 -6
  478. package/dist/components/icons/Eye.js +0 -6
  479. package/dist/components/icons/Eye.js.map +0 -1
  480. package/dist/components/icons/EyeInvisible.d.ts +0 -6
  481. package/dist/components/icons/EyeInvisible.js +0 -6
  482. package/dist/components/icons/EyeInvisible.js.map +0 -1
  483. package/dist/components/icons/Facebook.d.ts +0 -6
  484. package/dist/components/icons/Facebook.js +0 -6
  485. package/dist/components/icons/Facebook.js.map +0 -1
  486. package/dist/components/icons/Feedback.d.ts +0 -6
  487. package/dist/components/icons/Feedback.js +0 -6
  488. package/dist/components/icons/Feedback.js.map +0 -1
  489. package/dist/components/icons/File.d.ts +0 -6
  490. package/dist/components/icons/File.js +0 -6
  491. package/dist/components/icons/File.js.map +0 -1
  492. package/dist/components/icons/FileExcel.d.ts +0 -6
  493. package/dist/components/icons/FileExcel.js +0 -6
  494. package/dist/components/icons/FileExcel.js.map +0 -1
  495. package/dist/components/icons/FilePdf.d.ts +0 -6
  496. package/dist/components/icons/FilePdf.js +0 -6
  497. package/dist/components/icons/FilePdf.js.map +0 -1
  498. package/dist/components/icons/FileWord.d.ts +0 -6
  499. package/dist/components/icons/FileWord.js +0 -6
  500. package/dist/components/icons/FileWord.js.map +0 -1
  501. package/dist/components/icons/Fullscreen.d.ts +0 -6
  502. package/dist/components/icons/Fullscreen.js +0 -6
  503. package/dist/components/icons/Fullscreen.js.map +0 -1
  504. package/dist/components/icons/FullscreenExit.d.ts +0 -6
  505. package/dist/components/icons/FullscreenExit.js +0 -6
  506. package/dist/components/icons/FullscreenExit.js.map +0 -1
  507. package/dist/components/icons/Group.d.ts +0 -6
  508. package/dist/components/icons/Group.js +0 -6
  509. package/dist/components/icons/Group.js.map +0 -1
  510. package/dist/components/icons/History.d.ts +0 -7
  511. package/dist/components/icons/History.js +0 -6
  512. package/dist/components/icons/History.js.map +0 -1
  513. package/dist/components/icons/Image.d.ts +0 -4
  514. package/dist/components/icons/Image.js +0 -9
  515. package/dist/components/icons/Image.js.map +0 -1
  516. package/dist/components/icons/Info.d.ts +0 -6
  517. package/dist/components/icons/Info.js +0 -6
  518. package/dist/components/icons/Info.js.map +0 -1
  519. package/dist/components/icons/Link.d.ts +0 -6
  520. package/dist/components/icons/Link.js +0 -6
  521. package/dist/components/icons/Link.js.map +0 -1
  522. package/dist/components/icons/Linkedin.d.ts +0 -6
  523. package/dist/components/icons/Linkedin.js +0 -6
  524. package/dist/components/icons/Linkedin.js.map +0 -1
  525. package/dist/components/icons/Loading.d.ts +0 -7
  526. package/dist/components/icons/Loading.js +0 -10
  527. package/dist/components/icons/Loading.js.map +0 -1
  528. package/dist/components/icons/Logout.d.ts +0 -6
  529. package/dist/components/icons/Logout.js +0 -6
  530. package/dist/components/icons/Logout.js.map +0 -1
  531. package/dist/components/icons/Mail.d.ts +0 -6
  532. package/dist/components/icons/Mail.js +0 -6
  533. package/dist/components/icons/Mail.js.map +0 -1
  534. package/dist/components/icons/MapMarker.d.ts +0 -6
  535. package/dist/components/icons/MapMarker.js +0 -6
  536. package/dist/components/icons/MapMarker.js.map +0 -1
  537. package/dist/components/icons/MenuHorizontal.d.ts +0 -7
  538. package/dist/components/icons/MenuHorizontal.js +0 -6
  539. package/dist/components/icons/MenuHorizontal.js.map +0 -1
  540. package/dist/components/icons/MenuVertical.d.ts +0 -7
  541. package/dist/components/icons/MenuVertical.js +0 -6
  542. package/dist/components/icons/MenuVertical.js.map +0 -1
  543. package/dist/components/icons/Message.d.ts +0 -6
  544. package/dist/components/icons/Message.js +0 -6
  545. package/dist/components/icons/Message.js.map +0 -1
  546. package/dist/components/icons/Microphone.d.ts +0 -6
  547. package/dist/components/icons/Microphone.js +0 -6
  548. package/dist/components/icons/Microphone.js.map +0 -1
  549. package/dist/components/icons/Minus.d.ts +0 -6
  550. package/dist/components/icons/Minus.js +0 -6
  551. package/dist/components/icons/Minus.js.map +0 -1
  552. package/dist/components/icons/MinusCircle.d.ts +0 -6
  553. package/dist/components/icons/MinusCircle.js +0 -6
  554. package/dist/components/icons/MinusCircle.js.map +0 -1
  555. package/dist/components/icons/PaperClip.d.ts +0 -6
  556. package/dist/components/icons/PaperClip.js +0 -6
  557. package/dist/components/icons/PaperClip.js.map +0 -1
  558. package/dist/components/icons/Picture.d.ts +0 -6
  559. package/dist/components/icons/Picture.js +0 -6
  560. package/dist/components/icons/Picture.js.map +0 -1
  561. package/dist/components/icons/Plus.d.ts +0 -6
  562. package/dist/components/icons/Plus.js +0 -6
  563. package/dist/components/icons/Plus.js.map +0 -1
  564. package/dist/components/icons/Preview.d.ts +0 -4
  565. package/dist/components/icons/Preview.js +0 -9
  566. package/dist/components/icons/Preview.js.map +0 -1
  567. package/dist/components/icons/Print.d.ts +0 -6
  568. package/dist/components/icons/Print.js +0 -6
  569. package/dist/components/icons/Print.js.map +0 -1
  570. package/dist/components/icons/QuestionHelp.d.ts +0 -6
  571. package/dist/components/icons/QuestionHelp.js +0 -6
  572. package/dist/components/icons/QuestionHelp.js.map +0 -1
  573. package/dist/components/icons/Refresh.d.ts +0 -6
  574. package/dist/components/icons/Refresh.js +0 -6
  575. package/dist/components/icons/Refresh.js.map +0 -1
  576. package/dist/components/icons/SelectIcon.d.ts +0 -6
  577. package/dist/components/icons/SelectIcon.js +0 -6
  578. package/dist/components/icons/SelectIcon.js.map +0 -1
  579. package/dist/components/icons/Send.d.ts +0 -6
  580. package/dist/components/icons/Send.js +0 -6
  581. package/dist/components/icons/Send.js.map +0 -1
  582. package/dist/components/icons/Setting.d.ts +0 -6
  583. package/dist/components/icons/Setting.js +0 -6
  584. package/dist/components/icons/Setting.js.map +0 -1
  585. package/dist/components/icons/Share.d.ts +0 -6
  586. package/dist/components/icons/Share.js +0 -6
  587. package/dist/components/icons/Share.js.map +0 -1
  588. package/dist/components/icons/Sound.d.ts +0 -6
  589. package/dist/components/icons/Sound.js +0 -6
  590. package/dist/components/icons/Sound.js.map +0 -1
  591. package/dist/components/icons/SoundDeactivated.d.ts +0 -6
  592. package/dist/components/icons/SoundDeactivated.js +0 -6
  593. package/dist/components/icons/SoundDeactivated.js.map +0 -1
  594. package/dist/components/icons/Telegram.d.ts +0 -6
  595. package/dist/components/icons/Telegram.js +0 -6
  596. package/dist/components/icons/Telegram.js.map +0 -1
  597. package/dist/components/icons/ThumbDown.d.ts +0 -6
  598. package/dist/components/icons/ThumbDown.js +0 -6
  599. package/dist/components/icons/ThumbDown.js.map +0 -1
  600. package/dist/components/icons/ThumbUp.d.ts +0 -6
  601. package/dist/components/icons/ThumbUp.js +0 -6
  602. package/dist/components/icons/ThumbUp.js.map +0 -1
  603. package/dist/components/icons/Translation.d.ts +0 -6
  604. package/dist/components/icons/Translation.js +0 -6
  605. package/dist/components/icons/Translation.js.map +0 -1
  606. package/dist/components/icons/Twitter.d.ts +0 -6
  607. package/dist/components/icons/Twitter.js +0 -6
  608. package/dist/components/icons/Twitter.js.map +0 -1
  609. package/dist/components/icons/Upload.d.ts +0 -4
  610. package/dist/components/icons/Upload.js +0 -9
  611. package/dist/components/icons/Upload.js.map +0 -1
  612. package/dist/components/icons/User.d.ts +0 -6
  613. package/dist/components/icons/User.js +0 -6
  614. package/dist/components/icons/User.js.map +0 -1
  615. package/dist/components/icons/Warning.d.ts +0 -6
  616. package/dist/components/icons/Warning.js +0 -6
  617. package/dist/components/icons/Warning.js.map +0 -1
  618. package/dist/components/icons/WhatsApp.d.ts +0 -6
  619. package/dist/components/icons/WhatsApp.js +0 -6
  620. package/dist/components/icons/WhatsApp.js.map +0 -1
  621. package/dist/components/icons/loading.css +0 -14
  622. package/dist/components/layouts/WebsiteAssistant.d.ts +0 -4
  623. package/dist/components/layouts/WebsiteAssistant.js +0 -38
  624. package/dist/components/layouts/WebsiteAssistant.js.map +0 -1
  625. package/dist/components/layouts/website-assistant.css +0 -676
  626. package/dist/components/ui/Alert.css +0 -93
  627. package/dist/components/ui/Alert.d.ts +0 -18
  628. package/dist/components/ui/Alert.js +0 -42
  629. package/dist/components/ui/Alert.js.map +0 -1
  630. package/dist/components/ui/Button.css +0 -167
  631. package/dist/components/ui/Button.d.ts +0 -27
  632. package/dist/components/ui/Button.js +0 -23
  633. package/dist/components/ui/Button.js.map +0 -1
  634. package/dist/components/ui/Card.css +0 -65
  635. package/dist/components/ui/Card.d.ts +0 -13
  636. package/dist/components/ui/Card.js +0 -14
  637. package/dist/components/ui/Card.js.map +0 -1
  638. package/dist/components/ui/Checkbox.css +0 -116
  639. package/dist/components/ui/Checkbox.d.ts +0 -11
  640. package/dist/components/ui/Checkbox.js +0 -20
  641. package/dist/components/ui/Checkbox.js.map +0 -1
  642. package/dist/components/ui/ConfirmDialog.css +0 -42
  643. package/dist/components/ui/ConfirmDialog.d.ts +0 -11
  644. package/dist/components/ui/ConfirmDialog.js +0 -12
  645. package/dist/components/ui/ConfirmDialog.js.map +0 -1
  646. package/dist/components/ui/Details.css +0 -66
  647. package/dist/components/ui/Drawer.css +0 -270
  648. package/dist/components/ui/Drawer.d.ts +0 -46
  649. package/dist/components/ui/Drawer.js +0 -60
  650. package/dist/components/ui/Drawer.js.map +0 -1
  651. package/dist/components/ui/Dropdown.css +0 -173
  652. package/dist/components/ui/Dropdown.d.ts +0 -11
  653. package/dist/components/ui/Dropdown.js +0 -33
  654. package/dist/components/ui/Dropdown.js.map +0 -1
  655. package/dist/components/ui/Expandable.css +0 -15
  656. package/dist/components/ui/Expandable.d.ts +0 -15
  657. package/dist/components/ui/Expandable.js +0 -59
  658. package/dist/components/ui/Expandable.js.map +0 -1
  659. package/dist/components/ui/Modal.css +0 -98
  660. package/dist/components/ui/Modal.d.ts +0 -16
  661. package/dist/components/ui/Modal.js +0 -24
  662. package/dist/components/ui/Modal.js.map +0 -1
  663. package/dist/components/ui/Select.css +0 -138
  664. package/dist/components/ui/Select.d.ts +0 -17
  665. package/dist/components/ui/Select.js +0 -17
  666. package/dist/components/ui/Select.js.map +0 -1
  667. package/dist/components/ui/Slider.css +0 -192
  668. package/dist/components/ui/Slider.d.ts +0 -12
  669. package/dist/components/ui/Slider.js +0 -78
  670. package/dist/components/ui/Slider.js.map +0 -1
  671. package/dist/components/ui/Spin.css +0 -31
  672. package/dist/components/ui/Spin.d.ts +0 -9
  673. package/dist/components/ui/Spin.js +0 -12
  674. package/dist/components/ui/Spin.js.map +0 -1
  675. package/dist/components/ui/Table.css +0 -132
  676. package/dist/components/ui/Tooltip.css +0 -171
  677. package/dist/components/ui/Tooltip.d.ts +0 -11
  678. package/dist/components/ui/Tooltip.js +0 -90
  679. package/dist/components/ui/Tooltip.js.map +0 -1
  680. package/esm/components/PositionDrawer/PositionDrawer.d.ts +0 -12
  681. package/esm/components/PositionDrawer/PositionDrawer.js +0 -14
  682. package/esm/components/PositionDrawer/PositionDrawer.js.map +0 -1
  683. package/esm/components/icons/AI.d.ts +0 -6
  684. package/esm/components/icons/AI.js +0 -4
  685. package/esm/components/icons/AI.js.map +0 -1
  686. package/esm/components/icons/Alert.d.ts +0 -6
  687. package/esm/components/icons/Alert.js +0 -4
  688. package/esm/components/icons/Alert.js.map +0 -1
  689. package/esm/components/icons/ArrowUp.d.ts +0 -6
  690. package/esm/components/icons/ArrowUp.js +0 -4
  691. package/esm/components/icons/ArrowUp.js.map +0 -1
  692. package/esm/components/icons/Bug.d.ts +0 -6
  693. package/esm/components/icons/Bug.js +0 -4
  694. package/esm/components/icons/Bug.js.map +0 -1
  695. package/esm/components/icons/Chat.d.ts +0 -6
  696. package/esm/components/icons/Chat.js +0 -4
  697. package/esm/components/icons/Chat.js.map +0 -1
  698. package/esm/components/icons/ChevronDown.d.ts +0 -6
  699. package/esm/components/icons/ChevronDown.js +0 -4
  700. package/esm/components/icons/ChevronDown.js.map +0 -1
  701. package/esm/components/icons/ChevronLeft.d.ts +0 -6
  702. package/esm/components/icons/ChevronLeft.js +0 -4
  703. package/esm/components/icons/ChevronLeft.js.map +0 -1
  704. package/esm/components/icons/ChevronRight.d.ts +0 -6
  705. package/esm/components/icons/ChevronRight.js +0 -4
  706. package/esm/components/icons/ChevronRight.js.map +0 -1
  707. package/esm/components/icons/ChevronUp.d.ts +0 -6
  708. package/esm/components/icons/ChevronUp.js +0 -4
  709. package/esm/components/icons/ChevronUp.js.map +0 -1
  710. package/esm/components/icons/Clear.d.ts +0 -6
  711. package/esm/components/icons/Clear.js +0 -4
  712. package/esm/components/icons/Clear.js.map +0 -1
  713. package/esm/components/icons/Close.d.ts +0 -7
  714. package/esm/components/icons/Close.js +0 -4
  715. package/esm/components/icons/Close.js.map +0 -1
  716. package/esm/components/icons/Code.d.ts +0 -6
  717. package/esm/components/icons/Code.js +0 -4
  718. package/esm/components/icons/Code.js.map +0 -1
  719. package/esm/components/icons/Copy.d.ts +0 -6
  720. package/esm/components/icons/Copy.js +0 -4
  721. package/esm/components/icons/Copy.js.map +0 -1
  722. package/esm/components/icons/DeepThought.d.ts +0 -6
  723. package/esm/components/icons/DeepThought.js +0 -4
  724. package/esm/components/icons/DeepThought.js.map +0 -1
  725. package/esm/components/icons/Delete.d.ts +0 -6
  726. package/esm/components/icons/Delete.js +0 -4
  727. package/esm/components/icons/Delete.js.map +0 -1
  728. package/esm/components/icons/Document.d.ts +0 -5
  729. package/esm/components/icons/Document.js +0 -6
  730. package/esm/components/icons/Document.js.map +0 -1
  731. package/esm/components/icons/Download.d.ts +0 -6
  732. package/esm/components/icons/Download.js +0 -4
  733. package/esm/components/icons/Download.js.map +0 -1
  734. package/esm/components/icons/Edit.d.ts +0 -6
  735. package/esm/components/icons/Edit.js +0 -4
  736. package/esm/components/icons/Edit.js.map +0 -1
  737. package/esm/components/icons/Expand.d.ts +0 -6
  738. package/esm/components/icons/Expand.js +0 -4
  739. package/esm/components/icons/Expand.js.map +0 -1
  740. package/esm/components/icons/Eye.d.ts +0 -6
  741. package/esm/components/icons/Eye.js +0 -4
  742. package/esm/components/icons/Eye.js.map +0 -1
  743. package/esm/components/icons/EyeInvisible.d.ts +0 -6
  744. package/esm/components/icons/EyeInvisible.js +0 -4
  745. package/esm/components/icons/EyeInvisible.js.map +0 -1
  746. package/esm/components/icons/Facebook.d.ts +0 -6
  747. package/esm/components/icons/Facebook.js +0 -4
  748. package/esm/components/icons/Facebook.js.map +0 -1
  749. package/esm/components/icons/Feedback.d.ts +0 -6
  750. package/esm/components/icons/Feedback.js +0 -4
  751. package/esm/components/icons/Feedback.js.map +0 -1
  752. package/esm/components/icons/File.d.ts +0 -6
  753. package/esm/components/icons/File.js +0 -4
  754. package/esm/components/icons/File.js.map +0 -1
  755. package/esm/components/icons/FileExcel.d.ts +0 -6
  756. package/esm/components/icons/FileExcel.js +0 -4
  757. package/esm/components/icons/FileExcel.js.map +0 -1
  758. package/esm/components/icons/FilePdf.d.ts +0 -6
  759. package/esm/components/icons/FilePdf.js +0 -4
  760. package/esm/components/icons/FilePdf.js.map +0 -1
  761. package/esm/components/icons/FileWord.d.ts +0 -6
  762. package/esm/components/icons/FileWord.js +0 -4
  763. package/esm/components/icons/FileWord.js.map +0 -1
  764. package/esm/components/icons/Fullscreen.d.ts +0 -6
  765. package/esm/components/icons/Fullscreen.js +0 -4
  766. package/esm/components/icons/Fullscreen.js.map +0 -1
  767. package/esm/components/icons/FullscreenExit.d.ts +0 -6
  768. package/esm/components/icons/FullscreenExit.js +0 -4
  769. package/esm/components/icons/FullscreenExit.js.map +0 -1
  770. package/esm/components/icons/Group.d.ts +0 -6
  771. package/esm/components/icons/Group.js +0 -4
  772. package/esm/components/icons/Group.js.map +0 -1
  773. package/esm/components/icons/History.d.ts +0 -7
  774. package/esm/components/icons/History.js +0 -4
  775. package/esm/components/icons/History.js.map +0 -1
  776. package/esm/components/icons/Image.d.ts +0 -4
  777. package/esm/components/icons/Image.js +0 -5
  778. package/esm/components/icons/Image.js.map +0 -1
  779. package/esm/components/icons/Info.d.ts +0 -6
  780. package/esm/components/icons/Info.js +0 -4
  781. package/esm/components/icons/Info.js.map +0 -1
  782. package/esm/components/icons/Link.d.ts +0 -6
  783. package/esm/components/icons/Link.js +0 -4
  784. package/esm/components/icons/Link.js.map +0 -1
  785. package/esm/components/icons/Linkedin.d.ts +0 -6
  786. package/esm/components/icons/Linkedin.js +0 -4
  787. package/esm/components/icons/Linkedin.js.map +0 -1
  788. package/esm/components/icons/Loading.d.ts +0 -7
  789. package/esm/components/icons/Loading.js +0 -7
  790. package/esm/components/icons/Loading.js.map +0 -1
  791. package/esm/components/icons/Logout.d.ts +0 -6
  792. package/esm/components/icons/Logout.js +0 -4
  793. package/esm/components/icons/Logout.js.map +0 -1
  794. package/esm/components/icons/Mail.d.ts +0 -6
  795. package/esm/components/icons/Mail.js +0 -4
  796. package/esm/components/icons/Mail.js.map +0 -1
  797. package/esm/components/icons/MapMarker.d.ts +0 -6
  798. package/esm/components/icons/MapMarker.js +0 -4
  799. package/esm/components/icons/MapMarker.js.map +0 -1
  800. package/esm/components/icons/MenuHorizontal.d.ts +0 -7
  801. package/esm/components/icons/MenuHorizontal.js +0 -4
  802. package/esm/components/icons/MenuHorizontal.js.map +0 -1
  803. package/esm/components/icons/MenuVertical.d.ts +0 -7
  804. package/esm/components/icons/MenuVertical.js +0 -4
  805. package/esm/components/icons/MenuVertical.js.map +0 -1
  806. package/esm/components/icons/Message.d.ts +0 -6
  807. package/esm/components/icons/Message.js +0 -4
  808. package/esm/components/icons/Message.js.map +0 -1
  809. package/esm/components/icons/Microphone.d.ts +0 -6
  810. package/esm/components/icons/Microphone.js +0 -4
  811. package/esm/components/icons/Microphone.js.map +0 -1
  812. package/esm/components/icons/Minus.d.ts +0 -6
  813. package/esm/components/icons/Minus.js +0 -4
  814. package/esm/components/icons/Minus.js.map +0 -1
  815. package/esm/components/icons/MinusCircle.d.ts +0 -6
  816. package/esm/components/icons/MinusCircle.js +0 -4
  817. package/esm/components/icons/MinusCircle.js.map +0 -1
  818. package/esm/components/icons/PaperClip.d.ts +0 -6
  819. package/esm/components/icons/PaperClip.js +0 -4
  820. package/esm/components/icons/PaperClip.js.map +0 -1
  821. package/esm/components/icons/Picture.d.ts +0 -6
  822. package/esm/components/icons/Picture.js +0 -4
  823. package/esm/components/icons/Picture.js.map +0 -1
  824. package/esm/components/icons/Plus.d.ts +0 -6
  825. package/esm/components/icons/Plus.js +0 -4
  826. package/esm/components/icons/Plus.js.map +0 -1
  827. package/esm/components/icons/Preview.d.ts +0 -4
  828. package/esm/components/icons/Preview.js +0 -5
  829. package/esm/components/icons/Preview.js.map +0 -1
  830. package/esm/components/icons/Print.d.ts +0 -6
  831. package/esm/components/icons/Print.js +0 -4
  832. package/esm/components/icons/Print.js.map +0 -1
  833. package/esm/components/icons/QuestionHelp.d.ts +0 -6
  834. package/esm/components/icons/QuestionHelp.js +0 -4
  835. package/esm/components/icons/QuestionHelp.js.map +0 -1
  836. package/esm/components/icons/Refresh.d.ts +0 -6
  837. package/esm/components/icons/Refresh.js +0 -4
  838. package/esm/components/icons/Refresh.js.map +0 -1
  839. package/esm/components/icons/SelectIcon.d.ts +0 -6
  840. package/esm/components/icons/SelectIcon.js +0 -4
  841. package/esm/components/icons/SelectIcon.js.map +0 -1
  842. package/esm/components/icons/Send.d.ts +0 -6
  843. package/esm/components/icons/Send.js +0 -4
  844. package/esm/components/icons/Send.js.map +0 -1
  845. package/esm/components/icons/Setting.d.ts +0 -6
  846. package/esm/components/icons/Setting.js +0 -4
  847. package/esm/components/icons/Setting.js.map +0 -1
  848. package/esm/components/icons/Share.d.ts +0 -6
  849. package/esm/components/icons/Share.js +0 -4
  850. package/esm/components/icons/Share.js.map +0 -1
  851. package/esm/components/icons/Sound.d.ts +0 -6
  852. package/esm/components/icons/Sound.js +0 -4
  853. package/esm/components/icons/Sound.js.map +0 -1
  854. package/esm/components/icons/SoundDeactivated.d.ts +0 -6
  855. package/esm/components/icons/SoundDeactivated.js +0 -4
  856. package/esm/components/icons/SoundDeactivated.js.map +0 -1
  857. package/esm/components/icons/Telegram.d.ts +0 -6
  858. package/esm/components/icons/Telegram.js +0 -4
  859. package/esm/components/icons/Telegram.js.map +0 -1
  860. package/esm/components/icons/ThumbDown.d.ts +0 -6
  861. package/esm/components/icons/ThumbDown.js +0 -4
  862. package/esm/components/icons/ThumbDown.js.map +0 -1
  863. package/esm/components/icons/ThumbUp.d.ts +0 -6
  864. package/esm/components/icons/ThumbUp.js +0 -4
  865. package/esm/components/icons/ThumbUp.js.map +0 -1
  866. package/esm/components/icons/Translation.d.ts +0 -6
  867. package/esm/components/icons/Translation.js +0 -4
  868. package/esm/components/icons/Translation.js.map +0 -1
  869. package/esm/components/icons/Twitter.d.ts +0 -6
  870. package/esm/components/icons/Twitter.js +0 -4
  871. package/esm/components/icons/Twitter.js.map +0 -1
  872. package/esm/components/icons/Upload.d.ts +0 -4
  873. package/esm/components/icons/Upload.js +0 -5
  874. package/esm/components/icons/Upload.js.map +0 -1
  875. package/esm/components/icons/User.d.ts +0 -6
  876. package/esm/components/icons/User.js +0 -4
  877. package/esm/components/icons/User.js.map +0 -1
  878. package/esm/components/icons/Warning.d.ts +0 -6
  879. package/esm/components/icons/Warning.js +0 -4
  880. package/esm/components/icons/Warning.js.map +0 -1
  881. package/esm/components/icons/WhatsApp.d.ts +0 -6
  882. package/esm/components/icons/WhatsApp.js +0 -4
  883. package/esm/components/icons/WhatsApp.js.map +0 -1
  884. package/esm/components/icons/loading.css +0 -14
  885. package/esm/components/layouts/WebsiteAssistant.d.ts +0 -4
  886. package/esm/components/layouts/WebsiteAssistant.js +0 -35
  887. package/esm/components/layouts/WebsiteAssistant.js.map +0 -1
  888. package/esm/components/layouts/website-assistant.css +0 -676
  889. package/esm/components/ui/Alert.css +0 -93
  890. package/esm/components/ui/Alert.d.ts +0 -18
  891. package/esm/components/ui/Alert.js +0 -39
  892. package/esm/components/ui/Alert.js.map +0 -1
  893. package/esm/components/ui/Button.css +0 -167
  894. package/esm/components/ui/Button.d.ts +0 -27
  895. package/esm/components/ui/Button.js +0 -20
  896. package/esm/components/ui/Button.js.map +0 -1
  897. package/esm/components/ui/Card.css +0 -65
  898. package/esm/components/ui/Card.d.ts +0 -13
  899. package/esm/components/ui/Card.js +0 -11
  900. package/esm/components/ui/Card.js.map +0 -1
  901. package/esm/components/ui/Checkbox.css +0 -116
  902. package/esm/components/ui/Checkbox.d.ts +0 -11
  903. package/esm/components/ui/Checkbox.js +0 -17
  904. package/esm/components/ui/Checkbox.js.map +0 -1
  905. package/esm/components/ui/ConfirmDialog.css +0 -42
  906. package/esm/components/ui/ConfirmDialog.d.ts +0 -11
  907. package/esm/components/ui/ConfirmDialog.js +0 -9
  908. package/esm/components/ui/ConfirmDialog.js.map +0 -1
  909. package/esm/components/ui/Details.css +0 -66
  910. package/esm/components/ui/Drawer.css +0 -270
  911. package/esm/components/ui/Drawer.d.ts +0 -46
  912. package/esm/components/ui/Drawer.js +0 -57
  913. package/esm/components/ui/Drawer.js.map +0 -1
  914. package/esm/components/ui/Dropdown.css +0 -173
  915. package/esm/components/ui/Dropdown.d.ts +0 -11
  916. package/esm/components/ui/Dropdown.js +0 -30
  917. package/esm/components/ui/Dropdown.js.map +0 -1
  918. package/esm/components/ui/Expandable.css +0 -15
  919. package/esm/components/ui/Expandable.d.ts +0 -15
  920. package/esm/components/ui/Expandable.js +0 -56
  921. package/esm/components/ui/Expandable.js.map +0 -1
  922. package/esm/components/ui/Modal.css +0 -98
  923. package/esm/components/ui/Modal.d.ts +0 -16
  924. package/esm/components/ui/Modal.js +0 -21
  925. package/esm/components/ui/Modal.js.map +0 -1
  926. package/esm/components/ui/Select.css +0 -138
  927. package/esm/components/ui/Select.d.ts +0 -17
  928. package/esm/components/ui/Select.js +0 -14
  929. package/esm/components/ui/Select.js.map +0 -1
  930. package/esm/components/ui/Slider.css +0 -192
  931. package/esm/components/ui/Slider.d.ts +0 -12
  932. package/esm/components/ui/Slider.js +0 -75
  933. package/esm/components/ui/Slider.js.map +0 -1
  934. package/esm/components/ui/Spin.css +0 -31
  935. package/esm/components/ui/Spin.d.ts +0 -9
  936. package/esm/components/ui/Spin.js +0 -9
  937. package/esm/components/ui/Spin.js.map +0 -1
  938. package/esm/components/ui/Table.css +0 -132
  939. package/esm/components/ui/Tooltip.css +0 -171
  940. package/esm/components/ui/Tooltip.d.ts +0 -11
  941. package/esm/components/ui/Tooltip.js +0 -87
  942. package/esm/components/ui/Tooltip.js.map +0 -1
@@ -5,12 +5,14 @@ const tslib_1 = require("tslib");
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const ArtifactAPI_1 = require("../MemoriArtifactSystem/utils/ArtifactAPI");
7
7
  const piiDetection_1 = require("../../helpers/piiDetection");
8
+ const positionPopover_1 = require("../../helpers/positionPopover");
8
9
  const react_1 = require("react");
9
10
  const react_i18next_1 = require("react-i18next");
10
11
  const memori_api_client_1 = tslib_1.__importDefault(require("@memori.ai/memori-api-client"));
11
12
  const classnames_1 = tslib_1.__importDefault(require("classnames"));
12
13
  const luxon_1 = require("luxon");
13
14
  const ui_1 = require("@memori.ai/ui");
15
+ const widgetSurfaceContext_1 = require("../../context/widgetSurfaceContext");
14
16
  const Auth_1 = tslib_1.__importDefault(require("../Auth/Auth"));
15
17
  const Chat_1 = tslib_1.__importDefault(require("../Chat/Chat"));
16
18
  const StartPanel_1 = tslib_1.__importDefault(require("../StartPanel/StartPanel"));
@@ -41,6 +43,8 @@ const sanitizer_1 = require("../../helpers/sanitizer");
41
43
  const useTTS_1 = require("../../helpers/tts/useTTS");
42
44
  const ChatHistory_1 = tslib_1.__importDefault(require("../ChatHistoryDrawer/ChatHistory"));
43
45
  const useSTT_1 = require("../../helpers/stt/useSTT");
46
+ const useNats_1 = require("../../helpers/nats/useNats");
47
+ const isSessionExpiredError_1 = require("../../helpers/nats/isSessionExpiredError");
44
48
  const getMemoriState = (integrationId) => {
45
49
  var _a, _b, _c, _d, _f;
46
50
  let widget = integrationId
@@ -62,12 +66,23 @@ const getMemoriState = (integrationId) => {
62
66
  loginToken,
63
67
  };
64
68
  };
69
+ const resolveLoginTokenValue = (loginToken, userTokenRef, callAdditionalInfoLoginToken, additionalInfoLoginToken, authTokenProp) => {
70
+ var _a, _b, _c;
71
+ return (_c = (_b = (_a = loginToken !== null && loginToken !== void 0 ? loginToken : userTokenRef) !== null && _a !== void 0 ? _a : callAdditionalInfoLoginToken) !== null && _b !== void 0 ? _b : additionalInfoLoginToken) !== null && _c !== void 0 ? _c : authTokenProp;
72
+ };
65
73
  const NULL_PLACE_SPEC = {
66
74
  placeName: null,
67
75
  latitude: null,
68
76
  longitude: null,
69
77
  uncertaintyKm: null,
70
78
  };
79
+ const logWidgetError = (context, detail) => {
80
+ console.error(`[MemoriWidget] ${context}`, detail !== null && detail !== void 0 ? detail : '');
81
+ };
82
+ function readCorrelationID(response) {
83
+ const value = response.correlationID;
84
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
85
+ }
71
86
  const typeMessage = (message, waitForPrevious = true, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false) => {
72
87
  const e = new CustomEvent('MemoriTextEntered', {
73
88
  detail: {
@@ -163,7 +178,6 @@ window.typeMessageHidden = typeMessageHidden;
163
178
  window.typeBatchMessages = typeBatchMessages;
164
179
  let audioContext;
165
180
  let memoriPassword;
166
- let userToken;
167
181
  function getChatStyles(config) {
168
182
  var _a;
169
183
  const primary = config === null || config === void 0 ? void 0 : config.buttonBgColor;
@@ -174,18 +188,18 @@ function getChatStyles(config) {
174
188
  '--memori-primary-color': primary,
175
189
  '--memori-primary': primary,
176
190
  '--memori-primary-content': primaryContent,
177
- '--memori-primary-hover': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, black) 15%)',
178
- '--memori-primary-active': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, black) 25%)',
191
+ '--memori-primary-hover': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast, black) 15%)',
192
+ '--memori-primary-active': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast, black) 25%)',
179
193
  '--memori-primary-disabled': 'color-mix(in oklch, var(--memori-primary), transparent 60%)',
180
- '--memori-primary-subtle': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast, white) 60%)',
181
- '--memori-primary-subtle-hover': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast, white) 50%)',
194
+ '--memori-primary-subtle': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 60%)',
195
+ '--memori-primary-subtle-hover': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 50%)',
182
196
  '--memori-border-primary': 'color-mix(in oklch, var(--memori-primary), transparent 70%)',
183
197
  '--memori-border-primary-hover': 'color-mix(in oklch, var(--memori-primary), transparent 50%)',
184
198
  '--memori-focus-ring-color': 'color-mix(in oklch, var(--memori-primary), transparent 80%)',
185
199
  '--memori-focus-ring': '0 0 0 3px var(--memori-focus-ring-color)',
186
200
  '--memori-shadow-primary': '0 8px 16px -4px color-mix(in oklch, var(--memori-primary), transparent 70%)',
187
- '--memori-skeleton-base': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast, white) 85%)',
188
- '--memori-skeleton-highlight': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast, white) 75%)',
201
+ '--memori-skeleton-base': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 85%)',
202
+ '--memori-skeleton-highlight': 'color-mix(in oklch, var(--memori-primary), var(--memori-surface-contrast-inverse, white) 75%)',
189
203
  };
190
204
  }
191
205
  const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenantID, memoriLang, uiLang, spokenLang, multilingual, integration, layout, customLayout, showShare, preview = false, embed = false, showCopyButton = true, showTranslationOriginal = false, showInputs = true, showDates = false, showContextPerLine = false, showMessageConsumption = false, showSettings, showTypingText = false, showClear = false, showLogin = false, showUpload, showOnlyLastMessages, showChatHistory, showReasoning, avatar3dHidden, height = '100vh', secret, baseUrl = 'https://aisuru-staging.aclambda.online', apiURL = 'https://backend-staging.memori.ai', engineURL = 'https://engine-staging.memori.ai', initialContextVars, initialQuestion, ttsProvider, ogImage, sessionID: initialSessionID, tenant, personification, authToken, enableAudio, defaultSpeakerActive = true, disableTextEnteredEvents = false, onStateChange, additionalInfo, additionalSettings, customMediaRenderer, userAvatar, __WEBCOMPONENT__ = false, useMathFormatting = false, autoStart = false, applyVarsToRoot = false, showFunctionCache = false, maxTotalMessagePayload, maxTextareaCharacters, }) => {
@@ -197,59 +211,88 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
197
211
  setIsClient(true);
198
212
  }, []);
199
213
  const client = (0, memori_api_client_1.default)(apiURL, engineURL);
200
- const { initSession, deleteSession, postTextEnteredEvent, postPlaceChangedEvent, postDateChangedEvent, postTagChangedEvent, getSession, getExpertReferences, getSessionChatLogs, } = client;
214
+ const { initSession, deleteSession, postEnterTextAsync, postTextEnteredEvent, postPlaceChangedEvent, postDateChangedEvent, postTagChangedEvent, getSession, getExpertReferences, getSessionChatLogs, } = client;
201
215
  const [instruct, setInstruct] = (0, react_1.useState)(false);
202
216
  const [enableFocusChatInput, setEnableFocusChatInput] = (0, react_1.useState)(true);
203
- const widgetRootRef = (0, react_1.useRef)(null);
217
+ const [widgetRootEl, setWidgetRootEl] = (0, react_1.useState)(null);
218
+ const [widgetSurfaceEl, setWidgetSurfaceEl] = (0, react_1.useState)(null);
204
219
  const [isDarkTheme, setIsDarkTheme] = (0, react_1.useState)(false);
205
220
  (0, react_1.useEffect)(() => {
206
221
  var _a;
207
- const el = widgetRootRef.current;
208
- if (!el)
222
+ if (!widgetRootEl)
209
223
  return;
210
224
  const check = () => {
211
- setIsDarkTheme(!!el.closest('[data-theme="dark"]'));
225
+ setIsDarkTheme(!!widgetRootEl.closest('[data-theme="dark"]'));
212
226
  };
213
227
  check();
214
228
  const observer = new MutationObserver(check);
215
- const parent = (_a = el.parentElement) !== null && _a !== void 0 ? _a : document.body;
229
+ const parent = (_a = widgetRootEl.parentElement) !== null && _a !== void 0 ? _a : document.body;
216
230
  observer.observe(parent, {
217
231
  attributes: true,
218
232
  attributeFilter: ['data-theme'],
219
233
  subtree: true,
220
234
  });
221
235
  return () => observer.disconnect();
222
- }, []);
236
+ }, [widgetRootEl]);
223
237
  const [loginToken, setLoginToken] = (0, react_1.useState)((_a = additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _a !== void 0 ? _a : authToken);
238
+ const userTokenRef = (0, react_1.useRef)((_b = additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _b !== void 0 ? _b : authToken);
239
+ const prevPropsLoginTokenRef = (0, react_1.useRef)((_c = additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _c !== void 0 ? _c : authToken);
224
240
  const [user, setUser] = (0, react_1.useState)({
225
241
  avatarURL: typeof userAvatar === 'string' ? userAvatar : undefined,
226
242
  });
243
+ const resolveLoginToken = (0, react_1.useCallback)((callAdditionalInfoLoginToken) => resolveLoginTokenValue(loginToken, userTokenRef.current, callAdditionalInfoLoginToken, additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken, authToken), [loginToken, additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken, authToken]);
227
244
  (0, react_1.useEffect)(() => {
228
- if (loginToken &&
229
- !(user === null || user === void 0 ? void 0 : user.userID) &&
230
- (showLogin || memori.requireLoginToken)) {
231
- client.backend
232
- .pwlGetCurrentUser(loginToken)
233
- .then(({ user, resultCode }) => {
234
- if (user && resultCode === 0) {
235
- setUser(user);
236
- (0, configuration_1.setLocalConfig)('loginToken', loginToken);
237
- if (!birthDate && user.birthDate) {
238
- setBirthDate(user.birthDate);
239
- (0, configuration_1.setLocalConfig)('birthDate', user.birthDate);
240
- }
241
- }
242
- else {
243
- (0, configuration_1.removeLocalConfig)('loginToken');
244
- }
245
- });
245
+ var _a;
246
+ const incomingToken = (_a = additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _a !== void 0 ? _a : authToken;
247
+ const prevPropsToken = prevPropsLoginTokenRef.current;
248
+ prevPropsLoginTokenRef.current = incomingToken;
249
+ if (incomingToken !== prevPropsToken) {
250
+ setLoginToken(incomingToken);
251
+ userTokenRef.current = incomingToken;
252
+ if (!incomingToken) {
253
+ (0, configuration_1.removeLocalConfig)('loginToken');
254
+ setUser(undefined);
255
+ }
246
256
  }
247
- }, [loginToken, user === null || user === void 0 ? void 0 : user.userID]);
257
+ }, [additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken, authToken]);
258
+ (0, react_1.useEffect)(() => {
259
+ if (!loginToken || !(showLogin || memori.requireLoginToken)) {
260
+ return;
261
+ }
262
+ let cancelled = false;
263
+ client.backend
264
+ .pwlGetCurrentUser(loginToken)
265
+ .then(({ user: fetchedUser, resultCode }) => {
266
+ if (cancelled)
267
+ return;
268
+ if (fetchedUser && resultCode === 0) {
269
+ setUser(fetchedUser);
270
+ (0, configuration_1.setLocalConfig)('loginToken', loginToken);
271
+ userTokenRef.current = loginToken;
272
+ if (!birthDate && fetchedUser.birthDate) {
273
+ setBirthDate(fetchedUser.birthDate);
274
+ (0, configuration_1.setLocalConfig)('birthDate', fetchedUser.birthDate);
275
+ }
276
+ }
277
+ else {
278
+ setLoginToken(undefined);
279
+ userTokenRef.current = undefined;
280
+ setUser(undefined);
281
+ (0, configuration_1.removeLocalConfig)('loginToken');
282
+ }
283
+ });
284
+ return () => {
285
+ cancelled = true;
286
+ };
287
+ }, [loginToken, showLogin, memori.requireLoginToken]);
248
288
  const [showLoginDrawer, setShowLoginDrawer] = (0, react_1.useState)(false);
249
289
  const [clickedStart, setClickedStart] = (0, react_1.useState)(false);
250
290
  const [gotErrorInOpening, setGotErrorInOpening] = (0, react_1.useState)(false);
251
- const language = ((_d = (_c = (_b = memori.culture) === null || _b === void 0 ? void 0 : _b.split('-')) === null || _c === void 0 ? void 0 : _c[0]) === null || _d === void 0 ? void 0 : _d.toUpperCase()) ||
252
- ((_j = (_h = (_g = (_f = memoriConfigs === null || memoriConfigs === void 0 ? void 0 : memoriConfigs.find(c => c.memoriConfigID === memori.memoriConfigurationID)) === null || _f === void 0 ? void 0 : _f.culture) === null || _g === void 0 ? void 0 : _g.split('-')) === null || _h === void 0 ? void 0 : _h[0]) === null || _j === void 0 ? void 0 : _j.toUpperCase());
291
+ const sessionStartingRef = (0, react_1.useRef)(false);
292
+ const needsCredits = tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation;
293
+ const [hasEnoughCredits, setHasEnoughCredits] = (0, react_1.useState)(true);
294
+ const language = ((_g = (_f = (_d = memori.culture) === null || _d === void 0 ? void 0 : _d.split('-')) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g.toUpperCase()) ||
295
+ ((_l = (_k = (_j = (_h = memoriConfigs === null || memoriConfigs === void 0 ? void 0 : memoriConfigs.find(c => c.memoriConfigID === memori.memoriConfigurationID)) === null || _h === void 0 ? void 0 : _h.culture) === null || _j === void 0 ? void 0 : _j.split('-')) === null || _k === void 0 ? void 0 : _k[0]) === null || _l === void 0 ? void 0 : _l.toUpperCase());
253
296
  const integrationConfig = (integration === null || integration === void 0 ? void 0 : integration.customData)
254
297
  ? JSON.parse(integration.customData)
255
298
  : null;
@@ -257,7 +300,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
257
300
  ? multilingual
258
301
  : !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.multilanguage);
259
302
  const forcedTimeout = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.forcedTimeout;
260
- const [userLang, setUserLang] = (0, react_1.useState)((_p = (_o = (_m = (_l = (_k = spokenLang !== null && spokenLang !== void 0 ? spokenLang : memoriLang) !== null && _k !== void 0 ? _k : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.lang) !== null && _l !== void 0 ? _l : language) !== null && _m !== void 0 ? _m : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.uiLang) !== null && _o !== void 0 ? _o : i18n.language) !== null && _p !== void 0 ? _p : 'IT');
303
+ const [userLang, setUserLang] = (0, react_1.useState)((_r = (_q = (_p = (_o = (_m = spokenLang !== null && spokenLang !== void 0 ? spokenLang : memoriLang) !== null && _m !== void 0 ? _m : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.lang) !== null && _o !== void 0 ? _o : language) !== null && _p !== void 0 ? _p : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.uiLang) !== null && _q !== void 0 ? _q : i18n.language) !== null && _r !== void 0 ? _r : 'IT');
261
304
  (0, react_1.useEffect)(() => {
262
305
  if (spokenLang != null) {
263
306
  setUserLang(spokenLang);
@@ -283,6 +326,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
283
326
  const [loading, setLoading] = (0, react_1.useState)(false);
284
327
  const [memoriTyping, setMemoriTyping] = (0, react_1.useState)(false);
285
328
  const [typingText, setTypingText] = (0, react_1.useState)();
329
+ const pendingEnterTextRef = (0, react_1.useRef)(new Map());
330
+ const bufferedNatsResponsesRef = (0, react_1.useRef)(new Map());
286
331
  const layoutName = typeof layout === 'string'
287
332
  ? layout
288
333
  : layout &&
@@ -293,7 +338,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
293
338
  ? layout.name
294
339
  : typeof (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) === 'string'
295
340
  ? integrationConfig.layout
296
- : (_q = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) === null || _q === void 0 ? void 0 : _q.name;
341
+ : (_s = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) === null || _s === void 0 ? void 0 : _s.name;
297
342
  const selectedLayout = (() => {
298
343
  if (typeof layoutName === 'string') {
299
344
  const lower = layoutName.toLowerCase();
@@ -321,14 +366,14 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
321
366
  typeof layout === 'object' &&
322
367
  layout !== null &&
323
368
  'piiDetection' in layout &&
324
- ((_r = layout.piiDetection) === null || _r === void 0 ? void 0 : _r.enabled)
369
+ ((_t = layout.piiDetection) === null || _t === void 0 ? void 0 : _t.enabled)
325
370
  ? layout.piiDetection
326
371
  : typeof (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) === 'object' &&
327
372
  (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) !== null &&
328
- ((_t = (_s = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) === null || _s === void 0 ? void 0 : _s.piiDetection) === null || _t === void 0 ? void 0 : _t.enabled)
373
+ ((_v = (_u = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.layout) === null || _u === void 0 ? void 0 : _u.piiDetection) === null || _v === void 0 ? void 0 : _v.enabled)
329
374
  ? integrationConfig.layout.piiDetection
330
375
  : undefined;
331
- const defaultEnableAudio = (_u = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _u !== void 0 ? _u : true;
376
+ const defaultEnableAudio = (_w = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _w !== void 0 ? _w : true;
332
377
  const [hasUserActivatedListening, setHasUserActivatedListening] = (0, react_1.useState)(false);
333
378
  const [hasUserTypedMessage, setHasUserTypedMessage] = (0, react_1.useState)(false);
334
379
  const [positionPopoverOpen, setPositionPopoverOpenState] = (0, react_1.useState)(false);
@@ -371,7 +416,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
371
416
  setRuntimeShowMessageConsumption((0, configuration_1.getLocalConfig)('showMessageConsumption', (_a = showMessageConsumption !== null && showMessageConsumption !== void 0 ? showMessageConsumption : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showMessageConsumption) !== null && _a !== void 0 ? _a : false));
372
417
  if (!(additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) && !authToken) {
373
418
  setLoginToken((0, configuration_1.getLocalConfig)('loginToken', undefined));
374
- userToken = (0, configuration_1.getLocalConfig)('loginToken', undefined);
419
+ userTokenRef.current = (0, configuration_1.getLocalConfig)('loginToken', undefined);
375
420
  setBirthDate((0, configuration_1.getLocalConfig)('birthDate', undefined));
376
421
  }
377
422
  if (!((_b = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _b !== void 0 ? _b : true)) {
@@ -469,8 +514,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
469
514
  });
470
515
  };
471
516
  const [chatLogID, setChatLogID] = (0, react_1.useState)(undefined);
472
- const sendMessage = async (text, media, newSessionId, translate = true, translatedText, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false) => {
473
- var _a, _b, _c, _d, _f, _g;
517
+ const sendMessage = async (text, media, newSessionId, translate = true, translatedText, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false, skipHistoryPush = false) => {
518
+ var _a, _b;
474
519
  const sessionID = newSessionId ||
475
520
  sessionId ||
476
521
  ((_a = window.getMemoriState()) === null || _a === void 0 ? void 0 : _a.sessionID);
@@ -514,7 +559,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
514
559
  return;
515
560
  }
516
561
  }
517
- if (!hidden)
562
+ if (!hidden && !skipHistoryPush)
518
563
  pushMessage({
519
564
  text: text,
520
565
  translatedText,
@@ -524,12 +569,10 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
524
569
  ? !!newSessionId && newSessionId !== sessionId
525
570
  : !!newSessionId,
526
571
  });
527
- setMemoriTyping(true);
528
- setTypingText(typingText);
529
572
  let gotError = false;
530
573
  try {
531
574
  const placeSpec = getPlaceSpecForEnterText(position);
532
- const { currentState, ...response } = await postTextEnteredEvent({
575
+ const response = await postEnterTextAsync({
533
576
  sessionId: sessionID,
534
577
  text: msg,
535
578
  ...(memori.needsDateTime && {
@@ -537,65 +580,37 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
537
580
  }),
538
581
  ...(placeSpec !== undefined && { place: placeSpec }),
539
582
  });
540
- if (response.resultCode === 0 && currentState) {
541
- setChatLogID(undefined);
542
- const emission = useLoaderTextAsMsg && typingText
543
- ? typingText
544
- : (_c = currentState.emission) !== null && _c !== void 0 ? _c : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
545
- if (userLang.toLowerCase() !== language.toLowerCase() &&
546
- emission &&
547
- isMultilanguageEnabled) {
548
- currentState.emission = emission;
549
- translateDialogState(currentState, userLang, msg).then(ts => {
550
- let text = ts.translatedEmission || ts.emission;
551
- if (text && shouldPlayAudio(text)) {
552
- handleSpeak(text);
553
- }
554
- });
555
- }
556
- else {
557
- setCurrentDialogState({
558
- ...currentState,
559
- emission,
560
- });
561
- if (emission) {
562
- pushMessage({
563
- text: emission,
564
- emitter: currentState.emitter,
565
- media: (_d = currentState.emittedMedia) !== null && _d !== void 0 ? _d : currentState.media,
566
- llmUsage: currentState.llmUsage,
567
- fromUser: false,
568
- questionAnswered: msg,
569
- generatedByAI: !!currentState.completion,
570
- contextVars: currentState.contextVars,
571
- date: currentState.currentDate,
572
- placeName: currentState.currentPlaceName,
573
- placeLatitude: currentState.currentLatitude,
574
- placeLongitude: currentState.currentLongitude,
575
- placeUncertaintyKm: currentState.currentUncertaintyKm,
576
- tag: currentState.currentTag,
577
- memoryTags: currentState.memoryTags,
578
- });
579
- if (emission && shouldPlayAudio(emission)) {
580
- handleSpeak(emission);
581
- }
582
- }
583
- }
583
+ const correlationID = readCorrelationID(response);
584
+ if (response.resultCode === 0 && correlationID) {
585
+ registerPendingEnterText(correlationID, {
586
+ msg,
587
+ text,
588
+ media,
589
+ translate,
590
+ translatedText,
591
+ hidden,
592
+ typingText,
593
+ useLoaderTextAsMsg,
594
+ hasBatchQueued,
595
+ });
596
+ setMemoriTyping(true);
597
+ setTypingText(typingText);
598
+ }
599
+ else if (response.resultCode === 0) {
600
+ logWidgetError('enter-text missing correlationID', response);
584
601
  }
585
602
  else if (response.resultCode === 404) {
586
- setHistory(h => [...h.slice(0, h.length - 1)]);
587
- reopenSession(true, memoriPwd || memori.secretToken, memoriTokens, undefined, undefined, {
588
- LANG: userLang,
589
- PATHNAME: window.location.pathname,
590
- ROUTE: ((_g = (_f = window.location.pathname) === null || _f === void 0 ? void 0 : _f.split('/')) === null || _g === void 0 ? void 0 : _g.pop()) || '',
591
- ...(initialContextVars || {}),
592
- }, initialQuestion, undefined, undefined, undefined, undefined, true).then(state => {
593
- console.info('session timeout');
594
- if (state === null || state === void 0 ? void 0 : state.sessionID) {
595
- setTimeout(() => {
596
- sendMessage(text, media, state === null || state === void 0 ? void 0 : state.sessionID);
597
- }, 500);
598
- }
603
+ retryAfterExpiredSessionRef.current({
604
+ text,
605
+ media,
606
+ translate,
607
+ translatedText,
608
+ hidden,
609
+ typingText,
610
+ useLoaderTextAsMsg,
611
+ hasBatchQueued,
612
+ expiredSessionID: sessionID,
613
+ continueFromChatLogID: chatLogID,
599
614
  });
600
615
  }
601
616
  else if (response.resultCode === 500 && response.resultMessage) {
@@ -612,18 +627,12 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
612
627
  ]);
613
628
  }
614
629
  else {
615
- console.warn('[SEND_MESSAGE]', response);
616
630
  return Promise.reject(response);
617
631
  }
618
632
  }
619
633
  catch (error) {
620
- console.log('error', error);
621
- console.error(error);
622
634
  gotError = true;
623
- setTypingText(undefined);
624
- setMemoriTyping(false);
625
- }
626
- if (!hasBatchQueued) {
635
+ logWidgetError('sendMessage failed', error);
627
636
  setTypingText(undefined);
628
637
  setMemoriTyping(false);
629
638
  }
@@ -705,7 +714,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
705
714
  }
706
715
  }
707
716
  catch (error) {
708
- console.error('[TRANSLATE] Error during translation:', error);
709
717
  translatedState = { ...state, emission };
710
718
  translatedMsg = {
711
719
  text: emission,
@@ -813,7 +821,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
813
821
  try {
814
822
  setTimeout(() => {
815
823
  var _a;
816
- console.log('snippet', s);
817
824
  new Function((_a = s.content) !== null && _a !== void 0 ? _a : '')();
818
825
  setTimeout(() => {
819
826
  var _a, _b, _c;
@@ -822,8 +829,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
822
829
  }, 400);
823
830
  }, 1000);
824
831
  }
825
- catch (e) {
826
- console.warn(e);
832
+ catch (_a) {
827
833
  }
828
834
  });
829
835
  };
@@ -834,7 +840,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
834
840
  }
835
841
  }, [initialSessionID]);
836
842
  const fetchSession = async (params) => {
837
- var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l;
843
+ var _a, _b, _c, _d, _f, _g, _h;
838
844
  let storageBirthDate = (0, configuration_1.getLocalConfig)('birthDate', undefined);
839
845
  let userBirthDate = (_a = birthDate !== null && birthDate !== void 0 ? birthDate : params.birthDate) !== null && _a !== void 0 ? _a : storageBirthDate;
840
846
  if (!userBirthDate && !!minAge) {
@@ -848,6 +854,9 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
848
854
  setAuthModalState('password');
849
855
  return;
850
856
  }
857
+ if (!(await checkCredits({ notify: true }))) {
858
+ return;
859
+ }
851
860
  setLoading(true);
852
861
  try {
853
862
  let referral;
@@ -856,8 +865,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
856
865
  return window.location.href;
857
866
  })();
858
867
  }
859
- catch (err) {
860
- console.debug(err);
868
+ catch (_j) {
861
869
  }
862
870
  const session = await initSession({
863
871
  ...params,
@@ -866,8 +874,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
866
874
  pin: (_c = params.pin) !== null && _c !== void 0 ? _c : personification === null || personification === void 0 ? void 0 : personification.pin,
867
875
  additionalInfo: {
868
876
  ...(params.additionalInfo || additionalInfo || {}),
869
- loginToken: (_h = (_g = (_d = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _d !== void 0 ? _d : (_f = params.additionalInfo) === null || _f === void 0 ? void 0 : _f.loginToken) !== null && _g !== void 0 ? _g : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _h !== void 0 ? _h : authToken,
870
- language: ((_l = userLang !== null && userLang !== void 0 ? userLang : (_k = (_j = memori.culture) === null || _j === void 0 ? void 0 : _j.split('-')) === null || _k === void 0 ? void 0 : _k[0]) !== null && _l !== void 0 ? _l : 'IT').toLowerCase(),
877
+ loginToken: resolveLoginToken((_d = params.additionalInfo) === null || _d === void 0 ? void 0 : _d.loginToken),
878
+ language: ((_h = userLang !== null && userLang !== void 0 ? userLang : (_g = (_f = memori.culture) === null || _f === void 0 ? void 0 : _f.split('-')) === null || _g === void 0 ? void 0 : _g[0]) !== null && _h !== void 0 ? _h : 'IT').toLowerCase(),
871
879
  referral: referral,
872
880
  timeZoneOffset: new Date().getTimezoneOffset().toString(),
873
881
  },
@@ -896,7 +904,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
896
904
  }));
897
905
  setGotErrorInOpening(true);
898
906
  }
899
- else if ((session === null || session === void 0 ? void 0 : session.resultCode) === 403) {
907
+ else if ((session === null || session === void 0 ? void 0 : session.resultCode) === 403 && memori.privacyType !== 'PUBLIC') {
900
908
  setMemoriPwd(undefined);
901
909
  setAuthModalState('password');
902
910
  return session;
@@ -908,16 +916,15 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
908
916
  severity: 'error',
909
917
  duration: 0,
910
918
  }));
911
- setGotErrorInOpening(true);
912
919
  return session;
913
920
  }
914
921
  }
915
922
  catch (err) {
916
- console.error(err);
923
+ logWidgetError('fetchSession failed', err);
917
924
  }
918
925
  };
919
- const reopenSession = async (updateDialogState = false, password, recoveryTokens, tag, pin, initialContextVars, initialQuestion, birthDate, additionalInfoProp, continueFromChatLogID, continueFromSessionID, isSessionExpired) => {
920
- var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m;
926
+ const reopenSession = async (updateDialogState = false, password, recoveryTokens, tag, pin, initialContextVars, initialQuestion, birthDate, additionalInfoProp, continueFromChatLogID, continueFromSessionID, isSessionExpired, suppressHistoryUpdate) => {
927
+ var _a, _b, _c, _d, _f, _g, _h, _j;
921
928
  setLoading(true);
922
929
  let storageBirthDate = (0, configuration_1.getLocalConfig)('birthDate', undefined);
923
930
  let userBirthDate = birthDate !== null && birthDate !== void 0 ? birthDate : storageBirthDate;
@@ -935,14 +942,17 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
935
942
  setAuthModalState('password');
936
943
  return;
937
944
  }
945
+ if (!(await checkCredits({ notify: true }))) {
946
+ setLoading(false);
947
+ return null;
948
+ }
938
949
  let referral;
939
950
  try {
940
951
  referral = (() => {
941
952
  return window.location.href;
942
953
  })();
943
954
  }
944
- catch (err) {
945
- console.debug('[REOPEN_SESSION] Error getting referral:', err);
955
+ catch (_k) {
946
956
  }
947
957
  const { sessionID, currentState, ...response } = await initSession({
948
958
  memoriID: (_a = memori.engineMemoriID) !== null && _a !== void 0 ? _a : '',
@@ -962,21 +972,32 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
962
972
  birthDate: userBirthDate,
963
973
  additionalInfo: {
964
974
  ...(additionalInfoProp || additionalInfo || {}),
965
- loginToken: (_g = (_f = (_d = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _d !== void 0 ? _d : additionalInfoProp === null || additionalInfoProp === void 0 ? void 0 : additionalInfoProp.loginToken) !== null && _f !== void 0 ? _f : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _g !== void 0 ? _g : authToken,
966
- language: ((_k = userLang !== null && userLang !== void 0 ? userLang : (_j = (_h = memori.culture) === null || _h === void 0 ? void 0 : _h.split('-')) === null || _j === void 0 ? void 0 : _j[0]) !== null && _k !== void 0 ? _k : 'IT').toLowerCase(),
975
+ loginToken: resolveLoginToken(additionalInfoProp === null || additionalInfoProp === void 0 ? void 0 : additionalInfoProp.loginToken),
976
+ language: ((_g = userLang !== null && userLang !== void 0 ? userLang : (_f = (_d = memori.culture) === null || _d === void 0 ? void 0 : _d.split('-')) === null || _f === void 0 ? void 0 : _f[0]) !== null && _g !== void 0 ? _g : 'IT').toLowerCase(),
967
977
  referral: referral,
968
978
  timeZoneOffset: new Date().getTimezoneOffset().toString(),
969
979
  },
970
980
  });
971
981
  if (sessionID && currentState && response.resultCode === 0) {
972
- console.log('[REOPEN_SESSION] Session initialized successfully:', sessionID);
973
982
  setSessionId(sessionID);
974
983
  if (updateDialogState) {
975
984
  setCurrentDialogState(currentState);
976
- if (currentState.emission) {
977
- console.log('[REOPEN_SESSION] Processing emission:', currentState.emission);
978
- const initialStatus = isSessionExpired && history.length > 1
979
- ? 'Session Expired, reopening session'
985
+ const sessionExpiredStatus = isSessionExpired && history.length > 1
986
+ ? t('sessionExpiredReopening')
987
+ : null;
988
+ if (sessionExpiredStatus && suppressHistoryUpdate) {
989
+ pushMessage({
990
+ text: '',
991
+ emitter: 'system',
992
+ fromUser: false,
993
+ initial: sessionExpiredStatus,
994
+ contextVars: {},
995
+ date: new Date().toISOString(),
996
+ });
997
+ }
998
+ if (currentState.emission && !suppressHistoryUpdate) {
999
+ const initialStatus = sessionExpiredStatus
1000
+ ? sessionExpiredStatus
980
1001
  : history.length <= 1
981
1002
  ? true
982
1003
  : undefined;
@@ -985,7 +1006,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
985
1006
  {
986
1007
  text: currentState.emission,
987
1008
  emitter: currentState.emitter,
988
- media: (_l = currentState.emittedMedia) !== null && _l !== void 0 ? _l : currentState.media,
1009
+ media: (_h = currentState.emittedMedia) !== null && _h !== void 0 ? _h : currentState.media,
989
1010
  fromUser: false,
990
1011
  initial: (initialStatus === true
991
1012
  ? true
@@ -1003,7 +1024,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1003
1024
  : pushMessage({
1004
1025
  text: currentState.emission,
1005
1026
  emitter: currentState.emitter,
1006
- media: (_m = currentState.emittedMedia) !== null && _m !== void 0 ? _m : currentState.media,
1027
+ media: (_j = currentState.emittedMedia) !== null && _j !== void 0 ? _j : currentState.media,
1007
1028
  fromUser: false,
1008
1029
  initial: (initialStatus === true
1009
1030
  ? true
@@ -1033,8 +1054,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1033
1054
  }));
1034
1055
  setGotErrorInOpening(true);
1035
1056
  }
1036
- else if ((response === null || response === void 0 ? void 0 : response.resultCode) === 403) {
1037
- console.error('[REOPEN_SESSION] Authentication error');
1057
+ else if ((response === null || response === void 0 ? void 0 : response.resultCode) === 403 &&
1058
+ memori.privacyType !== 'PUBLIC') {
1038
1059
  setMemoriPwd(undefined);
1039
1060
  setAuthModalState('password');
1040
1061
  }
@@ -1048,15 +1069,61 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1048
1069
  }
1049
1070
  }
1050
1071
  catch (err) {
1051
- console.error('[REOPEN_SESSION] Caught error:', err);
1072
+ logWidgetError('reopenSession failed', err);
1052
1073
  }
1053
1074
  setLoading(false);
1054
1075
  return null;
1055
1076
  };
1077
+ const retryAfterExpiredSessionRef = (0, react_1.useRef)(() => Promise.resolve(null));
1078
+ retryAfterExpiredSessionRef.current = (params) => {
1079
+ const { text, media, translate = true, translatedText, hidden = false, typingText, useLoaderTextAsMsg = false, hasBatchQueued = false, expiredSessionID, continueFromChatLogID: continueFromChatLogIDParam, } = params;
1080
+ const continueFromSessionID = expiredSessionID !== null && expiredSessionID !== void 0 ? expiredSessionID : sessionId;
1081
+ const continueFromChatLogID = continueFromChatLogIDParam !== null && continueFromChatLogIDParam !== void 0 ? continueFromChatLogIDParam : chatLogID;
1082
+ const reopenAfterExpiry = () => {
1083
+ var _a, _b;
1084
+ return reopenSession(true, memoriPwd || memori.secretToken, memoriTokens, undefined, undefined, {
1085
+ LANG: userLang,
1086
+ PATHNAME: window.location.pathname,
1087
+ ROUTE: ((_b = (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.split('/')) === null || _b === void 0 ? void 0 : _b.pop()) || '',
1088
+ ...(initialContextVars || {}),
1089
+ }, initialQuestion, undefined, undefined, continueFromChatLogID, continueFromSessionID, true, true);
1090
+ };
1091
+ const scheduleRetry = (newSessionID) => {
1092
+ setTimeout(() => {
1093
+ sendMessage(text, media, newSessionID, translate, translatedText, hidden, typingText, useLoaderTextAsMsg, hasBatchQueued, true);
1094
+ }, 500);
1095
+ };
1096
+ const handleReopenFailure = (state) => {
1097
+ setMemoriTyping(false);
1098
+ setTypingText(undefined);
1099
+ if (state === null && text && !hidden) {
1100
+ add((0, ui_1.createAlertOptions)({
1101
+ description: t('errors.SESSION_EXPIRED'),
1102
+ severity: 'error',
1103
+ }));
1104
+ }
1105
+ };
1106
+ if (!text) {
1107
+ return reopenAfterExpiry().then(state => {
1108
+ if (!(state === null || state === void 0 ? void 0 : state.sessionID)) {
1109
+ handleReopenFailure(state);
1110
+ }
1111
+ return state;
1112
+ });
1113
+ }
1114
+ return reopenAfterExpiry().then(state => {
1115
+ if (state === null || state === void 0 ? void 0 : state.sessionID) {
1116
+ scheduleRetry(state.sessionID);
1117
+ }
1118
+ else {
1119
+ handleReopenFailure(state);
1120
+ }
1121
+ return state;
1122
+ });
1123
+ };
1056
1124
  const changeTag = async (memoriId, sessionId, tag, pin) => {
1057
- var _a, _b, _c, _d, _f, _g, _h, _j, _k;
1125
+ var _a, _b, _c, _d, _f, _g, _h;
1058
1126
  if (!memoriId || !sessionId) {
1059
- console.error('CHANGETAG/Session not found');
1060
1127
  return Promise.reject('Session not found');
1061
1128
  }
1062
1129
  try {
@@ -1088,7 +1155,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1088
1155
  }
1089
1156
  }
1090
1157
  else if ([400, 401, 403, 404, 500].includes(resultCode)) {
1091
- console.warn('[APPCONTEXT/CHANGETAG]', resultCode);
1092
1158
  let storageBirthDate = (0, configuration_1.getLocalConfig)('birthDate', undefined);
1093
1159
  let referral;
1094
1160
  try {
@@ -1096,8 +1162,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1096
1162
  return window.location.href;
1097
1163
  })();
1098
1164
  }
1099
- catch (err) {
1100
- console.debug(err);
1165
+ catch (_j) {
1101
1166
  }
1102
1167
  fetchSession({
1103
1168
  memoriID: (_b = memori.engineMemoriID) !== null && _b !== void 0 ? _b : '',
@@ -1114,8 +1179,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1114
1179
  birthDate: birthDate || storageBirthDate || undefined,
1115
1180
  additionalInfo: {
1116
1181
  ...(additionalInfo || {}),
1117
- loginToken: (_g = (_f = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _f !== void 0 ? _f : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _g !== void 0 ? _g : authToken,
1118
- language: ((_k = userLang !== null && userLang !== void 0 ? userLang : (_j = (_h = memori.culture) === null || _h === void 0 ? void 0 : _h.split('-')) === null || _j === void 0 ? void 0 : _j[0]) !== null && _k !== void 0 ? _k : 'IT').toLowerCase(),
1182
+ loginToken: resolveLoginToken(),
1183
+ language: ((_h = userLang !== null && userLang !== void 0 ? userLang : (_g = (_f = memori.culture) === null || _f === void 0 ? void 0 : _f.split('-')) === null || _g === void 0 ? void 0 : _g[0]) !== null && _h !== void 0 ? _h : 'IT').toLowerCase(),
1119
1184
  referral: referral,
1120
1185
  timeZoneOffset: new Date().getTimezoneOffset().toString(),
1121
1186
  },
@@ -1132,7 +1197,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1132
1197
  }
1133
1198
  catch (_e) {
1134
1199
  let err = _e;
1135
- console.warn('[APPCONTEXT/CHANGETAG]', err);
1136
1200
  return Promise.reject(err);
1137
1201
  }
1138
1202
  return null;
@@ -1153,6 +1217,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1153
1217
  return () => {
1154
1218
  setHasUserActivatedSpeak(false);
1155
1219
  setClickedStart(false);
1220
+ sessionStartingRef.current = false;
1156
1221
  clearInteractionTimeout();
1157
1222
  timeoutRef.current = undefined;
1158
1223
  };
@@ -1179,10 +1244,9 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1179
1244
  apiUrl: `${baseUrl}/api/tts`,
1180
1245
  continuousSpeech: continuousSpeech,
1181
1246
  preview: preview,
1182
- }, autoStart, defaultEnableAudio, (_v = defaultSpeakerActive !== null && defaultSpeakerActive !== void 0 ? defaultSpeakerActive : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.defaultSpeakerActive) !== null && _v !== void 0 ? _v : true);
1247
+ }, autoStart, defaultEnableAudio, (_x = defaultSpeakerActive !== null && defaultSpeakerActive !== void 0 ? defaultSpeakerActive : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.defaultSpeakerActive) !== null && _x !== void 0 ? _x : true);
1183
1248
  const shouldPlayAudio = (text) => {
1184
1249
  const currentSpeakerMuted = (0, configuration_1.getLocalConfig)('muteSpeaker', !defaultEnableAudio);
1185
- console.log('[MemoriWidget] shouldPlayAudio', currentSpeakerMuted);
1186
1250
  return (text &&
1187
1251
  text.trim() &&
1188
1252
  !preview &&
@@ -1195,15 +1259,12 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1195
1259
  }
1196
1260
  try {
1197
1261
  const message = (0, utils_1.stripDuplicates)(text);
1198
- console.debug('Processing speech message:', message);
1199
1262
  if (message.length > 0) {
1200
1263
  setUserMessage('');
1201
- console.debug('Sending message:', message);
1202
1264
  sendMessage(message);
1203
1265
  }
1204
1266
  }
1205
- catch (error) {
1206
- console.error('Error in processSpeechAndSendMessage:', error);
1267
+ catch (_a) {
1207
1268
  }
1208
1269
  };
1209
1270
  const { isListening, startRecording, stopRecording, } = (0, useSTT_1.useSTT)(sttConfig, processSpeechAndSendMessage, {
@@ -1237,8 +1298,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1237
1298
  }
1238
1299
  return translatedState;
1239
1300
  }
1240
- catch (error) {
1241
- console.error('Error in translateAndSpeak:', error);
1301
+ catch (_a) {
1242
1302
  if (!hasUserActivatedSpeak) {
1243
1303
  setHasUserActivatedSpeak(true);
1244
1304
  }
@@ -1251,6 +1311,221 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1251
1311
  setHasUserActivatedSpeak,
1252
1312
  speakerMuted,
1253
1313
  ]);
1314
+ const processEnterTextDialogResponse = (0, react_1.useCallback)((event, pending) => {
1315
+ var _a, _b;
1316
+ const { msg, typingText: pendingTypingText, useLoaderTextAsMsg, } = pending;
1317
+ const currentState = event.currentState;
1318
+ if (event.resultCode !== 0 || !currentState) {
1319
+ if ((0, isSessionExpiredError_1.isSessionExpiredNatsResponse)(event) && pending.text) {
1320
+ setMemoriTyping(false);
1321
+ setTypingText(undefined);
1322
+ retryAfterExpiredSessionRef.current({
1323
+ text: pending.text,
1324
+ media: pending.media,
1325
+ translate: pending.translate,
1326
+ translatedText: pending.translatedText,
1327
+ hidden: pending.hidden,
1328
+ typingText: pending.typingText,
1329
+ useLoaderTextAsMsg: pending.useLoaderTextAsMsg,
1330
+ hasBatchQueued: pending.hasBatchQueued,
1331
+ expiredSessionID: sessionId,
1332
+ continueFromChatLogID: chatLogID,
1333
+ });
1334
+ return;
1335
+ }
1336
+ if (event.resultCode === 500 && event.resultMessage) {
1337
+ setHistory(h => [
1338
+ ...h,
1339
+ {
1340
+ text: 'Error: ' + event.resultMessage,
1341
+ emitter: 'system',
1342
+ fromUser: false,
1343
+ initial: false,
1344
+ contextVars: {},
1345
+ date: new Date().toISOString(),
1346
+ },
1347
+ ]);
1348
+ }
1349
+ return;
1350
+ }
1351
+ if (!msg) {
1352
+ return;
1353
+ }
1354
+ setChatLogID(undefined);
1355
+ const emission = useLoaderTextAsMsg && pendingTypingText
1356
+ ? pendingTypingText
1357
+ : (_a = currentState.emission) !== null && _a !== void 0 ? _a : currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission;
1358
+ if (userLang.toLowerCase() !== language.toLowerCase() &&
1359
+ emission &&
1360
+ isMultilanguageEnabled) {
1361
+ currentState.emission = emission;
1362
+ translateDialogState(currentState, userLang, msg).then(ts => {
1363
+ const text = ts.translatedEmission || ts.emission;
1364
+ if (text && shouldPlayAudio(text)) {
1365
+ handleSpeak(text);
1366
+ }
1367
+ });
1368
+ }
1369
+ else {
1370
+ setCurrentDialogState({
1371
+ ...currentState,
1372
+ emission,
1373
+ });
1374
+ if (emission) {
1375
+ pushMessage({
1376
+ text: emission,
1377
+ emitter: currentState.emitter,
1378
+ media: (_b = currentState.emittedMedia) !== null && _b !== void 0 ? _b : currentState.media,
1379
+ llmUsage: currentState.llmUsage,
1380
+ fromUser: false,
1381
+ questionAnswered: msg,
1382
+ generatedByAI: !!currentState.completion,
1383
+ contextVars: currentState.contextVars,
1384
+ date: currentState.currentDate,
1385
+ placeName: currentState.currentPlaceName,
1386
+ placeLatitude: currentState.currentLatitude,
1387
+ placeLongitude: currentState.currentLongitude,
1388
+ placeUncertaintyKm: currentState.currentUncertaintyKm,
1389
+ tag: currentState.currentTag,
1390
+ memoryTags: currentState.memoryTags,
1391
+ });
1392
+ if (emission && shouldPlayAudio(emission)) {
1393
+ handleSpeak(emission);
1394
+ }
1395
+ }
1396
+ }
1397
+ }, [
1398
+ userLang,
1399
+ language,
1400
+ isMultilanguageEnabled,
1401
+ currentDialogState === null || currentDialogState === void 0 ? void 0 : currentDialogState.emission,
1402
+ translateDialogState,
1403
+ handleSpeak,
1404
+ shouldPlayAudio,
1405
+ ]);
1406
+ const clearEnterTextPending = (0, react_1.useCallback)((correlationID, pending) => {
1407
+ var _a;
1408
+ if ((_a = pending.waitForResponse) === null || _a === void 0 ? void 0 : _a.timeoutId) {
1409
+ clearTimeout(pending.waitForResponse.timeoutId);
1410
+ }
1411
+ pendingEnterTextRef.current.delete(correlationID);
1412
+ }, []);
1413
+ const deliverEnterTextNatsError = (0, react_1.useCallback)((event) => {
1414
+ var _a, _b, _c;
1415
+ const correlationID = event.correlationID;
1416
+ let pending;
1417
+ if (correlationID) {
1418
+ pending = pendingEnterTextRef.current.get(correlationID);
1419
+ if (pending) {
1420
+ clearEnterTextPending(correlationID, pending);
1421
+ (_a = pending.waitForResponse) === null || _a === void 0 ? void 0 : _a.reject(new Error((_b = event.errorMessage) !== null && _b !== void 0 ? _b : String((_c = event.errorCode) !== null && _c !== void 0 ? _c : 'NATS error')));
1422
+ }
1423
+ }
1424
+ if ((0, isSessionExpiredError_1.isSessionExpiredNatsError)(event) && (pending === null || pending === void 0 ? void 0 : pending.text)) {
1425
+ setMemoriTyping(false);
1426
+ setTypingText(undefined);
1427
+ retryAfterExpiredSessionRef.current({
1428
+ text: pending.text,
1429
+ media: pending.media,
1430
+ translate: pending.translate,
1431
+ translatedText: pending.translatedText,
1432
+ hidden: pending.hidden,
1433
+ typingText: pending.typingText,
1434
+ useLoaderTextAsMsg: pending.useLoaderTextAsMsg,
1435
+ hasBatchQueued: pending.hasBatchQueued,
1436
+ expiredSessionID: sessionId,
1437
+ continueFromChatLogID: chatLogID,
1438
+ });
1439
+ return;
1440
+ }
1441
+ const errorText = event.errorMessage
1442
+ ? `Error: ${event.errorMessage}`
1443
+ : event.errorCode
1444
+ ? `Error: ${event.errorCode}`
1445
+ : 'Error: An unexpected error occurred';
1446
+ pushMessage({
1447
+ text: errorText,
1448
+ emitter: 'system',
1449
+ fromUser: false,
1450
+ initial: false,
1451
+ contextVars: {},
1452
+ date: new Date().toISOString(),
1453
+ });
1454
+ setMemoriTyping(false);
1455
+ setTypingText(undefined);
1456
+ }, [clearEnterTextPending]);
1457
+ const deliverEnterTextNatsResponse = (0, react_1.useCallback)((correlationID, event) => {
1458
+ const pending = pendingEnterTextRef.current.get(correlationID);
1459
+ if (!pending) {
1460
+ bufferedNatsResponsesRef.current.set(correlationID, event);
1461
+ return;
1462
+ }
1463
+ clearEnterTextPending(correlationID, pending);
1464
+ if (pending.waitForResponse) {
1465
+ pending.waitForResponse.resolve(event);
1466
+ setMemoriTyping(false);
1467
+ setTypingText(undefined);
1468
+ return;
1469
+ }
1470
+ processEnterTextDialogResponse(event, pending);
1471
+ if (!pending.hasBatchQueued) {
1472
+ setMemoriTyping(false);
1473
+ setTypingText(undefined);
1474
+ }
1475
+ }, [processEnterTextDialogResponse, clearEnterTextPending]);
1476
+ const registerPendingEnterText = (0, react_1.useCallback)((correlationID, pending) => {
1477
+ const buffered = bufferedNatsResponsesRef.current.get(correlationID);
1478
+ if (buffered) {
1479
+ bufferedNatsResponsesRef.current.delete(correlationID);
1480
+ pendingEnterTextRef.current.set(correlationID, pending);
1481
+ deliverEnterTextNatsResponse(correlationID, buffered);
1482
+ return;
1483
+ }
1484
+ pendingEnterTextRef.current.set(correlationID, pending);
1485
+ }, [deliverEnterTextNatsResponse]);
1486
+ const waitForEnterTextNatsResponse = (0, react_1.useCallback)((correlationID, timeoutMs = 120000) => new Promise((resolve, reject) => {
1487
+ const timeoutId = setTimeout(() => {
1488
+ const current = pendingEnterTextRef.current.get(correlationID);
1489
+ if (current) {
1490
+ clearEnterTextPending(correlationID, current);
1491
+ }
1492
+ logWidgetError('NATS timeout', { correlationID, timeoutMs });
1493
+ reject(new Error('NATS enter-text response timeout'));
1494
+ }, timeoutMs);
1495
+ registerPendingEnterText(correlationID, {
1496
+ waitForResponse: {
1497
+ resolve: event => {
1498
+ clearTimeout(timeoutId);
1499
+ resolve(event);
1500
+ },
1501
+ reject: error => {
1502
+ clearTimeout(timeoutId);
1503
+ reject(error);
1504
+ },
1505
+ timeoutId,
1506
+ },
1507
+ });
1508
+ }), [registerPendingEnterText, clearEnterTextPending]);
1509
+ (0, useNats_1.useNats)({
1510
+ baseUrl,
1511
+ sessionId,
1512
+ onProgress: (0, react_1.useCallback)((event) => {
1513
+ if (event.message) {
1514
+ setTypingText(event.message);
1515
+ }
1516
+ }, []),
1517
+ onDialogResponse: (0, react_1.useCallback)((event) => {
1518
+ const correlationID = event.correlationID;
1519
+ if (!correlationID) {
1520
+ logWidgetError('NATS dialog response missing correlationID', event);
1521
+ setMemoriTyping(false);
1522
+ setTypingText(undefined);
1523
+ return;
1524
+ }
1525
+ deliverEnterTextNatsResponse(correlationID, event);
1526
+ }, [deliverEnterTextNatsResponse]),
1527
+ onError: deliverEnterTextNatsError,
1528
+ });
1254
1529
  const focusChatInput = () => {
1255
1530
  let textarea = document.querySelector('#chat-fieldset textarea');
1256
1531
  if (textarea && enableFocusChatInput) {
@@ -1272,7 +1547,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1272
1547
  timeoutRef.current = undefined;
1273
1548
  ttsStop();
1274
1549
  }
1275
- catch (e) {
1550
+ catch (_a) {
1276
1551
  }
1277
1552
  };
1278
1553
  (0, react_1.useEffect)(() => {
@@ -1310,9 +1585,6 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1310
1585
  }, []);
1311
1586
  const [attachmentsMenuOpen, setAttachmentsMenuOpen] = (0, react_1.useState)();
1312
1587
  const globalBackground = integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.globalBackground;
1313
- const globalBackgroundUrl = globalBackground
1314
- ? `url(${globalBackground})`
1315
- : null;
1316
1588
  const integrationProperties = (integration ? getChatStyles(integrationConfig) : {});
1317
1589
  const integrationSelectors = [
1318
1590
  preview ? '#preview' : null,
@@ -1344,7 +1616,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1344
1616
  }`);
1345
1617
  }
1346
1618
  if (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.blurBackground) {
1347
- integrationStylesheetParts.push('.memori-widget .memori--global-background { filter: blur(5px); }');
1619
+ integrationStylesheetParts.push('.memori-widget .memori-chat--history--has-global-background::before { filter: blur(5px); }');
1348
1620
  }
1349
1621
  const integrationStylesheet = `@layer integration {
1350
1622
  ${integrationStylesheetParts.join('\n ')}
@@ -1435,7 +1707,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1435
1707
  };
1436
1708
  }, [sessionId, userLang, disableTextEnteredEvents]);
1437
1709
  const onClickStart = (0, react_1.useCallback)(async (session, initialSessionExpired = false, chatLog, targetSessionID) => {
1438
- var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
1710
+ var _a, _b, _c, _d, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t;
1439
1711
  const sessionID = chatLog ? undefined : (session === null || session === void 0 ? void 0 : session.sessionID) || sessionId;
1440
1712
  const dialogState = chatLog
1441
1713
  ? undefined
@@ -1452,9 +1724,15 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1452
1724
  setPositionPopoverOpenState(true);
1453
1725
  return;
1454
1726
  }
1727
+ if (!(await checkCredits({ notify: true }))) {
1728
+ setClickedStart(false);
1729
+ setLoading(false);
1730
+ return;
1731
+ }
1455
1732
  if (!sessionID && !!minAge && !birth) {
1456
1733
  setShowAgeVerification(true);
1457
1734
  setClickedStart(false);
1735
+ return;
1458
1736
  }
1459
1737
  else if ((!sessionID &&
1460
1738
  memori.privacyType !== 'PUBLIC' &&
@@ -1467,83 +1745,95 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1467
1745
  return;
1468
1746
  }
1469
1747
  else if (!sessionID || initialSessionExpired) {
1470
- setClickedStart(false);
1471
1748
  setGotErrorInOpening(false);
1472
- const session = await fetchSession({
1473
- memoriID: memori.engineMemoriID,
1474
- password: secret || memoriPwd || memori.secretToken,
1475
- tag: personification === null || personification === void 0 ? void 0 : personification.tag,
1476
- pin: personification === null || personification === void 0 ? void 0 : personification.pin,
1477
- continueFromChatLogID: chatLog === null || chatLog === void 0 ? void 0 : chatLog.chatLogID,
1478
- initialContextVars: {
1479
- LANG: userLang,
1480
- PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
1481
- ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
1482
- ...((!chatLog
1483
- ? initialContextVars
1484
- : chatLog.lines[chatLog.lines.length - 1].contextVars) || {}),
1485
- },
1486
- initialQuestion: chatLog ? undefined : initialQuestion,
1487
- birthDate: birth,
1488
- additionalInfo: {
1489
- ...(additionalInfo || {}),
1490
- loginToken: (_g = (_f = userToken !== null && userToken !== void 0 ? userToken : loginToken) !== null && _f !== void 0 ? _f : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _g !== void 0 ? _g : authToken,
1491
- language: ((_k = userLang !== null && userLang !== void 0 ? userLang : (_j = (_h = memori.culture) === null || _h === void 0 ? void 0 : _h.split('-')) === null || _j === void 0 ? void 0 : _j[0]) !== null && _k !== void 0 ? _k : 'IT').toLowerCase(),
1492
- timeZoneOffset: new Date().getTimezoneOffset().toString(),
1493
- },
1494
- });
1495
- if (session === null || session === void 0 ? void 0 : session.dialogState) {
1496
- if (!chatLog) {
1497
- setHistory([]);
1498
- await translateAndSpeak(session.dialogState, userLang);
1499
- setHasUserActivatedSpeak(true);
1500
- }
1501
- else {
1502
- const messages = chatLog.lines.map((l, i) => {
1503
- var _a, _b;
1504
- return ({
1505
- text: l.text,
1506
- media: (_b = (_a = l.media) === null || _a === void 0 ? void 0 : _a.filter(m => constants_1.allowedMediaTypes.includes(m.mimeType))) === null || _b === void 0 ? void 0 : _b.map(m => ({
1507
- mediumID: `${i}-${m.mimeType}`,
1508
- ...m,
1509
- })),
1510
- fromUser: l.inbound,
1511
- llmUsage: l.llmUsage,
1512
- timestamp: l.timestamp,
1513
- emitter: l.emitter,
1514
- initial: i === 0,
1515
- });
1516
- });
1517
- translatedMessages = messages !== null && messages !== void 0 ? messages : [];
1518
- if (language.toUpperCase() !== userLang.toUpperCase() &&
1519
- isMultilanguageEnabled) {
1520
- try {
1521
- translatedMessages = await Promise.all(messages.map(async (m) => {
1522
- if ('originalText' in m && m.originalText) {
1523
- return m;
1524
- }
1525
- return {
1749
+ if (sessionStartingRef.current) {
1750
+ return;
1751
+ }
1752
+ sessionStartingRef.current = true;
1753
+ try {
1754
+ const session = await fetchSession({
1755
+ memoriID: memori.engineMemoriID,
1756
+ password: secret || memoriPwd || memori.secretToken,
1757
+ tag: personification === null || personification === void 0 ? void 0 : personification.tag,
1758
+ pin: personification === null || personification === void 0 ? void 0 : personification.pin,
1759
+ continueFromChatLogID: chatLog === null || chatLog === void 0 ? void 0 : chatLog.chatLogID,
1760
+ initialContextVars: {
1761
+ LANG: userLang,
1762
+ PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
1763
+ ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) ||
1764
+ '',
1765
+ ...((!chatLog
1766
+ ? initialContextVars
1767
+ : chatLog.lines[chatLog.lines.length - 1].contextVars) || {}),
1768
+ },
1769
+ initialQuestion: chatLog ? undefined : initialQuestion,
1770
+ birthDate: birth,
1771
+ additionalInfo: {
1772
+ ...(additionalInfo || {}),
1773
+ loginToken: resolveLoginToken(),
1774
+ language: ((_h = userLang !== null && userLang !== void 0 ? userLang : (_g = (_f = memori.culture) === null || _f === void 0 ? void 0 : _f.split('-')) === null || _g === void 0 ? void 0 : _g[0]) !== null && _h !== void 0 ? _h : 'IT').toLowerCase(),
1775
+ timeZoneOffset: new Date().getTimezoneOffset().toString(),
1776
+ },
1777
+ });
1778
+ if (session === null || session === void 0 ? void 0 : session.dialogState) {
1779
+ if (!chatLog) {
1780
+ setHistory([]);
1781
+ await translateAndSpeak(session.dialogState, userLang);
1782
+ setHasUserActivatedSpeak(true);
1783
+ setClickedStart(false);
1784
+ }
1785
+ else {
1786
+ const messages = chatLog.lines.map((l, i) => {
1787
+ var _a, _b;
1788
+ return ({
1789
+ text: l.text,
1790
+ media: (_b = (_a = l.media) === null || _a === void 0 ? void 0 : _a.filter(m => constants_1.allowedMediaTypes.includes(m.mimeType))) === null || _b === void 0 ? void 0 : _b.map(m => ({
1791
+ mediumID: `${i}-${m.mimeType}`,
1526
1792
  ...m,
1527
- originalText: m.text,
1528
- text: (await (0, translations_1.getTranslation)(m.text, userLang, language, baseUrl)).text,
1529
- };
1530
- }));
1531
- }
1532
- catch (e) {
1533
- console.error('[onClickStart] Error translating messages:', e);
1793
+ })),
1794
+ fromUser: l.inbound,
1795
+ llmUsage: l.llmUsage,
1796
+ timestamp: l.timestamp,
1797
+ emitter: l.emitter,
1798
+ initial: i === 0,
1799
+ });
1800
+ });
1801
+ translatedMessages = messages !== null && messages !== void 0 ? messages : [];
1802
+ if (language.toUpperCase() !== userLang.toUpperCase() &&
1803
+ isMultilanguageEnabled) {
1804
+ try {
1805
+ translatedMessages = await Promise.all(messages.map(async (m) => {
1806
+ if ('originalText' in m && m.originalText) {
1807
+ return m;
1808
+ }
1809
+ return {
1810
+ ...m,
1811
+ originalText: m.text,
1812
+ text: (await (0, translations_1.getTranslation)(m.text, userLang, language, baseUrl)).text,
1813
+ };
1814
+ }));
1815
+ }
1816
+ catch (_u) {
1817
+ }
1534
1818
  }
1819
+ setHistory(translatedMessages);
1820
+ translateDialogState(session.dialogState, userLang, undefined, true).finally(() => {
1821
+ setHasUserActivatedSpeak(true);
1822
+ setClickedStart(false);
1823
+ });
1535
1824
  }
1536
- setHistory(translatedMessages);
1537
- translateDialogState(session.dialogState, userLang, undefined, true).finally(() => {
1538
- setHasUserActivatedSpeak(true);
1539
- });
1825
+ }
1826
+ else if ((session === null || session === void 0 ? void 0 : session.resultCode) === 0) {
1827
+ sessionStartingRef.current = false;
1828
+ await onClickStart(session || undefined);
1829
+ }
1830
+ else {
1831
+ setLoading(false);
1832
+ setClickedStart(false);
1540
1833
  }
1541
1834
  }
1542
- else if ((session === null || session === void 0 ? void 0 : session.resultCode) === 0) {
1543
- await onClickStart(session || undefined);
1544
- }
1545
- else {
1546
- setLoading(false);
1835
+ finally {
1836
+ sessionStartingRef.current = false;
1547
1837
  }
1548
1838
  return;
1549
1839
  }
@@ -1552,9 +1842,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1552
1842
  const { currentState, ...response } = await getSession(sessionID);
1553
1843
  if (response.resultCode !== 0 || !currentState) {
1554
1844
  const { chatLogs } = await getSessionChatLogs(sessionID, sessionID);
1555
- setGotErrorInOpening(true);
1556
1845
  setSessionId(undefined);
1557
- setClickedStart(false);
1558
1846
  await onClickStart(undefined, true, chatLogs === null || chatLogs === void 0 ? void 0 : chatLogs[0]);
1559
1847
  return;
1560
1848
  }
@@ -1566,21 +1854,22 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1566
1854
  const session = await changeTag(memori.engineMemoriID, sessionID, personification.tag, personification.pin);
1567
1855
  if (session && session.resultCode === 0) {
1568
1856
  await translateAndSpeak(session.currentState, userLang);
1857
+ setClickedStart(false);
1569
1858
  }
1570
1859
  else {
1571
1860
  throw new Error('No session');
1572
1861
  }
1573
1862
  }
1574
- catch (e) {
1575
- console.error('[onClickStart] Error changing tag:', e);
1863
+ catch (_v) {
1576
1864
  reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, personification.tag, personification.pin, {
1577
1865
  LANG: userLang,
1578
- PATHNAME: (_l = window.location.pathname) === null || _l === void 0 ? void 0 : _l.toUpperCase(),
1579
- ROUTE: ((_p = (_o = (_m = window.location.pathname) === null || _m === void 0 ? void 0 : _m.split('/')) === null || _o === void 0 ? void 0 : _o.pop()) === null || _p === void 0 ? void 0 : _p.toUpperCase()) ||
1866
+ PATHNAME: (_j = window.location.pathname) === null || _j === void 0 ? void 0 : _j.toUpperCase(),
1867
+ ROUTE: ((_m = (_l = (_k = window.location.pathname) === null || _k === void 0 ? void 0 : _k.split('/')) === null || _l === void 0 ? void 0 : _l.pop()) === null || _m === void 0 ? void 0 : _m.toUpperCase()) ||
1580
1868
  '',
1581
1869
  ...(initialContextVars || {}),
1582
1870
  }, initialQuestion, birth).then(() => {
1583
1871
  setHasUserActivatedSpeak(true);
1872
+ setClickedStart(false);
1584
1873
  });
1585
1874
  }
1586
1875
  }
@@ -1593,6 +1882,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1593
1882
  const session = await changeTag(memori.engineMemoriID, sessionID, constants_1.anonTag);
1594
1883
  if (session && session.resultCode === 0) {
1595
1884
  await translateAndSpeak(session.currentState, userLang);
1885
+ setClickedStart(false);
1596
1886
  }
1597
1887
  else {
1598
1888
  throw new Error('No session');
@@ -1601,19 +1891,20 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1601
1891
  catch (e) {
1602
1892
  reopenSession(true, memori === null || memori === void 0 ? void 0 : memori.secretToken, undefined, undefined, undefined, {
1603
1893
  LANG: userLang,
1604
- PATHNAME: (_q = window.location.pathname) === null || _q === void 0 ? void 0 : _q.toUpperCase(),
1605
- ROUTE: ((_t = (_s = (_r = window.location.pathname) === null || _r === void 0 ? void 0 : _r.split('/')) === null || _s === void 0 ? void 0 : _s.pop()) === null || _t === void 0 ? void 0 : _t.toUpperCase()) ||
1894
+ PATHNAME: (_o = window.location.pathname) === null || _o === void 0 ? void 0 : _o.toUpperCase(),
1895
+ ROUTE: ((_r = (_q = (_p = window.location.pathname) === null || _p === void 0 ? void 0 : _p.split('/')) === null || _q === void 0 ? void 0 : _q.pop()) === null || _r === void 0 ? void 0 : _r.toUpperCase()) ||
1606
1896
  '',
1607
1897
  ...(initialContextVars || {}),
1608
1898
  }, initialQuestion, birth).then(() => {
1609
1899
  setHasUserActivatedSpeak(true);
1900
+ setClickedStart(false);
1610
1901
  });
1611
1902
  }
1612
1903
  }
1613
1904
  else {
1614
1905
  try {
1615
1906
  const { chatLogs } = await getSessionChatLogs(sessionID, sessionID);
1616
- const messages = (_u = chatLogs === null || chatLogs === void 0 ? void 0 : chatLogs[0]) === null || _u === void 0 ? void 0 : _u.lines.map((l, i) => {
1907
+ const messages = (_s = chatLogs === null || chatLogs === void 0 ? void 0 : chatLogs[0]) === null || _s === void 0 ? void 0 : _s.lines.map((l, i) => {
1617
1908
  var _a, _b;
1618
1909
  return ({
1619
1910
  text: l.text,
@@ -1638,31 +1929,28 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1638
1929
  text: (await (0, translations_1.getTranslation)(m.text, userLang, language, baseUrl)).text,
1639
1930
  })));
1640
1931
  }
1641
- catch (e) {
1642
- console.error('[onClickStart] Error translating messages:', e);
1932
+ catch (_w) {
1643
1933
  }
1644
1934
  }
1645
1935
  setHistory(translatedMessages);
1646
1936
  }
1647
- catch (e) {
1648
- console.error('[onClickStart] Error retrieving chat logs:', e);
1937
+ catch (_x) {
1649
1938
  }
1650
1939
  if ((!!(translatedMessages === null || translatedMessages === void 0 ? void 0 : translatedMessages.length) && translatedMessages.length > 1) ||
1651
1940
  !initialQuestion) {
1652
1941
  setHasUserActivatedSpeak(true);
1942
+ setClickedStart(false);
1653
1943
  await translateAndSpeak(currentState, userLang, undefined, !!(translatedMessages === null || translatedMessages === void 0 ? void 0 : translatedMessages.length));
1654
1944
  }
1655
1945
  else {
1656
- console.log('[onClickStart] Starting with initial question');
1657
1946
  translatedMessages = [];
1658
1947
  setHistory([]);
1659
- setMemoriTyping(true);
1660
1948
  const placeSpec = getPlaceSpecForEnterText(position);
1661
- const response = await postTextEnteredEvent({
1949
+ const response = await postEnterTextAsync({
1662
1950
  sessionId: sessionID,
1663
1951
  text: initialQuestion,
1664
1952
  ...(memori.needsDateTime && {
1665
- dateUTC: (_v = luxon_1.DateTime.utc().toISO()) !== null && _v !== void 0 ? _v : undefined,
1953
+ dateUTC: (_t = luxon_1.DateTime.utc().toISO()) !== null && _t !== void 0 ? _t : undefined,
1666
1954
  }),
1667
1955
  ...(placeSpec !== undefined && { place: placeSpec }),
1668
1956
  });
@@ -1678,51 +1966,93 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1678
1966
  date: new Date().toISOString(),
1679
1967
  },
1680
1968
  ]);
1681
- setMemoriTyping(false);
1682
1969
  return;
1683
1970
  }
1684
- await translateAndSpeak((_w = response.currentState) !== null && _w !== void 0 ? _w : currentState, userLang, undefined, false);
1971
+ const onClickStartCorrelationID = readCorrelationID(response);
1972
+ if (response.resultCode === 0 && onClickStartCorrelationID) {
1973
+ setMemoriTyping(true);
1974
+ try {
1975
+ const natsEvent = await waitForEnterTextNatsResponse(onClickStartCorrelationID);
1976
+ if (natsEvent.resultCode === 0 && natsEvent.currentState) {
1977
+ await translateAndSpeak(natsEvent.currentState, userLang, undefined, false);
1978
+ setClickedStart(false);
1979
+ }
1980
+ }
1981
+ catch (err) {
1982
+ logWidgetError('onClickStart NATS wait failed', err);
1983
+ setMemoriTyping(false);
1984
+ setTypingText(undefined);
1985
+ }
1986
+ }
1987
+ else if (response.resultCode === 0) {
1988
+ logWidgetError('onClickStart enter-text missing correlationID', response);
1989
+ }
1685
1990
  }
1686
1991
  }
1687
1992
  }
1688
1993
  else {
1689
1994
  setHistory([]);
1690
1995
  await translateAndSpeak(dialogState, userLang);
1996
+ setClickedStart(false);
1691
1997
  }
1692
1998
  }, [memoriPwd, memori, memoriTokens, birthDate, sessionId, userLang, position]);
1693
1999
  const setPositionPopoverOpen = (0, react_1.useCallback)((open) => {
1694
- setPositionPopoverOpenState(open);
1695
- if (!open && autoStart) {
1696
- onClickStart();
1697
- }
2000
+ setPositionPopoverOpenState(wasOpen => {
2001
+ if ((0, positionPopover_1.shouldRestartSessionOnPositionPopoverClose)(wasOpen, open, autoStart)) {
2002
+ queueMicrotask(() => {
2003
+ onClickStart();
2004
+ });
2005
+ }
2006
+ return open;
2007
+ });
1698
2008
  }, [autoStart, onClickStart]);
1699
2009
  (0, react_1.useEffect)(() => {
1700
- if (!clickedStart && autoStart && selectedLayout !== 'HIDDEN_CHAT') {
2010
+ if (!clickedStart &&
2011
+ !sessionStartingRef.current &&
2012
+ !sessionId &&
2013
+ autoStart &&
2014
+ selectedLayout !== 'HIDDEN_CHAT' &&
2015
+ (!needsCredits || hasEnoughCredits)) {
1701
2016
  onClickStart();
1702
2017
  }
1703
- }, [clickedStart, autoStart, selectedLayout]);
2018
+ }, [
2019
+ clickedStart,
2020
+ autoStart,
2021
+ selectedLayout,
2022
+ sessionId,
2023
+ needsCredits,
2024
+ hasEnoughCredits,
2025
+ ]);
1704
2026
  (0, react_1.useEffect)(() => {
2027
+ var _a;
1705
2028
  const targetNode = document.querySelector(`memori-client[memoriname="${memori.name}"]`) ||
1706
2029
  document.querySelector(`memori-client[memoriid="${memori.memoriID}"]`) ||
1707
2030
  document.querySelector('memori-client');
1708
2031
  if (!targetNode) {
1709
2032
  return;
1710
2033
  }
2034
+ const propsToken = (_a = additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _a !== void 0 ? _a : authToken;
2035
+ const initialDomToken = targetNode.getAttribute('authtoken') || undefined;
2036
+ if (initialDomToken && !propsToken) {
2037
+ setLoginToken(initialDomToken);
2038
+ userTokenRef.current = initialDomToken;
2039
+ }
2040
+ const applyAuthTokenFromElement = (element) => {
2041
+ var _a;
2042
+ const clientNode = element.nodeName === 'MEMORI-CLIENT'
2043
+ ? element
2044
+ : (_a = element.closest('memori-client')) !== null && _a !== void 0 ? _a : element.parentElement;
2045
+ const token = (clientNode === null || clientNode === void 0 ? void 0 : clientNode.getAttribute('authtoken')) || undefined;
2046
+ setLoginToken(token);
2047
+ userTokenRef.current = token;
2048
+ };
1711
2049
  const config = { attributes: true, childList: false, subtree: false };
1712
- const callback = (mutationList, _observer) => {
1713
- var _a, _b, _c;
2050
+ const callback = mutationList => {
2051
+ var _a;
1714
2052
  for (const mutation of mutationList) {
1715
2053
  if (mutation.type === 'attributes' &&
1716
2054
  ((_a = mutation.attributeName) === null || _a === void 0 ? void 0 : _a.toLowerCase()) === 'authtoken') {
1717
- if (mutation.target.nodeName === 'MEMORI-CLIENT') {
1718
- setLoginToken(mutation.target.getAttribute('authtoken') || undefined);
1719
- userToken = mutation.target.getAttribute('authtoken') || undefined;
1720
- }
1721
- else {
1722
- setLoginToken(((_c = (_b = mutation.target) === null || _b === void 0 ? void 0 : _b.parentElement) === null || _c === void 0 ? void 0 : _c.getAttribute('authtoken')) ||
1723
- undefined);
1724
- userToken = mutation.target.getAttribute('authtoken') || undefined;
1725
- }
2055
+ applyAuthTokenFromElement(mutation.target);
1726
2056
  }
1727
2057
  }
1728
2058
  };
@@ -1731,7 +2061,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1731
2061
  return () => {
1732
2062
  observer.disconnect();
1733
2063
  };
1734
- }, []);
2064
+ }, [memori.name, memori.memoriID, additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken, authToken]);
1735
2065
  const [experts, setExperts] = (0, react_1.useState)();
1736
2066
  const fetchExperts = (0, react_1.useCallback)(async () => {
1737
2067
  if (!sessionId || !(memori === null || memori === void 0 ? void 0 : memori.enableBoardOfExperts))
@@ -1741,12 +2071,8 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1741
2071
  if (resp.resultCode === 0) {
1742
2072
  setExperts(experts);
1743
2073
  }
1744
- else {
1745
- console.warn('Error fetching experts', resp);
1746
- }
1747
2074
  }
1748
- catch (err) {
1749
- console.warn(err);
2075
+ catch (_a) {
1750
2076
  }
1751
2077
  }, [sessionId, memori === null || memori === void 0 ? void 0 : memori.enableBoardOfExperts]);
1752
2078
  (0, react_1.useEffect)(() => {
@@ -1756,11 +2082,26 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1756
2082
  !!loginToken &&
1757
2083
  !!(user === null || user === void 0 ? void 0 : user.userID) &&
1758
2084
  (user === null || user === void 0 ? void 0 : user.pAndCUAccepted);
1759
- const needsCredits = tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation;
1760
- const [hasEnoughCredits, setHasEnoughCredits] = (0, react_1.useState)(true);
1761
- const checkCredits = (0, react_1.useCallback)(async () => {
2085
+ const handleNotEnoughCredits = (0, react_1.useCallback)(() => {
2086
+ setHasEnoughCredits(false);
2087
+ setAuthModalState(null);
2088
+ add((0, ui_1.createAlertOptions)({
2089
+ description: t('notEnoughCredits'),
2090
+ severity: 'error',
2091
+ }));
2092
+ }, [add, t]);
2093
+ const checkCredits = (0, react_1.useCallback)(async (options) => {
1762
2094
  if (!(tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation))
1763
- return;
2095
+ return true;
2096
+ if (!ownerUserID && !ownerUserName) {
2097
+ if (options === null || options === void 0 ? void 0 : options.notify) {
2098
+ handleNotEnoughCredits();
2099
+ }
2100
+ else {
2101
+ setHasEnoughCredits(false);
2102
+ }
2103
+ return false;
2104
+ }
1764
2105
  try {
1765
2106
  const resp = await (0, credits_1.getCredits)({
1766
2107
  operation: deepThoughtEnabled
@@ -1773,22 +2114,36 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1773
2114
  });
1774
2115
  if (resp.enough) {
1775
2116
  setHasEnoughCredits(true);
2117
+ return true;
1776
2118
  }
1777
2119
  else {
1778
- setHasEnoughCredits(false);
1779
- console.warn('Not enough credits. Required:', resp.required);
2120
+ if (options === null || options === void 0 ? void 0 : options.notify) {
2121
+ handleNotEnoughCredits();
2122
+ }
2123
+ else {
2124
+ setHasEnoughCredits(false);
2125
+ }
2126
+ return false;
1780
2127
  }
1781
2128
  }
1782
- catch (e) {
1783
- let err = e;
1784
- console.debug(err);
2129
+ catch (err) {
2130
+ logWidgetError('checkCredits failed', err);
2131
+ return true;
1785
2132
  }
1786
- }, [tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation, deepThoughtEnabled]);
2133
+ }, [
2134
+ baseUrl,
2135
+ deepThoughtEnabled,
2136
+ handleNotEnoughCredits,
2137
+ ownerUserID,
2138
+ ownerUserName,
2139
+ tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation,
2140
+ tenantID,
2141
+ ]);
1787
2142
  (0, react_1.useEffect)(() => {
1788
2143
  if (tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation) {
1789
2144
  checkCredits();
1790
2145
  }
1791
- }, [tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation, deepThoughtEnabled]);
2146
+ }, [tenant === null || tenant === void 0 ? void 0 : tenant.billingDelegation, deepThoughtEnabled, checkCredits]);
1792
2147
  (0, react_1.useEffect)(() => {
1793
2148
  if (__WEBCOMPONENT__)
1794
2149
  return;
@@ -1807,16 +2162,16 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1807
2162
  ? selectedLayout !== 'TOTEM' && selectedLayout !== 'WEBSITE_ASSISTANT'
1808
2163
  : !showOnlyLastMessages;
1809
2164
  const canShowLoginButton = !(tenant === null || tenant === void 0 ? void 0 : tenant.ssoLogin) &&
1810
- ((_w = showLogin !== null && showLogin !== void 0 ? showLogin : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showLogin) !== null && _w !== void 0 ? _w : memori.requireLoginToken);
2165
+ ((_y = showLogin !== null && showLogin !== void 0 ? showLogin : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showLogin) !== null && _y !== void 0 ? _y : memori.requireLoginToken);
1811
2166
  const headerProps = {
1812
2167
  memori: {
1813
2168
  ...memori,
1814
- ownerUserID: (_y = (_x = memori.ownerUserID) !== null && _x !== void 0 ? _x : ownerUserID) !== null && _y !== void 0 ? _y : undefined,
2169
+ ownerUserID: (_0 = (_z = memori.ownerUserID) !== null && _z !== void 0 ? _z : ownerUserID) !== null && _0 !== void 0 ? _0 : undefined,
1815
2170
  },
1816
2171
  apiClient: client,
1817
2172
  tenant,
1818
2173
  history,
1819
- showShare: (_z = showShare !== null && showShare !== void 0 ? showShare : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showShare) !== null && _z !== void 0 ? _z : true,
2174
+ showShare: (_1 = showShare !== null && showShare !== void 0 ? showShare : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showShare) !== null && _1 !== void 0 ? _1 : true,
1820
2175
  position,
1821
2176
  layout: selectedLayout,
1822
2177
  additionalSettings,
@@ -1826,18 +2181,18 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1826
2181
  setShowSettingsDrawer,
1827
2182
  setShowKnownFactsDrawer,
1828
2183
  setShowExpertsDrawer,
1829
- enableAudio: (_0 = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _0 !== void 0 ? _0 : true,
2184
+ enableAudio: (_2 = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _2 !== void 0 ? _2 : true,
1830
2185
  speakerMuted: speakerMuted !== null && speakerMuted !== void 0 ? speakerMuted : false,
1831
2186
  setSpeakerMuted: (mute) => {
1832
2187
  toggleMute(mute);
1833
2188
  },
1834
2189
  setShowChatHistoryDrawer,
1835
- showSettings: (_1 = showSettings !== null && showSettings !== void 0 ? showSettings : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showSettings) !== null && _1 !== void 0 ? _1 : true,
1836
- showChatHistory: (_2 = showChatHistory !== null && showChatHistory !== void 0 ? showChatHistory : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showChatHistory) !== null && _2 !== void 0 ? _2 : true,
2190
+ showSettings: (_3 = showSettings !== null && showSettings !== void 0 ? showSettings : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showSettings) !== null && _3 !== void 0 ? _3 : true,
2191
+ showChatHistory: (_4 = showChatHistory !== null && showChatHistory !== void 0 ? showChatHistory : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showChatHistory) !== null && _4 !== void 0 ? _4 : true,
1837
2192
  showMessageConsumption: enableMessageConsumption,
1838
2193
  hasUserActivatedSpeak,
1839
2194
  showReload: selectedLayout === 'TOTEM',
1840
- showClear: (_3 = showClear !== null && showClear !== void 0 ? showClear : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showClear) !== null && _3 !== void 0 ? _3 : false,
2195
+ showClear: (_5 = showClear !== null && showClear !== void 0 ? showClear : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showClear) !== null && _5 !== void 0 ? _5 : false,
1841
2196
  clearHistory: () => setHistory(h => h.slice(-1)),
1842
2197
  showLogin: canShowLoginButton,
1843
2198
  setShowLoginDrawer,
@@ -1852,7 +2207,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1852
2207
  setShowLoginDrawer(false);
1853
2208
  setUser(undefined);
1854
2209
  setLoginToken(undefined);
1855
- userToken = undefined;
2210
+ userTokenRef.current = undefined;
1856
2211
  (0, configuration_1.removeLocalConfig)('loginToken');
1857
2212
  });
1858
2213
  },
@@ -1868,7 +2223,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1868
2223
  hasUserActivatedSpeak,
1869
2224
  isPlayingAudio: isPlayingAudio &&
1870
2225
  !speakerMuted &&
1871
- ((_4 = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _4 !== void 0 ? _4 : true),
2226
+ ((_6 = enableAudio !== null && enableAudio !== void 0 ? enableAudio : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.enableAudio) !== null && _6 !== void 0 ? _6 : true),
1872
2227
  loading: !!memoriTyping,
1873
2228
  baseUrl,
1874
2229
  apiUrl: client.constants.BACKEND_URL,
@@ -1898,7 +2253,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1898
2253
  notEnoughCredits: needsCredits && !hasEnoughCredits,
1899
2254
  showLogin: canShowLoginButton,
1900
2255
  setShowLoginDrawer,
1901
- showChatHistory: (_5 = showChatHistory !== null && showChatHistory !== void 0 ? showChatHistory : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showChatHistory) !== null && _5 !== void 0 ? _5 : true,
2256
+ showChatHistory: (_7 = showChatHistory !== null && showChatHistory !== void 0 ? showChatHistory : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showChatHistory) !== null && _7 !== void 0 ? _7 : true,
1902
2257
  setShowChatHistoryDrawer,
1903
2258
  user,
1904
2259
  };
@@ -1908,7 +2263,7 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1908
2263
  tenant,
1909
2264
  translateTo: isMultilanguageEnabled &&
1910
2265
  userLang.toUpperCase() !==
1911
- ((_10 = ((_9 = (_8 = (_7 = (_6 = memori.culture) === null || _6 === void 0 ? void 0 : _6.split('-')) === null || _7 === void 0 ? void 0 : _7[0]) !== null && _8 !== void 0 ? _8 : i18n.language) !== null && _9 !== void 0 ? _9 : 'IT')) === null || _10 === void 0 ? void 0 : _10.toUpperCase())
2266
+ ((_12 = ((_11 = (_10 = (_9 = (_8 = memori.culture) === null || _8 === void 0 ? void 0 : _8.split('-')) === null || _9 === void 0 ? void 0 : _9[0]) !== null && _10 !== void 0 ? _10 : i18n.language) !== null && _11 !== void 0 ? _11 : 'IT')) === null || _12 === void 0 ? void 0 : _12.toUpperCase())
1912
2267
  ? userLang
1913
2268
  : undefined,
1914
2269
  baseUrl,
@@ -1916,9 +2271,9 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1916
2271
  layout,
1917
2272
  memoriTyping,
1918
2273
  typingText,
1919
- showTypingText: (_11 = showTypingText !== null && showTypingText !== void 0 ? showTypingText : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showTypingText) !== null && _11 !== void 0 ? _11 : false,
2274
+ showTypingText: (_13 = showTypingText !== null && showTypingText !== void 0 ? showTypingText : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.showTypingText) !== null && _13 !== void 0 ? _13 : false,
1920
2275
  history: showFullHistory ? history : history.slice(-2),
1921
- authToken: (_13 = (_12 = loginToken !== null && loginToken !== void 0 ? loginToken : userToken) !== null && _12 !== void 0 ? _12 : additionalInfo === null || additionalInfo === void 0 ? void 0 : additionalInfo.loginToken) !== null && _13 !== void 0 ? _13 : authToken,
2276
+ authToken: resolveLoginToken(),
1922
2277
  dialogState: currentDialogState,
1923
2278
  pushMessage,
1924
2279
  simulateUserPrompt,
@@ -1968,8 +2323,9 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1968
2323
  maxTotalMessagePayload,
1969
2324
  maxTextareaCharacters,
1970
2325
  isChatlogPanel: (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.artifactChatLogPanel) === true,
2326
+ globalBackground: globalBackground || undefined,
1971
2327
  };
1972
- const integrationBackground = integration && globalBackgroundUrl ? ((0, jsx_runtime_1.jsx)("div", { className: "memori--global-background", children: (0, jsx_runtime_1.jsx)("div", { className: "memori--global-background-image", style: { backgroundImage: globalBackgroundUrl } }) })) : ((0, jsx_runtime_1.jsx)("div", { className: "memori--global-background no-background-image" }));
2328
+ const integrationBackground = ((0, jsx_runtime_1.jsx)("div", { className: "memori--global-background no-background-image" }));
1973
2329
  const integrationStyle = integration &&
1974
2330
  (Object.keys(integrationProperties).length > 0 ||
1975
2331
  (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.blurBackground)) ? ((0, jsx_runtime_1.jsx)("style", { dangerouslySetInnerHTML: { __html: integrationStylesheet } })) : null;
@@ -1989,7 +2345,12 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1989
2345
  : selectedLayout === 'ZOOMED_FULL_BODY'
1990
2346
  ? ZoomedFullBody_1.default
1991
2347
  : FullPage_1.default;
1992
- return ((0, jsx_runtime_1.jsxs)("div", { ref: widgetRootRef, className: (0, classnames_1.default)('memori', 'memori-widget', `memori-layout-${String(selectedLayout).toLowerCase()}`, `memori-controls-${String(controlsPosition).toLowerCase()}`, `memori--avatar-${(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatar) || 'default'}`, {
2348
+ const widgetTheme = (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.theme) === 'light' || (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.theme) === 'dark'
2349
+ ? integrationConfig.theme
2350
+ : isDarkTheme
2351
+ ? 'dark'
2352
+ : undefined;
2353
+ return ((0, jsx_runtime_1.jsx)("div", { ref: setWidgetRootEl, className: (0, classnames_1.default)('memori', 'memori-widget', `memori-layout-${String(selectedLayout).toLowerCase()}`, `memori-controls-${String(controlsPosition).toLowerCase()}`, `memori--avatar-${(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatar) || 'default'}`, {
1993
2354
  'memori--auto-start': autoStart,
1994
2355
  'memori--preview': preview,
1995
2356
  'memori--embed': embed,
@@ -1998,138 +2359,135 @@ const MemoriWidget = ({ memori, memoriConfigs, ownerUserID, ownerUserName, tenan
1998
2359
  'memori--active': hasUserActivatedSpeak,
1999
2360
  'memori--hide-emissions': hideEmissions,
2000
2361
  'memori--has-active-session': !!sessionId,
2001
- }), "data-theme": (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.theme) === 'light' ||
2002
- (integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.theme) === 'dark'
2003
- ? integrationConfig.theme
2004
- : undefined, "data-memori-name": memori === null || memori === void 0 ? void 0 : memori.name, "data-memori-id": memori === null || memori === void 0 ? void 0 : memori.engineMemoriID, "data-memori-secondary-id": memori === null || memori === void 0 ? void 0 : memori.memoriID, "data-memori-session-id": sessionId, "data-memori-integration": integration === null || integration === void 0 ? void 0 : integration.integrationID, "data-memori-engine-state": JSON.stringify({
2362
+ }), "data-theme": widgetTheme, "data-memori-name": memori === null || memori === void 0 ? void 0 : memori.name, "data-memori-id": memori === null || memori === void 0 ? void 0 : memori.engineMemoriID, "data-memori-secondary-id": memori === null || memori === void 0 ? void 0 : memori.memoriID, "data-memori-session-id": sessionId, "data-memori-integration": integration === null || integration === void 0 ? void 0 : integration.integrationID, "data-memori-engine-state": JSON.stringify({
2005
2363
  ...currentDialogState,
2006
2364
  sessionID: sessionId,
2007
- }), style: { height }, children: [(0, jsx_runtime_1.jsx)(Layout, { Header: Header_1.default, headerProps: headerProps, Avatar: Avatar_1.default, avatarProps: avatarProps, Chat: Chat_1.default, chatProps: chatProps, StartPanel: StartPanel_1.default, startPanelProps: startPanelProps, integrationStyle: integrationStyle, integrationBackground: integrationBackground, poweredBy: poweredBy, autoStart: autoStart, sessionId: sessionId, hasUserActivatedSpeak: hasUserActivatedSpeak, loading: loading, avatar3dHidden: avatar3dHidden !== null && avatar3dHidden !== void 0 ? avatar3dHidden : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatar_3d_hidden }), (0, jsx_runtime_1.jsx)(ArtifactAPI_1.ArtifactAPIBridge, { pushMessage: (message) => {
2008
- setHistory(history => {
2009
- if (!history.length)
2010
- return history;
2011
- const lastMessage = history[history.length - 1];
2012
- if (!lastMessage || lastMessage.fromUser)
2013
- return history;
2014
- const updatedLastMessage = {
2015
- ...lastMessage,
2016
- text: lastMessage.text + message.text,
2017
- };
2018
- return [...history.slice(0, -1), updatedLastMessage];
2019
- });
2020
- } }), (0, jsx_runtime_1.jsx)("audio", { id: "memori-audio", style: { display: 'none' }, src: "https://aisuru.com/intro.mp3" }), isClient && ((0, jsx_runtime_1.jsx)(Auth_1.default, { withModal: true, pwdOrTokens: authModalState, openModal: !!authModalState, setPwdOrTokens: setAuthModalState, showTokens: memori.privacyType === 'SECRET', onFinish: (values) => {
2021
- var _a, _b, _c, _d;
2022
- if (values['password'])
2023
- setMemoriPwd(values['password']);
2024
- if (values['password'])
2025
- memoriPassword = values['password'];
2026
- if (values['tokens'])
2027
- setMemoriTokens(values['tokens']);
2028
- return reopenSession(!sessionId, values['password'], values['tokens'], personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2029
- LANG: userLang,
2030
- PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2031
- ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) ||
2032
- '',
2033
- ...(initialContextVars || {}),
2034
- }, initialQuestion, birthDate)
2035
- .then(state => {
2036
- if (!(state === null || state === void 0 ? void 0 : state.sessionID)) {
2037
- throw new Error('AUTH_FAILED');
2038
- }
2039
- setAuthModalState(null);
2040
- if (state === null || state === void 0 ? void 0 : state.dialogState) {
2041
- setHasUserActivatedSpeak(true);
2042
- }
2043
- else {
2044
- onClickStart(state);
2045
- }
2046
- })
2047
- .catch(error => {
2048
- if (!(error instanceof Error) ||
2049
- error.message !== 'AUTH_FAILED') {
2050
- setGotErrorInOpening(true);
2051
- }
2052
- throw error;
2053
- });
2054
- }, minimumNumberOfRecoveryTokens: (_17 = memori === null || memori === void 0 ? void 0 : memori.minimumNumberOfRecoveryTokens) !== null && _17 !== void 0 ? _17 : 1 })), isClient && ((0, jsx_runtime_1.jsx)(AgeVerificationModal_1.default, { visible: showAgeVerification, minAge: minAge, onClose: birthDate => {
2055
- var _a, _b, _c, _d;
2056
- if (birthDate) {
2057
- setBirthDate(birthDate);
2058
- (0, configuration_1.setLocalConfig)('birthDate', birthDate);
2059
- reopenSession(!sessionId, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), memoriTokens, personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2060
- LANG: userLang,
2061
- PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2062
- ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
2063
- ...(initialContextVars || {}),
2064
- }, initialQuestion, birthDate)
2065
- .then(state => {
2066
- setShowAgeVerification(false);
2067
- setAuthModalState(null);
2068
- onClickStart(state || undefined);
2069
- })
2070
- .catch(() => {
2071
- setShowAgeVerification(false);
2072
- setGotErrorInOpening(true);
2073
- });
2074
- }
2075
- else {
2076
- setShowAgeVerification(false);
2077
- setClickedStart(false);
2078
- }
2079
- } })), showSettingsDrawer && ((0, jsx_runtime_1.jsx)(SettingsDrawer_1.default, { layout: selectedLayout, open: !!showSettingsDrawer, onClose: () => setShowSettingsDrawer(false), microphoneMode: continuousSpeech ? 'CONTINUOUS' : 'HOLD_TO_TALK', continuousSpeechTimeout: continuousSpeechTimeout, setMicrophoneMode: mode => setContinuousSpeech(mode === 'CONTINUOUS'), setContinuousSpeechTimeout: setContinuousSpeechTimeout, controlsPosition: controlsPosition, setControlsPosition: setControlsPosition, hideEmissions: hideEmissions, setHideEmissions: setHideEmissions, avatarType: avatarType, setAvatarType: setAvatarType, enablePositionControls: enablePositionControls, setEnablePositionControls: setEnablePositionControls, isAvatar3d: !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatarURL), additionalSettings: additionalSettings, speakerMuted: speakerMuted })), showChatHistoryDrawer && ((0, jsx_runtime_1.jsx)(ChatHistory_1.default, { open: !!showChatHistoryDrawer, onClose: () => setShowChatHistoryDrawer(false), resumeSession: chatLog => {
2080
- setChatLogID(chatLog.chatLogID);
2081
- onClickStart(undefined, false, chatLog);
2082
- setShowChatHistoryDrawer(false);
2083
- }, apiClient: client, sessionId: sessionId || '', memori: memori, baseUrl: baseUrl, history: history, apiUrl: client.constants.BACKEND_URL, loginToken: loginToken, language: language, userLang: userLang, isMultilanguageEnabled: isMultilanguageEnabled })), showKnownFactsDrawer && sessionId && ((0, jsx_runtime_1.jsx)(KnownFacts_1.default, { apiClient: client, memori: memori, sessionID: sessionId, visible: showKnownFactsDrawer, closeDrawer: () => setShowKnownFactsDrawer(false) })), showExpertsDrawer && !!experts && ((0, jsx_runtime_1.jsx)(ExpertsDrawer_1.default, { apiUrl: client.constants.BACKEND_URL, baseUrl: baseUrl, tenant: tenant, experts: experts, open: showExpertsDrawer, onClose: () => setShowExpertsDrawer(false) })), showLoginDrawer && (tenant === null || tenant === void 0 ? void 0 : tenant.name) && ((0, jsx_runtime_1.jsx)(LoginDrawer_1.default, { tenant: tenant, apiClient: client, open: !!showLoginDrawer, user: user, loginToken: loginToken, onClose: () => setShowLoginDrawer(false), drawerClassName: selectedLayout === 'WEBSITE_ASSISTANT'
2084
- ? 'memori-drawer--above-website-assistant'
2085
- : undefined, onLogin: (user, token) => {
2086
- var _a, _b, _c, _d;
2087
- reopenSession(false, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), [], personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2088
- LANG: userLang,
2089
- PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2090
- ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) ||
2091
- '',
2092
- ...(initialContextVars || {}),
2093
- }, undefined, birthDate, { loginToken: token }, undefined, sessionId).then(state => {
2094
- var _a, _b;
2095
- setShowLoginDrawer(false);
2096
- setUser(user);
2097
- setLoginToken(token);
2098
- userToken = token;
2099
- (0, configuration_1.setLocalConfig)('loginToken', token);
2100
- if ((state === null || state === void 0 ? void 0 : state.sessionID) &&
2101
- state.sessionID !== sessionId &&
2102
- (state === null || state === void 0 ? void 0 : state.dialogState)) {
2103
- const username = (user === null || user === void 0 ? void 0 : user.userName) || t('login.user');
2104
- pushMessage({
2105
- text: '',
2106
- emitter: state.dialogState.emitter,
2107
- media: (_b = (_a = state.dialogState.emittedMedia) !== null && _a !== void 0 ? _a : state.dialogState.media) !== null && _b !== void 0 ? _b : [],
2108
- fromUser: false,
2109
- initial: t('login.successfullyLoggedIn', { username }),
2110
- contextVars: state.dialogState.contextVars,
2111
- date: state.dialogState.currentDate,
2112
- placeName: state.dialogState.currentPlaceName,
2113
- placeLatitude: state.dialogState.currentLatitude,
2114
- placeLongitude: state.dialogState.currentLongitude,
2115
- placeUncertaintyKm: state.dialogState.currentUncertaintyKm,
2116
- tag: state.dialogState.currentTag,
2117
- memoryTags: state.dialogState.memoryTags,
2118
- });
2119
- setCurrentDialogState(state.dialogState);
2120
- }
2121
- });
2122
- }, setUser: setUser, onLogout: () => {
2123
- if (!loginToken)
2124
- return;
2125
- client.backend.pwlUserLogout(loginToken).then(() => {
2126
- setShowLoginDrawer(false);
2127
- setUser(undefined);
2128
- setLoginToken(undefined);
2129
- userToken = undefined;
2130
- (0, configuration_1.removeLocalConfig)('loginToken');
2131
- });
2132
- } }))] }));
2365
+ }), style: { height }, children: (0, jsx_runtime_1.jsx)(ui_1.MemoriUIProvider, { container: widgetRootEl, theme: widgetTheme, children: (0, jsx_runtime_1.jsx)(widgetSurfaceContext_1.WidgetSurfaceProvider, { value: widgetSurfaceEl, children: (0, jsx_runtime_1.jsxs)("div", { ref: setWidgetSurfaceEl, className: "memori-widget__surface", children: [(0, jsx_runtime_1.jsx)(Layout, { Header: Header_1.default, headerProps: headerProps, Avatar: Avatar_1.default, avatarProps: avatarProps, Chat: Chat_1.default, chatProps: chatProps, StartPanel: StartPanel_1.default, startPanelProps: startPanelProps, integrationStyle: integrationStyle, integrationBackground: integrationBackground, poweredBy: poweredBy, autoStart: autoStart, sessionId: sessionId, hasUserActivatedSpeak: hasUserActivatedSpeak, loading: loading, avatar3dHidden: avatar3dHidden !== null && avatar3dHidden !== void 0 ? avatar3dHidden : integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatar_3d_hidden, totemContentMaxWidth: integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.totemContentMaxWidth }), (0, jsx_runtime_1.jsx)(ArtifactAPI_1.ArtifactAPIBridge, { pushMessage: (message) => {
2366
+ setHistory(history => {
2367
+ if (!history.length)
2368
+ return history;
2369
+ const lastMessage = history[history.length - 1];
2370
+ if (!lastMessage || lastMessage.fromUser)
2371
+ return history;
2372
+ const updatedLastMessage = {
2373
+ ...lastMessage,
2374
+ text: lastMessage.text + message.text,
2375
+ };
2376
+ return [...history.slice(0, -1), updatedLastMessage];
2377
+ });
2378
+ } }), (0, jsx_runtime_1.jsx)("audio", { id: "memori-audio", style: { display: 'none' }, src: "https://aisuru.com/intro.mp3" }), isClient && ((0, jsx_runtime_1.jsx)(Auth_1.default, { withModal: true, pwdOrTokens: authModalState, openModal: !!authModalState, setPwdOrTokens: setAuthModalState, showTokens: memori.privacyType === 'SECRET', onFinish: (values) => {
2379
+ var _a, _b, _c, _d;
2380
+ if (values['password'])
2381
+ setMemoriPwd(values['password']);
2382
+ if (values['password'])
2383
+ memoriPassword = values['password'];
2384
+ if (values['tokens'])
2385
+ setMemoriTokens(values['tokens']);
2386
+ return reopenSession(!sessionId, values['password'], values['tokens'], personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2387
+ LANG: userLang,
2388
+ PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2389
+ ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
2390
+ ...(initialContextVars || {}),
2391
+ }, initialQuestion, birthDate)
2392
+ .then(state => {
2393
+ if (!(state === null || state === void 0 ? void 0 : state.sessionID)) {
2394
+ throw new Error('AUTH_FAILED');
2395
+ }
2396
+ setAuthModalState(null);
2397
+ if (state === null || state === void 0 ? void 0 : state.dialogState) {
2398
+ setHasUserActivatedSpeak(true);
2399
+ }
2400
+ else {
2401
+ onClickStart(state);
2402
+ }
2403
+ })
2404
+ .catch(error => {
2405
+ if (!(error instanceof Error) ||
2406
+ error.message !== 'AUTH_FAILED') {
2407
+ setGotErrorInOpening(true);
2408
+ }
2409
+ throw error;
2410
+ });
2411
+ }, minimumNumberOfRecoveryTokens: (_17 = memori === null || memori === void 0 ? void 0 : memori.minimumNumberOfRecoveryTokens) !== null && _17 !== void 0 ? _17 : 1 })), isClient && ((0, jsx_runtime_1.jsx)(AgeVerificationModal_1.default, { visible: showAgeVerification, minAge: minAge, onClose: birthDate => {
2412
+ var _a, _b, _c, _d;
2413
+ if (birthDate) {
2414
+ setBirthDate(birthDate);
2415
+ (0, configuration_1.setLocalConfig)('birthDate', birthDate);
2416
+ reopenSession(!sessionId, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), memoriTokens, personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2417
+ LANG: userLang,
2418
+ PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2419
+ ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
2420
+ ...(initialContextVars || {}),
2421
+ }, initialQuestion, birthDate)
2422
+ .then(state => {
2423
+ setShowAgeVerification(false);
2424
+ setAuthModalState(null);
2425
+ onClickStart(state || undefined);
2426
+ })
2427
+ .catch(() => {
2428
+ setShowAgeVerification(false);
2429
+ setGotErrorInOpening(true);
2430
+ });
2431
+ }
2432
+ else {
2433
+ setShowAgeVerification(false);
2434
+ setClickedStart(false);
2435
+ }
2436
+ } })), showSettingsDrawer && ((0, jsx_runtime_1.jsx)(SettingsDrawer_1.default, { layout: selectedLayout, open: !!showSettingsDrawer, onClose: () => setShowSettingsDrawer(false), microphoneMode: continuousSpeech ? 'CONTINUOUS' : 'HOLD_TO_TALK', continuousSpeechTimeout: continuousSpeechTimeout, setMicrophoneMode: mode => setContinuousSpeech(mode === 'CONTINUOUS'), setContinuousSpeechTimeout: setContinuousSpeechTimeout, controlsPosition: controlsPosition, setControlsPosition: setControlsPosition, hideEmissions: hideEmissions, setHideEmissions: setHideEmissions, avatarType: avatarType, setAvatarType: setAvatarType, enablePositionControls: enablePositionControls, setEnablePositionControls: setEnablePositionControls, isAvatar3d: !!(integrationConfig === null || integrationConfig === void 0 ? void 0 : integrationConfig.avatarURL), additionalSettings: additionalSettings, speakerMuted: speakerMuted })), showChatHistoryDrawer && ((0, jsx_runtime_1.jsx)(ChatHistory_1.default, { open: !!showChatHistoryDrawer, onClose: () => setShowChatHistoryDrawer(false), resumeSession: chatLog => {
2437
+ setChatLogID(chatLog.chatLogID);
2438
+ onClickStart(undefined, false, chatLog);
2439
+ setShowChatHistoryDrawer(false);
2440
+ }, apiClient: client, sessionId: sessionId || '', memori: memori, baseUrl: baseUrl, history: history, apiUrl: client.constants.BACKEND_URL, loginToken: loginToken, language: language, userLang: userLang, isMultilanguageEnabled: isMultilanguageEnabled })), showKnownFactsDrawer && sessionId && ((0, jsx_runtime_1.jsx)(KnownFacts_1.default, { apiClient: client, memori: memori, sessionID: sessionId, visible: showKnownFactsDrawer, closeDrawer: () => setShowKnownFactsDrawer(false) })), showExpertsDrawer && !!experts && ((0, jsx_runtime_1.jsx)(ExpertsDrawer_1.default, { apiUrl: client.constants.BACKEND_URL, baseUrl: baseUrl, tenant: tenant, experts: experts, open: showExpertsDrawer, onClose: () => setShowExpertsDrawer(false) })), showLoginDrawer && (tenant === null || tenant === void 0 ? void 0 : tenant.name) && ((0, jsx_runtime_1.jsx)(LoginDrawer_1.default, { tenant: tenant, apiClient: client, open: !!showLoginDrawer, user: user, loginToken: loginToken, onClose: () => setShowLoginDrawer(false), drawerClassName: selectedLayout === 'WEBSITE_ASSISTANT'
2441
+ ? 'memori-drawer--above-website-assistant'
2442
+ : undefined, onLogin: (user, token) => {
2443
+ var _a, _b, _c, _d;
2444
+ reopenSession(false, memoriPassword || memoriPwd || (memori === null || memori === void 0 ? void 0 : memori.secretToken), [], personification === null || personification === void 0 ? void 0 : personification.tag, personification === null || personification === void 0 ? void 0 : personification.pin, {
2445
+ LANG: userLang,
2446
+ PATHNAME: (_a = window.location.pathname) === null || _a === void 0 ? void 0 : _a.toUpperCase(),
2447
+ ROUTE: ((_d = (_c = (_b = window.location.pathname) === null || _b === void 0 ? void 0 : _b.split('/')) === null || _c === void 0 ? void 0 : _c.pop()) === null || _d === void 0 ? void 0 : _d.toUpperCase()) || '',
2448
+ ...(initialContextVars || {}),
2449
+ }, undefined, birthDate, { loginToken: token }, undefined, sessionId).then(state => {
2450
+ var _a, _b;
2451
+ setShowLoginDrawer(false);
2452
+ setUser(user);
2453
+ setLoginToken(token);
2454
+ userTokenRef.current = token;
2455
+ (0, configuration_1.setLocalConfig)('loginToken', token);
2456
+ if ((state === null || state === void 0 ? void 0 : state.sessionID) &&
2457
+ state.sessionID !== sessionId &&
2458
+ (state === null || state === void 0 ? void 0 : state.dialogState)) {
2459
+ const username = (user === null || user === void 0 ? void 0 : user.userName) || t('login.user');
2460
+ pushMessage({
2461
+ text: '',
2462
+ emitter: state.dialogState.emitter,
2463
+ media: (_b = (_a = state.dialogState.emittedMedia) !== null && _a !== void 0 ? _a : state.dialogState.media) !== null && _b !== void 0 ? _b : [],
2464
+ fromUser: false,
2465
+ initial: t('login.successfullyLoggedIn', {
2466
+ username,
2467
+ }),
2468
+ contextVars: state.dialogState.contextVars,
2469
+ date: state.dialogState.currentDate,
2470
+ placeName: state.dialogState.currentPlaceName,
2471
+ placeLatitude: state.dialogState.currentLatitude,
2472
+ placeLongitude: state.dialogState.currentLongitude,
2473
+ placeUncertaintyKm: state.dialogState.currentUncertaintyKm,
2474
+ tag: state.dialogState.currentTag,
2475
+ memoryTags: state.dialogState.memoryTags,
2476
+ });
2477
+ setCurrentDialogState(state.dialogState);
2478
+ }
2479
+ });
2480
+ }, setUser: setUser, onLogout: () => {
2481
+ if (!loginToken)
2482
+ return;
2483
+ client.backend.pwlUserLogout(loginToken).then(() => {
2484
+ setShowLoginDrawer(false);
2485
+ setUser(undefined);
2486
+ setLoginToken(undefined);
2487
+ userTokenRef.current = undefined;
2488
+ (0, configuration_1.removeLocalConfig)('loginToken');
2489
+ });
2490
+ } }))] }) }) }) }));
2133
2491
  };
2134
2492
  exports.default = MemoriWidget;
2135
2493
  //# sourceMappingURL=MemoriWidget.js.map