@memori.ai/memori-react 7.32.3 → 7.32.5

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 (59) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/components/Chat/Chat.js +4 -4
  3. package/dist/components/Chat/Chat.js.map +1 -1
  4. package/dist/components/ChatBubble/ChatBubble.js +27 -5
  5. package/dist/components/ChatBubble/ChatBubble.js.map +1 -1
  6. package/dist/components/ChatHistoryDrawer/ChatHistory.js +2 -2
  7. package/dist/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  8. package/dist/components/MediaWidget/MediaItemWidget.css +112 -5
  9. package/dist/components/MediaWidget/MediaItemWidget.js +15 -1
  10. package/dist/components/MediaWidget/MediaItemWidget.js.map +1 -1
  11. package/dist/helpers/error.js +31 -6
  12. package/dist/helpers/error.js.map +1 -1
  13. package/dist/helpers/message.js +1 -1
  14. package/dist/helpers/message.js.map +1 -1
  15. package/dist/locales/de.json +32 -1
  16. package/dist/locales/en.json +32 -1
  17. package/dist/locales/es.json +32 -1
  18. package/dist/locales/fr.json +33 -1
  19. package/dist/locales/it.json +32 -1
  20. package/esm/components/Chat/Chat.js +4 -4
  21. package/esm/components/Chat/Chat.js.map +1 -1
  22. package/esm/components/ChatBubble/ChatBubble.js +27 -5
  23. package/esm/components/ChatBubble/ChatBubble.js.map +1 -1
  24. package/esm/components/ChatHistoryDrawer/ChatHistory.js +3 -3
  25. package/esm/components/ChatHistoryDrawer/ChatHistory.js.map +1 -1
  26. package/esm/components/MediaWidget/MediaItemWidget.css +112 -5
  27. package/esm/components/MediaWidget/MediaItemWidget.js +15 -1
  28. package/esm/components/MediaWidget/MediaItemWidget.js.map +1 -1
  29. package/esm/helpers/error.js +31 -6
  30. package/esm/helpers/error.js.map +1 -1
  31. package/esm/helpers/message.js +1 -1
  32. package/esm/helpers/message.js.map +1 -1
  33. package/esm/locales/de.json +32 -1
  34. package/esm/locales/en.json +32 -1
  35. package/esm/locales/es.json +32 -1
  36. package/esm/locales/fr.json +33 -1
  37. package/esm/locales/it.json +32 -1
  38. package/package.json +1 -1
  39. package/src/components/Chat/Chat.tsx +2 -1
  40. package/src/components/Chat/__snapshots__/Chat.test.tsx.snap +1130 -18
  41. package/src/components/ChatBubble/ChatBubble.tsx +61 -4
  42. package/src/components/ChatBubble/__snapshots__/ChatBubble.test.tsx.snap +3 -0
  43. package/src/components/ChatHistoryDrawer/ChatHistory.tsx +2 -2
  44. package/src/components/MediaWidget/MediaItemWidget.css +112 -5
  45. package/src/components/MediaWidget/MediaItemWidget.tsx +31 -2
  46. package/src/helpers/error.ts +35 -6
  47. package/src/helpers/message.ts +2 -1
  48. package/src/index.stories.tsx +4 -18
  49. package/src/locales/de.json +32 -1
  50. package/src/locales/en.json +32 -1
  51. package/src/locales/es.json +32 -1
  52. package/src/locales/fr.json +33 -1
  53. package/src/locales/it.json +32 -1
  54. package/dist/components/ExportHistoryButton/ExportHistoryButton.d.ts +0 -14
  55. package/dist/components/ExportHistoryButton/ExportHistoryButton.js +0 -38
  56. package/dist/components/ExportHistoryButton/ExportHistoryButton.js.map +0 -1
  57. package/esm/components/ExportHistoryButton/ExportHistoryButton.d.ts +0 -14
  58. package/esm/components/ExportHistoryButton/ExportHistoryButton.js +0 -35
  59. package/esm/components/ExportHistoryButton/ExportHistoryButton.js.map +0 -1
@@ -6,6 +6,7 @@ import {
6
6
  Message,
7
7
  Tenant,
8
8
  User,
9
+ Medium,
9
10
  } from '@memori.ai/memori-api-client/dist/types';
10
11
  import { Props as MemoriProps } from '../MemoriWidget/MemoriWidget';
11
12
  import { Transition } from '@headlessui/react';
@@ -26,6 +27,7 @@ import { stripHTML, stripOutputTags } from '../../helpers/utils';
26
27
  import { renderMsg, truncateMessage } from '../../helpers/message';
27
28
  import Expandable from '../ui/Expandable';
28
29
  import Modal from '../ui/Modal';
30
+ import MediaWidget from '../MediaWidget/MediaWidget';
29
31
 
30
32
  // Always import and load MathJax
31
33
  import { installMathJax } from '../../helpers/utils';
@@ -84,6 +86,7 @@ const ChatBubble: React.FC<Props> = ({
84
86
  const lang = i18n.language || 'en';
85
87
  const [showingWhyThisAnswer, setShowingWhyThisAnswer] = useState(false);
86
88
  const [openFunctionCache, setOpenFunctionCache] = useState(false);
89
+ const [documentAttachments, setDocumentAttachments] = useState<(Medium & { type?: string })[]>([]);
87
90
 
88
91
  // Initialize MathJax on component mount
89
92
  useEffect(() => {
@@ -92,14 +95,41 @@ const ChatBubble: React.FC<Props> = ({
92
95
  }
93
96
  }, []);
94
97
 
95
- const text = message.translatedText || message.text;
98
+ // Extract document attachments from text and convert them to media
99
+ useEffect(() => {
100
+ const text = message.translatedText || message.text;
101
+ const documentAttachmentRegex = /<document_attachment filename="([^"]+)" type="([^"]+)">([\s\S]*?)<\/document_attachment>/g;
102
+ const attachments: (Medium & { type?: string })[] = [];
103
+ let match;
104
+
105
+ while ((match = documentAttachmentRegex.exec(text)) !== null) {
106
+ const [, filename, type, content] = match;
107
+ attachments.push({
108
+ mediumID: `doc_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
109
+ url: '',
110
+ mimeType: type,
111
+ title: filename,
112
+ content: content.trim(),
113
+ properties: { isDocumentAttachment: true },
114
+ type: 'document',
115
+ });
116
+ }
117
+
118
+ setDocumentAttachments(attachments);
119
+ }, [message.text, message.translatedText]);
120
+
121
+ // Clean text by removing document_attachment tags before rendering
122
+ const cleanText = (message.translatedText || message.text).replace(
123
+ /<document_attachment filename="([^"]+)" type="([^"]+)">([\s\S]*?)<\/document_attachment>/g,
124
+ ''
125
+ );
96
126
  const { text: renderedText } = renderMsg(
97
- text,
127
+ cleanText,
98
128
  useMathFormatting,
99
129
  t('reasoning') || 'Reasoning...'
100
130
  );
101
131
  const plainText = message.fromUser
102
- ? truncateMessage(text)
132
+ ? truncateMessage(cleanText)
103
133
  : stripHTML(stripOutputTags(renderedText));
104
134
 
105
135
  // Format function cache content
@@ -146,7 +176,9 @@ const ChatBubble: React.FC<Props> = ({
146
176
 
147
177
  return () => clearTimeout(timer);
148
178
  }
149
- }, [message.text, message.fromUser, renderedText]);
179
+ }, [cleanText, message.fromUser, renderedText]);
180
+
181
+ console.log('media',message?.media);
150
182
 
151
183
  return (
152
184
  <>
@@ -465,6 +497,31 @@ const ChatBubble: React.FC<Props> = ({
465
497
  )}
466
498
  </Transition>
467
499
 
500
+ {/* Render document attachments as media */}
501
+ {documentAttachments.length > 0 && (
502
+ <MediaWidget
503
+ media={documentAttachments}
504
+ sessionID={sessionID}
505
+ baseUrl={baseUrl}
506
+ apiUrl={apiUrl}
507
+ fromUser={message.fromUser}
508
+ />
509
+ )}
510
+
511
+ {/* Render existing media */}
512
+ {message.media && message.media.length > 0 && (
513
+ <MediaWidget
514
+ media={message.media.filter(
515
+ m => m.mimeType !== 'text/html' && m.mimeType !== 'text/plain'
516
+ )}
517
+ links={message.media.filter(m => m.mimeType === 'text/html')}
518
+ sessionID={sessionID}
519
+ baseUrl={baseUrl}
520
+ apiUrl={apiUrl}
521
+ fromUser={message.fromUser}
522
+ />
523
+ )}
524
+
468
525
  {showingWhyThisAnswer && apiUrl && (
469
526
  <WhyThisAnswer
470
527
  visible={showingWhyThisAnswer}
@@ -6803,6 +6803,9 @@ exports[`renders ChatBubble with debug button unchanged 1`] = `
6803
6803
  </div>
6804
6804
  </div>
6805
6805
  </div>
6806
+ <div
6807
+ class="memori-media-widget"
6808
+ />
6806
6809
  </div>
6807
6810
  `;
6808
6811
 
@@ -693,7 +693,7 @@ const ChatHistoryDrawer = ({
693
693
  <div className="memori-chat-history-drawer--card--content">
694
694
  <div className="memori-chat-history-drawer--card--content--messages">
695
695
  <Chat
696
- key={`${chatLog.lines[0].text}-${chatLog.lines[0].timestamp}`}
696
+ key={`${chatLog.chatLogID}-${chatLog.lines.length}`}
697
697
  baseUrl={baseUrl}
698
698
  apiUrl={apiUrl}
699
699
  memoriTyping={false}
@@ -704,7 +704,7 @@ const ChatHistoryDrawer = ({
704
704
  showCopyButton={false}
705
705
  showInputs={false}
706
706
  history={chatLog.lines.map(line => ({
707
- text: truncateMessage(line.text),
707
+ text: line.text, // Don't truncate to preserve document_attachment tags
708
708
  contextVars: line.contextVars,
709
709
  media: line.media as Medium[],
710
710
  fromUser: line.inbound,
@@ -155,10 +155,117 @@ a.memori-media-item--link {
155
155
  }
156
156
 
157
157
  .memori-media-item-preview--modal {
158
- z-index: 10000;
158
+ z-index: 1000;
159
+ }
160
+
161
+ .memori-media-item-preview--content {
162
+ max-height: 50vh;
163
+ padding: 1rem;
164
+ border: 1px solid var(--memori-border);
165
+ border-radius: 0.5rem;
166
+ background-color: var(--memori-background-color, #fff);
167
+ box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
168
+ overflow-y: auto;
169
+ }
170
+
171
+ .memori-media-item-preview--text {
172
+ color: var(--memori-color-text);
173
+ font-family: inherit;
174
+ font-size: 0.875rem;
175
+ line-height: 1.6;
176
+ white-space: pre-wrap;
177
+ word-wrap: break-word;
178
+ }
179
+
180
+ .memori-media-item-preview--text h1,
181
+ .memori-media-item-preview--text h2,
182
+ .memori-media-item-preview--text h3,
183
+ .memori-media-item-preview--text h4,
184
+ .memori-media-item-preview--text h5,
185
+ .memori-media-item-preview--text h6 {
186
+ margin-top: 1.5rem;
187
+ margin-bottom: 0.75rem;
188
+ color: var(--memori-color-text);
189
+ font-weight: 600;
190
+ }
191
+
192
+ .memori-media-item-preview--text p {
193
+ margin-bottom: 1rem;
194
+ }
195
+
196
+ .memori-media-item-preview--text ul,
197
+ .memori-media-item-preview--text ol {
198
+ padding-left: 1.5rem;
199
+ margin-bottom: 1rem;
200
+ }
201
+
202
+ .memori-media-item-preview--text li {
203
+ margin-bottom: 0.25rem;
204
+ }
205
+
206
+ .memori-media-item-preview--text code {
207
+ padding: 0.125rem 0.25rem;
208
+ border-radius: 0.25rem;
209
+ background-color: var(--memori-primary-light);
210
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
211
+ font-size: 0.875em;
212
+ }
213
+
214
+ .memori-media-item-preview--text pre {
215
+ padding: 1rem;
216
+ border: 1px solid var(--memori-border);
217
+ border-radius: 0.5rem;
218
+ margin: 1rem 0;
219
+ background-color: var(--memori-primary-light);
220
+ overflow-x: auto;
221
+ }
222
+
223
+ .memori-media-item-preview--text blockquote {
224
+ padding-left: 1rem;
225
+ border-left: 4px solid var(--memori-primary);
226
+ margin: 1rem 0;
227
+ color: var(--memori-color-text-secondary);
228
+ font-style: italic;
229
+ }
230
+
231
+ .memori-media-item-preview--text table {
159
232
  width: 100%;
160
- max-width: 80%;
161
- height: 100%;
162
- max-height: 80%;
163
- background: #fff;
233
+ margin: 1rem 0;
234
+ border-collapse: collapse;
235
+ }
236
+
237
+ .memori-media-item-preview--text th,
238
+ .memori-media-item-preview--text td {
239
+ padding: 0.5rem;
240
+ border: 1px solid var(--memori-border);
241
+ text-align: left;
242
+ }
243
+
244
+ .memori-media-item-preview--text th {
245
+ background-color: var(--memori-primary-light);
246
+ font-weight: 600;
247
+ }
248
+
249
+ .memori-media-item-preview--text a {
250
+ color: var(--memori-primary);
251
+ text-decoration: underline;
252
+ }
253
+
254
+ .memori-media-item-preview--text a:hover {
255
+ text-decoration: none;
256
+ }
257
+
258
+ /* Responsive design */
259
+ @media (max-width: 768px) {
260
+ .memori-media-item-preview--text {
261
+ font-size: 0.8rem;
262
+ }
263
+
264
+ .memori-media-item-preview--text pre {
265
+ padding: 0.75rem;
266
+ }
267
+
268
+ .memori-media-item-preview--content {
269
+ max-height: 40vh;
270
+ }
164
271
  }
@@ -7,14 +7,15 @@ import ModelViewer from '../CustomGLBModelViewer/ModelViewer';
7
7
  import Snippet from '../Snippet/Snippet';
8
8
  import Card from '../ui/Card';
9
9
  import Modal from '../ui/Modal';
10
+ import Button from '../ui/Button';
10
11
  import File from '../icons/File';
11
12
  import FilePdf from '../icons/FilePdf';
12
13
  import FileExcel from '../icons/FileExcel';
13
14
  import FileWord from '../icons/FileWord';
15
+ import Copy from '../icons/Copy';
14
16
  import { Transition } from '@headlessui/react';
15
17
  import { stripHTML } from '../../helpers/utils';
16
18
  import cx from 'classnames';
17
-
18
19
  export interface Props {
19
20
  items: (Medium & { type?: string })[];
20
21
  sessionID?: string;
@@ -48,6 +49,7 @@ export const RenderMediaItem = ({
48
49
  customMediaRenderer?: (mimeType: string) => JSX.Element | null;
49
50
  }) => {
50
51
  const [modalOpen, setModalOpen] = useState(false);
52
+ const [copyNotification, setCopyNotification] = useState(false);
51
53
 
52
54
  const url = getResourceUrl({
53
55
  resourceURI: item.url,
@@ -178,8 +180,35 @@ export const RenderMediaItem = ({
178
180
  onClose={() => setModalOpen(false)}
179
181
  title={item.title}
180
182
  className="memori-media-item-preview--modal"
183
+ width="60%"
184
+ widthMd="70%"
185
+ footer={
186
+ <div style={{ display: 'flex', justifyContent: 'flex-end', gap: '0.5rem' }}>
187
+ <Button
188
+ onClick={async () => {
189
+ try {
190
+ await navigator.clipboard.writeText(item.content || '');
191
+ setCopyNotification(true);
192
+ setTimeout(() => setCopyNotification(false), 2000);
193
+ } catch (err) {
194
+ console.error('Failed to copy content:', err);
195
+ }
196
+ }}
197
+ icon={<Copy />}
198
+ >
199
+ {copyNotification ? 'Copied!' : 'Copy Content'}
200
+ </Button>
201
+ </div>
202
+ }
181
203
  >
182
- <pre>{stripHTML(item.content)}</pre>
204
+ <div className="memori-media-item-preview--content">
205
+ <div
206
+ className="memori-media-item-preview--text"
207
+ dangerouslySetInnerHTML={{
208
+ __html: stripHTML(item.content || ''),
209
+ }}
210
+ />
211
+ </div>
183
212
  </Modal>
184
213
  </>
185
214
  );
@@ -7,6 +7,7 @@ const errors = {
7
7
  TENANT_ALREADY_EXISTS: -6,
8
8
  TENANT_MISSING_DESCRIPTION: -7,
9
9
  TENANT_CANT_SET_COMPLETION_PROVIDER: -8,
10
+ TENANT_INVALID_TYPE: -9,
10
11
 
11
12
  USER_NOT_CONFIRMED: -11,
12
13
  USER_NOT_FOUND: -12,
@@ -40,6 +41,7 @@ const errors = {
40
41
  USER_CREATION_BILLING_DENIED_PERMISSION: -46,
41
42
  USER_HAS_ONE_OR_MORE_COMPLETION_CONFIGS: -47,
42
43
  USER_CANT_BE_DELETED: -48,
44
+ USER_ORDER_BY_INVALID: -49,
43
45
 
44
46
  MEMORI_NOT_FOUND: -51,
45
47
  MEMORI_NOT_ACCESSIBLE: -52,
@@ -66,6 +68,9 @@ const errors = {
66
68
  MEMORI_DEEP_THOUGHT_REQUIRES_COMPLETIONS: -215,
67
69
  MEMORI_BOARD_OF_EXPERTS_REQUIRES_COMPLETIONS: -216,
68
70
  MEMORI_INVALID_COMPLETION_CONFIG: -217,
71
+ MEMORI_MACRO_FUNCTIONS_REQUIRES_COMPLETIONS: -218,
72
+ MEMORI_BLOCKING_DATE_MISSING_OR_WRONG: -219,
73
+ MEMORI_LIST_FILTER_NOT_SPECIFIED: -220,
69
74
 
70
75
  MEMORI_TRANSFER_MISSING_DESTINATION_USER: -231,
71
76
  MEMORI_TRANSFER_INVALID_DESTINATION_USER_ID: -232,
@@ -77,6 +82,8 @@ const errors = {
77
82
 
78
83
  MEMORI_SESSIONS_INVALID_DATE_FROM_FORMAT: -261,
79
84
  MEMORI_SESSIONS_INVALID_DATE_TO_FORMAT: -262,
85
+ MEMORI_SESSION_NOT_FOUND: -263,
86
+ MEMORI_SESSION_DOESNT_ACCEPT_MEDIA: -264,
80
87
 
81
88
  MEMORI_FEATURE_REQUIRES_SUBSCRIPTION: -271,
82
89
 
@@ -135,12 +142,16 @@ const errors = {
135
142
  CONSUMPTIONLOG_INVALID_MEMORI_ID: -905,
136
143
 
137
144
  NOTIFICATIONPREFS_INVALID_CHATLOG_EXTRACTION_PERIOD: -1001,
145
+ BROADCAST_NOT_ALLOWED: -1002,
146
+ INVALID_NOTIFICATION_TYPE: -1003,
147
+ NOTIFICATION_NOT_FOUND: -1004,
148
+ INVALID_NOTIFICATION_FILTER: -1005,
149
+ INVALID_NOTIFICATION_PERIOD: -1006,
138
150
 
139
151
  PROCESS_INVALID_TYPE: -1401,
140
152
  PROCESS_ALREADY_RUNNING: -1401,
141
153
  PROCESS_NOT_FOUND: -1402,
142
154
 
143
- IMPORTCSV_MISSING_ROWS: -1501,
144
155
  IMPORTCSV_MISSING_CSV: -1502,
145
156
  IMPORTCSV_MISSING_SEPARATOR: -1503,
146
157
  IMPORTCSV_INVALID_SEPARATOR: -1504,
@@ -150,32 +161,36 @@ const errors = {
150
161
  IMPORTCSV_INVALID_MEDIA_LINK: -1508,
151
162
  IMPORTCSV_INVALID_LINK_TITLE_HANDLING: -1509,
152
163
  IMPORTCSV_UNDETECTABLE_CHAR_ENCODING: -1521,
153
- IMPORTCSV_CANT_IMPORT_TO_SECRET_MEMORI: -1531,
154
164
 
155
- IMPORTTXT_MISSING_ROWS: -1601,
156
165
  IMPORTTXT_INVALID_GRANULARITY: -1602,
157
166
  IMPORTTXT_INVALID_RECEIVER_ID: -1603,
158
167
  IMPORTTXT_INVALID_MEDIA_LINK: -1604,
159
168
  IMPORTTXT_INVALID_LINK_TITLE_HANDLING: -1605,
160
169
  IMPORTTXT_UNDETECTABLE_CHAR_ENCODING: -1621,
161
- IMPORTTXT_CANT_IMPORT_TO_SECRET_MEMORI: -1631,
162
170
  IMPORTTXT_IMPORT_LIMIT_EXCEEDED: -1632,
163
171
  IMPORTTXT_IMPORT_ON_GPT4_REQUIRES_API_KEY: -1633,
164
172
  IMPORTTXT_IMPORT_REQUIRES_PAYING: -1634,
165
173
  IMPORTTXT_BILLING_DENIED_PERMISSION: -1635,
166
174
 
175
+ IMPORT_MISSING_ROWS: -1701,
176
+ IMPORT_CANT_IMPORT_TO_SECRET_MEMORI: -1702,
177
+
178
+ IMPORTMEMORI_INVALID_MEMORI_SPECS: -1711,
179
+ IMPORT_MISSING_JSONL: -1712,
180
+ IMPORTMEMORI_INVALID_SPECS: -1713,
181
+
182
+ EXPORT_MISSING_PASSWORD: 1711,
183
+
167
184
  EXPORTCSV_MISSING_CSV_SPECS: -1801,
168
185
  EXPORTCSV_MISSING_SEPARATOR: -1802,
169
186
  EXPORTCSV_INVALID_SEPARATOR: -1803,
170
187
  EXPORTCSV_MISSING_TITLE_VARIANT_SEPARATOR: -1804,
171
188
  EXPORTCSV_MISSING_NEW_LINE_CHAR: -1805,
172
189
  EXPORTCSV_INVALID_NEW_LINE_CHAR: -1806,
173
- EXPORTCSV_MISSING_PASSWORD: -1811,
174
190
 
175
191
  EXPORTJSONL_MISSING_JSONL_SPECS: -1821,
176
192
  EXPORTJSONL_MISSING_PLATFORM: -1822,
177
193
  EXPORTJSONL_INVALID_PLATFORM: -1823,
178
- EXPORTJSONL_MISSING_PASSWORD: -1831,
179
194
  EXPORTJSONL_EXPORT_REQUIRES_PAYING: -1832,
180
195
 
181
196
  ANALYSIS_MISSING_QUERY: -1901,
@@ -218,6 +233,20 @@ const errors = {
218
233
  COMPLETION_CONFIG_NAME_RESERVED: -2441,
219
234
  COMPLETION_CONFIG_NAME_ALREADY_EXISTS: -2442,
220
235
  COMPLETION_CONFIG_VISIBILITY_CHANGE_NOT_ALLOWED: -2443,
236
+ COMPLETION_CONFIG_MISSING_MANDATORY_PREFIX: -2444,
237
+ COMPLETION_CONFIG_VISIBILITY_NOT_PERMITTED: -2445,
238
+ COMPLETION_CONFIG_USE_AS_DEFAULT_NOT_PERMITTED: -2446,
239
+ COMPLETION_CONFIG_USE_AS_DEFAULT_REQUIRES_TENANT_VISIBILITY: -2447,
240
+ COMPLETION_CONFIG_CHARGEABLE_NOT_PERMITTED: -2448,
241
+ COMPLETION_CONFIG_INVALID_APPLY_TO: -2449,
242
+ COMPLETION_CONFIG_APPLY_TO_TENANT_NOT_ALLOWED: -2450,
243
+
244
+ TRUSTED_APPLICATION_NOT_FOUND: -2501,
245
+ TRUSTED_APPLICATION_NOT_ACCESSIBLE: -2502,
246
+ TRUSTED_APPLICATION_NAME_REQUIRED: -2503,
247
+ TRUSTED_APPLICATION_TOKEN_REQUIRED: -2504,
248
+ TRUSTED_APPLICATION_NAME_ALREADY_EXISTS: -2505,
249
+ TRUSTED_APPLICATION_INVALID_TOKEN: -2506,
221
250
  };
222
251
 
223
252
  export const BACKEND_ERRORS = new Map<number, string>(
@@ -79,9 +79,10 @@ export const renderMsg = (
79
79
  /<think>([\s\S]*?)<\/think>/g,
80
80
  `<details class="memori-think"><summary>${reasoningText}</summary>$1</details>`
81
81
  )
82
+ // Remove document_attachment tags from text - they will be handled as media
82
83
  .replaceAll(
83
84
  /<document_attachment filename="([^"]+)" type="([^"]+)">([\s\S]*?)<\/document_attachment>/g,
84
- '<details class="memori-document-attachment"><summary>$1 ($2)</summary>$3</details>'
85
+ ''
85
86
  )
86
87
  .replaceAll(/```markdown([^```]+)```/g, '$1')
87
88
  .replaceAll('($', '( $')
@@ -258,9 +258,9 @@ NunzioFiore.args = {
258
258
 
259
259
  export const TestCustomAnimationsWithRPMSequence = Template.bind({});
260
260
  TestCustomAnimationsWithRPMSequence.args = {
261
- memoriName: "Test Firenze",
261
+ memoriName: "Dancing Avatar",
262
262
  ownerUserName: "andrea.patini3",
263
- memoriID: "0c813457-0b96-4d83-b4d4-604f7b42a9ac",
263
+ memoriID: "45420d30-a103-455c-bab1-b708a0566a02",
264
264
  ownerUserID: "58770358-a5db-4b49-b3a4-734fc468e745",
265
265
  tenantID: "aisuru-staging.aclambda.online",
266
266
  engineURL: "https://engine-staging.memori.ai/memori/v2",
@@ -268,22 +268,8 @@ TestCustomAnimationsWithRPMSequence.args = {
268
268
  baseURL: "https://aisuru-staging.aclambda.online",
269
269
  uiLang: "IT",
270
270
  spokenLang: "IT",
271
- layout: "FULLPAGE",
272
- showInstruct: "false",
273
- showSettings: "true",
274
- showClear: "false",
275
- showTypingText: "false",
276
- showOnlyLastMessages: "false",
277
- showTranslationOriginal: "false",
278
- showCopyButton: "false",
279
- showShare: "true",
280
- showLogin: "false",
281
- useMathFormatting: "false",
282
- showUpload: "false",
283
- autoStart: false,
284
- enableAudio: "true",
285
- integrationID: "dfb7ac75-98f0-430e-b9bb-0b2835452619",
286
- initialQuestion: "Benvenuto"
271
+ layout: "ZOOMED_FULL_BODY",
272
+ integrationID: "ea181116-1b9a-4562-b8b2-41608221adb2",
287
273
  };
288
274
 
289
275
  export const TestCustomGLBSingleAnimation = Template.bind({});
@@ -285,6 +285,7 @@
285
285
  "TENANT_ALREADY_EXISTS": "Mieter existiert bereits",
286
286
  "TENANT_MISSING_DESCRIPTION": "Mieter: Beschreibung fehlt",
287
287
  "TENANT_CANT_SET_COMPLETION_PROVIDER": "Mandant: Abschlussanbieter kann nicht festgelegt werden",
288
+ "TENANT_INVALID_TYPE": "Mandant: ungültiger Typ",
288
289
 
289
290
  "USER_NOT_CONFIRMED": "Benutzer noch nicht bestätigt",
290
291
  "USER_NOT_FOUND": "Benutzer nicht gefunden",
@@ -319,6 +320,7 @@
319
320
  "USER_CREATION_BILLING_DENIED_PERMISSION": "Sie haben nicht genügend Credits, um einen Zwilling zu erstellen",
320
321
  "USER_HAS_ONE_OR_MORE_COMPLETION_CONFIGS": "Der Benutzer verfügt über eine oder mehrere Abschlusskonfigurationen",
321
322
  "USER_CANT_BE_DELETED": "Benutzer kann nicht gelöscht werden",
323
+ "USER_ORDER_BY_INVALID": "Ungültige Sortierreihenfolge",
322
324
 
323
325
  "MEMORI_NOT_FOUND": "Erinnerungen nicht gefunden",
324
326
  "MEMORI_NOT_ACCESSIBLE": "Agent nicht zugänglich",
@@ -345,6 +347,9 @@
345
347
  "MEMORI_DEEP_THOUGHT_REQUIRES_COMPLETIONS": "Für \"Deep Thought\" müssen Vervollständigungen aktiviert sein",
346
348
  "MEMORI_BOARD_OF_EXPERTS_REQUIRES_COMPLETIONS": "Für die Expertengruppe müssen Vervollständigungen aktiviert sein",
347
349
  "MEMORI_INVALID_COMPLETION_CONFIG": "Zwilling: Ungültige Abschlusskonfiguration",
350
+ "MEMORI_MACRO_FUNCTIONS_REQUIRES_COMPLETIONS": "Für die Makrofunktionen müssen Vervollständigungen aktiviert sein",
351
+ "MEMORI_BLOCKING_DATE_MISSING_OR_WRONG": "Zwilling: fehlende oder falsche Blockierungsdatum",
352
+ "MEMORI_LIST_FILTER_NOT_SPECIFIED": "Zwilling: fehlender Filter",
348
353
 
349
354
  "MEMORI_TRANSFER_MISSING_DESTINATION_USER": "Übertragung: Zielbenutzer fehlt",
350
355
  "MEMORI_TRANSFER_INVALID_DESTINATION_USER_ID": "Übertragung: Ungültige Zielbenutzer-ID",
@@ -360,6 +365,8 @@
360
365
 
361
366
  "MEMORI_SESSIONS_INVALID_DATE_FROM_FORMAT": "Ungültiges Datum aus Format",
362
367
  "MEMORI_SESSIONS_INVALID_DATE_TO_FORMAT": "Ungültiges Datum zum Formatieren",
368
+ "MEMORI_SESSION_NOT_FOUND": "Sitzung nicht gefunden",
369
+ "MEMORI_SESSION_DOESNT_ACCEPT_MEDIA": "Sitzung akzeptiert keine Medien",
363
370
 
364
371
  "INTEGRATION_INVALID_TYPE": "Ungültiger Integrationstyp",
365
372
  "INTEGRATION_ALREADY_EXISTS": "Die Integration ist bereits vorhanden",
@@ -414,6 +421,11 @@
414
421
  "CONSUMPTIONLOG_INVALID_MEMORI_ID": "Ungültige Memori-ID",
415
422
 
416
423
  "NOTIFICATIONPREFS_INVALID_CHATLOG_EXTRACTION_PERIOD": "Benachrichtigungen: Ungültiger Chat-Protokoll-Extraktionszeitraum",
424
+ "BROADCAST_NOT_ALLOWED": "Broadcast nicht erlaubt",
425
+ "INVALID_NOTIFICATION_TYPE": "Ungültiger Benachrichtigungstyp",
426
+ "NOTIFICATION_NOT_FOUND": "Benachrichtigung nicht gefunden",
427
+ "INVALID_NOTIFICATION_FILTER": "Ungültiger Benachrichtigungsfilter",
428
+ "INVALID_NOTIFICATION_PERIOD": "Ungültiger Benachrichtigungszeitraum",
417
429
 
418
430
  "PROCESS_INVALID_TYPE": "Ungültiger Prozesstyp",
419
431
  "PROCESS_ALREADY_RUNNING": "Prozess läuft bereits",
@@ -443,6 +455,12 @@
443
455
  "IMPORTTXT_IMPORT_REQUIRES_PAYING": "TXT importieren: Für den Import ist ein kostenpflichtiger Plan erforderlich",
444
456
  "IMPORTTXT_BILLING_DENIED_PERMISSION": "TXT importieren: Sie haben nicht genügend Credits für den Vorgang",
445
457
 
458
+ "IMPORT_MISSING_ROWS": "Import: fehlende Zeilen",
459
+ "IMPORT_CANT_IMPORT_TO_SECRET_MEMORI": "Import: Der Import in Secret Memories ist nicht möglich",
460
+ "IMPORTMEMORI_INVALID_MEMORI_SPECS": "Import MEMORI: ungültige Agentenspezifikationen",
461
+ "IMPORT_MISSING_JSONL": "Import: JSONL fehlt",
462
+ "IMPORTMEMORI_INVALID_SPECS": "Import MEMORI: ungültige Spezifikationen",
463
+ "EXPORT_MISSING_PASSWORD": "Export: Passwort fehlt",
446
464
  "EXPORTCSV_MISSING_CSV_SPECS": "CSV-Export: CSV-Spezifikationen fehlen",
447
465
  "EXPORTCSV_MISSING_SEPARATOR": "CSV-Export: fehlendes Trennzeichen",
448
466
  "EXPORTCSV_INVALID_SEPARATOR": "CSV-Export: Ungültiges Trennzeichen",
@@ -496,6 +514,19 @@
496
514
  "COMPLETION_CONFIG_NOT_ACCESSIBLE": "Vervollständigungskonfiguration: nicht zugänglich",
497
515
  "COMPLETION_CONFIG_NAME_RESERVED": "Vervollständigungskonfiguration: Name reserviert",
498
516
  "COMPLETION_CONFIG_NAME_ALREADY_EXISTS": "Vervollständigungskonfiguration: Name existiert bereits",
499
- "COMPLETION_CONFIG_VISIBILITY_CHANGE_NOT_ALLOWED": "Vervollständigungskonfiguration: Änderung der Sichtbarkeit nicht zulässig"
517
+ "COMPLETION_CONFIG_VISIBILITY_CHANGE_NOT_ALLOWED": "Vervollständigungskonfiguration: Änderung der Sichtbarkeit nicht zulässig",
518
+ "COMPLETION_CONFIG_MISSING_MANDATORY_PREFIX": "Vervollständigungskonfiguration: Pflichtpräfix fehlt",
519
+ "COMPLETION_CONFIG_VISIBILITY_NOT_PERMITTED": "Vervollständigungskonfiguration: Sichtbarkeit nicht erlaubt",
520
+ "COMPLETION_CONFIG_USE_AS_DEFAULT_NOT_PERMITTED": "Vervollständigungskonfiguration: Verwendung als Standard nicht erlaubt",
521
+ "COMPLETION_CONFIG_USE_AS_DEFAULT_REQUIRES_TENANT_VISIBILITY": "Vervollständigungskonfiguration: Verwendung als Standard erfordert Mandantensichtbarkeit",
522
+ "COMPLETION_CONFIG_CHARGEABLE_NOT_PERMITTED": "Vervollständigungskonfiguration: Chargeable nicht erlaubt",
523
+ "COMPLETION_CONFIG_INVALID_APPLY_TO": "Vervollständigungskonfiguration: Ungültige Anwendung",
524
+ "COMPLETION_CONFIG_APPLY_TO_TENANT_NOT_ALLOWED": "Vervollständigungskonfiguration: Anwendung auf Mandant nicht erlaubt",
525
+ "TRUSTED_APPLICATION_NOT_FOUND": "Vertrauenswürdige Anwendung nicht gefunden",
526
+ "TRUSTED_APPLICATION_NOT_ACCESSIBLE": "Vertrauenswürdige Anwendung nicht zugänglich",
527
+ "TRUSTED_APPLICATION_NAME_REQUIRED": "Vertrauenswürdige Anwendung: Name erforderlich",
528
+ "TRUSTED_APPLICATION_TOKEN_REQUIRED": "Vertrauenswürdige Anwendung: Token erforderlich",
529
+ "TRUSTED_APPLICATION_NAME_ALREADY_EXISTS": "Vertrauenswürdige Anwendung: Name existiert bereits",
530
+ "TRUSTED_APPLICATION_INVALID_TOKEN": "Vertrauenswürdige Anwendung: Ungültiger Token"
500
531
  }
501
532
  }
@@ -305,6 +305,7 @@
305
305
  "TENANT_ALREADY_EXISTS": "Tenant already exists",
306
306
  "TENANT_MISSING_DESCRIPTION": "Tenant: description missing",
307
307
  "TENANT_CANT_SET_COMPLETION_PROVIDER": "Tenant: can't set completion provider",
308
+ "TENANT_INVALID_TYPE": "Tenant: invalid type",
308
309
 
309
310
  "USER_NOT_CONFIRMED": "User still not confirmed",
310
311
  "USER_NOT_FOUND": "User not found",
@@ -339,6 +340,7 @@
339
340
  "USER_CREATION_BILLING_DENIED_PERMISSION": "You don't have enough credits to create an agent",
340
341
  "USER_HAS_ONE_OR_MORE_COMPLETION_CONFIGS": "The user has one or more completion configurations",
341
342
  "USER_CANT_BE_DELETED": "User can't be deleted",
343
+ "USER_ORDER_BY_INVALID": "Order by invalid",
342
344
 
343
345
  "MEMORI_NOT_FOUND": "Agent not found",
344
346
  "MEMORI_NOT_ACCESSIBLE": "Agent not accessible",
@@ -365,6 +367,9 @@
365
367
  "MEMORI_DEEP_THOUGHT_REQUIRES_COMPLETIONS": "Deep Thought requires completions to be enabled",
366
368
  "MEMORI_BOARD_OF_EXPERTS_REQUIRES_COMPLETIONS": "The expert group requires completions to be enabled",
367
369
  "MEMORI_INVALID_COMPLETION_CONFIG": "Agent: invalid completions configuration",
370
+ "MEMORI_MACRO_FUNCTIONS_REQUIRES_COMPLETIONS": "Macro functions requires completions to be enabled",
371
+ "MEMORI_BLOCKING_DATE_MISSING_OR_WRONG": "Agent: blocking date missing or wrong",
372
+ "MEMORI_LIST_FILTER_NOT_SPECIFIED": "Agent: list filter not specified",
368
373
 
369
374
  "MEMORI_TRANSFER_MISSING_DESTINATION_USER": "Transfer: missing destination user",
370
375
  "MEMORI_TRANSFER_INVALID_DESTINATION_USER_ID": "Transfer: invalid destination user ID",
@@ -380,6 +385,8 @@
380
385
 
381
386
  "MEMORI_SESSIONS_INVALID_DATE_FROM_FORMAT": "Invalid date from format",
382
387
  "MEMORI_SESSIONS_INVALID_DATE_TO_FORMAT": "Invalid date to format",
388
+ "MEMORI_SESSION_NOT_FOUND": "Session not found",
389
+ "MEMORI_SESSION_DOESNT_ACCEPT_MEDIA": "Session doesn't accept media",
383
390
 
384
391
  "INTEGRATION_INVALID_TYPE": "Invalid integration type",
385
392
  "INTEGRATION_ALREADY_EXISTS": "Integration already exists",
@@ -434,6 +441,11 @@
434
441
  "CONSUMPTIONLOG_INVALID_MEMORI_ID": "Invalid Memori ID",
435
442
 
436
443
  "NOTIFICATIONPREFS_INVALID_CHATLOG_EXTRACTION_PERIOD": "Notifications: Invalid chat log extraction period",
444
+ "BROADCAST_NOT_ALLOWED": "Broadcast not allowed",
445
+ "INVALID_NOTIFICATION_TYPE": "Invalid notification type",
446
+ "NOTIFICATION_NOT_FOUND": "Notification not found",
447
+ "INVALID_NOTIFICATION_FILTER": "Invalid notification filter",
448
+ "INVALID_NOTIFICATION_PERIOD": "Invalid notification period",
437
449
 
438
450
  "PROCESS_INVALID_TYPE": "Invalid process type",
439
451
  "PROCESS_ALREADY_RUNNING": "Process already running",
@@ -462,6 +474,12 @@
462
474
  "IMPORTTXT_IMPORT_ON_GPT4_REQUIRES_API_KEY": "Import TXT: import on GPT-4 requires API key",
463
475
  "IMPORTTXT_IMPORT_REQUIRES_PAYING": "Import TXT: Import requires a paying plan",
464
476
  "IMPORTTXT_BILLING_DENIED_PERMISSION": "Import TXT: you don't have enough credits for the operation",
477
+ "IMPORT_MISSING_ROWS": "Import: missing rows",
478
+ "IMPORT_CANT_IMPORT_TO_SECRET_MEMORI": "Import: can't import to Secret Memories",
479
+ "IMPORTMEMORI_INVALID_MEMORI_SPECS": "Import MEMORI: invalid memory specs",
480
+ "IMPORT_MISSING_JSONL": "Import: missing JSONL",
481
+ "IMPORTMEMORI_INVALID_SPECS": "Import MEMORI: invalid specs",
482
+ "EXPORT_MISSING_PASSWORD": "Export: missing password",
465
483
 
466
484
  "EXPORTCSV_MISSING_CSV_SPECS": "CSV export: missing CSV specifications",
467
485
  "EXPORTCSV_MISSING_SEPARATOR": "CSV export: missing separator",
@@ -516,6 +534,19 @@
516
534
  "COMPLETION_CONFIG_NOT_ACCESSIBLE": "Completions configuration: not accessible",
517
535
  "COMPLETION_CONFIG_NAME_RESERVED": "Completions configuration: name reserved",
518
536
  "COMPLETION_CONFIG_NAME_ALREADY_EXISTS": "Completions configuration: name already exists",
519
- "COMPLETION_CONFIG_VISIBILITY_CHANGE_NOT_ALLOWED": "Completions configuration: visibility change not allowed"
537
+ "COMPLETION_CONFIG_VISIBILITY_CHANGE_NOT_ALLOWED": "Completions configuration: visibility change not allowed",
538
+ "COMPLETION_CONFIG_MISSING_MANDATORY_PREFIX": "Completions configuration: missing mandatory prefix",
539
+ "COMPLETION_CONFIG_VISIBILITY_NOT_PERMITTED": "Completions configuration: visibility not permitted",
540
+ "COMPLETION_CONFIG_USE_AS_DEFAULT_NOT_PERMITTED": "Completions configuration: use as default not permitted",
541
+ "COMPLETION_CONFIG_USE_AS_DEFAULT_REQUIRES_TENANT_VISIBILITY": "Completions configuration: use as default requires tenant visibility",
542
+ "COMPLETION_CONFIG_CHARGEABLE_NOT_PERMITTED": "Completions configuration: chargeable not permitted",
543
+ "COMPLETION_CONFIG_INVALID_APPLY_TO": "Completions configuration: apply to invalid",
544
+ "COMPLETION_CONFIG_APPLY_TO_TENANT_NOT_ALLOWED": "Completions configuration: apply to tenant not allowed",
545
+ "TRUSTED_APPLICATION_NOT_FOUND": "Trusted application not found",
546
+ "TRUSTED_APPLICATION_NOT_ACCESSIBLE": "Trusted application not accessible",
547
+ "TRUSTED_APPLICATION_NAME_REQUIRED": "Trusted application: name required",
548
+ "TRUSTED_APPLICATION_TOKEN_REQUIRED": "Trusted application: token required",
549
+ "TRUSTED_APPLICATION_NAME_ALREADY_EXISTS": "Trusted application: name already exists",
550
+ "TRUSTED_APPLICATION_INVALID_TOKEN": "Trusted application: invalid token"
520
551
  }
521
552
  }