@memori.ai/memori-react 8.45.1 → 8.45.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +27 -0
- package/dist/components/Chat/Chat.js +4 -1
- package/dist/components/Chat/Chat.js.map +1 -1
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.d.ts +4 -1
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js +7 -57
- package/dist/components/ChatHistoryDrawer/ChatResumeDrawer.js.map +1 -1
- package/dist/components/IconButton/IconButton.d.ts +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.d.ts +1 -1
- package/dist/components/MemoriWidget/MemoriWidget.js +2 -1
- package/dist/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/dist/components/PositionPopover/PositionPopover.js +38 -25
- package/dist/components/PositionPopover/PositionPopover.js.map +1 -1
- package/dist/components/UploadButton/UploadButton.js +3 -0
- package/dist/components/UploadButton/UploadButton.js.map +1 -1
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js +14 -2
- package/dist/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/dist/components/layouts/chat.css +27 -4
- package/dist/context/widgetSurfaceContext.js +2 -2
- package/dist/context/widgetSurfaceContext.js.map +1 -1
- package/dist/helpers/constants.d.ts +3 -2
- package/dist/helpers/constants.js +19 -20
- package/dist/helpers/constants.js.map +1 -1
- package/dist/helpers/positionPopover.d.ts +2 -1
- package/dist/helpers/positionPopover.js +12 -3
- package/dist/helpers/positionPopover.js.map +1 -1
- package/dist/helpers/tts/muteSpeaker.js +4 -3
- package/dist/helpers/tts/muteSpeaker.js.map +1 -1
- package/dist/helpers/usePressTooltip.js +2 -1
- package/dist/helpers/usePressTooltip.js.map +1 -1
- package/dist/helpers/utils.d.ts +2 -1
- package/dist/helpers/utils.js +7 -1
- package/dist/helpers/utils.js.map +1 -1
- package/dist/icons/MemoriIcon.js +1 -1
- package/dist/icons/MemoriIcon.js.map +1 -1
- package/dist/styles.css +1 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/esm/components/Chat/Chat.js +4 -1
- package/esm/components/Chat/Chat.js.map +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.d.ts +1 -1
- package/esm/components/MemoriWidget/MemoriWidget.js +2 -1
- package/esm/components/MemoriWidget/MemoriWidget.js.map +1 -1
- package/esm/components/UploadButton/UploadButton.js +4 -1
- package/esm/components/UploadButton/UploadButton.js.map +1 -1
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js +16 -4
- package/esm/components/UploadButton/UploadDocuments/UploadDocuments.js.map +1 -1
- package/esm/components/layouts/chat.css +27 -4
- package/esm/helpers/constants.d.ts +3 -2
- package/esm/helpers/constants.js +18 -19
- package/esm/helpers/constants.js.map +1 -1
- package/esm/helpers/utils.d.ts +2 -1
- package/esm/helpers/utils.js +6 -1
- package/esm/helpers/utils.js.map +1 -1
- package/esm/styles.css +1 -2
- package/esm/version.d.ts +1 -1
- package/esm/version.js +1 -1
- package/package.json +6 -7
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -64
- package/dist/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
- package/dist/testUtils.d.ts +0 -5
- package/dist/testUtils.js +0 -18
- package/dist/testUtils.js.map +0 -1
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.d.ts +0 -3
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js +0 -62
- package/esm/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.js.map +0 -1
- package/src/I18nWrapper.tsx +0 -13
- package/src/__snapshots__/index.test.tsx.snap +0 -96
- package/src/components/AgeVerificationModal/AgeVerificationModal.css +0 -95
- package/src/components/AgeVerificationModal/AgeVerificationModal.stories.tsx +0 -46
- package/src/components/AgeVerificationModal/AgeVerificationModal.test.tsx +0 -33
- package/src/components/AgeVerificationModal/AgeVerificationModal.tsx +0 -99
- package/src/components/AgeVerificationModal/__snapshots__/AgeVerificationModal.test.tsx.snap +0 -19
- package/src/components/Auth/Auth.css +0 -57
- package/src/components/Auth/Auth.stories.tsx +0 -90
- package/src/components/Auth/Auth.test.tsx +0 -63
- package/src/components/Auth/Auth.tsx +0 -201
- package/src/components/Auth/__snapshots__/Auth.test.tsx.snap +0 -143
- package/src/components/Avatar/Avatar.css +0 -151
- package/src/components/Avatar/Avatar.stories.tsx +0 -160
- package/src/components/Avatar/Avatar.test.tsx +0 -158
- package/src/components/Avatar/Avatar.tsx +0 -245
- package/src/components/Avatar/AvatarView/AvatarComponent/Shadow/DynamicShadow.tsx +0 -103
- package/src/components/Avatar/AvatarView/AvatarComponent/avatarComponent.tsx +0 -105
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/fullbodyAvatar.tsx +0 -338
- package/src/components/Avatar/AvatarView/AvatarComponent/components/FullbodyAvatar/types.ts +0 -44
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarAnimator.ts +0 -1091
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/AvatarPositionController.ts +0 -83
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controllers/MorphTargetController.ts +0 -301
- package/src/components/Avatar/AvatarView/AvatarComponent/components/controls.tsx +0 -100
- package/src/components/Avatar/AvatarView/AvatarComponent/components/halfbodyAvatar.tsx +0 -152
- package/src/components/Avatar/AvatarView/AvatarComponent/components/loader.tsx +0 -31
- package/src/components/Avatar/AvatarView/AvatarComponent/constants.ts +0 -141
- package/src/components/Avatar/AvatarView/AvatarComponent/lights/Lights.tsx +0 -145
- package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.css +0 -111
- package/src/components/Avatar/AvatarView/AvatarComponent/positionControls/positionControls.tsx +0 -201
- package/src/components/Avatar/AvatarView/AvatarView.stories.tsx +0 -254
- package/src/components/Avatar/AvatarView/index.tsx +0 -194
- package/src/components/Avatar/AvatarView/utils/hideHands.ts +0 -11
- package/src/components/Avatar/AvatarView/utils/useEyeBlink.ts +0 -100
- package/src/components/Avatar/AvatarView/utils/useHeadMovement.ts +0 -72
- package/src/components/Avatar/AvatarView/utils/useLoadingMorphAnim.ts +0 -38
- package/src/components/Avatar/AvatarView/utils/useMouthAnimation.ts +0 -93
- package/src/components/Avatar/AvatarView/utils/useSmile.ts +0 -39
- package/src/components/Avatar/AvatarView/utils/utils.ts +0 -55
- package/src/components/Avatar/__snapshots__/Avatar.test.tsx.snap +0 -246
- package/src/components/Blob/Blob.css +0 -286
- package/src/components/Blob/Blob.stories.tsx +0 -53
- package/src/components/Blob/Blob.test.tsx +0 -18
- package/src/components/Blob/Blob.tsx +0 -26
- package/src/components/Blob/__snapshots__/Blob.test.tsx.snap +0 -80
- package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.css +0 -40
- package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.stories.tsx +0 -58
- package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.test.tsx +0 -53
- package/src/components/BlockedMemoriBadge/BlockedMemoriBadge.tsx +0 -74
- package/src/components/BlockedMemoriBadge/__snapshots__/BlockedMemoriBadge.test.tsx.snap +0 -181
- package/src/components/ChangeMode/ChangeMode.css +0 -22
- package/src/components/ChangeMode/ChangeMode.stories.tsx +0 -50
- package/src/components/ChangeMode/ChangeMode.test.tsx +0 -24
- package/src/components/ChangeMode/ChangeMode.tsx +0 -51
- package/src/components/ChangeMode/__snapshots__/ChangeMode.test.tsx.snap +0 -107
- package/src/components/Chat/Chat.css +0 -285
- package/src/components/Chat/Chat.stories.tsx +0 -1684
- package/src/components/Chat/Chat.test.tsx +0 -372
- package/src/components/Chat/Chat.tsx +0 -778
- package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +0 -6816
- package/src/components/ChatBubble/ChatBubble.css +0 -430
- package/src/components/ChatBubble/ChatBubble.stories.tsx +0 -1192
- package/src/components/ChatBubble/ChatBubble.test.tsx +0 -481
- package/src/components/ChatBubble/ChatBubble.tsx +0 -776
- package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +0 -8734
- package/src/components/ChatHistoryDrawer/ChatHistory.css +0 -587
- package/src/components/ChatHistoryDrawer/ChatHistory.stories.tsx +0 -410
- package/src/components/ChatHistoryDrawer/ChatHistory.test.tsx +0 -107
- package/src/components/ChatHistoryDrawer/ChatHistory.tsx +0 -1298
- package/src/components/ChatHistoryDrawer/__snapshots__/ChatHistory.test.tsx.snap +0 -27
- package/src/components/ChatInputs/ChatInputs.css +0 -340
- package/src/components/ChatInputs/ChatInputs.stories.tsx +0 -251
- package/src/components/ChatInputs/ChatInputs.tsx +0 -487
- package/src/components/ChatTextArea/ChatTextArea.css +0 -185
- package/src/components/ChatTextArea/ChatTextArea.stories.tsx +0 -55
- package/src/components/ChatTextArea/ChatTextArea.test.tsx +0 -28
- package/src/components/ChatTextArea/ChatTextArea.tsx +0 -171
- package/src/components/ChatTextArea/__snapshots__/ChatTextArea.test.tsx.snap +0 -68
- package/src/components/CompletionProviderStatus/CompletionProviderStatus.css +0 -36
- package/src/components/CompletionProviderStatus/CompletionProviderStatus.stories.tsx +0 -296
- package/src/components/CompletionProviderStatus/CompletionProviderStatus.test.tsx +0 -31
- package/src/components/CompletionProviderStatus/CompletionProviderStatus.tsx +0 -232
- package/src/components/CompletionProviderStatus/__snapshots__/CompletionProviderStatus.test.tsx.snap +0 -96
- package/src/components/ContentPreviewModal/ContentPreviewModal.css +0 -128
- package/src/components/ContentPreviewModal/ContentPreviewModal.tsx +0 -67
- package/src/components/ContentPreviewModal/index.ts +0 -2
- package/src/components/CustomGLBModelViewer/ModelViewer.css +0 -11
- package/src/components/CustomGLBModelViewer/ModelViewer.stories.tsx +0 -58
- package/src/components/CustomGLBModelViewer/ModelViewer.test.tsx +0 -13
- package/src/components/CustomGLBModelViewer/ModelViewer.tsx +0 -37
- package/src/components/CustomGLBModelViewer/__snapshots__/ModelViewer.test.tsx.snap +0 -20
- package/src/components/DateSelector/DateSelector.css +0 -158
- package/src/components/DateSelector/DateSelector.stories.tsx +0 -47
- package/src/components/DateSelector/DateSelector.test.tsx +0 -149
- package/src/components/DateSelector/DateSelector.tsx +0 -251
- package/src/components/DateSelector/__snapshots__/DateSelector.test.tsx.snap +0 -1954
- package/src/components/ErrorBoundary/ErrorBoundary.tsx +0 -54
- package/src/components/ExpertsDrawer/ExpertsDrawer.css +0 -67
- package/src/components/ExpertsDrawer/ExpertsDrawer.stories.tsx +0 -54
- package/src/components/ExpertsDrawer/ExpertsDrawer.test.tsx +0 -53
- package/src/components/ExpertsDrawer/ExpertsDrawer.tsx +0 -69
- package/src/components/ExpertsDrawer/__snapshots__/ExpertsDrawer.test.tsx.snap +0 -11
- package/src/components/ExportHistoryButton/ExportHistoryButton.css +0 -22
- package/src/components/FeedbackButtons/FeedbackButtons.css +0 -107
- package/src/components/FeedbackButtons/FeedbackButtons.stories.tsx +0 -52
- package/src/components/FeedbackButtons/FeedbackButtons.test.tsx +0 -11
- package/src/components/FeedbackButtons/FeedbackButtons.tsx +0 -152
- package/src/components/FeedbackButtons/__snapshots__/FeedbackButtons.test.tsx.snap +0 -42
- package/src/components/FilePreview/FilePreview.css +0 -358
- package/src/components/FilePreview/FilePreview.stories.tsx +0 -63
- package/src/components/FilePreview/FilePreview.test.tsx +0 -26
- package/src/components/FilePreview/FilePreview.tsx +0 -277
- package/src/components/FilePreview/__snapshots__/FilePreview.test.tsx.snap +0 -185
- package/src/components/Header/ChatConsumptionDropdown.test.tsx +0 -117
- package/src/components/Header/ChatConsumptionDropdown.tsx +0 -275
- package/src/components/Header/Header.css +0 -282
- package/src/components/Header/Header.stories.tsx +0 -338
- package/src/components/Header/Header.test.tsx +0 -371
- package/src/components/Header/Header.tsx +0 -442
- package/src/components/Header/__snapshots__/Header.test.tsx.snap +0 -964
- package/src/components/KnownFacts/KnownFacts.css +0 -19
- package/src/components/KnownFacts/KnownFacts.stories.tsx +0 -80
- package/src/components/KnownFacts/KnownFacts.test.tsx +0 -57
- package/src/components/KnownFacts/KnownFacts.tsx +0 -376
- package/src/components/KnownFacts/__snapshots__/KnownFacts.test.tsx.snap +0 -19
- package/src/components/LoginDrawer/LoginDrawer.css +0 -1616
- package/src/components/LoginDrawer/LoginDrawer.stories.tsx +0 -102
- package/src/components/LoginDrawer/LoginDrawer.test.tsx +0 -199
- package/src/components/LoginDrawer/LoginDrawer.tsx +0 -600
- package/src/components/LoginDrawer/__snapshots__/LoginDrawer.test.tsx.snap +0 -91
- package/src/components/MediaWidget/DocumentCard.test.tsx +0 -45
- package/src/components/MediaWidget/DocumentCard.tsx +0 -19
- package/src/components/MediaWidget/MediaItemWidget.css +0 -1398
- package/src/components/MediaWidget/MediaItemWidget.stories.tsx +0 -423
- package/src/components/MediaWidget/MediaItemWidget.test.tsx +0 -248
- package/src/components/MediaWidget/MediaItemWidget.tsx +0 -997
- package/src/components/MediaWidget/MediaItemWidget.types.ts +0 -65
- package/src/components/MediaWidget/MediaItemWidget.utils.test.ts +0 -367
- package/src/components/MediaWidget/MediaItemWidget.utils.ts +0 -227
- package/src/components/MediaWidget/MediaPreviewModal.test.tsx +0 -271
- package/src/components/MediaWidget/MediaPreviewModal.tsx +0 -425
- package/src/components/MediaWidget/MediaWidget.css +0 -131
- package/src/components/MediaWidget/MediaWidget.stories.tsx +0 -319
- package/src/components/MediaWidget/MediaWidget.test.tsx +0 -41
- package/src/components/MediaWidget/MediaWidget.tsx +0 -107
- package/src/components/MediaWidget/__snapshots__/DocumentCard.test.tsx.snap +0 -24
- package/src/components/MediaWidget/__snapshots__/MediaItemWidget.test.tsx.snap +0 -791
- package/src/components/MediaWidget/__snapshots__/MediaWidget.test.tsx.snap +0 -154
- package/src/components/MemoriArtifactSystem/ArtifactDrawer.stories.tsx +0 -2299
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.css +0 -163
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/ArtifactActions.tsx +0 -250
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/CopyButton.stories.tsx +0 -30
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyButtonWithDropdown.tsx +0 -467
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/components/CopyMenuItem.tsx +0 -89
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/hooks/useCopyArtifact.ts +0 -619
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/index.ts +0 -9
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/styles.css +0 -489
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/test/CopyButtonTest.tsx +0 -90
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/types.ts +0 -73
- package/src/components/MemoriArtifactSystem/components/ArtifactActions/utils/PDFExporter.ts +0 -454
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.css +0 -1059
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/ArtifactDrawer.tsx +0 -431
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.css +0 -150
- package/src/components/MemoriArtifactSystem/components/ArtifactDrawer/components/TabSwitch.tsx +0 -79
- package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.css +0 -253
- package/src/components/MemoriArtifactSystem/components/ArtifactHandler/ArtifactHandler.tsx +0 -561
- package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.css +0 -355
- package/src/components/MemoriArtifactSystem/components/ArtifactPreview/ArtifactPreview.tsx +0 -160
- package/src/components/MemoriArtifactSystem/context/ArtifactContext.tsx +0 -167
- package/src/components/MemoriArtifactSystem/types/artifact.types.ts +0 -35
- package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.test.tsx +0 -308
- package/src/components/MemoriArtifactSystem/utils/ArtifactAPI.tsx +0 -379
- package/src/components/MemoriArtifactSystem/utils/applyEdits.test.ts +0 -85
- package/src/components/MemoriArtifactSystem/utils/applyEdits.ts +0 -173
- package/src/components/MemoriWidget/MemoriWidget.css +0 -220
- package/src/components/MemoriWidget/MemoriWidget.stories.tsx +0 -274
- package/src/components/MemoriWidget/MemoriWidget.tsx +0 -3930
- package/src/components/MicrophoneButton/MicrophoneButton.css +0 -142
- package/src/components/MicrophoneButton/MicrophoneButton.stories.tsx +0 -52
- package/src/components/MicrophoneButton/MicrophoneButton.tsx +0 -128
- package/src/components/PositionDrawer/PositionDrawer.stories.tsx +0 -51
- package/src/components/PositionDrawer/PositionDrawer.test.tsx +0 -39
- package/src/components/PositionDrawer/PositionDrawer.tsx +0 -50
- package/src/components/PositionDrawer/__snapshots__/PositionDrawer.test.tsx.snap +0 -17
- package/src/components/PoweredBy/PoweredBy.css +0 -47
- package/src/components/PoweredBy/PoweredBy.stories.tsx +0 -75
- package/src/components/PoweredBy/PoweredBy.test.tsx +0 -15
- package/src/components/PoweredBy/PoweredBy.tsx +0 -44
- package/src/components/PoweredBy/__snapshots__/PoweredBy.test.tsx.snap +0 -55
- package/src/components/SendOnEnterMenu/SendOnEnterMenu.css +0 -47
- package/src/components/SendOnEnterMenu/SendOnEnterMenu.stories.tsx +0 -58
- package/src/components/SendOnEnterMenu/SendOnEnterMenu.test.tsx +0 -17
- package/src/components/SendOnEnterMenu/SendOnEnterMenu.tsx +0 -82
- package/src/components/SendOnEnterMenu/__snapshots__/SendOnEnterMenu.test.tsx.snap +0 -57
- package/src/components/SettingsDrawer/SettingsDrawer.css +0 -24
- package/src/components/SettingsDrawer/SettingsDrawer.stories.tsx +0 -94
- package/src/components/SettingsDrawer/SettingsDrawer.test.tsx +0 -202
- package/src/components/SettingsDrawer/SettingsDrawer.tsx +0 -255
- package/src/components/SettingsDrawer/__snapshots__/SettingsDrawer.test.tsx.snap +0 -59
- package/src/components/ShareButton/ShareButton.css +0 -73
- package/src/components/ShareButton/ShareButton.stories.tsx +0 -98
- package/src/components/ShareButton/ShareButton.test.tsx +0 -53
- package/src/components/ShareButton/ShareButton.tsx +0 -395
- package/src/components/ShareButton/__snapshots__/ShareButton.test.tsx.snap +0 -316
- package/src/components/Snippet/Snippet.css +0 -142
- package/src/components/Snippet/Snippet.stories.tsx +0 -286
- package/src/components/Snippet/Snippet.test.tsx +0 -176
- package/src/components/Snippet/Snippet.tsx +0 -148
- package/src/components/Snippet/__snapshots__/Snippet.test.tsx.snap +0 -603
- package/src/components/StartPanel/StartPanel.css +0 -273
- package/src/components/StartPanel/StartPanel.stories.tsx +0 -404
- package/src/components/StartPanel/StartPanel.test.tsx +0 -360
- package/src/components/StartPanel/StartPanel.tsx +0 -426
- package/src/components/StartPanel/__snapshots__/StartPanel.test.tsx.snap +0 -1986
- package/src/components/Typing/Typing.stories.tsx +0 -130
- package/src/components/Typing/Typing.test.tsx +0 -62
- package/src/components/Typing/Typing.tsx +0 -154
- package/src/components/Typing/__snapshots__/Typing.test.tsx.snap +0 -133
- package/src/components/UploadButton/UploadButton.css +0 -542
- package/src/components/UploadButton/UploadButton.stories.tsx +0 -376
- package/src/components/UploadButton/UploadButton.test.tsx +0 -11
- package/src/components/UploadButton/UploadButton.tsx +0 -684
- package/src/components/UploadButton/UploadDocuments/UploadDocuments.tsx +0 -405
- package/src/components/UploadButton/UploadImages/UploadImages.tsx +0 -538
- package/src/components/UploadButton/__snapshots__/UploadButton.test.tsx.snap +0 -165
- package/src/components/VenueWidget/VenueWidget.css +0 -163
- package/src/components/VenueWidget/VenueWidget.stories.tsx +0 -66
- package/src/components/VenueWidget/VenueWidget.test.tsx +0 -49
- package/src/components/VenueWidget/VenueWidget.tsx +0 -458
- package/src/components/VenueWidget/__snapshots__/VenueWidget.test.tsx.snap +0 -370
- package/src/components/WhyThisAnswer/WhyThisAnswer.css +0 -171
- package/src/components/WhyThisAnswer/WhyThisAnswer.stories.tsx +0 -285
- package/src/components/WhyThisAnswer/WhyThisAnswer.test.tsx +0 -245
- package/src/components/WhyThisAnswer/WhyThisAnswer.tsx +0 -233
- package/src/components/WhyThisAnswer/__snapshots__/WhyThisAnswer.test.tsx.snap +0 -27
- package/src/components/icons/AI.tsx +0 -34
- package/src/components/icons/Alert.tsx +0 -31
- package/src/components/icons/ArrowUp.tsx +0 -28
- package/src/components/icons/Bug.tsx +0 -81
- package/src/components/icons/Chat.tsx +0 -30
- package/src/components/icons/ChevronDown.tsx +0 -26
- package/src/components/icons/ChevronLeft.tsx +0 -28
- package/src/components/icons/ChevronRight.tsx +0 -28
- package/src/components/icons/ChevronUp.tsx +0 -24
- package/src/components/icons/Clear.tsx +0 -23
- package/src/components/icons/Close.tsx +0 -30
- package/src/components/icons/Code.tsx +0 -24
- package/src/components/icons/Copy.tsx +0 -23
- package/src/components/icons/DeepThought.tsx +0 -38
- package/src/components/icons/Delete.tsx +0 -23
- package/src/components/icons/Document.tsx +0 -50
- package/src/components/icons/Download.tsx +0 -23
- package/src/components/icons/Edit.tsx +0 -17
- package/src/components/icons/Expand.tsx +0 -23
- package/src/components/icons/Eye.tsx +0 -17
- package/src/components/icons/EyeInvisible.tsx +0 -24
- package/src/components/icons/Facebook.tsx +0 -23
- package/src/components/icons/Feedback.tsx +0 -24
- package/src/components/icons/File.tsx +0 -17
- package/src/components/icons/FileExcel.tsx +0 -23
- package/src/components/icons/FilePdf.tsx +0 -23
- package/src/components/icons/FileWord.tsx +0 -23
- package/src/components/icons/Fullscreen.tsx +0 -23
- package/src/components/icons/FullscreenExit.tsx +0 -23
- package/src/components/icons/GasStation.tsx +0 -36
- package/src/components/icons/Group.tsx +0 -30
- package/src/components/icons/History.tsx +0 -33
- package/src/components/icons/Image.tsx +0 -37
- package/src/components/icons/Info.tsx +0 -31
- package/src/components/icons/Link.tsx +0 -17
- package/src/components/icons/Linkedin.tsx +0 -23
- package/src/components/icons/Loading.tsx +0 -28
- package/src/components/icons/Logout.tsx +0 -27
- package/src/components/icons/Mail.tsx +0 -17
- package/src/components/icons/MapMarker.tsx +0 -26
- package/src/components/icons/MenuHorizontal.tsx +0 -29
- package/src/components/icons/MenuVertical.tsx +0 -29
- package/src/components/icons/Message.tsx +0 -23
- package/src/components/icons/Microphone.tsx +0 -23
- package/src/components/icons/Minus.tsx +0 -23
- package/src/components/icons/MinusCircle.tsx +0 -24
- package/src/components/icons/PaperClip.tsx +0 -23
- package/src/components/icons/Picture.tsx +0 -23
- package/src/components/icons/Plus.tsx +0 -18
- package/src/components/icons/Preview.tsx +0 -29
- package/src/components/icons/Print.tsx +0 -38
- package/src/components/icons/QuestionHelp.tsx +0 -30
- package/src/components/icons/Refresh.tsx +0 -30
- package/src/components/icons/SelectIcon.tsx +0 -28
- package/src/components/icons/Send.tsx +0 -17
- package/src/components/icons/Setting.tsx +0 -23
- package/src/components/icons/Share.tsx +0 -23
- package/src/components/icons/Sound.tsx +0 -23
- package/src/components/icons/SoundDeactivated.tsx +0 -27
- package/src/components/icons/Telegram.tsx +0 -26
- package/src/components/icons/ThumbDown.tsx +0 -29
- package/src/components/icons/ThumbUp.tsx +0 -29
- package/src/components/icons/Translation.tsx +0 -24
- package/src/components/icons/Twitter.tsx +0 -23
- package/src/components/icons/Upload.tsx +0 -34
- package/src/components/icons/User.tsx +0 -17
- package/src/components/icons/Warning.tsx +0 -24
- package/src/components/icons/WhatsApp.tsx +0 -24
- package/src/components/icons/icons.stories.css +0 -5
- package/src/components/icons/icons.stories.tsx +0 -81
- package/src/components/icons/loading.css +0 -14
- package/src/components/layouts/Chat.test.tsx +0 -40
- package/src/components/layouts/Chat.tsx +0 -69
- package/src/components/layouts/FullBody/FullBody.stories.tsx +0 -110
- package/src/components/layouts/FullPage.test.tsx +0 -65
- package/src/components/layouts/FullPage.tsx +0 -80
- package/src/components/layouts/HiddenChat.test.tsx +0 -40
- package/src/components/layouts/HiddenChat.tsx +0 -233
- package/src/components/layouts/Totem/Totem.stories.tsx +0 -131
- package/src/components/layouts/Totem.test.tsx +0 -40
- package/src/components/layouts/Totem.tsx +0 -49
- package/src/components/layouts/WebsiteAssistant.test.tsx +0 -40
- package/src/components/layouts/WebsiteAssistant.tsx +0 -132
- package/src/components/layouts/ZoomedFullBody/ZoomedFullBody.stories.tsx +0 -131
- package/src/components/layouts/ZoomedFullBody.test.tsx +0 -40
- package/src/components/layouts/ZoomedFullBody.tsx +0 -81
- package/src/components/layouts/__snapshots__/Chat.test.tsx.snap +0 -457
- package/src/components/layouts/__snapshots__/FullPage.test.tsx.snap +0 -1045
- package/src/components/layouts/__snapshots__/HiddenChat.test.tsx.snap +0 -460
- package/src/components/layouts/__snapshots__/Totem.test.tsx.snap +0 -566
- package/src/components/layouts/__snapshots__/WebsiteAssistant.test.tsx.snap +0 -59
- package/src/components/layouts/__snapshots__/ZoomedFullBody.test.tsx.snap +0 -523
- package/src/components/layouts/chat.css +0 -451
- package/src/components/layouts/hidden-chat.css +0 -276
- package/src/components/layouts/layouts.stories.tsx +0 -231
- package/src/components/layouts/totem.css +0 -221
- package/src/components/layouts/website-assistant.css +0 -677
- package/src/components/layouts/zoomed-full-body.css +0 -18
- package/src/components/ui/Alert.css +0 -93
- package/src/components/ui/Alert.stories.tsx +0 -137
- package/src/components/ui/Alert.test.tsx +0 -129
- package/src/components/ui/Alert.tsx +0 -123
- package/src/components/ui/Button.css +0 -167
- package/src/components/ui/Button.stories.tsx +0 -156
- package/src/components/ui/Button.test.tsx +0 -74
- package/src/components/ui/Button.tsx +0 -107
- package/src/components/ui/Card.css +0 -65
- package/src/components/ui/Card.stories.tsx +0 -95
- package/src/components/ui/Card.test.tsx +0 -47
- package/src/components/ui/Card.tsx +0 -48
- package/src/components/ui/Checkbox.css +0 -116
- package/src/components/ui/Checkbox.stories.tsx +0 -74
- package/src/components/ui/Checkbox.test.tsx +0 -28
- package/src/components/ui/Checkbox.tsx +0 -58
- package/src/components/ui/ConfirmDialog.css +0 -42
- package/src/components/ui/ConfirmDialog.stories.tsx +0 -216
- package/src/components/ui/ConfirmDialog.test.tsx +0 -124
- package/src/components/ui/ConfirmDialog.tsx +0 -58
- package/src/components/ui/Details.css +0 -66
- package/src/components/ui/Drawer.css +0 -270
- package/src/components/ui/Drawer.stories.tsx +0 -267
- package/src/components/ui/Drawer.test.tsx +0 -130
- package/src/components/ui/Drawer.tsx +0 -293
- package/src/components/ui/Dropdown.css +0 -173
- package/src/components/ui/Dropdown.tsx +0 -63
- package/src/components/ui/Expandable.css +0 -15
- package/src/components/ui/Expandable.stories.tsx +0 -180
- package/src/components/ui/Expandable.test.tsx +0 -107
- package/src/components/ui/Expandable.tsx +0 -121
- package/src/components/ui/Modal.css +0 -98
- package/src/components/ui/Modal.stories.tsx +0 -171
- package/src/components/ui/Modal.test.tsx +0 -111
- package/src/components/ui/Modal.tsx +0 -117
- package/src/components/ui/Select.css +0 -138
- package/src/components/ui/Select.stories.tsx +0 -79
- package/src/components/ui/Select.test.tsx +0 -84
- package/src/components/ui/Select.tsx +0 -79
- package/src/components/ui/Slider.css +0 -192
- package/src/components/ui/Slider.stories.tsx +0 -63
- package/src/components/ui/Slider.tsx +0 -142
- package/src/components/ui/Spin.css +0 -31
- package/src/components/ui/Spin.stories.tsx +0 -64
- package/src/components/ui/Spin.test.tsx +0 -41
- package/src/components/ui/Spin.tsx +0 -31
- package/src/components/ui/Table.css +0 -132
- package/src/components/ui/Tooltip.css +0 -171
- package/src/components/ui/Tooltip.stories.tsx +0 -109
- package/src/components/ui/Tooltip.test.tsx +0 -102
- package/src/components/ui/Tooltip.tsx +0 -163
- package/src/components/ui/__snapshots__/Alert.test.tsx.snap +0 -59
- package/src/components/ui/__snapshots__/Button.test.tsx.snap +0 -204
- package/src/components/ui/__snapshots__/Card.test.tsx.snap +0 -321
- package/src/components/ui/__snapshots__/Checkbox.test.tsx.snap +0 -131
- package/src/components/ui/__snapshots__/ConfirmDialog.test.tsx.snap +0 -35
- package/src/components/ui/__snapshots__/Drawer.test.tsx.snap +0 -67
- package/src/components/ui/__snapshots__/Expandable.test.tsx.snap +0 -159
- package/src/components/ui/__snapshots__/Modal.test.tsx.snap +0 -59
- package/src/components/ui/__snapshots__/Select.test.tsx.snap +0 -254
- package/src/components/ui/__snapshots__/Spin.test.tsx.snap +0 -193
- package/src/components/ui/__snapshots__/Tooltip.test.tsx.snap +0 -113
- package/src/components/ui/definitions.stories.tsx +0 -139
- package/src/context/visemeContext.tsx +0 -384
- package/src/helpers/chatPdfExport.ts +0 -544
- package/src/helpers/configuration.ts +0 -42
- package/src/helpers/constants.ts +0 -267
- package/src/helpers/convertDocument.test.ts +0 -67
- package/src/helpers/convertDocument.ts +0 -35
- package/src/helpers/credits.ts +0 -54
- package/src/helpers/error.test.ts +0 -29
- package/src/helpers/error.ts +0 -278
- package/src/helpers/imageCompression.ts +0 -230
- package/src/helpers/llmUsage.ts +0 -328
- package/src/helpers/markedExtendedTables.js +0 -217
- package/src/helpers/media.test.ts +0 -169
- package/src/helpers/media.ts +0 -81
- package/src/helpers/message.test.ts +0 -126
- package/src/helpers/message.ts +0 -219
- package/src/helpers/nats/getNatsConfig.ts +0 -148
- package/src/helpers/nats/isSessionExpiredError.test.ts +0 -38
- package/src/helpers/nats/isSessionExpiredError.ts +0 -51
- package/src/helpers/nats/useNats.test.tsx +0 -81
- package/src/helpers/nats/useNats.ts +0 -204
- package/src/helpers/nats/useNatsSession.test.ts +0 -16
- package/src/helpers/nats/useNatsSession.ts +0 -460
- package/src/helpers/piiDetection.test.ts +0 -186
- package/src/helpers/piiDetection.ts +0 -91
- package/src/helpers/sanitizer.ts +0 -17
- package/src/helpers/statistics.ts +0 -58
- package/src/helpers/stt/useSTT.ts +0 -515
- package/src/helpers/translations.ts +0 -39
- package/src/helpers/tts/ttsVoiceUtility.ts +0 -275
- package/src/helpers/tts/useTTS.ts +0 -621
- package/src/helpers/utils.test.ts +0 -321
- package/src/helpers/utils.ts +0 -586
- package/src/helpers/venue.ts +0 -36
- package/src/i18n.ts +0 -39
- package/src/index.stories.tsx +0 -220
- package/src/index.test.tsx +0 -156
- package/src/index.tsx +0 -592
- package/src/locales/de.json +0 -680
- package/src/locales/en.json +0 -754
- package/src/locales/es.json +0 -682
- package/src/locales/fr.json +0 -682
- package/src/locales/it.json +0 -750
- package/src/mocks/data.ts +0 -790
- package/src/styles.css +0 -126
- package/src/types/integration.test.ts +0 -32
- package/src/types/integration.ts +0 -31
- package/src/types/layout.ts +0 -50
- package/src/version.ts +0 -2
|
@@ -1,1684 +0,0 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
2
|
-
import { Meta, Story } from '@storybook/react';
|
|
3
|
-
import {
|
|
4
|
-
memori,
|
|
5
|
-
tenant,
|
|
6
|
-
history,
|
|
7
|
-
historyWithMedia,
|
|
8
|
-
historyWithAIGeneratedMessages,
|
|
9
|
-
historyWithArtifact,
|
|
10
|
-
sessionID,
|
|
11
|
-
dialogState as dialogStateWithHints,
|
|
12
|
-
historyWithExpandable,
|
|
13
|
-
historyWithArtifacts,
|
|
14
|
-
} from '../../mocks/data';
|
|
15
|
-
import I18nWrapper from '../../I18nWrapper';
|
|
16
|
-
import Chat, { Props } from './Chat';
|
|
17
|
-
|
|
18
|
-
import './Chat.css';
|
|
19
|
-
import { ArtifactProvider } from '../MemoriArtifactSystem/context/ArtifactContext';
|
|
20
|
-
|
|
21
|
-
const meta: Meta = {
|
|
22
|
-
title: 'Widget/Chat',
|
|
23
|
-
component: Chat,
|
|
24
|
-
argTypes: {},
|
|
25
|
-
parameters: {
|
|
26
|
-
controls: { expanded: true },
|
|
27
|
-
},
|
|
28
|
-
};
|
|
29
|
-
|
|
30
|
-
export default meta;
|
|
31
|
-
|
|
32
|
-
const dialogState = {
|
|
33
|
-
...dialogStateWithHints,
|
|
34
|
-
hints: [],
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
const Template: Story<Props> = args => {
|
|
38
|
-
const [userMessage, setUserMessage] = useState(args.userMessage);
|
|
39
|
-
|
|
40
|
-
return (
|
|
41
|
-
<I18nWrapper>
|
|
42
|
-
<ArtifactProvider>
|
|
43
|
-
<Chat
|
|
44
|
-
{...args}
|
|
45
|
-
userMessage={userMessage}
|
|
46
|
-
onChangeUserMessage={setUserMessage}
|
|
47
|
-
/>
|
|
48
|
-
</ArtifactProvider>
|
|
49
|
-
</I18nWrapper>
|
|
50
|
-
);
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
// By passing using the Args format for exported stories, you can control the props for a component for reuse in a test
|
|
54
|
-
// https://storybook.js.org/docs/react/workflows/unit-testing
|
|
55
|
-
export const Default = Template.bind({});
|
|
56
|
-
Default.args = {
|
|
57
|
-
memori,
|
|
58
|
-
tenant,
|
|
59
|
-
sessionID,
|
|
60
|
-
history,
|
|
61
|
-
dialogState,
|
|
62
|
-
layout: 'DEFAULT',
|
|
63
|
-
simulateUserPrompt: () => {},
|
|
64
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
65
|
-
stopListening: () => {},
|
|
66
|
-
resetTranscript: () => {},
|
|
67
|
-
setAttachmentsMenuOpen: () => {},
|
|
68
|
-
setSendOnEnter: () => {},
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
export const MemoriTyping = Template.bind({});
|
|
72
|
-
MemoriTyping.args = {
|
|
73
|
-
memori,
|
|
74
|
-
tenant,
|
|
75
|
-
sessionID,
|
|
76
|
-
history,
|
|
77
|
-
dialogState,
|
|
78
|
-
layout: 'DEFAULT',
|
|
79
|
-
simulateUserPrompt: () => {},
|
|
80
|
-
memoriTyping: true,
|
|
81
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
82
|
-
stopListening: () => {},
|
|
83
|
-
resetTranscript: () => {},
|
|
84
|
-
setAttachmentsMenuOpen: () => {},
|
|
85
|
-
setSendOnEnter: () => {},
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
export const WithArtifactBug = Template.bind({});
|
|
89
|
-
WithArtifactBug.args = {
|
|
90
|
-
memori,
|
|
91
|
-
tenant,
|
|
92
|
-
sessionID,
|
|
93
|
-
history: historyWithArtifact,
|
|
94
|
-
dialogState,
|
|
95
|
-
layout: 'DEFAULT',
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
export const ArtifactTagOnlyInRawText = Template.bind({});
|
|
99
|
-
ArtifactTagOnlyInRawText.args = {
|
|
100
|
-
memori,
|
|
101
|
-
tenant,
|
|
102
|
-
sessionID,
|
|
103
|
-
history: [
|
|
104
|
-
{
|
|
105
|
-
text: 'lo voglio in un artifact interattivo',
|
|
106
|
-
fromUser: true,
|
|
107
|
-
timestamp: '2026-04-27T14:22:12.068937Z',
|
|
108
|
-
media: [],
|
|
109
|
-
},
|
|
110
|
-
{
|
|
111
|
-
text: `<output class="memori-artifact" data-mimetype="html" data-title="Battaglia Navale">
|
|
112
|
-
<!DOCTYPE html>
|
|
113
|
-
<html lang="it">
|
|
114
|
-
<head>
|
|
115
|
-
<meta charset="UTF-8">
|
|
116
|
-
<title>Battaglia Navale</title>
|
|
117
|
-
</head>
|
|
118
|
-
<body>
|
|
119
|
-
<h1>Battaglia Navale</h1>
|
|
120
|
-
<p>Artifact should be detected from raw text.</p>
|
|
121
|
-
</body>
|
|
122
|
-
</html>
|
|
123
|
-
</output>`,
|
|
124
|
-
// Regression setup: translated text exists but does not contain the <output> tag.
|
|
125
|
-
translatedText:
|
|
126
|
-
'Interfaccia pronta! Inserisci le coordinate delle navi e premi Inizia.',
|
|
127
|
-
fromUser: false,
|
|
128
|
-
timestamp: '2026-04-27T14:22:36.740195Z',
|
|
129
|
-
media: [],
|
|
130
|
-
},
|
|
131
|
-
],
|
|
132
|
-
dialogState,
|
|
133
|
-
layout: 'DEFAULT',
|
|
134
|
-
simulateUserPrompt: () => {},
|
|
135
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
136
|
-
stopListening: () => {},
|
|
137
|
-
resetTranscript: () => {},
|
|
138
|
-
setAttachmentsMenuOpen: () => {},
|
|
139
|
-
setSendOnEnter: () => {},
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
export const ArtifactWithoutClosingTag = Template.bind({});
|
|
143
|
-
ArtifactWithoutClosingTag.args = {
|
|
144
|
-
memori,
|
|
145
|
-
tenant,
|
|
146
|
-
sessionID,
|
|
147
|
-
history: [
|
|
148
|
-
{
|
|
149
|
-
text: 'Puoi prepararmi una proposta tecnica in artifact?',
|
|
150
|
-
fromUser: true,
|
|
151
|
-
timestamp: '2026-04-27T14:18:10.000000Z',
|
|
152
|
-
media: [],
|
|
153
|
-
},
|
|
154
|
-
{
|
|
155
|
-
text: `<output class="memori-artifact" data-mimetype="markdown">
|
|
156
|
-
# Proposta Tecnica
|
|
157
|
-
|
|
158
|
-
## Sommario
|
|
159
|
-
- Piano A: On-premise + Cloud
|
|
160
|
-
- Piano B: Solo on-premise
|
|
161
|
-
|
|
162
|
-
## Raccomandazione
|
|
163
|
-
Per workload critici, preferire on-premise.
|
|
164
|
-
|
|
165
|
-
Questa risposta riproduce il caso reale in cui manca il tag di chiusura`,
|
|
166
|
-
fromUser: false,
|
|
167
|
-
timestamp: '2026-04-27T14:18:16.846760Z',
|
|
168
|
-
media: [],
|
|
169
|
-
},
|
|
170
|
-
],
|
|
171
|
-
dialogState,
|
|
172
|
-
layout: 'DEFAULT',
|
|
173
|
-
simulateUserPrompt: () => {},
|
|
174
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
175
|
-
stopListening: () => {},
|
|
176
|
-
resetTranscript: () => {},
|
|
177
|
-
setAttachmentsMenuOpen: () => {},
|
|
178
|
-
setSendOnEnter: () => {},
|
|
179
|
-
};
|
|
180
|
-
|
|
181
|
-
export const ArtifactPlainTextMime = Template.bind({});
|
|
182
|
-
ArtifactPlainTextMime.args = {
|
|
183
|
-
memori,
|
|
184
|
-
tenant,
|
|
185
|
-
sessionID,
|
|
186
|
-
history: [
|
|
187
|
-
{
|
|
188
|
-
text: 'mostramelo come artifact semplice',
|
|
189
|
-
fromUser: true,
|
|
190
|
-
timestamp: '2026-04-27T14:30:00.000000Z',
|
|
191
|
-
media: [],
|
|
192
|
-
},
|
|
193
|
-
{
|
|
194
|
-
text: `<output class="memori-artifact" data-mimetype="text">
|
|
195
|
-
ciao
|
|
196
|
-
</output>`,
|
|
197
|
-
fromUser: false,
|
|
198
|
-
timestamp: '2026-04-27T14:30:05.000000Z',
|
|
199
|
-
media: [],
|
|
200
|
-
},
|
|
201
|
-
],
|
|
202
|
-
dialogState,
|
|
203
|
-
layout: 'DEFAULT',
|
|
204
|
-
simulateUserPrompt: () => {},
|
|
205
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
206
|
-
stopListening: () => {},
|
|
207
|
-
resetTranscript: () => {},
|
|
208
|
-
setAttachmentsMenuOpen: () => {},
|
|
209
|
-
setSendOnEnter: () => {},
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
export const WithHints = Template.bind({});
|
|
213
|
-
WithHints.args = {
|
|
214
|
-
memori,
|
|
215
|
-
tenant,
|
|
216
|
-
sessionID,
|
|
217
|
-
history,
|
|
218
|
-
dialogState: dialogStateWithHints,
|
|
219
|
-
layout: 'DEFAULT',
|
|
220
|
-
simulateUserPrompt: () => {},
|
|
221
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
222
|
-
stopListening: () => {},
|
|
223
|
-
resetTranscript: () => {},
|
|
224
|
-
setAttachmentsMenuOpen: () => {},
|
|
225
|
-
setSendOnEnter: () => {},
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
export const WithMessageConsumption = Template.bind({});
|
|
229
|
-
WithMessageConsumption.args = {
|
|
230
|
-
memori,
|
|
231
|
-
tenant,
|
|
232
|
-
sessionID,
|
|
233
|
-
dialogState,
|
|
234
|
-
layout: 'DEFAULT',
|
|
235
|
-
simulateUserPrompt: () => {},
|
|
236
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
237
|
-
stopListening: () => {},
|
|
238
|
-
resetTranscript: () => {},
|
|
239
|
-
setAttachmentsMenuOpen: () => {},
|
|
240
|
-
setSendOnEnter: () => {},
|
|
241
|
-
showMessageConsumption: true,
|
|
242
|
-
history: [
|
|
243
|
-
...history.slice(0, Math.max(0, history.length - 2)),
|
|
244
|
-
// Add one AI message with llmUsage for the badges
|
|
245
|
-
{
|
|
246
|
-
...(history.find(m => !m.fromUser) ?? history[history.length - 1]),
|
|
247
|
-
fromUser: false,
|
|
248
|
-
text: 'Risposta di esempio con consumo LLM.',
|
|
249
|
-
llmUsage: {
|
|
250
|
-
provider: 'openai',
|
|
251
|
-
model: 'gpt-4.1-mini',
|
|
252
|
-
totalInputTokens: 123,
|
|
253
|
-
inputCacheReadTokens: 10,
|
|
254
|
-
inputCacheWriteTokens: 5,
|
|
255
|
-
outputTokens: 456,
|
|
256
|
-
durationMs: 2345,
|
|
257
|
-
energyImpact: {
|
|
258
|
-
energy: 0.00012,
|
|
259
|
-
energyUnit: 'kWh',
|
|
260
|
-
gwp: 0.00009,
|
|
261
|
-
gwpUnit: 'kgCO2eq',
|
|
262
|
-
wcf: 0.02,
|
|
263
|
-
wcfUnit: 'L',
|
|
264
|
-
},
|
|
265
|
-
},
|
|
266
|
-
} as any,
|
|
267
|
-
],
|
|
268
|
-
};
|
|
269
|
-
|
|
270
|
-
export const WithArtifacts = Template.bind({});
|
|
271
|
-
WithArtifacts.args = {
|
|
272
|
-
memori,
|
|
273
|
-
tenant,
|
|
274
|
-
sessionID,
|
|
275
|
-
isChatlogPanel: false,
|
|
276
|
-
history: historyWithArtifacts,
|
|
277
|
-
dialogState,
|
|
278
|
-
layout: 'CHAT',
|
|
279
|
-
simulateUserPrompt: () => {},
|
|
280
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
281
|
-
stopListening: () => {},
|
|
282
|
-
resetTranscript: () => {},
|
|
283
|
-
setAttachmentsMenuOpen: () => {},
|
|
284
|
-
setSendOnEnter: () => {},
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
export const WithArtifactsInChatlogPanel = Template.bind({});
|
|
288
|
-
WithArtifactsInChatlogPanel.args = {
|
|
289
|
-
memori,
|
|
290
|
-
tenant,
|
|
291
|
-
sessionID,
|
|
292
|
-
isChatlogPanel: true,
|
|
293
|
-
history: historyWithArtifacts,
|
|
294
|
-
dialogState,
|
|
295
|
-
layout: 'CHAT',
|
|
296
|
-
simulateUserPrompt: () => {},
|
|
297
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
298
|
-
stopListening: () => {},
|
|
299
|
-
resetTranscript: () => {},
|
|
300
|
-
setAttachmentsMenuOpen: () => {},
|
|
301
|
-
setSendOnEnter: () => {},
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
export const WithMedia = Template.bind({});
|
|
305
|
-
WithMedia.args = {
|
|
306
|
-
memori,
|
|
307
|
-
tenant,
|
|
308
|
-
sessionID,
|
|
309
|
-
history: historyWithMedia,
|
|
310
|
-
dialogState,
|
|
311
|
-
layout: 'DEFAULT',
|
|
312
|
-
simulateUserPrompt: () => {},
|
|
313
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
314
|
-
stopListening: () => {},
|
|
315
|
-
resetTranscript: () => {},
|
|
316
|
-
setAttachmentsMenuOpen: () => {},
|
|
317
|
-
setSendOnEnter: () => {},
|
|
318
|
-
};
|
|
319
|
-
|
|
320
|
-
/** All media types in chat: one message from user, one from agent. Use for manual QA of previews and layout. */
|
|
321
|
-
const historyAllMediaExamples = [
|
|
322
|
-
{
|
|
323
|
-
text: "Here's a message with every media type I can send.",
|
|
324
|
-
fromUser: true,
|
|
325
|
-
timestamp: '2021-03-01T12:00:00.000Z',
|
|
326
|
-
media: [
|
|
327
|
-
{
|
|
328
|
-
mediumID: 'user-img-1',
|
|
329
|
-
mimeType: 'image/png',
|
|
330
|
-
title: 'Image',
|
|
331
|
-
url: 'https://picsum.photos/200/300',
|
|
332
|
-
},
|
|
333
|
-
{
|
|
334
|
-
mediumID: 'user-link-1',
|
|
335
|
-
mimeType: 'text/html',
|
|
336
|
-
title: 'Memori',
|
|
337
|
-
url: 'https://memori.ai/en',
|
|
338
|
-
},
|
|
339
|
-
{
|
|
340
|
-
mediumID: 'user-code-1',
|
|
341
|
-
mimeType: 'text/javascript',
|
|
342
|
-
title: 'Code snippet',
|
|
343
|
-
content: "console.log('Hello World!');",
|
|
344
|
-
},
|
|
345
|
-
{
|
|
346
|
-
mediumID: 'user-pdf-1',
|
|
347
|
-
mimeType: 'application/pdf',
|
|
348
|
-
title: 'PDF',
|
|
349
|
-
url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
|
|
350
|
-
},
|
|
351
|
-
{
|
|
352
|
-
mediumID: 'user-video-1',
|
|
353
|
-
mimeType: 'video/mp4',
|
|
354
|
-
title: 'Video',
|
|
355
|
-
url: 'https://www.w3schools.com/html/mov_bbb.mp4',
|
|
356
|
-
},
|
|
357
|
-
{
|
|
358
|
-
mediumID: 'user-audio-1',
|
|
359
|
-
mimeType: 'audio/mpeg',
|
|
360
|
-
title: 'Audio',
|
|
361
|
-
url: 'https://www.w3schools.com/html/horse.mp3',
|
|
362
|
-
},
|
|
363
|
-
{
|
|
364
|
-
mediumID: 'user-doc-1',
|
|
365
|
-
mimeType: 'application/msword',
|
|
366
|
-
title: 'Word doc',
|
|
367
|
-
url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
|
|
368
|
-
},
|
|
369
|
-
],
|
|
370
|
-
},
|
|
371
|
-
{
|
|
372
|
-
text: "And here's the same set of media from the agent.",
|
|
373
|
-
fromUser: false,
|
|
374
|
-
timestamp: '2021-03-01T12:00:01.000Z',
|
|
375
|
-
media: [
|
|
376
|
-
{
|
|
377
|
-
mediumID: 'agent-img-1',
|
|
378
|
-
mimeType: 'image/png',
|
|
379
|
-
title: 'Image',
|
|
380
|
-
url: 'https://picsum.photos/300/200',
|
|
381
|
-
},
|
|
382
|
-
{
|
|
383
|
-
mediumID: 'agent-link-1',
|
|
384
|
-
mimeType: 'text/html',
|
|
385
|
-
title: 'YouTube',
|
|
386
|
-
url: 'https://www.youtube.com/watch?v=feH26j3rBz8',
|
|
387
|
-
},
|
|
388
|
-
{
|
|
389
|
-
mediumID: 'agent-code-1',
|
|
390
|
-
mimeType: 'application/json',
|
|
391
|
-
title: 'JSON',
|
|
392
|
-
content: '{"name": "Test", "value": 42}',
|
|
393
|
-
},
|
|
394
|
-
{
|
|
395
|
-
mediumID: 'agent-pdf-1',
|
|
396
|
-
mimeType: 'application/pdf',
|
|
397
|
-
title: 'PDF',
|
|
398
|
-
url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
|
|
399
|
-
},
|
|
400
|
-
{
|
|
401
|
-
mediumID: 'agent-video-1',
|
|
402
|
-
mimeType: 'video/mp4',
|
|
403
|
-
title: 'Video',
|
|
404
|
-
url: 'https://www.w3schools.com/html/mov_bbb.mp4',
|
|
405
|
-
},
|
|
406
|
-
{
|
|
407
|
-
mediumID: 'agent-audio-1',
|
|
408
|
-
mimeType: 'audio/mpeg',
|
|
409
|
-
title: 'Audio',
|
|
410
|
-
url: 'https://www.w3schools.com/html/horse.mp3',
|
|
411
|
-
},
|
|
412
|
-
{
|
|
413
|
-
mediumID: 'agent-doc-1',
|
|
414
|
-
mimeType:
|
|
415
|
-
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
|
|
416
|
-
title: 'Excel',
|
|
417
|
-
url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
|
|
418
|
-
},
|
|
419
|
-
],
|
|
420
|
-
},
|
|
421
|
-
{
|
|
422
|
-
text: 'This message has an inline document attachment: <document_attachment filename="note.txt" type="text/plain">Hello from inline attachment.</document_attachment>',
|
|
423
|
-
fromUser: true,
|
|
424
|
-
timestamp: '2021-03-01T12:00:02.000Z',
|
|
425
|
-
},
|
|
426
|
-
];
|
|
427
|
-
|
|
428
|
-
export const AllMediaExamples = Template.bind({});
|
|
429
|
-
AllMediaExamples.args = {
|
|
430
|
-
memori,
|
|
431
|
-
tenant,
|
|
432
|
-
sessionID,
|
|
433
|
-
history: historyAllMediaExamples,
|
|
434
|
-
dialogState,
|
|
435
|
-
layout: 'DEFAULT',
|
|
436
|
-
simulateUserPrompt: () => {},
|
|
437
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
438
|
-
stopListening: () => {},
|
|
439
|
-
resetTranscript: () => {},
|
|
440
|
-
setAttachmentsMenuOpen: () => {},
|
|
441
|
-
setSendOnEnter: () => {},
|
|
442
|
-
};
|
|
443
|
-
AllMediaExamples.storyName = 'All media examples (user + agent)';
|
|
444
|
-
|
|
445
|
-
export const WithInvalidImages = Template.bind({});
|
|
446
|
-
WithInvalidImages.args = {
|
|
447
|
-
memori,
|
|
448
|
-
tenant,
|
|
449
|
-
sessionID,
|
|
450
|
-
history: [
|
|
451
|
-
{
|
|
452
|
-
text: 'Here are some images with invalid URLs to demonstrate fallback:',
|
|
453
|
-
timestamp: '2021-03-01T12:00:00.000Z',
|
|
454
|
-
media: [
|
|
455
|
-
{
|
|
456
|
-
mediumID: 'invalid-1',
|
|
457
|
-
mimeType: 'image/png',
|
|
458
|
-
title: 'Invalid URL',
|
|
459
|
-
url: 'not-a-valid-url',
|
|
460
|
-
},
|
|
461
|
-
{
|
|
462
|
-
mediumID: 'invalid-2',
|
|
463
|
-
mimeType: 'image/jpeg',
|
|
464
|
-
title: 'Invalid content',
|
|
465
|
-
content: 'this-is-not-base64',
|
|
466
|
-
},
|
|
467
|
-
{
|
|
468
|
-
mediumID: 'invalid-3',
|
|
469
|
-
mimeType: 'image/jpg',
|
|
470
|
-
title: 'Missing URL and content',
|
|
471
|
-
url: undefined,
|
|
472
|
-
content: undefined,
|
|
473
|
-
},
|
|
474
|
-
{
|
|
475
|
-
mediumID: 'valid-1',
|
|
476
|
-
mimeType: 'image/png',
|
|
477
|
-
title: 'Valid image for comparison',
|
|
478
|
-
url: 'https://picsum.photos/200/200',
|
|
479
|
-
},
|
|
480
|
-
],
|
|
481
|
-
},
|
|
482
|
-
],
|
|
483
|
-
dialogState,
|
|
484
|
-
layout: 'DEFAULT',
|
|
485
|
-
simulateUserPrompt: () => {},
|
|
486
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
487
|
-
stopListening: () => {},
|
|
488
|
-
resetTranscript: () => {},
|
|
489
|
-
setAttachmentsMenuOpen: () => {},
|
|
490
|
-
setSendOnEnter: () => {},
|
|
491
|
-
};
|
|
492
|
-
|
|
493
|
-
export const WithDates = Template.bind({});
|
|
494
|
-
WithDates.args = {
|
|
495
|
-
memori,
|
|
496
|
-
tenant,
|
|
497
|
-
sessionID,
|
|
498
|
-
history,
|
|
499
|
-
dialogState,
|
|
500
|
-
layout: 'DEFAULT',
|
|
501
|
-
simulateUserPrompt: () => {},
|
|
502
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
503
|
-
stopListening: () => {},
|
|
504
|
-
resetTranscript: () => {},
|
|
505
|
-
setAttachmentsMenuOpen: () => {},
|
|
506
|
-
setSendOnEnter: () => {},
|
|
507
|
-
showDates: true,
|
|
508
|
-
};
|
|
509
|
-
|
|
510
|
-
export const WithContext = Template.bind({});
|
|
511
|
-
WithContext.args = {
|
|
512
|
-
memori,
|
|
513
|
-
tenant,
|
|
514
|
-
sessionID,
|
|
515
|
-
history,
|
|
516
|
-
dialogState,
|
|
517
|
-
layout: 'DEFAULT',
|
|
518
|
-
simulateUserPrompt: () => {},
|
|
519
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
520
|
-
stopListening: () => {},
|
|
521
|
-
resetTranscript: () => {},
|
|
522
|
-
setAttachmentsMenuOpen: () => {},
|
|
523
|
-
setSendOnEnter: () => {},
|
|
524
|
-
showContextPerLine: true,
|
|
525
|
-
};
|
|
526
|
-
|
|
527
|
-
export const WithDatesAndContext = Template.bind({});
|
|
528
|
-
WithDatesAndContext.args = {
|
|
529
|
-
memori,
|
|
530
|
-
tenant,
|
|
531
|
-
sessionID,
|
|
532
|
-
history,
|
|
533
|
-
dialogState,
|
|
534
|
-
layout: 'DEFAULT',
|
|
535
|
-
simulateUserPrompt: () => {},
|
|
536
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
537
|
-
stopListening: () => {},
|
|
538
|
-
resetTranscript: () => {},
|
|
539
|
-
setAttachmentsMenuOpen: () => {},
|
|
540
|
-
setSendOnEnter: () => {},
|
|
541
|
-
showDates: true,
|
|
542
|
-
showContextPerLine: true,
|
|
543
|
-
};
|
|
544
|
-
|
|
545
|
-
export const OnX3State = Template.bind({});
|
|
546
|
-
OnX3State.args = {
|
|
547
|
-
memori,
|
|
548
|
-
tenant,
|
|
549
|
-
sessionID,
|
|
550
|
-
history,
|
|
551
|
-
dialogState: {
|
|
552
|
-
...dialogState,
|
|
553
|
-
state: 'X3',
|
|
554
|
-
},
|
|
555
|
-
layout: 'DEFAULT',
|
|
556
|
-
simulateUserPrompt: () => {},
|
|
557
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
558
|
-
stopListening: () => {},
|
|
559
|
-
resetTranscript: () => {},
|
|
560
|
-
setAttachmentsMenuOpen: () => {},
|
|
561
|
-
setSendOnEnter: () => {},
|
|
562
|
-
};
|
|
563
|
-
|
|
564
|
-
export const OnX2aState = Template.bind({});
|
|
565
|
-
OnX2aState.args = {
|
|
566
|
-
memori,
|
|
567
|
-
tenant,
|
|
568
|
-
sessionID,
|
|
569
|
-
history,
|
|
570
|
-
dialogState: {
|
|
571
|
-
...dialogState,
|
|
572
|
-
state: 'X2a',
|
|
573
|
-
},
|
|
574
|
-
layout: 'DEFAULT',
|
|
575
|
-
simulateUserPrompt: () => {},
|
|
576
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
577
|
-
stopListening: () => {},
|
|
578
|
-
resetTranscript: () => {},
|
|
579
|
-
setAttachmentsMenuOpen: () => {},
|
|
580
|
-
setSendOnEnter: () => {},
|
|
581
|
-
};
|
|
582
|
-
|
|
583
|
-
export const AcceptsFeedback = Template.bind({});
|
|
584
|
-
AcceptsFeedback.args = {
|
|
585
|
-
memori,
|
|
586
|
-
tenant,
|
|
587
|
-
sessionID,
|
|
588
|
-
history,
|
|
589
|
-
dialogState: {
|
|
590
|
-
...dialogState,
|
|
591
|
-
acceptsFeedback: true,
|
|
592
|
-
},
|
|
593
|
-
layout: 'DEFAULT',
|
|
594
|
-
simulateUserPrompt: () => {},
|
|
595
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
596
|
-
stopListening: () => {},
|
|
597
|
-
resetTranscript: () => {},
|
|
598
|
-
setAttachmentsMenuOpen: () => {},
|
|
599
|
-
setSendOnEnter: () => {},
|
|
600
|
-
};
|
|
601
|
-
|
|
602
|
-
export const WithAIGeneratedMessages = Template.bind({});
|
|
603
|
-
WithAIGeneratedMessages.args = {
|
|
604
|
-
memori,
|
|
605
|
-
tenant,
|
|
606
|
-
sessionID,
|
|
607
|
-
history: historyWithAIGeneratedMessages,
|
|
608
|
-
dialogState,
|
|
609
|
-
layout: 'DEFAULT',
|
|
610
|
-
simulateUserPrompt: () => {},
|
|
611
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
612
|
-
stopListening: () => {},
|
|
613
|
-
resetTranscript: () => {},
|
|
614
|
-
setAttachmentsMenuOpen: () => {},
|
|
615
|
-
setSendOnEnter: () => {},
|
|
616
|
-
};
|
|
617
|
-
|
|
618
|
-
export const WithUser = Template.bind({});
|
|
619
|
-
WithUser.args = {
|
|
620
|
-
user: { avatarURL: 'https://picsum.photos/200' },
|
|
621
|
-
memori,
|
|
622
|
-
tenant,
|
|
623
|
-
sessionID,
|
|
624
|
-
history,
|
|
625
|
-
dialogState,
|
|
626
|
-
layout: 'DEFAULT',
|
|
627
|
-
simulateUserPrompt: () => {},
|
|
628
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
629
|
-
stopListening: () => {},
|
|
630
|
-
resetTranscript: () => {},
|
|
631
|
-
setAttachmentsMenuOpen: () => {},
|
|
632
|
-
setSendOnEnter: () => {},
|
|
633
|
-
};
|
|
634
|
-
|
|
635
|
-
export const WithCustomUserAvatar = Template.bind({});
|
|
636
|
-
WithCustomUserAvatar.args = {
|
|
637
|
-
userAvatar: 'https://picsum.photos/200',
|
|
638
|
-
memori,
|
|
639
|
-
tenant,
|
|
640
|
-
sessionID,
|
|
641
|
-
history,
|
|
642
|
-
dialogState,
|
|
643
|
-
layout: 'DEFAULT',
|
|
644
|
-
simulateUserPrompt: () => {},
|
|
645
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
646
|
-
stopListening: () => {},
|
|
647
|
-
resetTranscript: () => {},
|
|
648
|
-
setAttachmentsMenuOpen: () => {},
|
|
649
|
-
setSendOnEnter: () => {},
|
|
650
|
-
};
|
|
651
|
-
|
|
652
|
-
export const WithCustomUserAvatarAsElement = Template.bind({});
|
|
653
|
-
WithCustomUserAvatarAsElement.args = {
|
|
654
|
-
userAvatar: <span>USER</span>,
|
|
655
|
-
memori,
|
|
656
|
-
tenant,
|
|
657
|
-
sessionID,
|
|
658
|
-
history,
|
|
659
|
-
dialogState,
|
|
660
|
-
layout: 'DEFAULT',
|
|
661
|
-
simulateUserPrompt: () => {},
|
|
662
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
663
|
-
stopListening: () => {},
|
|
664
|
-
resetTranscript: () => {},
|
|
665
|
-
setAttachmentsMenuOpen: () => {},
|
|
666
|
-
setSendOnEnter: () => {},
|
|
667
|
-
};
|
|
668
|
-
|
|
669
|
-
export const WithExpandable = Template.bind({});
|
|
670
|
-
WithExpandable.args = {
|
|
671
|
-
memori,
|
|
672
|
-
tenant,
|
|
673
|
-
sessionID,
|
|
674
|
-
history: historyWithExpandable,
|
|
675
|
-
dialogState,
|
|
676
|
-
layout: 'DEFAULT',
|
|
677
|
-
simulateUserPrompt: () => {},
|
|
678
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
679
|
-
stopListening: () => {},
|
|
680
|
-
resetTranscript: () => {},
|
|
681
|
-
};
|
|
682
|
-
|
|
683
|
-
export const WithMultipleArtifactsInOneMessage = Template.bind({});
|
|
684
|
-
WithMultipleArtifactsInOneMessage.args = {
|
|
685
|
-
memori,
|
|
686
|
-
tenant,
|
|
687
|
-
sessionID,
|
|
688
|
-
history: [
|
|
689
|
-
{
|
|
690
|
-
text: 'Can you help me build a landing page?',
|
|
691
|
-
fromUser: true,
|
|
692
|
-
timestamp: '2021-03-01T12:00:00.000Z',
|
|
693
|
-
},
|
|
694
|
-
{
|
|
695
|
-
text: `I'll create a complete landing page with HTML, CSS, and JavaScript for you:
|
|
696
|
-
|
|
697
|
-
<output class="memori-artifact" data-mimetype="html" data-title="Landing Page HTML">
|
|
698
|
-
<!DOCTYPE html>
|
|
699
|
-
<html lang="en">
|
|
700
|
-
<head>
|
|
701
|
-
<meta charset="UTF-8">
|
|
702
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
703
|
-
<title>Product Landing Page</title>
|
|
704
|
-
</head>
|
|
705
|
-
<body>
|
|
706
|
-
<header class="hero">
|
|
707
|
-
<h1>Welcome to Our Amazing Product</h1>
|
|
708
|
-
<p>The solution you've been waiting for</p>
|
|
709
|
-
<button id="ctaButton" class="cta-button">Get Started</button>
|
|
710
|
-
</header>
|
|
711
|
-
|
|
712
|
-
<section class="features">
|
|
713
|
-
<div class="feature">
|
|
714
|
-
<h3>⚡ Fast</h3>
|
|
715
|
-
<p>Lightning-quick performance</p>
|
|
716
|
-
</div>
|
|
717
|
-
<div class="feature">
|
|
718
|
-
<h3>🔒 Secure</h3>
|
|
719
|
-
<p>Enterprise-grade security</p>
|
|
720
|
-
</div>
|
|
721
|
-
<div class="feature">
|
|
722
|
-
<h3>📱 Responsive</h3>
|
|
723
|
-
<p>Works on all devices</p>
|
|
724
|
-
</div>
|
|
725
|
-
</section>
|
|
726
|
-
</body>
|
|
727
|
-
</html>
|
|
728
|
-
</output>
|
|
729
|
-
|
|
730
|
-
<output class="memori-artifact" data-mimetype="css" data-title="Landing Page Styles">
|
|
731
|
-
* {
|
|
732
|
-
margin: 0;
|
|
733
|
-
padding: 0;
|
|
734
|
-
box-sizing: border-box;
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
body {
|
|
738
|
-
font-family: 'Segoe UI', system-ui, sans-serif;
|
|
739
|
-
line-height: 1.6;
|
|
740
|
-
color: #333;
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
.hero {
|
|
744
|
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
745
|
-
color: white;
|
|
746
|
-
text-align: center;
|
|
747
|
-
padding: 100px 20px;
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
.hero h1 {
|
|
751
|
-
font-size: 3rem;
|
|
752
|
-
margin-bottom: 20px;
|
|
753
|
-
animation: fadeInUp 0.8s ease-out;
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
.hero p {
|
|
757
|
-
font-size: 1.5rem;
|
|
758
|
-
margin-bottom: 30px;
|
|
759
|
-
opacity: 0.9;
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
.cta-button {
|
|
763
|
-
background: white;
|
|
764
|
-
color: #667eea;
|
|
765
|
-
border: none;
|
|
766
|
-
padding: 15px 40px;
|
|
767
|
-
font-size: 1.1rem;
|
|
768
|
-
font-weight: 600;
|
|
769
|
-
border-radius: 50px;
|
|
770
|
-
cursor: pointer;
|
|
771
|
-
transition: all 0.3s ease;
|
|
772
|
-
box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);
|
|
773
|
-
}
|
|
774
|
-
|
|
775
|
-
.cta-button:hover {
|
|
776
|
-
transform: translateY(-3px);
|
|
777
|
-
box-shadow: 0 6px 20px rgba(0, 0, 0, 0.3);
|
|
778
|
-
}
|
|
779
|
-
|
|
780
|
-
.features {
|
|
781
|
-
display: grid;
|
|
782
|
-
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
|
|
783
|
-
gap: 40px;
|
|
784
|
-
padding: 80px 20px;
|
|
785
|
-
max-width: 1200px;
|
|
786
|
-
margin: 0 auto;
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
.feature {
|
|
790
|
-
text-align: center;
|
|
791
|
-
padding: 30px;
|
|
792
|
-
background: white;
|
|
793
|
-
border-radius: 10px;
|
|
794
|
-
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.08);
|
|
795
|
-
transition: transform 0.3s ease;
|
|
796
|
-
}
|
|
797
|
-
|
|
798
|
-
.feature:hover {
|
|
799
|
-
transform: translateY(-5px);
|
|
800
|
-
}
|
|
801
|
-
|
|
802
|
-
.feature h3 {
|
|
803
|
-
font-size: 2rem;
|
|
804
|
-
margin-bottom: 15px;
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
@keyframes fadeInUp {
|
|
808
|
-
from {
|
|
809
|
-
opacity: 0;
|
|
810
|
-
transform: translateY(30px);
|
|
811
|
-
}
|
|
812
|
-
to {
|
|
813
|
-
opacity: 1;
|
|
814
|
-
transform: translateY(0);
|
|
815
|
-
}
|
|
816
|
-
}
|
|
817
|
-
</output>
|
|
818
|
-
|
|
819
|
-
<output class="memori-artifact" data-mimetype="javascript" data-title="Landing Page Script">
|
|
820
|
-
// Add interactivity to the landing page
|
|
821
|
-
document.addEventListener('DOMContentLoaded', () => {
|
|
822
|
-
const ctaButton = document.getElementById('ctaButton');
|
|
823
|
-
|
|
824
|
-
if (ctaButton) {
|
|
825
|
-
ctaButton.addEventListener('click', () => {
|
|
826
|
-
// Smooth scroll animation
|
|
827
|
-
const features = document.querySelector('.features');
|
|
828
|
-
if (features) {
|
|
829
|
-
features.scrollIntoView({
|
|
830
|
-
behavior: 'smooth',
|
|
831
|
-
block: 'start'
|
|
832
|
-
});
|
|
833
|
-
}
|
|
834
|
-
|
|
835
|
-
// Show a welcome message
|
|
836
|
-
setTimeout(() => {
|
|
837
|
-
alert('Welcome! Explore our amazing features below 🚀');
|
|
838
|
-
}, 500);
|
|
839
|
-
});
|
|
840
|
-
|
|
841
|
-
// Add pulse animation on hover
|
|
842
|
-
ctaButton.addEventListener('mouseenter', () => {
|
|
843
|
-
ctaButton.style.animation = 'pulse 0.5s ease';
|
|
844
|
-
});
|
|
845
|
-
|
|
846
|
-
ctaButton.addEventListener('animationend', () => {
|
|
847
|
-
ctaButton.style.animation = '';
|
|
848
|
-
});
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
// Add scroll reveal effect to features
|
|
852
|
-
const features = document.querySelectorAll('.feature');
|
|
853
|
-
const observerOptions = {
|
|
854
|
-
threshold: 0.2,
|
|
855
|
-
rootMargin: '0px 0px -50px 0px'
|
|
856
|
-
};
|
|
857
|
-
|
|
858
|
-
const observer = new IntersectionObserver((entries) => {
|
|
859
|
-
entries.forEach((entry, index) => {
|
|
860
|
-
if (entry.isIntersecting) {
|
|
861
|
-
setTimeout(() => {
|
|
862
|
-
entry.target.style.opacity = '1';
|
|
863
|
-
entry.target.style.transform = 'translateY(0)';
|
|
864
|
-
}, index * 100);
|
|
865
|
-
observer.unobserve(entry.target);
|
|
866
|
-
}
|
|
867
|
-
});
|
|
868
|
-
}, observerOptions);
|
|
869
|
-
|
|
870
|
-
features.forEach(feature => {
|
|
871
|
-
feature.style.opacity = '0';
|
|
872
|
-
feature.style.transform = 'translateY(20px)';
|
|
873
|
-
feature.style.transition = 'all 0.6s ease';
|
|
874
|
-
observer.observe(feature);
|
|
875
|
-
});
|
|
876
|
-
});
|
|
877
|
-
|
|
878
|
-
// Add dynamic CSS for pulse animation
|
|
879
|
-
const style = document.createElement('style');
|
|
880
|
-
style.textContent = \`
|
|
881
|
-
@keyframes pulse {
|
|
882
|
-
0%, 100% { transform: scale(1); }
|
|
883
|
-
50% { transform: scale(1.05); }
|
|
884
|
-
}
|
|
885
|
-
\`;
|
|
886
|
-
document.head.appendChild(style);
|
|
887
|
-
</output>
|
|
888
|
-
|
|
889
|
-
I've created three artifacts for you:
|
|
890
|
-
1. **HTML** - The page structure with a hero section and feature cards
|
|
891
|
-
2. **CSS** - Beautiful styling with gradients, animations, and responsive design
|
|
892
|
-
3. **JavaScript** - Interactive features including smooth scrolling and scroll animations
|
|
893
|
-
|
|
894
|
-
Click on each card to view and customize the code!`,
|
|
895
|
-
timestamp: '2021-03-01T12:01:00.000Z',
|
|
896
|
-
},
|
|
897
|
-
],
|
|
898
|
-
dialogState,
|
|
899
|
-
layout: 'DEFAULT',
|
|
900
|
-
simulateUserPrompt: () => {},
|
|
901
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
902
|
-
stopListening: () => {},
|
|
903
|
-
resetTranscript: () => {},
|
|
904
|
-
setAttachmentsMenuOpen: () => {},
|
|
905
|
-
setSendOnEnter: () => {},
|
|
906
|
-
};
|
|
907
|
-
|
|
908
|
-
export const WithMultipleArtifactsInChatlogPanel = Template.bind({});
|
|
909
|
-
WithMultipleArtifactsInChatlogPanel.args = {
|
|
910
|
-
memori,
|
|
911
|
-
tenant,
|
|
912
|
-
sessionID,
|
|
913
|
-
isChatlogPanel: true,
|
|
914
|
-
history: [
|
|
915
|
-
{
|
|
916
|
-
text: 'Show me a React component with its styles and tests',
|
|
917
|
-
fromUser: true,
|
|
918
|
-
timestamp: '2021-03-01T12:00:00.000Z',
|
|
919
|
-
},
|
|
920
|
-
{
|
|
921
|
-
text: `Here's a complete React component setup with TypeScript, styles, and tests:
|
|
922
|
-
|
|
923
|
-
<output class="memori-artifact" data-mimetype="typescript" data-title="Button.tsx">
|
|
924
|
-
import React from 'react';
|
|
925
|
-
import './Button.css';
|
|
926
|
-
|
|
927
|
-
interface ButtonProps {
|
|
928
|
-
label: string;
|
|
929
|
-
onClick?: () => void;
|
|
930
|
-
variant?: 'primary' | 'secondary' | 'danger';
|
|
931
|
-
disabled?: boolean;
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
export const Button: React.FC<ButtonProps> = ({
|
|
935
|
-
label,
|
|
936
|
-
onClick,
|
|
937
|
-
variant = 'primary',
|
|
938
|
-
disabled = false,
|
|
939
|
-
}) => {
|
|
940
|
-
return (
|
|
941
|
-
<button
|
|
942
|
-
className={\`btn btn-\${variant}\`}
|
|
943
|
-
onClick={onClick}
|
|
944
|
-
disabled={disabled}
|
|
945
|
-
aria-label={label}
|
|
946
|
-
>
|
|
947
|
-
{label}
|
|
948
|
-
</button>
|
|
949
|
-
);
|
|
950
|
-
};
|
|
951
|
-
</output>
|
|
952
|
-
|
|
953
|
-
<output class="memori-artifact" data-mimetype="css" data-title="Button.css">
|
|
954
|
-
.btn {
|
|
955
|
-
padding: 10px 20px;
|
|
956
|
-
font-size: 16px;
|
|
957
|
-
font-weight: 600;
|
|
958
|
-
border: none;
|
|
959
|
-
border-radius: 8px;
|
|
960
|
-
cursor: pointer;
|
|
961
|
-
transition: all 0.3s ease;
|
|
962
|
-
font-family: inherit;
|
|
963
|
-
}
|
|
964
|
-
|
|
965
|
-
.btn:disabled {
|
|
966
|
-
opacity: 0.5;
|
|
967
|
-
cursor: not-allowed;
|
|
968
|
-
}
|
|
969
|
-
|
|
970
|
-
.btn-primary {
|
|
971
|
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
972
|
-
color: white;
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
.btn-primary:hover:not(:disabled) {
|
|
976
|
-
transform: translateY(-2px);
|
|
977
|
-
box-shadow: 0 5px 15px rgba(102, 126, 234, 0.4);
|
|
978
|
-
}
|
|
979
|
-
|
|
980
|
-
.btn-secondary {
|
|
981
|
-
background: #6c757d;
|
|
982
|
-
color: white;
|
|
983
|
-
}
|
|
984
|
-
|
|
985
|
-
.btn-secondary:hover:not(:disabled) {
|
|
986
|
-
background: #5a6268;
|
|
987
|
-
}
|
|
988
|
-
|
|
989
|
-
.btn-danger {
|
|
990
|
-
background: #dc3545;
|
|
991
|
-
color: white;
|
|
992
|
-
}
|
|
993
|
-
|
|
994
|
-
.btn-danger:hover:not(:disabled) {
|
|
995
|
-
background: #c82333;
|
|
996
|
-
}
|
|
997
|
-
</output>
|
|
998
|
-
|
|
999
|
-
<output class="memori-artifact" data-mimetype="typescript" data-title="Button.test.tsx">
|
|
1000
|
-
import { render, screen, fireEvent } from '@testing-library/react';
|
|
1001
|
-
import { Button } from './Button';
|
|
1002
|
-
|
|
1003
|
-
describe('Button Component', () => {
|
|
1004
|
-
it('renders with correct label', () => {
|
|
1005
|
-
render(<Button label="Click me" />);
|
|
1006
|
-
expect(screen.getByText('Click me')).toBeInTheDocument();
|
|
1007
|
-
});
|
|
1008
|
-
|
|
1009
|
-
it('calls onClick handler when clicked', () => {
|
|
1010
|
-
const handleClick = jest.fn();
|
|
1011
|
-
render(<Button label="Click me" onClick={handleClick} />);
|
|
1012
|
-
|
|
1013
|
-
fireEvent.click(screen.getByText('Click me'));
|
|
1014
|
-
expect(handleClick).toHaveBeenCalledTimes(1);
|
|
1015
|
-
});
|
|
1016
|
-
|
|
1017
|
-
it('applies correct variant class', () => {
|
|
1018
|
-
const { rerender } = render(<Button label="Test" variant="primary" />);
|
|
1019
|
-
expect(screen.getByRole('button')).toHaveClass('btn-primary');
|
|
1020
|
-
|
|
1021
|
-
rerender(<Button label="Test" variant="secondary" />);
|
|
1022
|
-
expect(screen.getByRole('button')).toHaveClass('btn-secondary');
|
|
1023
|
-
|
|
1024
|
-
rerender(<Button label="Test" variant="danger" />);
|
|
1025
|
-
expect(screen.getByRole('button')).toHaveClass('btn-danger');
|
|
1026
|
-
});
|
|
1027
|
-
|
|
1028
|
-
it('is disabled when disabled prop is true', () => {
|
|
1029
|
-
const handleClick = jest.fn();
|
|
1030
|
-
render(<Button label="Click me" onClick={handleClick} disabled />);
|
|
1031
|
-
|
|
1032
|
-
const button = screen.getByRole('button');
|
|
1033
|
-
expect(button).toBeDisabled();
|
|
1034
|
-
|
|
1035
|
-
fireEvent.click(button);
|
|
1036
|
-
expect(handleClick).not.toHaveBeenCalled();
|
|
1037
|
-
});
|
|
1038
|
-
|
|
1039
|
-
it('has correct accessibility attributes', () => {
|
|
1040
|
-
render(<Button label="Submit Form" />);
|
|
1041
|
-
const button = screen.getByRole('button');
|
|
1042
|
-
expect(button).toHaveAttribute('aria-label', 'Submit Form');
|
|
1043
|
-
});
|
|
1044
|
-
});
|
|
1045
|
-
</output>
|
|
1046
|
-
|
|
1047
|
-
<output class="memori-artifact" data-mimetype="markdown" data-title="Button Documentation">
|
|
1048
|
-
# Button Component
|
|
1049
|
-
|
|
1050
|
-
A reusable button component with multiple variants and full TypeScript support.
|
|
1051
|
-
|
|
1052
|
-
## Usage
|
|
1053
|
-
|
|
1054
|
-
\`\`\`tsx
|
|
1055
|
-
import { Button } from './Button';
|
|
1056
|
-
|
|
1057
|
-
function App() {
|
|
1058
|
-
return (
|
|
1059
|
-
<Button
|
|
1060
|
-
label="Click me"
|
|
1061
|
-
variant="primary"
|
|
1062
|
-
onClick={() => console.log('Clicked!')}
|
|
1063
|
-
/>
|
|
1064
|
-
);
|
|
1065
|
-
}
|
|
1066
|
-
\`\`\`
|
|
1067
|
-
|
|
1068
|
-
## Props
|
|
1069
|
-
|
|
1070
|
-
| Prop | Type | Default | Description |
|
|
1071
|
-
|------|------|---------|-------------|
|
|
1072
|
-
| label | string | required | Button text content |
|
|
1073
|
-
| onClick | function | - | Click handler function |
|
|
1074
|
-
| variant | 'primary' \\| 'secondary' \\| 'danger' | 'primary' | Button style variant |
|
|
1075
|
-
| disabled | boolean | false | Disabled state |
|
|
1076
|
-
|
|
1077
|
-
## Variants
|
|
1078
|
-
|
|
1079
|
-
- **primary**: Main action button with gradient background
|
|
1080
|
-
- **secondary**: Secondary actions with gray background
|
|
1081
|
-
- **danger**: Destructive actions with red background
|
|
1082
|
-
|
|
1083
|
-
## Accessibility
|
|
1084
|
-
|
|
1085
|
-
- Uses semantic \`<button>\` element
|
|
1086
|
-
- Includes \`aria-label\` attribute
|
|
1087
|
-
- Keyboard accessible
|
|
1088
|
-
- Proper disabled state handling
|
|
1089
|
-
|
|
1090
|
-
## Testing
|
|
1091
|
-
|
|
1092
|
-
Run tests with:
|
|
1093
|
-
\`\`\`bash
|
|
1094
|
-
npm test Button.test.tsx
|
|
1095
|
-
\`\`\`
|
|
1096
|
-
</output>
|
|
1097
|
-
|
|
1098
|
-
You now have a complete component with implementation, styles, tests, and documentation! Each artifact can be clicked to view and modify.`,
|
|
1099
|
-
timestamp: '2021-03-01T12:01:00.000Z',
|
|
1100
|
-
},
|
|
1101
|
-
],
|
|
1102
|
-
dialogState,
|
|
1103
|
-
layout: 'CHAT',
|
|
1104
|
-
simulateUserPrompt: () => {},
|
|
1105
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
1106
|
-
stopListening: () => {},
|
|
1107
|
-
resetTranscript: () => {},
|
|
1108
|
-
setAttachmentsMenuOpen: () => {},
|
|
1109
|
-
setSendOnEnter: () => {},
|
|
1110
|
-
};
|
|
1111
|
-
|
|
1112
|
-
export const WithLongHTMLTable = Template.bind({});
|
|
1113
|
-
WithLongHTMLTable.args = {
|
|
1114
|
-
memori,
|
|
1115
|
-
tenant,
|
|
1116
|
-
sessionID,
|
|
1117
|
-
history,
|
|
1118
|
-
dialogState,
|
|
1119
|
-
layout: 'DEFAULT',
|
|
1120
|
-
};
|
|
1121
|
-
|
|
1122
|
-
export const WithUploads = Template.bind({});
|
|
1123
|
-
WithUploads.args = {
|
|
1124
|
-
memori,
|
|
1125
|
-
tenant,
|
|
1126
|
-
sessionID,
|
|
1127
|
-
history: [
|
|
1128
|
-
{
|
|
1129
|
-
text: 'Ciao! Sono qui per aiutarti. Puoi condividere con me documenti, immagini o link che vorresti che analizzi.',
|
|
1130
|
-
timestamp: '2021-03-01T12:00:00.000Z',
|
|
1131
|
-
},
|
|
1132
|
-
{
|
|
1133
|
-
text: 'Certo! Ti invio alcune immagini e documenti.',
|
|
1134
|
-
fromUser: true,
|
|
1135
|
-
timestamp: '2021-03-01T12:01:00.000Z',
|
|
1136
|
-
media: [
|
|
1137
|
-
{
|
|
1138
|
-
mediumID: 'user-img-1',
|
|
1139
|
-
url: 'https://picsum.photos/400/300?random=1',
|
|
1140
|
-
mimeType: 'image/jpeg',
|
|
1141
|
-
title: 'Screenshot del progetto',
|
|
1142
|
-
},
|
|
1143
|
-
{
|
|
1144
|
-
mediumID: 'user-img-2',
|
|
1145
|
-
url: 'https://picsum.photos/400/300?random=2',
|
|
1146
|
-
mimeType: 'image/png',
|
|
1147
|
-
title: 'Diagramma architettura',
|
|
1148
|
-
},
|
|
1149
|
-
{
|
|
1150
|
-
mediumID: 'user-doc-1',
|
|
1151
|
-
url: 'https://example.com/document.pdf',
|
|
1152
|
-
mimeType: 'application/pdf',
|
|
1153
|
-
title: 'Specifiche tecniche.pdf',
|
|
1154
|
-
},
|
|
1155
|
-
{
|
|
1156
|
-
mediumID: 'user-link-1',
|
|
1157
|
-
url: 'https://github.com/memori-ai/memori-react',
|
|
1158
|
-
mimeType: 'text/html',
|
|
1159
|
-
title: 'Repository GitHub',
|
|
1160
|
-
},
|
|
1161
|
-
],
|
|
1162
|
-
},
|
|
1163
|
-
{
|
|
1164
|
-
text: 'Perfetto! Ho analizzato i tuoi file. Ecco la mia risposta con alcuni documenti correlati.',
|
|
1165
|
-
timestamp: '2021-03-01T12:02:00.000Z',
|
|
1166
|
-
media: [
|
|
1167
|
-
{
|
|
1168
|
-
mediumID: 'agent-img-1',
|
|
1169
|
-
url: 'https://picsum.photos/400/300?random=10',
|
|
1170
|
-
mimeType: 'image/jpeg',
|
|
1171
|
-
title: 'Analisi comparativa',
|
|
1172
|
-
},
|
|
1173
|
-
{
|
|
1174
|
-
mediumID: 'agent-img-2',
|
|
1175
|
-
url: 'https://picsum.photos/400/300?random=11',
|
|
1176
|
-
mimeType: 'image/png',
|
|
1177
|
-
title: 'Grafico risultati',
|
|
1178
|
-
},
|
|
1179
|
-
{
|
|
1180
|
-
mediumID: 'agent-doc-1',
|
|
1181
|
-
url: 'https://example.com/analysis.pdf',
|
|
1182
|
-
mimeType: 'application/pdf',
|
|
1183
|
-
title: 'Report analisi.pdf',
|
|
1184
|
-
},
|
|
1185
|
-
{
|
|
1186
|
-
mediumID: 'agent-link-1',
|
|
1187
|
-
url: 'https://docs.memori.ai',
|
|
1188
|
-
mimeType: 'text/html',
|
|
1189
|
-
title: 'Documentazione Memori',
|
|
1190
|
-
},
|
|
1191
|
-
{
|
|
1192
|
-
mediumID: 'agent-link-2',
|
|
1193
|
-
url: 'https://stackoverflow.com/questions/tagged/memori',
|
|
1194
|
-
mimeType: 'text/html',
|
|
1195
|
-
title: 'Domande Stack Overflow',
|
|
1196
|
-
},
|
|
1197
|
-
],
|
|
1198
|
-
},
|
|
1199
|
-
{
|
|
1200
|
-
text: 'Grazie! Posso inviarti anche un video tutorial.',
|
|
1201
|
-
fromUser: true,
|
|
1202
|
-
timestamp: '2021-03-01T12:03:00.000Z',
|
|
1203
|
-
media: [
|
|
1204
|
-
{
|
|
1205
|
-
mediumID: 'user-video-1',
|
|
1206
|
-
url: 'https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_1mb.mp4',
|
|
1207
|
-
mimeType: 'video/mp4',
|
|
1208
|
-
title: 'Tutorial.mp4',
|
|
1209
|
-
},
|
|
1210
|
-
{
|
|
1211
|
-
mediumID: 'user-audio-1',
|
|
1212
|
-
url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.wav',
|
|
1213
|
-
mimeType: 'audio/wav',
|
|
1214
|
-
title: 'Notifica.wav',
|
|
1215
|
-
},
|
|
1216
|
-
],
|
|
1217
|
-
},
|
|
1218
|
-
{
|
|
1219
|
-
text: 'Eccellente! Ecco la mia risposta con un modello 3D e alcuni snippet di codice.',
|
|
1220
|
-
timestamp: '2021-03-01T12:04:00.000Z',
|
|
1221
|
-
media: [
|
|
1222
|
-
{
|
|
1223
|
-
mediumID: 'agent-3d-1',
|
|
1224
|
-
url: 'https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb',
|
|
1225
|
-
mimeType: 'model/gltf-binary',
|
|
1226
|
-
title: 'Modello 3D Robot',
|
|
1227
|
-
},
|
|
1228
|
-
{
|
|
1229
|
-
mediumID: 'agent-code-1',
|
|
1230
|
-
content: `function analyzeData(data) {
|
|
1231
|
-
const results = data.map(item => ({
|
|
1232
|
-
id: item.id,
|
|
1233
|
-
score: calculateScore(item),
|
|
1234
|
-
category: classifyItem(item)
|
|
1235
|
-
}));
|
|
1236
|
-
|
|
1237
|
-
return results.filter(result => result.score > 0.8);
|
|
1238
|
-
}`,
|
|
1239
|
-
mimeType: 'text/javascript',
|
|
1240
|
-
title: 'analisi-dati.js',
|
|
1241
|
-
properties: {
|
|
1242
|
-
executable: 'true',
|
|
1243
|
-
},
|
|
1244
|
-
},
|
|
1245
|
-
{
|
|
1246
|
-
mediumID: 'agent-code-2',
|
|
1247
|
-
content: `# Analisi dei dati
|
|
1248
|
-
import pandas as pd
|
|
1249
|
-
import numpy as np
|
|
1250
|
-
|
|
1251
|
-
def process_data(df):
|
|
1252
|
-
# Pulizia dati
|
|
1253
|
-
df = df.dropna()
|
|
1254
|
-
|
|
1255
|
-
# Calcolo statistiche
|
|
1256
|
-
stats = df.describe()
|
|
1257
|
-
|
|
1258
|
-
return stats`,
|
|
1259
|
-
mimeType: 'text/x-python',
|
|
1260
|
-
title: 'process_data.py',
|
|
1261
|
-
},
|
|
1262
|
-
],
|
|
1263
|
-
},
|
|
1264
|
-
],
|
|
1265
|
-
dialogState,
|
|
1266
|
-
layout: 'DEFAULT',
|
|
1267
|
-
simulateUserPrompt: () => {},
|
|
1268
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
1269
|
-
stopListening: () => {},
|
|
1270
|
-
resetTranscript: () => {},
|
|
1271
|
-
setAttachmentsMenuOpen: () => {},
|
|
1272
|
-
setSendOnEnter: () => {},
|
|
1273
|
-
};
|
|
1274
|
-
|
|
1275
|
-
export const WithTyping = Template.bind({});
|
|
1276
|
-
WithTyping.args = {
|
|
1277
|
-
memori,
|
|
1278
|
-
tenant,
|
|
1279
|
-
sessionID,
|
|
1280
|
-
history,
|
|
1281
|
-
dialogState: {
|
|
1282
|
-
state: 'X2a',
|
|
1283
|
-
},
|
|
1284
|
-
layout: 'DEFAULT',
|
|
1285
|
-
memoriTyping: true,
|
|
1286
|
-
typingText: 'Sto pensando...',
|
|
1287
|
-
};
|
|
1288
|
-
|
|
1289
|
-
export const WithAllMediaTypes = Template.bind({});
|
|
1290
|
-
WithAllMediaTypes.args = {
|
|
1291
|
-
memori,
|
|
1292
|
-
tenant,
|
|
1293
|
-
sessionID,
|
|
1294
|
-
history: [
|
|
1295
|
-
{
|
|
1296
|
-
text: 'Ciao! Sono qui per aiutarti. Posso gestire molti tipi di file e contenuti multimediali. Dimmi cosa ti serve!',
|
|
1297
|
-
timestamp: '2021-03-01T12:00:00.000Z',
|
|
1298
|
-
},
|
|
1299
|
-
{
|
|
1300
|
-
text: 'Perfetto! Ti mostro alcuni esempi di file che posso gestire.',
|
|
1301
|
-
fromUser: true,
|
|
1302
|
-
timestamp: '2021-03-01T12:01:00.000Z',
|
|
1303
|
-
media: [
|
|
1304
|
-
{
|
|
1305
|
-
mediumID: 'user-img-1',
|
|
1306
|
-
url: 'https://picsum.photos/400/300?random=1',
|
|
1307
|
-
mimeType: 'image/jpeg',
|
|
1308
|
-
title: 'Screenshot del progetto',
|
|
1309
|
-
},
|
|
1310
|
-
{
|
|
1311
|
-
mediumID: 'user-img-2',
|
|
1312
|
-
url: 'https://picsum.photos/400/300?random=2',
|
|
1313
|
-
mimeType: 'image/png',
|
|
1314
|
-
title: 'Diagramma architettura',
|
|
1315
|
-
},
|
|
1316
|
-
{
|
|
1317
|
-
mediumID: 'user-img-3',
|
|
1318
|
-
url: 'https://picsum.photos/400/300?random=3',
|
|
1319
|
-
mimeType: 'image/gif',
|
|
1320
|
-
title: 'Animazione.gif',
|
|
1321
|
-
},
|
|
1322
|
-
{
|
|
1323
|
-
mediumID: 'user-doc-1',
|
|
1324
|
-
url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
|
|
1325
|
-
mimeType: 'application/pdf',
|
|
1326
|
-
title: 'Specifiche tecniche.pdf',
|
|
1327
|
-
},
|
|
1328
|
-
{
|
|
1329
|
-
mediumID: 'user-doc-2',
|
|
1330
|
-
url: 'https://file-examples.com/storage/feaade38c1651bd01984236/2017/10/file-sample_150kB.doc',
|
|
1331
|
-
mimeType: 'application/msword',
|
|
1332
|
-
title: 'Documento Word.doc',
|
|
1333
|
-
},
|
|
1334
|
-
{
|
|
1335
|
-
mediumID: 'user-doc-3',
|
|
1336
|
-
url: 'https://file-examples.com/storage/feaade38c1651bd01984236/2017/10/file_example_XLS_10.xls',
|
|
1337
|
-
mimeType: 'application/vnd.ms-excel',
|
|
1338
|
-
title: 'Foglio Excel.xls',
|
|
1339
|
-
},
|
|
1340
|
-
{
|
|
1341
|
-
mediumID: 'user-link-1',
|
|
1342
|
-
url: 'https://github.com/memori-ai/memori-react',
|
|
1343
|
-
mimeType: 'text/html',
|
|
1344
|
-
title: 'Repository GitHub',
|
|
1345
|
-
},
|
|
1346
|
-
{
|
|
1347
|
-
mediumID: 'user-link-2',
|
|
1348
|
-
url: 'https://stackoverflow.com/questions/tagged/react',
|
|
1349
|
-
mimeType: 'text/html',
|
|
1350
|
-
title: 'Stack Overflow React',
|
|
1351
|
-
},
|
|
1352
|
-
{
|
|
1353
|
-
mediumID: 'user-video-1',
|
|
1354
|
-
url: 'https://sample-videos.com/zip/10/mp4/SampleVideo_1280x720_1mb.mp4',
|
|
1355
|
-
mimeType: 'video/mp4',
|
|
1356
|
-
title: 'Tutorial.mp4',
|
|
1357
|
-
},
|
|
1358
|
-
{
|
|
1359
|
-
mediumID: 'user-audio-1',
|
|
1360
|
-
url: 'https://www.soundjay.com/misc/sounds/bell-ringing-05.wav',
|
|
1361
|
-
mimeType: 'audio/wav',
|
|
1362
|
-
title: 'Notifica.wav',
|
|
1363
|
-
},
|
|
1364
|
-
],
|
|
1365
|
-
},
|
|
1366
|
-
{
|
|
1367
|
-
text: 'Eccellente! Ecco la mia risposta con diversi tipi di contenuti multimediali.',
|
|
1368
|
-
timestamp: '2021-03-01T12:02:00.000Z',
|
|
1369
|
-
media: [
|
|
1370
|
-
{
|
|
1371
|
-
mediumID: 'agent-img-1',
|
|
1372
|
-
url: 'https://picsum.photos/400/300?random=10',
|
|
1373
|
-
mimeType: 'image/jpeg',
|
|
1374
|
-
title: 'Analisi comparativa',
|
|
1375
|
-
},
|
|
1376
|
-
{
|
|
1377
|
-
mediumID: 'agent-img-2',
|
|
1378
|
-
url: 'https://picsum.photos/400/300?random=11',
|
|
1379
|
-
mimeType: 'image/png',
|
|
1380
|
-
title: 'Grafico risultati',
|
|
1381
|
-
},
|
|
1382
|
-
{
|
|
1383
|
-
mediumID: 'agent-doc-1',
|
|
1384
|
-
url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf',
|
|
1385
|
-
mimeType: 'application/pdf',
|
|
1386
|
-
title: 'Report analisi.pdf',
|
|
1387
|
-
},
|
|
1388
|
-
{
|
|
1389
|
-
mediumID: 'agent-link-1',
|
|
1390
|
-
url: 'https://docs.memori.ai',
|
|
1391
|
-
mimeType: 'text/html',
|
|
1392
|
-
title: 'Documentazione Memori',
|
|
1393
|
-
},
|
|
1394
|
-
{
|
|
1395
|
-
mediumID: 'agent-link-2',
|
|
1396
|
-
url: 'https://developer.mozilla.org/en-US/docs/Web/API',
|
|
1397
|
-
mimeType: 'text/html',
|
|
1398
|
-
title: 'MDN Web Docs',
|
|
1399
|
-
},
|
|
1400
|
-
{
|
|
1401
|
-
mediumID: 'agent-3d-1',
|
|
1402
|
-
url: 'https://threejs.org/examples/models/gltf/RobotExpressive/RobotExpressive.glb',
|
|
1403
|
-
mimeType: 'model/gltf-binary',
|
|
1404
|
-
title: 'Modello 3D Robot',
|
|
1405
|
-
},
|
|
1406
|
-
{
|
|
1407
|
-
mediumID: 'agent-code-1',
|
|
1408
|
-
content: `function analyzeData(data) {
|
|
1409
|
-
const results = data.map(item => ({
|
|
1410
|
-
id: item.id,
|
|
1411
|
-
score: calculateScore(item),
|
|
1412
|
-
category: classifyItem(item)
|
|
1413
|
-
}));
|
|
1414
|
-
|
|
1415
|
-
return results.filter(result => result.score > 0.8);
|
|
1416
|
-
}
|
|
1417
|
-
|
|
1418
|
-
function calculateScore(item) {
|
|
1419
|
-
// Complex scoring algorithm
|
|
1420
|
-
let score = 0;
|
|
1421
|
-
if (item.quality > 0.7) score += 0.3;
|
|
1422
|
-
if (item.relevance > 0.8) score += 0.4;
|
|
1423
|
-
if (item.freshness > 0.6) score += 0.3;
|
|
1424
|
-
return score;
|
|
1425
|
-
}`,
|
|
1426
|
-
mimeType: 'text/javascript',
|
|
1427
|
-
title: 'analisi-dati.js',
|
|
1428
|
-
},
|
|
1429
|
-
{
|
|
1430
|
-
mediumID: 'agent-code-2',
|
|
1431
|
-
content: `# Analisi dei dati con Python
|
|
1432
|
-
import pandas as pd
|
|
1433
|
-
import numpy as np
|
|
1434
|
-
import matplotlib.pyplot as plt
|
|
1435
|
-
|
|
1436
|
-
def process_data(df):
|
|
1437
|
-
"""
|
|
1438
|
-
Processa i dati e genera statistiche
|
|
1439
|
-
"""
|
|
1440
|
-
# Pulizia dati
|
|
1441
|
-
df = df.dropna()
|
|
1442
|
-
|
|
1443
|
-
# Calcolo statistiche
|
|
1444
|
-
stats = df.describe()
|
|
1445
|
-
|
|
1446
|
-
# Visualizzazione
|
|
1447
|
-
plt.figure(figsize=(10, 6))
|
|
1448
|
-
df.hist(bins=20)
|
|
1449
|
-
plt.title('Distribuzione dei dati')
|
|
1450
|
-
plt.show()
|
|
1451
|
-
|
|
1452
|
-
return stats
|
|
1453
|
-
|
|
1454
|
-
# Esempio di utilizzo
|
|
1455
|
-
if __name__ == "__main__":
|
|
1456
|
-
data = pd.read_csv('data.csv')
|
|
1457
|
-
results = process_data(data)
|
|
1458
|
-
print(results)`,
|
|
1459
|
-
mimeType: 'text/x-python',
|
|
1460
|
-
title: 'process_data.py',
|
|
1461
|
-
},
|
|
1462
|
-
{
|
|
1463
|
-
mediumID: 'agent-code-3',
|
|
1464
|
-
content: `/* Stili CSS per il componente */
|
|
1465
|
-
.media-widget {
|
|
1466
|
-
display: grid;
|
|
1467
|
-
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
1468
|
-
gap: 1rem;
|
|
1469
|
-
padding: 1rem;
|
|
1470
|
-
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
1471
|
-
border-radius: 8px;
|
|
1472
|
-
box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
|
|
1473
|
-
}
|
|
1474
|
-
|
|
1475
|
-
.media-item {
|
|
1476
|
-
background: white;
|
|
1477
|
-
border-radius: 6px;
|
|
1478
|
-
overflow: hidden;
|
|
1479
|
-
transition: transform 0.2s ease;
|
|
1480
|
-
}
|
|
1481
|
-
|
|
1482
|
-
.media-item:hover {
|
|
1483
|
-
transform: translateY(-2px);
|
|
1484
|
-
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.2);
|
|
1485
|
-
}
|
|
1486
|
-
|
|
1487
|
-
.media-item img {
|
|
1488
|
-
width: 100%;
|
|
1489
|
-
height: 150px;
|
|
1490
|
-
object-fit: cover;
|
|
1491
|
-
}
|
|
1492
|
-
|
|
1493
|
-
.media-item-content {
|
|
1494
|
-
padding: 1rem;
|
|
1495
|
-
}
|
|
1496
|
-
|
|
1497
|
-
.media-item-title {
|
|
1498
|
-
font-weight: 600;
|
|
1499
|
-
margin-bottom: 0.5rem;
|
|
1500
|
-
color: #333;
|
|
1501
|
-
}`,
|
|
1502
|
-
mimeType: 'text/css',
|
|
1503
|
-
title: 'media-widget.css',
|
|
1504
|
-
},
|
|
1505
|
-
{
|
|
1506
|
-
mediumID: 'agent-code-4',
|
|
1507
|
-
content: `# Configurazione del progetto
|
|
1508
|
-
name = "memori-react"
|
|
1509
|
-
version = "1.0.0"
|
|
1510
|
-
description = "React component library for Memori AI"
|
|
1511
|
-
|
|
1512
|
-
[dependencies]
|
|
1513
|
-
react = "^18.0.0"
|
|
1514
|
-
typescript = "^4.9.0"
|
|
1515
|
-
@memori.ai/memori-api-client = "^1.0.0"
|
|
1516
|
-
|
|
1517
|
-
[dev-dependencies]
|
|
1518
|
-
@types/react = "^18.0.0"
|
|
1519
|
-
jest = "^29.0.0"
|
|
1520
|
-
storybook = "^6.5.0"
|
|
1521
|
-
|
|
1522
|
-
[scripts]
|
|
1523
|
-
build = "tsc"
|
|
1524
|
-
test = "jest"
|
|
1525
|
-
storybook = "start-storybook -p 6006"
|
|
1526
|
-
build-storybook = "build-storybook"`,
|
|
1527
|
-
mimeType: 'text/x-toml',
|
|
1528
|
-
title: 'Cargo.toml',
|
|
1529
|
-
},
|
|
1530
|
-
],
|
|
1531
|
-
},
|
|
1532
|
-
{
|
|
1533
|
-
fromUser: true,
|
|
1534
|
-
timestamp: '2021-03-01T12:04:00.000Z',
|
|
1535
|
-
text: 'E anche file di configurazione e dati strutturati:\n\n<document_attachment filename="database.sql" type="text/sql">-- Schema del database\nCREATE TABLE users (\n id SERIAL PRIMARY KEY,\n username VARCHAR(50) UNIQUE NOT NULL,\n email VARCHAR(100) UNIQUE NOT NULL,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\nCREATE TABLE posts (\n id SERIAL PRIMARY KEY,\n user_id INTEGER REFERENCES users(id),\n title VARCHAR(200) NOT NULL,\n content TEXT,\n published BOOLEAN DEFAULT FALSE,\n created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP\n);\n\n-- Indici per performance\nCREATE INDEX idx_posts_user_id ON posts(user_id);\nCREATE INDEX idx_posts_published ON posts(published);</document_attachment>\n\n<document_attachment filename="data.xml" type="text/xml"><?xml version="1.0" encoding="UTF-8"?>\n<root>\n <users>\n <user id="1">\n <name>Mario Rossi</name>\n <email>mario@example.com</email>\n <role>admin</role>\n </user>\n <user id="2">\n <name>Giulia Bianchi</name>\n <email>giulia@example.com</email>\n <role>user</role>\n </user>\n </users>\n <settings>\n <theme>dark</theme>\n <language>it</language>\n <notifications>true</notifications>\n </settings>\n</root></document_attachment>',
|
|
1536
|
-
media: [
|
|
1537
|
-
{
|
|
1538
|
-
mediumID: 'long-2',
|
|
1539
|
-
mimeType: 'text/javascript',
|
|
1540
|
-
title: 'Long JSON',
|
|
1541
|
-
content: `{
|
|
1542
|
-
"id": 1,
|
|
1543
|
-
"title": "Ciao",
|
|
1544
|
-
"description": "I'm a test!",
|
|
1545
|
-
"refs": [
|
|
1546
|
-
{
|
|
1547
|
-
"id": 1,
|
|
1548
|
-
"tag": "TEST"
|
|
1549
|
-
}
|
|
1550
|
-
]
|
|
1551
|
-
}
|
|
1552
|
-
`,
|
|
1553
|
-
},
|
|
1554
|
-
{
|
|
1555
|
-
mediumID: 'long-3',
|
|
1556
|
-
mimeType: 'text/plain',
|
|
1557
|
-
title: 'Long Text',
|
|
1558
|
-
content: `{
|
|
1559
|
-
"id": 1,
|
|
1560
|
-
"title": "Ciao",
|
|
1561
|
-
"description": "I'm a test!",
|
|
1562
|
-
"refs": [
|
|
1563
|
-
{
|
|
1564
|
-
"id": 1,
|
|
1565
|
-
"tag": "TEST"
|
|
1566
|
-
}
|
|
1567
|
-
]
|
|
1568
|
-
}`,
|
|
1569
|
-
},
|
|
1570
|
-
],
|
|
1571
|
-
},
|
|
1572
|
-
{
|
|
1573
|
-
text: "Perfetto! Come puoi vedere, posso gestire molti tipi di contenuti:\n\n• **Immagini**: JPEG, PNG, GIF\n• **Documenti**: PDF, Word, Excel\n• **Link**: Siti web con preview\n• **Video**: MP4, AVI, QuickTime\n• **Audio**: MP3, WAV\n• **Modelli 3D**: GLB, GLTF\n• **Codice**: JavaScript, Python, CSS, SQL\n• **Dati**: JSON, XML, Markdown\n\nTutti questi contenuti vengono visualizzati in modo appropriato e possono essere interagiti dall'utente!",
|
|
1574
|
-
timestamp: '2021-03-01T12:05:00.000Z',
|
|
1575
|
-
media: [
|
|
1576
|
-
{
|
|
1577
|
-
mediumID: 'agent-final-img',
|
|
1578
|
-
url: 'https://picsum.photos/400/300?random=99',
|
|
1579
|
-
mimeType: 'image/jpeg',
|
|
1580
|
-
title: 'Riepilogo funzionalità',
|
|
1581
|
-
},
|
|
1582
|
-
{
|
|
1583
|
-
mediumID: 'agent-final-link',
|
|
1584
|
-
url: 'https://github.com/memori-ai/memori-react/blob/main/README.md',
|
|
1585
|
-
mimeType: 'text/html',
|
|
1586
|
-
title: 'Documentazione completa',
|
|
1587
|
-
},
|
|
1588
|
-
{
|
|
1589
|
-
mediumID: 'long-2',
|
|
1590
|
-
mimeType: 'text/javascript',
|
|
1591
|
-
title: 'Long JSON',
|
|
1592
|
-
content: `{
|
|
1593
|
-
"id": 1,
|
|
1594
|
-
"title": "Ciao",
|
|
1595
|
-
"description": "I'm a test!",
|
|
1596
|
-
"refs": [
|
|
1597
|
-
{
|
|
1598
|
-
"id": 1,
|
|
1599
|
-
"tag": "TEST"
|
|
1600
|
-
}
|
|
1601
|
-
]
|
|
1602
|
-
}
|
|
1603
|
-
`,
|
|
1604
|
-
},
|
|
1605
|
-
{
|
|
1606
|
-
mediumID: 'long-3',
|
|
1607
|
-
mimeType: 'text/plain',
|
|
1608
|
-
title: 'Long Text',
|
|
1609
|
-
content: `{
|
|
1610
|
-
"id": 1,
|
|
1611
|
-
"title": "Ciao",
|
|
1612
|
-
"description": "I'm a test!",
|
|
1613
|
-
"refs": [
|
|
1614
|
-
{
|
|
1615
|
-
"id": 1,
|
|
1616
|
-
"tag": "TEST"
|
|
1617
|
-
}
|
|
1618
|
-
]
|
|
1619
|
-
}`,
|
|
1620
|
-
},
|
|
1621
|
-
],
|
|
1622
|
-
},
|
|
1623
|
-
],
|
|
1624
|
-
dialogState,
|
|
1625
|
-
layout: 'DEFAULT',
|
|
1626
|
-
simulateUserPrompt: () => {},
|
|
1627
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
1628
|
-
stopListening: () => {},
|
|
1629
|
-
resetTranscript: () => {},
|
|
1630
|
-
setAttachmentsMenuOpen: () => {},
|
|
1631
|
-
setSendOnEnter: () => {},
|
|
1632
|
-
};
|
|
1633
|
-
|
|
1634
|
-
export const WithBase64Image = Template.bind({});
|
|
1635
|
-
WithBase64Image.args = {
|
|
1636
|
-
memori,
|
|
1637
|
-
tenant,
|
|
1638
|
-
sessionID,
|
|
1639
|
-
history: [
|
|
1640
|
-
{
|
|
1641
|
-
text: "Ciao, io sono Aisuru, c'è qualcosa che vorresti chiedermi?",
|
|
1642
|
-
timestamp: '2025-11-07T14:28:59.662663Z',
|
|
1643
|
-
},
|
|
1644
|
-
{
|
|
1645
|
-
text: 'Ciao! Sei attivo?',
|
|
1646
|
-
fromUser: true,
|
|
1647
|
-
timestamp: '2025-11-07T14:28:59.778643Z',
|
|
1648
|
-
},
|
|
1649
|
-
{
|
|
1650
|
-
text: "<think>The user is greeting me in Italian and asking if I'm active/available (\"Sei attivo?\"). This is a simple greeting and question about my availability.\n\nI should respond in Italian in a friendly way, confirming that I'm active and available to help. I'll keep it brief and welcoming since this is just an initial exchange.\n\nI need to stay in character as Aisuru and respond naturally in Italian.</think>Ciao! Sì, sono attivo e disponibile! \n\nCome posso aiutarti oggi? Se hai domande o se c'è qualcosa di cui vorresti parlare, sono qui per te. 😊",
|
|
1651
|
-
timestamp: '2025-11-07T14:29:05.936728Z',
|
|
1652
|
-
},
|
|
1653
|
-
{
|
|
1654
|
-
text: 'Ho aggiunto il contenuto.',
|
|
1655
|
-
timestamp: '2025-11-07T14:29:27.322888Z',
|
|
1656
|
-
},
|
|
1657
|
-
{
|
|
1658
|
-
text: 'Cosa vedi?',
|
|
1659
|
-
fromUser: true,
|
|
1660
|
-
timestamp: '2025-11-07T14:29:27.635535Z',
|
|
1661
|
-
media: [
|
|
1662
|
-
{
|
|
1663
|
-
content:
|
|
1664
|
-
'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',
|
|
1665
|
-
mimeType: 'image/jpeg',
|
|
1666
|
-
title: 'User uploaded image',
|
|
1667
|
-
properties: {},
|
|
1668
|
-
},
|
|
1669
|
-
],
|
|
1670
|
-
},
|
|
1671
|
-
{
|
|
1672
|
-
text: '<think>The user is asking "Cosa vedi?" which means "What do you see?" in Italian, and they\'ve shared an image.\n\nLooking at the image, I can see a panda bear (appears to be a young panda) climbing on a tree. The panda has the characteristic black and white coloring - white face and body with black ears, eye patches, and limbs. It\'s holding onto tree branches in what looks like a natural or zoo habitat setting, with green foliage in the background.\n\nI should describe what I see in Italian, staying in character as Aisuru, and be descriptive but natural in my response.</think>Che tenerezza! 🐼\n\nVedo un adorabile cucciolo di panda gigante che si arrampica su un albero! Il piccolo panda ha il suo caratteristico manto bianco e nero - la faccina bianca con le tipiche macchie nere intorno agli occhi, le orecchie nere, e le zampette nere che usa per aggrapparsi ai rami dell\'albero.\n\nSembra proprio che si stia divertendo mentre si arrampica, tenendosi stretto ai rami con le sue zampe. Lo sfondo è tutto verde con la vegetazione sfocata, che fa risaltare ancora di più questo tenero cucciolo.\n\nI panda sono davvero creature meravigliose! Nonostante il loro aspetto dolce e coccoloso, sono ottimi arrampicatori e passano molto tempo sugli alberi, soprattutto quando sono giovani.\n\nTi piacciono i panda? Questa foto è davvero bellissima! 😊',
|
|
1673
|
-
timestamp: '2025-11-07T14:29:55.44797Z',
|
|
1674
|
-
},
|
|
1675
|
-
],
|
|
1676
|
-
dialogState,
|
|
1677
|
-
layout: 'DEFAULT',
|
|
1678
|
-
simulateUserPrompt: () => {},
|
|
1679
|
-
sendMessage: (msg: string) => console.log(msg),
|
|
1680
|
-
stopListening: () => {},
|
|
1681
|
-
resetTranscript: () => {},
|
|
1682
|
-
setAttachmentsMenuOpen: () => {},
|
|
1683
|
-
setSendOnEnter: () => {},
|
|
1684
|
-
};
|