@memori.ai/memori-react 9.0.0-alpha.20 → 9.0.0-alpha.22

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 (343) hide show
  1. package/CHANGELOG.md +456 -1
  2. package/dist/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  3. package/dist/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  4. package/dist/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  5. package/dist/components/Auth/Auth.css +12 -5
  6. package/dist/components/Auth/Auth.d.ts +1 -1
  7. package/dist/components/Auth/Auth.js +46 -32
  8. package/dist/components/Auth/Auth.js.map +1 -1
  9. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +1 -1
  10. package/dist/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  11. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  12. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js +6 -6
  13. package/dist/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  14. package/dist/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  15. package/dist/components/Chat/Chat.css +1 -0
  16. package/dist/components/Chat/Chat.js +1 -1
  17. package/dist/components/Chat/Chat.js.map +1 -1
  18. package/dist/components/ChatBubble/ChatBubble.css +32 -5
  19. package/dist/components/ChatBubble/ChatBubble.js +2 -4
  20. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  21. package/dist/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  22. package/dist/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  23. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  24. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  25. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  26. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -57
  27. package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  28. package/dist/components/ChatInputs/ChatInputs.js +11 -2
  29. package/dist/components/ChatInputs/ChatInputs.js.map +1 -1
  30. package/dist/components/ChatTextArea/ChatTextArea.css +1 -1
  31. package/dist/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  32. package/dist/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  33. package/dist/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  34. package/dist/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  35. package/dist/components/FilePreview/FilePreview.css +41 -20
  36. package/dist/components/FilePreview/FilePreview.d.ts +2 -1
  37. package/dist/components/FilePreview/FilePreview.js +6 -2
  38. package/dist/components/FilePreview/FilePreview.js.map +1 -1
  39. package/dist/components/Header/Header.css +8 -3
  40. package/dist/components/Header/Header.js +15 -18
  41. package/dist/components/Header/Header.js.map +1 -1
  42. package/dist/components/IconButton/IconButton.d.ts +1 -1
  43. package/dist/components/KnownFacts/KnownFacts.css +1 -1
  44. package/dist/components/KnownFacts/KnownFacts.js +4 -7
  45. package/dist/components/KnownFacts/KnownFacts.js.map +1 -1
  46. package/dist/components/LoginDrawer/LoginDrawer.css +16 -14
  47. package/dist/components/LoginDrawer/LoginDrawer.js +19 -11
  48. package/dist/components/LoginDrawer/LoginDrawer.js.map +1 -1
  49. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  50. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  51. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +14 -12
  52. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  53. package/dist/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  54. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  55. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
  56. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  57. package/dist/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  58. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +210 -62
  59. package/dist/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  60. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  61. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js +65 -1
  62. package/dist/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  63. package/dist/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  64. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  65. package/dist/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  66. package/dist/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  67. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js +117 -0
  68. package/dist/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  69. package/dist/components/MemoriWidget/MemoriWidget.css +59 -0
  70. package/dist/components/MemoriWidget/MemoriWidget.js +35 -31
  71. package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
  72. package/dist/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  73. package/dist/components/PositionPopover/PositionPopover.css +3 -3
  74. package/dist/components/PositionPopover/PositionPopover.js +38 -25
  75. package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
  76. package/dist/components/Snippet/Snippet.css +6 -36
  77. package/dist/components/Snippet/Snippet.js +3 -1
  78. package/dist/components/Snippet/Snippet.js.map +1 -1
  79. package/dist/components/StartPanel/StartPanel.css +125 -3
  80. package/dist/components/StartPanel/StartPanel.js +13 -19
  81. package/dist/components/StartPanel/StartPanel.js.map +1 -1
  82. package/dist/components/UploadButton/UploadButton.css +0 -19
  83. package/dist/components/UploadButton/UploadButton.js +1 -3
  84. package/dist/components/UploadButton/UploadButton.js.map +1 -1
  85. package/dist/components/UploadButton/UploadImages/UploadImages.js +1 -1
  86. package/dist/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  87. package/dist/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  88. package/dist/components/layouts/chat.css +2 -0
  89. package/dist/components/layouts/totem.css +43 -9
  90. package/dist/components/layouts/zoomed-full-body.css +1 -0
  91. package/dist/helpers/message.js +3 -0
  92. package/dist/helpers/message.js.map +1 -1
  93. package/dist/helpers/positionPopover.d.ts +2 -1
  94. package/dist/helpers/positionPopover.js +10 -2
  95. package/dist/helpers/positionPopover.js.map +1 -1
  96. package/dist/icons/MemoriIcon.js +1 -1
  97. package/dist/icons/MemoriIcon.js.map +1 -1
  98. package/dist/locales/de.json +7 -1
  99. package/dist/locales/en.json +6 -1
  100. package/dist/locales/es.json +6 -1
  101. package/dist/locales/fr.json +6 -1
  102. package/dist/locales/it.json +6 -1
  103. package/dist/styles.css +1 -1
  104. package/dist/version.d.ts +1 -1
  105. package/dist/version.js +1 -1
  106. package/esm/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  107. package/esm/components/AgeVerificationModal/AgeVerificationModal.js +1 -1
  108. package/esm/components/AgeVerificationModal/AgeVerificationModal.js.map +1 -1
  109. package/esm/components/Auth/Auth.css +12 -5
  110. package/esm/components/Auth/Auth.d.ts +1 -1
  111. package/esm/components/Auth/Auth.js +47 -33
  112. package/esm/components/Auth/Auth.js.map +1 -1
  113. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js +2 -2
  114. package/esm/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.js.map +1 -1
  115. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.d.ts +2 -2
  116. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js +4 -5
  117. package/esm/components/Avatar/AvatarView/AvatarComponent/constants.js.map +1 -1
  118. package/esm/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  119. package/esm/components/Chat/Chat.css +1 -0
  120. package/esm/components/Chat/Chat.js +1 -1
  121. package/esm/components/Chat/Chat.js.map +1 -1
  122. package/esm/components/ChatBubble/ChatBubble.css +32 -5
  123. package/esm/components/ChatBubble/ChatBubble.js +2 -4
  124. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  125. package/esm/components/ChatHistoryDrawer/ChatHistory.d.ts +3 -1
  126. package/esm/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  127. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  128. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  129. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +3 -1
  130. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js +9 -59
  131. package/esm/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
  132. package/esm/components/ChatInputs/ChatInputs.js +12 -3
  133. package/esm/components/ChatInputs/ChatInputs.js.map +1 -1
  134. package/esm/components/ChatTextArea/ChatTextArea.css +1 -1
  135. package/esm/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  136. package/esm/components/ContentPreviewModal/ContentPreviewModal.js +1 -1
  137. package/esm/components/ContentPreviewModal/ContentPreviewModal.js.map +1 -1
  138. package/esm/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  139. package/esm/components/FilePreview/FilePreview.css +41 -20
  140. package/esm/components/FilePreview/FilePreview.d.ts +2 -1
  141. package/esm/components/FilePreview/FilePreview.js +7 -3
  142. package/esm/components/FilePreview/FilePreview.js.map +1 -1
  143. package/esm/components/Header/Header.css +8 -3
  144. package/esm/components/Header/Header.js +15 -18
  145. package/esm/components/Header/Header.js.map +1 -1
  146. package/esm/components/IconButton/IconButton.d.ts +1 -1
  147. package/esm/components/KnownFacts/KnownFacts.css +1 -1
  148. package/esm/components/KnownFacts/KnownFacts.js +4 -7
  149. package/esm/components/KnownFacts/KnownFacts.js.map +1 -1
  150. package/esm/components/LoginDrawer/LoginDrawer.css +16 -14
  151. package/esm/components/LoginDrawer/LoginDrawer.js +20 -12
  152. package/esm/components/LoginDrawer/LoginDrawer.js.map +1 -1
  153. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js +1 -1
  154. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.js.map +1 -1
  155. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js +15 -13
  156. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.js.map +1 -1
  157. package/esm/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  158. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  159. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js +3 -2
  160. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.js.map +1 -1
  161. package/esm/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  162. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js +211 -63
  163. package/esm/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.js.map +1 -1
  164. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.d.ts +3 -1
  165. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js +66 -2
  166. package/esm/components/MemoriArtifactSystem/context/ArtifactContext.js.map +1 -1
  167. package/esm/components/MemoriArtifactSystem/types/artifact.types.d.ts +11 -0
  168. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js +18 -13
  169. package/esm/components/MemoriArtifactSystem/utils/ArtifactAPI.js.map +1 -1
  170. package/esm/components/MemoriArtifactSystem/utils/applyEdits.d.ts +8 -0
  171. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js +112 -0
  172. package/esm/components/MemoriArtifactSystem/utils/applyEdits.js.map +1 -0
  173. package/esm/components/MemoriWidget/MemoriWidget.css +59 -0
  174. package/esm/components/MemoriWidget/MemoriWidget.js +36 -32
  175. package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
  176. package/esm/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  177. package/esm/components/PositionPopover/PositionPopover.css +3 -3
  178. package/esm/components/PositionPopover/PositionPopover.js +39 -26
  179. package/esm/components/PositionPopover/PositionPopover.js.map +1 -1
  180. package/esm/components/Snippet/Snippet.css +6 -36
  181. package/esm/components/Snippet/Snippet.js +4 -2
  182. package/esm/components/Snippet/Snippet.js.map +1 -1
  183. package/esm/components/StartPanel/StartPanel.css +125 -3
  184. package/esm/components/StartPanel/StartPanel.js +14 -20
  185. package/esm/components/StartPanel/StartPanel.js.map +1 -1
  186. package/esm/components/UploadButton/UploadButton.css +0 -19
  187. package/esm/components/UploadButton/UploadButton.js +1 -3
  188. package/esm/components/UploadButton/UploadButton.js.map +1 -1
  189. package/esm/components/UploadButton/UploadImages/UploadImages.js +1 -1
  190. package/esm/components/UploadButton/UploadImages/UploadImages.js.map +1 -1
  191. package/esm/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  192. package/esm/components/layouts/chat.css +2 -0
  193. package/esm/components/layouts/totem.css +43 -9
  194. package/esm/components/layouts/zoomed-full-body.css +1 -0
  195. package/esm/helpers/message.js +3 -0
  196. package/esm/helpers/message.js.map +1 -1
  197. package/esm/helpers/positionPopover.d.ts +2 -1
  198. package/esm/helpers/positionPopover.js +9 -2
  199. package/esm/helpers/positionPopover.js.map +1 -1
  200. package/esm/icons/MemoriIcon.js +1 -1
  201. package/esm/icons/MemoriIcon.js.map +1 -1
  202. package/esm/locales/de.json +7 -1
  203. package/esm/locales/en.json +6 -1
  204. package/esm/locales/es.json +6 -1
  205. package/esm/locales/fr.json +6 -1
  206. package/esm/locales/it.json +6 -1
  207. package/esm/styles.css +1 -1
  208. package/esm/version.d.ts +1 -1
  209. package/esm/version.js +1 -1
  210. package/package.json +5 -3
  211. package/src/Live/Agents.stories.tsx +49 -0
  212. package/src/Live/KnownFacts.stories.tsx +50 -0
  213. package/src/Showcase.stories.tsx +3 -14
  214. package/src/components/AgeVerificationModal/AgeVerificationModal.css +1 -7
  215. package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +1 -1
  216. package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +1 -0
  217. package/src/components/Auth/Auth.css +12 -5
  218. package/src/components/Auth/Auth.stories.tsx +1 -1
  219. package/src/components/Auth/Auth.test.tsx +68 -1
  220. package/src/components/Auth/Auth.tsx +69 -54
  221. package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +5 -6
  222. package/src/components/Avatar/Avatar.stories.tsx +1 -18
  223. package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +2 -2
  224. package/src/components/Avatar/AvatarView/AvatarComponent/constants.test.ts +19 -0
  225. package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +9 -6
  226. package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +1 -103
  227. package/src/components/Blob/Blob.stories.tsx +1 -1
  228. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +7 -6
  229. package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +1 -1
  230. package/src/components/ChangeMode/ChangeMode.stories.tsx +1 -1
  231. package/src/components/Chat/Chat.css +1 -0
  232. package/src/components/Chat/Chat.stories.tsx +61 -7
  233. package/src/components/Chat/Chat.tsx +1 -0
  234. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +80 -80
  235. package/src/components/ChatBubble/ChatBubble.css +32 -5
  236. package/src/components/ChatBubble/ChatBubble.stories.tsx +13 -2
  237. package/src/components/ChatBubble/ChatBubble.test.tsx +21 -1
  238. package/src/components/ChatBubble/ChatBubble.tsx +7 -13
  239. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +158 -185
  240. package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +1 -1
  241. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +6 -0
  242. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.css +1 -1
  243. package/src/components/ChatHistoryDrawer/ChatResumeDrawer.tsx +24 -81
  244. package/src/components/ChatInputs/ChatInputs.stories.tsx +1 -39
  245. package/src/components/ChatInputs/ChatInputs.test.tsx +47 -0
  246. package/src/components/ChatInputs/ChatInputs.tsx +13 -2
  247. package/src/components/ChatTextArea/ChatTextArea.css +1 -1
  248. package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +1 -1
  249. package/src/components/ContentPreviewModal/ContentPreviewModal.css +7 -32
  250. package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +1 -1
  251. package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -6
  252. package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +1 -1
  253. package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +29 -10
  254. package/src/components/FilePreview/FilePreview.css +41 -20
  255. package/src/components/FilePreview/FilePreview.tsx +14 -0
  256. package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +14 -0
  257. package/src/components/Header/Header.css +8 -3
  258. package/src/components/Header/Header.stories.tsx +1 -1
  259. package/src/components/Header/Header.tsx +146 -117
  260. package/src/components/KnownFacts/KnownFacts.css +1 -1
  261. package/src/components/KnownFacts/KnownFacts.stories.tsx +1 -23
  262. package/src/components/KnownFacts/KnownFacts.tsx +4 -11
  263. package/src/components/LoginDrawer/LoginDrawer.css +16 -14
  264. package/src/components/LoginDrawer/LoginDrawer.stories.tsx +2 -52
  265. package/src/components/LoginDrawer/LoginDrawer.tsx +51 -39
  266. package/src/components/MediaWidget/MediaItemWidget.stories.tsx +1 -15
  267. package/src/components/MediaWidget/MediaPreviewModal.test.tsx +2 -3
  268. package/src/components/MediaWidget/MediaWidget.stories.tsx +1 -45
  269. package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +19 -33
  270. package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +1 -1
  271. package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +44 -45
  272. package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +5 -110
  273. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +36 -14
  274. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +28 -26
  275. package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +7 -0
  276. package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +357 -148
  277. package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +111 -9
  278. package/src/components/MemoriArtifactSystem/types/artifact.types.ts +20 -1
  279. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +33 -28
  280. package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +19 -13
  281. package/src/components/MemoriArtifactSystem/utils/applyEdits.test.ts +85 -0
  282. package/src/components/MemoriArtifactSystem/utils/applyEdits.ts +173 -0
  283. package/src/components/MemoriWidget/MemoriUIProvider.contract.test.tsx +55 -0
  284. package/src/components/MemoriWidget/MemoriWidget.css +59 -0
  285. package/src/components/MemoriWidget/MemoriWidget.stories.tsx +55 -77
  286. package/src/components/MemoriWidget/MemoriWidget.tsx +49 -44
  287. package/src/components/MemoriWidget/getChatStyles.test.ts +24 -0
  288. package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +1 -1
  289. package/src/components/MobileSessionPanel/MobileSessionPanel.css +2 -2
  290. package/src/components/PositionPopover/PositionPopover.css +3 -3
  291. package/src/components/PositionPopover/PositionPopover.stories.tsx +1 -1
  292. package/src/components/PositionPopover/PositionPopover.tsx +50 -28
  293. package/src/components/PoweredBy/PoweredBy.stories.tsx +1 -54
  294. package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +2 -2
  295. package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +1 -1
  296. package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +1 -1
  297. package/src/components/ShareButton/ShareButton.stories.tsx +1 -1
  298. package/src/components/Snippet/Snippet.css +6 -36
  299. package/src/components/Snippet/Snippet.stories.tsx +1 -1
  300. package/src/components/Snippet/Snippet.tsx +6 -7
  301. package/src/components/StartPanel/StartPanel.css +125 -3
  302. package/src/components/StartPanel/StartPanel.stories.tsx +22 -2
  303. package/src/components/StartPanel/StartPanel.tsx +30 -35
  304. package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +177 -121
  305. package/src/components/Typing/Typing.stories.tsx +1 -1
  306. package/src/components/UploadButton/UploadButton.css +0 -19
  307. package/src/components/UploadButton/UploadButton.tsx +0 -11
  308. package/src/components/UploadButton/UploadImages/UploadImages.tsx +1 -1
  309. package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +22 -44
  310. package/src/components/layouts/FullBody/FullBody.stories.tsx +55 -68
  311. package/src/components/layouts/Totem/Totem.stories.tsx +69 -87
  312. package/src/components/layouts/WebsiteAssistant/website-assistant.css +3 -3
  313. package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +69 -87
  314. package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +19 -41
  315. package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +39 -83
  316. package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +15 -11
  317. package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +116 -42
  318. package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +18 -40
  319. package/src/components/layouts/chat.css +2 -0
  320. package/src/components/layouts/layouts.stories.tsx +96 -179
  321. package/src/components/layouts/totem.css +43 -9
  322. package/src/components/layouts/zoomed-full-body.css +1 -0
  323. package/src/helpers/message.ts +15 -0
  324. package/src/helpers/positionPopover.test.ts +36 -1
  325. package/src/helpers/positionPopover.ts +21 -4
  326. package/src/i18n.knownFacts.test.ts +40 -0
  327. package/src/icons/MemoriIcon.tsx +1 -1
  328. package/src/index.stories.tsx +1 -47
  329. package/src/locales/de.json +7 -1
  330. package/src/locales/en.json +6 -1
  331. package/src/locales/es.json +6 -1
  332. package/src/locales/fr.json +6 -1
  333. package/src/locales/it.json +6 -1
  334. package/src/styles.css +13 -27
  335. package/src/version.ts +1 -1
  336. package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
  337. package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
  338. package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
  339. package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
  340. package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -265
  341. package/src/components/UploadButton/UploadButton.stories.tsx +0 -510
  342. package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -69
  343. package/src/components/layouts/WebsiteAssistant/WebsiteAssistant.stories.tsx +0 -115
@@ -15,6 +15,8 @@ const MarkdownIcon_1 = tslib_1.__importDefault(require("../../../../icons/artifa
15
15
  const PythonIcon_1 = tslib_1.__importDefault(require("../../../../icons/artifacts/PythonIcon"));
16
16
  const SvgIcon_1 = tslib_1.__importDefault(require("../../../../icons/artifacts/SvgIcon"));
17
17
  const XmlIcon_1 = tslib_1.__importDefault(require("../../../../icons/artifacts/XmlIcon"));
18
+ const applyEdits_1 = require("../../utils/applyEdits");
19
+ const react_i18next_1 = require("react-i18next");
18
20
  const formatBytes = (bytes) => {
19
21
  if (bytes === 0)
20
22
  return '0 Bytes';
@@ -23,24 +25,64 @@ const formatBytes = (bytes) => {
23
25
  const i = Math.floor(Math.log(bytes) / Math.log(k));
24
26
  return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
25
27
  };
26
- const hashContent = (str) => {
27
- let hash = 0;
28
- const len = Math.min(str.length, 200);
29
- for (let i = 0; i < len; i++) {
30
- hash = (hash << 5) - hash + str.charCodeAt(i);
31
- hash |= 0;
32
- }
33
- return Math.abs(hash).toString(36);
34
- };
35
28
  const CLASS_ATTR_RE = /class\s*=\s*["']([^"']*)["']/i;
36
- const hasMemoriArtifactClass = (openingTag) => {
29
+ const DATA_ACTION_RE = /data-action\s*=\s*["']([^"']+)["']/i;
30
+ const getClassList = (openingTag) => {
37
31
  const m = openingTag.match(CLASS_ATTR_RE);
38
32
  if (!m)
33
+ return [];
34
+ return m[1].split(/\s+/).filter(Boolean);
35
+ };
36
+ const getDataAction = (openingTag) => {
37
+ var _a;
38
+ const m = openingTag.match(DATA_ACTION_RE);
39
+ return ((_a = m === null || m === void 0 ? void 0 : m[1]) === null || _a === void 0 ? void 0 : _a.trim().toLowerCase()) || null;
40
+ };
41
+ const isCreateArtifactTag = (openingTag) => {
42
+ const classes = getClassList(openingTag);
43
+ if (classes.includes('memori-artifact-update'))
44
+ return false;
45
+ if (!classes.includes('memori-artifact'))
46
+ return false;
47
+ const action = getDataAction(openingTag);
48
+ return action === null || action === 'create';
49
+ };
50
+ const isUpdateArtifactTag = (openingTag) => {
51
+ const classes = getClassList(openingTag);
52
+ if (classes.includes('memori-artifact-update'))
53
+ return true;
54
+ if (!classes.includes('memori-artifact'))
39
55
  return false;
40
- return /\bmemori-artifact\b/.test(m[1]);
56
+ return getDataAction(openingTag) === 'update';
57
+ };
58
+ const findMatchingOutputClose = (cleaned, openEnd) => {
59
+ let depth = 1;
60
+ let pos = openEnd;
61
+ let closeStart = -1;
62
+ while (pos < cleaned.length && depth > 0) {
63
+ const nextOpen = cleaned.indexOf('<output', pos);
64
+ const nextClose = cleaned.indexOf('</output>', pos);
65
+ if (nextClose === -1) {
66
+ return cleaned.length;
67
+ }
68
+ if (nextOpen !== -1 && nextOpen < nextClose) {
69
+ depth++;
70
+ pos = nextOpen + '<output'.length;
71
+ }
72
+ else {
73
+ depth--;
74
+ if (depth === 0) {
75
+ closeStart = nextClose;
76
+ }
77
+ else {
78
+ pos = nextClose + '</output>'.length;
79
+ }
80
+ }
81
+ }
82
+ return closeStart;
41
83
  };
42
84
  const detectArtifacts = (text, isFromUser, messageKey) => {
43
- var _a;
85
+ var _a, _b;
44
86
  if (!text || isFromUser)
45
87
  return [];
46
88
  const cleaned = (0, utils_1.stripReasoningTags)(text);
@@ -54,37 +96,12 @@ const detectArtifacts = (text, isFromUser, messageKey) => {
54
96
  if (!openMatch)
55
97
  break;
56
98
  const fullOpenTag = openMatch[0];
57
- const openStart = openMatch.index;
58
- const openEnd = openStart + fullOpenTag.length;
59
- if (!hasMemoriArtifactClass(fullOpenTag)) {
99
+ const openEnd = openMatch.index + fullOpenTag.length;
100
+ if (!isCreateArtifactTag(fullOpenTag)) {
60
101
  searchFrom = openEnd;
61
102
  continue;
62
103
  }
63
- let depth = 1;
64
- let pos = openEnd;
65
- let closeStart = -1;
66
- while (pos < cleaned.length && depth > 0) {
67
- const nextOpen = cleaned.indexOf('<output', pos);
68
- const nextClose = cleaned.indexOf('</output>', pos);
69
- if (nextClose === -1) {
70
- closeStart = cleaned.length;
71
- depth = 0;
72
- break;
73
- }
74
- if (nextOpen !== -1 && nextOpen < nextClose) {
75
- depth++;
76
- pos = nextOpen + '<output'.length;
77
- }
78
- else {
79
- depth--;
80
- if (depth === 0) {
81
- closeStart = nextClose;
82
- }
83
- else {
84
- pos = nextClose + '</output>'.length;
85
- }
86
- }
87
- }
104
+ const closeStart = findMatchingOutputClose(cleaned, openEnd);
88
105
  if (closeStart === -1) {
89
106
  searchFrom = openEnd;
90
107
  continue;
@@ -98,9 +115,12 @@ const detectArtifacts = (text, isFromUser, messageKey) => {
98
115
  (htmlTitleMatch === null || htmlTitleMatch === void 0 ? void 0 : htmlTitleMatch[1]) ||
99
116
  `${mimeType.toUpperCase()} Artifact`;
100
117
  artifactNum++;
101
- const stableId = `artifact-${messageKey}-${artifactNum}-${hashContent(content)}`;
118
+ const dataArtifactIdMatch = fullOpenTag.match(/data-artifact-id\s*=\s*["']([^"']+)["']/i);
119
+ const artifactId = ((_b = dataArtifactIdMatch === null || dataArtifactIdMatch === void 0 ? void 0 : dataArtifactIdMatch[1]) === null || _b === void 0 ? void 0 : _b.trim()) ||
120
+ `artifact-${messageKey}-${artifactNum}`;
102
121
  artifacts.push({
103
- id: stableId,
122
+ id: `artifact-ui-${artifactId}`,
123
+ artifactId,
104
124
  content,
105
125
  mimeType,
106
126
  title,
@@ -114,9 +134,46 @@ const detectArtifacts = (text, isFromUser, messageKey) => {
114
134
  }
115
135
  return artifacts;
116
136
  };
137
+ const detectUpdates = (text, isFromUser) => {
138
+ var _a;
139
+ if (!text || isFromUser)
140
+ return [];
141
+ const cleaned = (0, utils_1.stripReasoningTags)(text);
142
+ const updates = [];
143
+ let searchFrom = 0;
144
+ const OPEN_TAG_RE = /<output\b([^>]*)>/gi;
145
+ while (searchFrom < cleaned.length) {
146
+ OPEN_TAG_RE.lastIndex = searchFrom;
147
+ const openMatch = OPEN_TAG_RE.exec(cleaned);
148
+ if (!openMatch)
149
+ break;
150
+ const fullOpenTag = openMatch[0];
151
+ const openEnd = openMatch.index + fullOpenTag.length;
152
+ if (!isUpdateArtifactTag(fullOpenTag)) {
153
+ searchFrom = openEnd;
154
+ continue;
155
+ }
156
+ const closeStart = cleaned.indexOf('</output>', openEnd);
157
+ const bodyEnd = closeStart === -1 ? cleaned.length : closeStart;
158
+ const body = cleaned.slice(openEnd, bodyEnd).trim();
159
+ const idMatch = fullOpenTag.match(/data-artifact-id\s*=\s*["']([^"']+)["']/i);
160
+ const artifactId = (_a = idMatch === null || idMatch === void 0 ? void 0 : idMatch[1]) === null || _a === void 0 ? void 0 : _a.trim();
161
+ const edits = (0, applyEdits_1.parseEdits)(body);
162
+ if (artifactId && edits) {
163
+ updates.push({ artifactId, edits });
164
+ }
165
+ else if (artifactId) {
166
+ updates.push({ artifactId, edits: [] });
167
+ }
168
+ searchFrom =
169
+ closeStart === -1 ? cleaned.length : closeStart + '</output>'.length;
170
+ }
171
+ return updates;
172
+ };
117
173
  const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
118
174
  var _a;
119
- const { openArtifact, state, closeArtifact } = (0, ArtifactContext_1.useArtifact)();
175
+ const { openArtifact, state, closeArtifact, registerArtifact, applyArtifactUpdate, } = (0, ArtifactContext_1.useArtifact)();
176
+ const { t } = (0, react_i18next_1.useTranslation)();
120
177
  const messageText = (0, react_1.useMemo)(() => message.text || '', [message.text]);
121
178
  const translatedMessageText = (0, react_1.useMemo)(() => message.translatedText || '', [message.translatedText]);
122
179
  const messageKey = (0, react_1.useMemo)(() => `${message.timestamp}-${message.fromUser ? '1' : '0'}`, [message.timestamp, message.fromUser]);
@@ -136,18 +193,79 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
136
193
  return primary;
137
194
  return detectArtifacts(translatedMessageText, fromUser, messageKey);
138
195
  }, [messageText, translatedMessageText, message.fromUser, messageKey]);
196
+ const detectedUpdates = (0, react_1.useMemo)(() => {
197
+ const fromUser = message.fromUser || false;
198
+ const primary = detectUpdates(messageText, fromUser);
199
+ if (primary.length > 0)
200
+ return primary;
201
+ return detectUpdates(translatedMessageText, fromUser);
202
+ }, [messageText, translatedMessageText, message.fromUser]);
203
+ const [updateResultMap, setUpdateResultMap] = (0, react_1.useState)({});
204
+ const [failedUpdates, setFailedUpdates] = (0, react_1.useState)([]);
205
+ const processedUpdatesRef = (0, react_1.useRef)('');
206
+ const hasAutoOpenedRef = (0, react_1.useRef)('');
139
207
  (0, react_1.useEffect)(() => {
140
- if (!messageText || artifacts.length === 0)
208
+ if (!messageText && !translatedMessageText)
141
209
  return;
142
- artifacts.forEach(artifact => dispatchArtifactCreatedEvent(artifact));
143
- if (!isChatlogPanel) {
144
- const timer = setTimeout(() => openArtifact(artifacts[0], { isChatLogPanel: false }), 100);
145
- return () => clearTimeout(timer);
210
+ artifacts.forEach(artifact => {
211
+ registerArtifact(artifact);
212
+ dispatchArtifactCreatedEvent(artifact);
213
+ });
214
+ const updatesSignature = `${messageKey}:${detectedUpdates
215
+ .map(u => `${u.artifactId}:${JSON.stringify(u.edits)}`)
216
+ .join('|')}`;
217
+ let lastUpdated = null;
218
+ if (detectedUpdates.length > 0 &&
219
+ processedUpdatesRef.current !== updatesSignature) {
220
+ processedUpdatesRef.current = updatesSignature;
221
+ const nextMap = {};
222
+ const nextFailed = [];
223
+ detectedUpdates.forEach((update, idx) => {
224
+ var _a;
225
+ if (!update.edits.length) {
226
+ nextFailed.push({
227
+ artifactId: update.artifactId,
228
+ reason: 'invalid',
229
+ });
230
+ return;
231
+ }
232
+ const result = applyArtifactUpdate(update.artifactId, update.edits);
233
+ if (result.updatedArtifact) {
234
+ nextMap[idx] = result.updatedArtifact;
235
+ lastUpdated = result.updatedArtifact;
236
+ dispatchArtifactCreatedEvent(result.updatedArtifact);
237
+ }
238
+ else {
239
+ nextFailed.push({
240
+ artifactId: update.artifactId,
241
+ reason: (_a = result.failureReason) !== null && _a !== void 0 ? _a : 'no-match',
242
+ });
243
+ }
244
+ });
245
+ setUpdateResultMap(nextMap);
246
+ setFailedUpdates(nextFailed);
146
247
  }
248
+ if (isChatlogPanel)
249
+ return;
250
+ const openTarget = lastUpdated !== null && lastUpdated !== void 0 ? lastUpdated : (Object.keys(updateResultMap).length === 0 && artifacts.length > 0
251
+ ? artifacts[0]
252
+ : null);
253
+ if (!openTarget)
254
+ return;
255
+ if (hasAutoOpenedRef.current === messageKey)
256
+ return;
257
+ hasAutoOpenedRef.current = messageKey;
258
+ const timer = setTimeout(() => openArtifact(openTarget, { isChatLogPanel: false }), 100);
259
+ return () => clearTimeout(timer);
147
260
  }, [
148
261
  messageKey,
149
262
  messageText,
263
+ translatedMessageText,
150
264
  artifacts,
265
+ detectedUpdates,
266
+ updateResultMap,
267
+ registerArtifact,
268
+ applyArtifactUpdate,
151
269
  dispatchArtifactCreatedEvent,
152
270
  isChatlogPanel,
153
271
  openArtifact,
@@ -160,7 +278,13 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
160
278
  else {
161
279
  openArtifact(artifact, { isChatLogPanel: isChatlogPanel });
162
280
  }
163
- }, [state.isDrawerOpen, (_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id, closeArtifact, openArtifact]);
281
+ }, [
282
+ state.isDrawerOpen,
283
+ (_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id,
284
+ closeArtifact,
285
+ openArtifact,
286
+ isChatlogPanel,
287
+ ]);
164
288
  const getIconForMimeType = (0, react_1.useCallback)((mimeType) => {
165
289
  const m = mimeType.toLowerCase();
166
290
  const iconProps = { 'aria-hidden': true };
@@ -182,20 +306,44 @@ const ArtifactHandler = ({ isChatlogPanel = false, message, }) => {
182
306
  return (0, jsx_runtime_1.jsx)(SvgIcon_1.default, { ...iconProps });
183
307
  return (0, jsx_runtime_1.jsx)(DocumentIcon_1.default, { ...iconProps });
184
308
  }, []);
185
- if (artifacts.length === 0)
309
+ const updatedLabel = t('artifact.updated') || 'updated';
310
+ const updateFailedLabel = t('artifact.updateFailed') || 'Update could not be applied';
311
+ const updateFailedHint = t('artifact.updateFailedHint') ||
312
+ 'The patch did not match the current content. Ask to rewrite the artifact.';
313
+ const updateEntries = Object.entries(updateResultMap);
314
+ const hasCreates = artifacts.length > 0;
315
+ const hasUpdates = updateEntries.length > 0;
316
+ const hasFailed = failedUpdates.length > 0;
317
+ if (!hasCreates && !hasUpdates && !hasFailed)
186
318
  return null;
187
- return ((0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: artifacts.map(artifact => {
188
- var _a, _b, _c, _d;
189
- const isSelected = state.isDrawerOpen && ((_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id) === artifact.id;
190
- return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: `memori-artifact-handler${isSelected ? ' memori-artifact-handler--selected' : ''}`, onClick: () => handleArtifactClick(artifact), "aria-pressed": isSelected, "aria-label": artifact.title, style: isSelected
191
- ? {
192
- border: '2px solid var(--memori-border-primary)',
193
- }
194
- : undefined, children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-icon", children: getIconForMimeType(artifact.mimeType) }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-info", children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-title", children: artifact.title }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-meta", children: [artifact.mimeType, " \u2022 ", formatBytes(artifact.size || 0)] })] }), (0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-action", children: isChatlogPanel ? (state.isDrawerOpen &&
195
- ((_b = state.currentArtifact) === null || _b === void 0 ? void 0 : _b.id) === artifact.id ? ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronUp, { className: "memori-artifact-handler-action-icon" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { className: "memori-artifact-handler-action-icon" }))) : state.isDrawerOpen &&
196
- ((_c = state.currentArtifact) === null || _c === void 0 ? void 0 : _c.id) === artifact.id ? ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { className: "memori-artifact-handler-action-icon" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "memori-artifact-handler-action-icon" })) })] }), isChatlogPanel && state.isDrawerOpen &&
197
- ((_d = state.currentArtifact) === null || _d === void 0 ? void 0 : _d.id) === artifact.id && ((0, jsx_runtime_1.jsx)(ArtifactDrawer_1.default, { isChatLogPanel: true }))] }, artifact.id));
198
- }) }));
319
+ const renderChevron = (isSelected) => {
320
+ if (isChatlogPanel) {
321
+ return isSelected ? ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronUp, { className: "memori-artifact-handler-action-icon" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { className: "memori-artifact-handler-action-icon" }));
322
+ }
323
+ return isSelected ? ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronLeft, { className: "memori-artifact-handler-action-icon" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { className: "memori-artifact-handler-action-icon" }));
324
+ };
325
+ const renderInlineDrawer = (isSelected) => isChatlogPanel && isSelected ? ((0, jsx_runtime_1.jsx)(ArtifactDrawer_1.default, { isChatLogPanel: true })) : null;
326
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: '10px' }, children: [artifacts.map(artifact => {
327
+ var _a;
328
+ const isSelected = state.isDrawerOpen && ((_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id) === artifact.id;
329
+ return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: `memori-artifact-handler${isSelected ? ' memori-artifact-handler--selected' : ''}`, onClick: () => handleArtifactClick(artifact), "aria-pressed": isSelected, "aria-label": artifact.title, style: isSelected
330
+ ? {
331
+ border: '2px solid var(--memori-border-primary)',
332
+ }
333
+ : undefined, children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-icon", children: getIconForMimeType(artifact.mimeType) }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-info", children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-title", children: artifact.title }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-meta", children: [artifact.mimeType, " \u2022 ", formatBytes(artifact.size || 0)] })] }), (0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-action", children: renderChevron(isSelected) })] }), renderInlineDrawer(isSelected)] }, artifact.id));
334
+ }), updateEntries.map(([, artifact]) => {
335
+ var _a;
336
+ const isSelected = state.isDrawerOpen && ((_a = state.currentArtifact) === null || _a === void 0 ? void 0 : _a.id) === artifact.id;
337
+ return ((0, jsx_runtime_1.jsxs)(react_1.default.Fragment, { children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: `memori-artifact-handler${isSelected ? ' memori-artifact-handler--selected' : ''}`, onClick: () => handleArtifactClick(artifact), "aria-pressed": isSelected, "aria-label": `${artifact.title} — ${updatedLabel}`, style: isSelected
338
+ ? {
339
+ border: '2px solid var(--memori-border-primary)',
340
+ }
341
+ : undefined, children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-icon", children: getIconForMimeType(artifact.mimeType) }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-info", children: [(0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-title", children: [artifact.title, " \u2014 ", updatedLabel] }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-meta", children: [artifact.mimeType, " \u2022 ", formatBytes(artifact.size || 0)] })] }), (0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-action", children: renderChevron(isSelected) })] }), renderInlineDrawer(isSelected)] }, artifact.id));
342
+ }), failedUpdates.map((failed, idx) => ((0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler memori-artifact-handler--failed", style: {
343
+ opacity: 0.85,
344
+ border: '1px dashed var(--memori-error, #ef4444)',
345
+ cursor: 'default',
346
+ }, role: "status", children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-icon", children: "\u26A0\uFE0F" }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-info", children: [(0, jsx_runtime_1.jsx)("div", { className: "memori-artifact-handler-title", children: updateFailedLabel }), (0, jsx_runtime_1.jsxs)("div", { className: "memori-artifact-handler-meta", children: [failed.artifactId, " \u2022 ", updateFailedHint] })] })] }, `failed-${failed.artifactId}-${idx}`)))] }));
199
347
  };
200
348
  const MemoizedArtifactHandler = (0, react_1.memo)(ArtifactHandler, (prev, next) => {
201
349
  const prevText = prev.message.text || prev.message.translatedText || '';
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactHandler.js","sourceRoot":"","sources":["../../../../../src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx"],"names":[],"mappings":";;;;AAAA,uDAAqE;AACrE,mEAA4D;AAE5D,+CAKsB;AACtB,8FAA8D;AAE9D,qDAA+D;AAC/D,0FAA0D;AAC1D,oGAAoE;AACpE,4FAA4D;AAC5D,wGAAwE;AACxE,oGAAoE;AACpE,gGAAgE;AAChE,0FAA0D;AAC1D,0FAA0D;AAiB1D,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE;IAC5C,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClC,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1E,CAAC,CAAC;AAMF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAU,EAAE;IAC1C,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACrC,CAAC,CAAC;AAaF,MAAM,aAAa,GAAG,+BAA+B,CAAC;AACtD,MAAM,sBAAsB,GAAG,CAAC,UAAkB,EAAW,EAAE;IAC7D,MAAM,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IAErB,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC;AAYF,MAAM,eAAe,GAAG,CACtB,IAAY,EACZ,UAAmB,EACnB,UAAkB,EACF,EAAE;;IAClB,IAAI,CAAC,IAAI,IAAI,UAAU;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,OAAO,GAAG,IAAA,0BAAkB,EAAC,IAAI,CAAC,CAAC;IACzC,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IAGpB,MAAM,WAAW,GAAG,qBAAqB,CAAC;IAE1C,OAAO,UAAU,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAEnC,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC;QACnC,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,SAAS;YAAE,MAAM;QAEtB,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC;QAClC,MAAM,OAAO,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;QAG/C,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,EAAE,CAAC;YACzC,UAAU,GAAG,OAAO,CAAC;YACrB,SAAS;QACX,CAAC;QAGD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,GAAG,GAAG,OAAO,CAAC;QAClB,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QAEpB,OAAO,GAAG,GAAG,OAAO,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACjD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YAEpD,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;gBAGrB,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC5B,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACR,CAAC;YAED,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,GAAG,SAAS,EAAE,CAAC;gBAE5C,KAAK,EAAE,CAAC;gBACR,GAAG,GAAG,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC;YACpC,CAAC;iBAAM,CAAC;gBAEN,KAAK,EAAE,CAAC;gBACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,UAAU,GAAG,SAAS,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,GAAG,GAAG,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;YAEtB,UAAU,GAAG,OAAO,CAAC;YACrB,SAAS;QACX,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QAG1D,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,CACrC,uCAAuC,CACxC,CAAC;QACF,MAAM,QAAQ,GAAG,CAAA,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,CAAC,CAAC,0CAAE,IAAI,EAAE,KAAI,YAAY,CAAC;QAE5D,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CACtC,oCAAoC,CACrC,CAAC;QACF,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACjE,MAAM,KAAK,GACT,CAAA,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC;aACnB,cAAc,aAAd,cAAc,uBAAd,cAAc,CAAG,CAAC,CAAC,CAAA;YACnB,GAAG,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;QAEvC,WAAW,EAAE,CAAC;QAGd,MAAM,QAAQ,GAAG,YAAY,UAAU,IAAI,WAAW,IAAI,WAAW,CACnE,OAAO,CACR,EAAE,CAAC;QAEJ,SAAS,CAAC,IAAI,CAAC;YACb,EAAE,EAAE,QAAQ;YACZ,OAAO;YACP,QAAQ;YACR,KAAK;YACL,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC,CAAC;QAGH,UAAU;YACR,UAAU,KAAK,OAAO,CAAC,MAAM;gBAC3B,CAAC,CAAC,OAAO,CAAC,MAAM;gBAChB,CAAC,CAAC,UAAU,GAAG,WAAW,CAAC,MAAM,CAAC;IACxC,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC;AAMF,MAAM,eAAe,GAAmC,CAAC,EACvD,cAAc,GAAG,KAAK,EACtB,OAAO,GACR,EAAE,EAAE;;IACH,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAA,6BAAW,GAAE,CAAC;IAM7D,MAAM,WAAW,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,MAAM,qBAAqB,GAAG,IAAA,eAAO,EACnC,GAAG,EAAE,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,EAClC,CAAC,OAAO,CAAC,cAAc,CAAC,CACzB,CAAC;IAMF,MAAM,UAAU,GAAG,IAAA,eAAO,EACxB,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,EAC5D,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,CAAC,CACtC,CAAC;IAGF,MAAM,4BAA4B,GAAG,IAAA,mBAAW,EAC9C,CAAC,QAAsB,EAAE,EAAE;QACzB,MAAM,KAAK,GAAyB,IAAI,WAAW,CAAC,iBAAiB,EAAE;YACrE,MAAM,EAAE;gBACN,QAAQ;gBACR,OAAO;aACR;SACF,CAAC,CAAC;QACH,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC,EACD,CAAC,OAAO,CAAC,CACV,CAAC;IAOF,MAAM,SAAS,GAAG,IAAA,eAAO,EAAiB,GAAG,EAAE;QAC7C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;QACnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC;QACvC,OAAO,eAAe,CAAC,qBAAqB,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtE,CAAC,EAAE,CAAC,WAAW,EAAE,qBAAqB,EAAE,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IASvE,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEnD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAEtE,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,EAC3D,GAAG,CACJ,CAAC;YACF,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,EAAE;QACD,UAAU;QACV,WAAW;QACX,SAAS;QACT,4BAA4B;QAC5B,cAAc;QACd,YAAY;KACb,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG,IAAA,mBAAW,EACrC,CAAC,QAAsB,EAAE,EAAE;;QACzB,IAAI,KAAK,CAAC,YAAY,IAAI,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,EAAE,MAAK,QAAQ,CAAC,EAAE,EAAE,CAAC;YACpE,aAAa,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,QAAQ,EAAE,EAAE,cAAc,EAAE,cAAc,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC,EACD,CAAC,KAAK,CAAC,YAAY,EAAE,MAAA,KAAK,CAAC,eAAe,0CAAE,EAAE,EAAE,aAAa,EAAE,YAAY,CAAC,CAC7E,CAAC;IAEF,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,CAAC,QAAgB,EAAsB,EAAE;QAC9E,MAAM,CAAC,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,SAAS,GAAG,EAAE,aAAa,EAAE,IAAa,EAAE,CAAC;QACnD,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,uBAAC,kBAAQ,OAAK,SAAS,GAAI,CAAC;QAC3D,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;YAAE,OAAO,uBAAC,sBAAY,OAAK,SAAS,GAAI,CAAC;QACnE,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC;YACtD,OAAO,uBAAC,wBAAc,OAAK,SAAS,GAAI,CAAC;QAC3C,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,uBAAC,oBAAU,OAAK,SAAS,GAAI,CAAC;QAC/D,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,uBAAC,sBAAY,OAAK,SAAS,GAAI,CAAC;QAC/D,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,uBAAC,iBAAO,OAAK,SAAS,GAAI,CAAC;QACzD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,uBAAC,iBAAO,OAAK,SAAS,GAAI,CAAC;QACzD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,uBAAC,iBAAO,OAAK,SAAS,GAAI,CAAC;QACzD,OAAO,uBAAC,sBAAY,OAAK,SAAS,GAAI,CAAC;IACzC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,OAAO,CACL,gCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,YAClE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;;YACxB,MAAM,UAAU,GACd,KAAK,CAAC,YAAY,IAAI,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,EAAE,MAAK,QAAQ,CAAC,EAAE,CAAC;YAElE,OAAO,CACL,wBAAC,eAAK,CAAC,QAAQ,eACb,oCACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,0BACT,UAAU,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,EACtD,EAAE,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,mBAAmB,CAAC,QAAQ,CAAC,kBAC9B,UAAU,gBACZ,QAAQ,CAAC,KAAK,EAC1B,KAAK,EACH,UAAU;4BACR,CAAC,CAAC;gCACE,MAAM,EAAE,wCAAwC;6BAEjD;4BACH,CAAC,CAAC,SAAS,aAGf,gCAAK,SAAS,EAAC,8BAA8B,YAC1C,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAClC,EACN,iCAAK,SAAS,EAAC,8BAA8B,aAC3C,gCAAK,SAAS,EAAC,+BAA+B,YAC3C,QAAQ,CAAC,KAAK,GACX,EACN,iCAAK,SAAS,EAAC,8BAA8B,aAC1C,QAAQ,CAAC,QAAQ,cAAK,WAAW,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC,IAClD,IACF,EACN,gCAAK,SAAS,EAAC,gCAAgC,YAC5C,cAAc,CAAC,CAAC,CAAC,CAChB,KAAK,CAAC,YAAY;oCAClB,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,EAAE,MAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAC1C,uBAAC,wBAAS,IAAC,SAAS,EAAC,qCAAqC,GAAG,CAC9D,CAAC,CAAC,CAAC,CACF,uBAAC,0BAAW,IAAC,SAAS,EAAC,qCAAqC,GAAG,CAChE,CACF,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY;oCACpB,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,EAAE,MAAK,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAC5C,uBAAC,0BAAW,IAAC,SAAS,EAAC,qCAAqC,GAAG,CAChE,CAAC,CAAC,CAAC,CACF,uBAAC,2BAAY,IAAC,SAAS,EAAC,qCAAqC,GAAG,CACjE,GACG,IACC,EAIR,cAAc,IAAI,KAAK,CAAC,YAAY;wBACnC,CAAA,MAAA,KAAK,CAAC,eAAe,0CAAE,EAAE,MAAK,QAAQ,CAAC,EAAE,IAAI,CAC3C,uBAAC,wBAAc,IAAC,cAAc,EAAE,IAAI,GAAI,CACzC,KAnDgB,QAAQ,CAAC,EAAE,CAoDf,CAClB,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC,CAAC;AAUF,MAAM,uBAAuB,GAAG,IAAA,YAAI,EAAC,eAAe,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE,CAAC;IAExE,OAAO,CACL,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,cAAc;QAC3C,QAAQ,KAAK,QAAQ;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ;QAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAClD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,kBAAe,uBAAuB,CAAC"}
1
+ {"version":3,"file":"ArtifactHandler.js","sourceRoot":"","sources":["../../../../../src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { ReactNode } from 'react';
2
- import { ArtifactData, ArtifactSystemState } from '../types/artifact.types';
2
+ import { ArtifactData, ArtifactEdit, ArtifactSystemState, ApplyUpdateResult } from '../types/artifact.types';
3
3
  export type OpenArtifactOptions = {
4
4
  isChatLogPanel?: boolean;
5
5
  };
@@ -8,6 +8,8 @@ interface ArtifactContextType {
8
8
  openArtifact: (artifact: ArtifactData, options?: OpenArtifactOptions) => void;
9
9
  closeArtifact: () => void;
10
10
  toggleFullscreen: () => void;
11
+ registerArtifact: (artifact: ArtifactData) => void;
12
+ applyArtifactUpdate: (artifactId: string, edits: ArtifactEdit[]) => ApplyUpdateResult;
11
13
  }
12
14
  export declare const ArtifactProvider: ({ children }: {
13
15
  children: ReactNode;
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.useArtifact = exports.ArtifactProvider = void 0;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("react");
6
+ const applyEdits_1 = require("../utils/applyEdits");
6
7
  const ArtifactContext = (0, react_1.createContext)(null);
7
8
  const ArtifactProvider = ({ children }) => {
8
9
  const [state, setState] = (0, react_1.useState)({
@@ -11,6 +12,7 @@ const ArtifactProvider = ({ children }) => {
11
12
  isFullscreen: false,
12
13
  isChatLogPanelPresentation: false,
13
14
  });
15
+ const registryRef = (0, react_1.useRef)({});
14
16
  const openArtifact = (0, react_1.useCallback)((artifact, options) => {
15
17
  setState(() => {
16
18
  var _a;
@@ -39,12 +41,74 @@ const ArtifactProvider = ({ children }) => {
39
41
  isFullscreen: !prev.isFullscreen,
40
42
  }));
41
43
  }, []);
44
+ const registerArtifact = (0, react_1.useCallback)((artifact) => {
45
+ if (!(artifact === null || artifact === void 0 ? void 0 : artifact.artifactId))
46
+ return;
47
+ registryRef.current[artifact.artifactId] = artifact;
48
+ }, []);
49
+ const applyArtifactUpdate = (0, react_1.useCallback)((artifactId, edits) => {
50
+ const current = registryRef.current[artifactId];
51
+ if (!current) {
52
+ return {
53
+ success: false,
54
+ failedEdits: edits,
55
+ updatedArtifact: null,
56
+ failureReason: 'not-found',
57
+ };
58
+ }
59
+ const { content, failedEdits, appliedCount } = (0, applyEdits_1.applyEdits)(current.content, edits);
60
+ if (appliedCount === 0) {
61
+ return {
62
+ success: false,
63
+ failedEdits,
64
+ updatedArtifact: null,
65
+ failureReason: 'no-match',
66
+ };
67
+ }
68
+ const updatedArtifact = {
69
+ id: `artifact-ui-${artifactId}-${Date.now()}-${Math.random()
70
+ .toString(36)
71
+ .slice(2, 8)}`,
72
+ artifactId,
73
+ content,
74
+ mimeType: current.mimeType,
75
+ title: current.title,
76
+ timestamp: new Date(),
77
+ size: content.length,
78
+ };
79
+ registryRef.current[artifactId] = updatedArtifact;
80
+ setState(prev => {
81
+ var _a;
82
+ if (prev.isDrawerOpen &&
83
+ ((_a = prev.currentArtifact) === null || _a === void 0 ? void 0 : _a.artifactId) === artifactId) {
84
+ return {
85
+ ...prev,
86
+ currentArtifact: updatedArtifact,
87
+ };
88
+ }
89
+ return prev;
90
+ });
91
+ return {
92
+ success: failedEdits.length === 0,
93
+ failedEdits,
94
+ updatedArtifact,
95
+ };
96
+ }, []);
42
97
  const contextValue = (0, react_1.useMemo)(() => ({
43
98
  state,
44
99
  openArtifact,
45
100
  closeArtifact,
46
101
  toggleFullscreen,
47
- }), [state, openArtifact, closeArtifact, toggleFullscreen]);
102
+ registerArtifact,
103
+ applyArtifactUpdate,
104
+ }), [
105
+ state,
106
+ openArtifact,
107
+ closeArtifact,
108
+ toggleFullscreen,
109
+ registerArtifact,
110
+ applyArtifactUpdate,
111
+ ]);
48
112
  return ((0, jsx_runtime_1.jsx)(ArtifactContext.Provider, { value: contextValue, children: children }));
49
113
  };
50
114
  exports.ArtifactProvider = ArtifactProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"ArtifactContext.js","sourceRoot":"","sources":["../../../../src/components/MemoriArtifactSystem/context/ArtifactContext.tsx"],"names":[],"mappings":";;;;AAAA,iCAAoG;AAepG,MAAM,eAAe,GAAG,IAAA,qBAAa,EAA6B,IAAI,CAAC,CAAC;AAEjE,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAsB;QACtD,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,KAAK;QACnB,0BAA0B,EAAE,KAAK;KAClC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,CAAC,QAAsB,EAAE,OAA6B,EAAE,EAAE;QACxD,QAAQ,CAAC,GAAG,EAAE;;YACZ,OAAO;gBACL,eAAe,EAAE,QAAQ;gBACzB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,0BAA0B,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,KAAK;aAC7D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAEd,OAAO;gBACL,GAAG,IAAI;gBACP,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,KAAK;gBACnB,0BAA0B,EAAE,KAAK;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY;SACjC,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC;QAClC,KAAK;QACL,YAAY;QACZ,aAAa;QACb,gBAAgB;KACjB,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAE5D,OAAO,CACL,uBAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC1C,QAAQ,GACgB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAtDW,QAAA,gBAAgB,oBAsD3B;AAEK,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
1
+ {"version":3,"file":"ArtifactContext.js","sourceRoot":"","sources":["../../../../src/components/MemoriArtifactSystem/context/ArtifactContext.tsx"],"names":[],"mappings":";;;;AAAA,iCAQe;AAOf,oDAAiD;AAmBjD,MAAM,eAAe,GAAG,IAAA,qBAAa,EAA6B,IAAI,CAAC,CAAC;AAEjE,MAAM,gBAAgB,GAAG,CAAC,EAAE,QAAQ,EAA2B,EAAE,EAAE;IACxE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAsB;QACtD,eAAe,EAAE,IAAI;QACrB,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,KAAK;QACnB,0BAA0B,EAAE,KAAK;KAClC,CAAC,CAAC;IAKH,MAAM,WAAW,GAAG,IAAA,cAAM,EAA+B,EAAE,CAAC,CAAC;IAE7D,MAAM,YAAY,GAAG,IAAA,mBAAW,EAC9B,CAAC,QAAsB,EAAE,OAA6B,EAAE,EAAE;QACxD,QAAQ,CAAC,GAAG,EAAE;;YACZ,OAAO;gBACL,eAAe,EAAE,QAAQ;gBACzB,YAAY,EAAE,IAAI;gBAClB,YAAY,EAAE,KAAK;gBACnB,0BAA0B,EAAE,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,cAAc,mCAAI,KAAK;aAC7D,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,aAAa,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACd,OAAO;gBACL,GAAG,IAAI;gBACP,eAAe,EAAE,IAAI;gBACrB,YAAY,EAAE,KAAK;gBACnB,YAAY,EAAE,KAAK;gBACnB,0BAA0B,EAAE,KAAK;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,GAAG,EAAE;QACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,YAAY,EAAE,CAAC,IAAI,CAAC,YAAY;SACjC,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,gBAAgB,GAAG,IAAA,mBAAW,EAAC,CAAC,QAAsB,EAAE,EAAE;QAC9D,IAAI,CAAC,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,CAAA;YAAE,OAAO;QAClC,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,QAAQ,CAAC;IACtD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,mBAAmB,GAAG,IAAA,mBAAW,EACrC,CAAC,UAAkB,EAAE,KAAqB,EAAqB,EAAE;QAC/D,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,KAAK;gBAClB,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,WAAW;aAC3B,CAAC;QACJ,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAA,uBAAU,EACvD,OAAO,CAAC,OAAO,EACf,KAAK,CACN,CAAC;QAEF,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,WAAW;gBACX,eAAe,EAAE,IAAI;gBACrB,aAAa,EAAE,UAAU;aAC1B,CAAC;QACJ,CAAC;QAED,MAAM,eAAe,GAAiB;YACpC,EAAE,EAAE,eAAe,UAAU,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;iBACzD,QAAQ,CAAC,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;YAChB,UAAU;YACV,OAAO;YACP,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI,EAAE,OAAO,CAAC,MAAM;SACrB,CAAC;QAEF,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;QAElD,QAAQ,CAAC,IAAI,CAAC,EAAE;;YACd,IACE,IAAI,CAAC,YAAY;gBACjB,CAAA,MAAA,IAAI,CAAC,eAAe,0CAAE,UAAU,MAAK,UAAU,EAC/C,CAAC;gBACD,OAAO;oBACL,GAAG,IAAI;oBACP,eAAe,EAAE,eAAe;iBACjC,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE,WAAW,CAAC,MAAM,KAAK,CAAC;YACjC,WAAW;YACX,eAAe;SAChB,CAAC;IACJ,CAAC,EACD,EAAE,CACH,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,eAAO,EAC1B,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;KACpB,CAAC,EACF;QACE,KAAK;QACL,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;KACpB,CACF,CAAC;IAEF,OAAO,CACL,uBAAC,eAAe,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC1C,QAAQ,GACgB,CAC5B,CAAC;AACJ,CAAC,CAAC;AAzIW,QAAA,gBAAgB,oBAyI3B;AAEK,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,MAAM,OAAO,GAAG,IAAA,kBAAU,EAAC,eAAe,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
@@ -1,11 +1,22 @@
1
1
  export interface ArtifactData {
2
2
  id: string;
3
+ artifactId: string;
3
4
  content: string;
4
5
  mimeType: string;
5
6
  title: string;
6
7
  timestamp: Date;
7
8
  size: number;
8
9
  }
10
+ export interface ArtifactEdit {
11
+ old: string;
12
+ new: string;
13
+ }
14
+ export interface ApplyUpdateResult {
15
+ success: boolean;
16
+ failedEdits: ArtifactEdit[];
17
+ updatedArtifact: ArtifactData | null;
18
+ failureReason?: 'not-found' | 'no-match';
19
+ }
9
20
  export interface ArtifactSystemState {
10
21
  currentArtifact: ArtifactData | null;
11
22
  isDrawerOpen: boolean;
@@ -64,7 +64,7 @@ const initMemoriArtifactAPI = () => {
64
64
  exports.initMemoriArtifactAPI = initMemoriArtifactAPI;
65
65
  (0, exports.initMemoriArtifactAPI)();
66
66
  const ArtifactAPIBridge = ({ pushMessage, }) => {
67
- const { openArtifact, closeArtifact, toggleFullscreen, state } = (0, ArtifactContext_1.useArtifact)();
67
+ const { openArtifact, closeArtifact, toggleFullscreen, state, registerArtifact } = (0, ArtifactContext_1.useArtifact)();
68
68
  const apiRef = (0, react_1.useRef)(null);
69
69
  (0, react_1.useEffect)(() => {
70
70
  if (typeof window !== 'undefined') {
@@ -75,10 +75,12 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
75
75
  },
76
76
  createAndOpenArtifact: (content, mimeType = 'html', title) => {
77
77
  const autoTitle = title || getTitleFromMimeType(mimeType);
78
+ const artifactId = `api-${Date.now()}-${Math.random()
79
+ .toString(36)
80
+ .substr(2, 9)}`;
78
81
  const artifact = {
79
- id: `artifact-${Date.now()}-${Math.random()
80
- .toString(36)
81
- .substr(2, 9)}`,
82
+ id: `artifact-ui-${artifactId}`,
83
+ artifactId,
82
84
  content,
83
85
  mimeType,
84
86
  title: autoTitle,
@@ -86,8 +88,8 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
86
88
  size: content.length,
87
89
  };
88
90
  let messageText = content;
89
- if (!messageText.includes('<output class="memori-artifact">')) {
90
- messageText = `<output class="memori-artifact" data-mimetype="${mimeType}" data-title="${autoTitle}">${content}</output>`;
91
+ if (!messageText.includes('class="memori-artifact"')) {
92
+ messageText = `<output class="memori-artifact" data-action="create" data-artifact-id="${artifactId}" data-mimetype="${mimeType}" data-title="${autoTitle}">${content}</output>`;
91
93
  }
92
94
  pushMessage({
93
95
  text: messageText,
@@ -105,6 +107,7 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
105
107
  placeLongitude: undefined,
106
108
  placeUncertaintyKm: undefined,
107
109
  });
110
+ registerArtifact(artifact);
108
111
  openArtifact(artifact);
109
112
  },
110
113
  createFromOutputElement: (outputElement) => {
@@ -112,12 +115,13 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
112
115
  const mimeType = outputElement.getAttribute('data-mimetype') || 'html';
113
116
  const title = outputElement.getAttribute('data-title') ||
114
117
  getTitleFromMimeType(mimeType);
118
+ const artifactId = outputElement.getAttribute('data-artifact-id') ||
119
+ `api-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
115
120
  outputElement.style.display = 'none';
116
121
  outputElement.setAttribute('data-memori-processed', 'true');
117
122
  const artifact = {
118
- id: `artifact-${Date.now()}-${Math.random()
119
- .toString(36)
120
- .substr(2, 9)}`,
123
+ id: `artifact-ui-${artifactId}`,
124
+ artifactId,
121
125
  content,
122
126
  mimeType,
123
127
  title,
@@ -125,8 +129,8 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
125
129
  size: content.length,
126
130
  };
127
131
  let messageText = content;
128
- if (!messageText.includes('<output class="memori-artifact">')) {
129
- messageText = `<output class="memori-artifact" data-mimetype="${mimeType}" data-title="${title}">${content}</output>`;
132
+ if (!messageText.includes('class="memori-artifact"')) {
133
+ messageText = `<output class="memori-artifact" data-action="create" data-artifact-id="${artifactId}" data-mimetype="${mimeType}" data-title="${title}">${content}</output>`;
130
134
  }
131
135
  pushMessage({
132
136
  text: messageText,
@@ -144,8 +148,9 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
144
148
  placeLongitude: undefined,
145
149
  placeUncertaintyKm: undefined,
146
150
  });
151
+ registerArtifact(artifact);
147
152
  openArtifact(artifact);
148
- return artifact.id;
153
+ return artifact.artifactId;
149
154
  },
150
155
  closeArtifact: () => {
151
156
  closeArtifact();
@@ -207,7 +212,7 @@ const ArtifactAPIBridge = ({ pushMessage, }) => {
207
212
  delete window.MemoriArtifactAPI;
208
213
  }
209
214
  };
210
- }, [openArtifact, closeArtifact, toggleFullscreen, state, pushMessage]);
215
+ }, [openArtifact, closeArtifact, toggleFullscreen, state, pushMessage, registerArtifact]);
211
216
  return null;
212
217
  };
213
218
  exports.ArtifactAPIBridge = ArtifactAPIBridge;