@gooddata/sdk-ui-gen-ai 11.35.0-alpha.6 → 11.35.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/components/GenAIChatConversations.js +12 -9
- package/esm/components/Input.js +8 -3
- package/esm/localization/bundles/de-DE.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/de-DE.localization-bundle.js +6 -1
- package/esm/localization/bundles/en-AU.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/en-AU.localization-bundle.js +6 -1
- package/esm/localization/bundles/en-GB.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/en-GB.localization-bundle.js +6 -1
- package/esm/localization/bundles/es-419.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/es-419.localization-bundle.js +6 -1
- package/esm/localization/bundles/es-ES.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/es-ES.localization-bundle.js +6 -1
- package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/fi-FI.localization-bundle.js +6 -1
- package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/fr-CA.localization-bundle.js +6 -1
- package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/fr-FR.localization-bundle.js +6 -1
- package/esm/localization/bundles/id-ID.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/id-ID.localization-bundle.js +6 -1
- package/esm/localization/bundles/it-IT.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/it-IT.localization-bundle.js +6 -1
- package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/ja-JP.localization-bundle.js +6 -1
- package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/ko-KR.localization-bundle.js +6 -1
- package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/nl-NL.localization-bundle.js +6 -1
- package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/pl-PL.localization-bundle.js +6 -1
- package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/pt-BR.localization-bundle.js +6 -1
- package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/pt-PT.localization-bundle.js +6 -1
- package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/ru-RU.localization-bundle.js +6 -1
- package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/sl-SI.localization-bundle.js +6 -1
- package/esm/localization/bundles/th-TH.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/th-TH.localization-bundle.js +6 -1
- package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/tr-TR.localization-bundle.js +6 -1
- package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/uk-UA.localization-bundle.js +6 -1
- package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/vi-VN.localization-bundle.js +6 -1
- package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/zh-HK.localization-bundle.js +6 -1
- package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/zh-Hans.localization-bundle.js +6 -1
- package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +6 -1
- package/esm/localization/bundles/zh-Hant.localization-bundle.js +6 -1
- package/esm/model.d.ts +2 -0
- package/esm/store/messages/messagesSelectors.d.ts +3 -3
- package/esm/store/messages/messagesSelectors.js +26 -4
- package/esm/store/messages/messagesSlice.d.ts +24 -18
- package/esm/store/messages/messagesSlice.js +186 -99
- package/esm/store/sideEffects/index.js +1 -1
- package/esm/store/sideEffects/onConversationDelete.d.ts +2 -0
- package/esm/store/sideEffects/onThreadLoad.js +15 -5
- package/esm/store/sideEffects/onUserFeedback.d.ts +3 -0
- package/esm/store/sideEffects/onUserFeedback.js +2 -1
- package/esm/store/sideEffects/onUserMessage.d.ts +9 -2
- package/esm/store/sideEffects/onUserMessage.js +42 -22
- package/esm/store/sideEffects/onUserMessageUpdate.d.ts +5 -3
- package/esm/store/sideEffects/onUserMessageUpdate.js +5 -2
- package/esm/store/sideEffects/onVisualisationRender.d.ts +2 -0
- package/esm/store/sideEffects/onVisualizationSave.d.ts +4 -0
- package/esm/store/sideEffects/onVisualizationSave.js +2 -0
- package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts +2 -0
- package/esm/store/utils.d.ts +6 -0
- package/esm/store/utils.js +30 -0
- package/esm/types.d.ts +26 -0
- package/package.json +20 -20
- package/styles/css/conversations.css +16 -9
- package/styles/css/conversations.css.map +1 -1
- package/styles/css/main.css +16 -9
- package/styles/css/main.css.map +1 -1
- package/styles/scss/conversations.scss +20 -9
|
@@ -60,7 +60,12 @@ export declare const ru_RU: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const ru_RU = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "Сегодня",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "Последние 7 дней",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "Ранее",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "Закреплено",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "Закрепить",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "Открепить",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "Меню разговора",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "Перетащите, чтобы закрепить",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "Перетащите, чтобы открепить",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "Удалить диалог?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "Диалог <b>{name}</b> будет удален безвозвратно.",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "Удалить",
|
|
@@ -60,7 +60,12 @@ export declare const sl_SI: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const sl_SI = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "Danes",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "Zadnjih 7 dni",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "Starejši",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "Pripeto",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "Pripni",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "Odpni",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "Meni pogovora",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "Spustite za pripenjanje",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "Spustite za odpenjanje",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "Izbrišem pogovor?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "Ta pogovor <b>{name}</b> bo trajno izbrisan.",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "Izbriši",
|
|
@@ -60,7 +60,12 @@ export declare const th_TH: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const th_TH = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "วันนี้",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "7 วันที่ผ่านมา",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "เก่ากว่า",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "ปักหมุด",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "ปักหมุด",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "เลิกปักหมุด",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "เมนูการสนทนา",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "วางเพื่อปักหมุด",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "วางเพื่อเลิกปักหมุด",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "ลบการสนทนาหรือไม่?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "การสนทนา <b>{name}</b> นี้จะถูกลบอย่างถาวร",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "ลบ",
|
|
@@ -60,7 +60,12 @@ export declare const tr_TR: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const tr_TR = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "Bugün",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "Son 7 gün",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "Daha Eski",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "Sabitlendi",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "Sabitle",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "Sabitlemeyi kaldır",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "Konuşma menüsü",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "Sabitlemek için bırak",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "Sabitlemeyi kaldırmak için bırak",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "Konuşma silinsin mi?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "<b>{name}</b> adlı bu konuşma kalıcı olarak silinecek.",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "Sil",
|
|
@@ -60,7 +60,12 @@ export declare const uk_UA: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const uk_UA = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "Сьогодні",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "Останні 7 днів",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "Старіші",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "Закріплено",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "Закріпити",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "Відкріпити",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "Меню розмови",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "Відпустіть, щоб закріпити",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "Відпустіть, щоб відкріпити",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "Видалити розмову?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "Цю розмову <b>{name}</b> буде видалено безповоротно.",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "Видалити",
|
|
@@ -60,7 +60,12 @@ export declare const vi_VN: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const vi_VN = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "Hôm nay",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "7 ngày qua",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "Cũ hơn",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "Đã ghim",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "Ghim",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "Bỏ ghim",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "Menu cuộc trò chuyện",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "Thả để ghim",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "Thả để bỏ ghim",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "Xóa cuộc trò chuyện?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "Cuộc trò chuyện <b>{name}</b> sẽ bị xóa vĩnh viễn.",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "Xóa",
|
|
@@ -60,7 +60,12 @@ export declare const zh_HK: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const zh_HK = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "今日",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "最近7日",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "較早前",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "已置頂",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "置頂",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "取消置頂",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "對話選單",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "拖放以置頂",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "拖放以取消置頂",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "刪除對話?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "此對話 <b>{name}</b> 將被永久刪除。",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "刪除",
|
|
@@ -60,7 +60,12 @@ export declare const zh_Hans: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const zh_Hans = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "今天",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "最近 7 天",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "更早",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "已置顶",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "置顶",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "取消置顶",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "对话菜单",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "拖放以固定",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "拖放以取消置顶",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "删除对话?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "此对话 <b>{name}</b> 将被永久删除。",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "删除",
|
|
@@ -60,7 +60,12 @@ export declare const zh_Hant: {
|
|
|
60
60
|
"gd.gen-ai.conversations.group.today": string;
|
|
61
61
|
"gd.gen-ai.conversations.group.last-7-days": string;
|
|
62
62
|
"gd.gen-ai.conversations.group.older": string;
|
|
63
|
-
"gd.gen-ai.conversations.
|
|
63
|
+
"gd.gen-ai.conversations.group.pinned": string;
|
|
64
|
+
"gd.gen-ai.conversations.menu.pin": string;
|
|
65
|
+
"gd.gen-ai.conversations.menu.unpin": string;
|
|
66
|
+
"gd.gen-ai.conversations.menu.aria-label": string;
|
|
67
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": string;
|
|
68
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": string;
|
|
64
69
|
"gd.gen-ai.conversations.delete-dialog.title": string;
|
|
65
70
|
"gd.gen-ai.conversations.delete-dialog.body": string;
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.submit": string;
|
|
@@ -62,7 +62,12 @@ export const zh_Hant = {
|
|
|
62
62
|
"gd.gen-ai.conversations.group.today": "今天",
|
|
63
63
|
"gd.gen-ai.conversations.group.last-7-days": "過去 7 天",
|
|
64
64
|
"gd.gen-ai.conversations.group.older": "較早",
|
|
65
|
-
"gd.gen-ai.conversations.
|
|
65
|
+
"gd.gen-ai.conversations.group.pinned": "已釘選",
|
|
66
|
+
"gd.gen-ai.conversations.menu.pin": "釘選",
|
|
67
|
+
"gd.gen-ai.conversations.menu.unpin": "取消釘選",
|
|
68
|
+
"gd.gen-ai.conversations.menu.aria-label": "對話選單",
|
|
69
|
+
"gd.gen-ai.conversations.dnd.pin-placeholder": "拖放以釘選",
|
|
70
|
+
"gd.gen-ai.conversations.dnd.unpin-placeholder": "拖放以取消釘選",
|
|
66
71
|
"gd.gen-ai.conversations.delete-dialog.title": "刪除對話?",
|
|
67
72
|
"gd.gen-ai.conversations.delete-dialog.body": "此對話 <b>{name}</b> 將被永久刪除。",
|
|
68
73
|
"gd.gen-ai.conversations.delete-dialog.submit": "刪除",
|
package/esm/model.d.ts
CHANGED
|
@@ -221,7 +221,9 @@ export type Message = UserMessage | AssistantMessage;
|
|
|
221
221
|
* Includes additional optional properties specific to the local context.
|
|
222
222
|
*/
|
|
223
223
|
export type IChatConversationLocal = IChatConversation & {
|
|
224
|
+
localId: string;
|
|
224
225
|
generatingTitle?: boolean;
|
|
226
|
+
inProgress?: boolean;
|
|
225
227
|
};
|
|
226
228
|
/**
|
|
227
229
|
* Chat conversation item with local ID.
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { type IChatConversationLocal, type IChatConversationLocalItem, type Message } from "../../model.js";
|
|
2
2
|
import { type RootState } from "../types.js";
|
|
3
|
-
import { messagesSliceName } from "./messagesSlice.js";
|
|
4
3
|
export declare const messagesSelector: (state: RootState) => Message[];
|
|
5
4
|
export declare const loadedSelector: (state: RootState) => boolean;
|
|
6
5
|
export declare const isVerboseSelector: (state: RootState) => boolean;
|
|
7
6
|
export declare const lastMessageSelector: (state: RootState) => Message | undefined;
|
|
8
7
|
export declare const hasMessagesSelector: (state: RootState) => boolean;
|
|
9
|
-
export declare const asyncProcessSelector: (state: RootState) =>
|
|
8
|
+
export declare const asyncProcessSelector: (state: RootState) => "loading" | "restoring" | "clearing" | "evaluating" | undefined;
|
|
10
9
|
export declare const globalErrorSelector: (state: RootState) => Record<string, unknown> | null;
|
|
11
10
|
export declare const threadIdSelector: (state: RootState) => string | undefined;
|
|
12
11
|
export declare const conversationMessagesSelector: (state: RootState) => IChatConversationLocalItem[];
|
|
13
|
-
export declare const
|
|
12
|
+
export declare const conversationMessagesByIdSelector: (state: RootState, conversationId?: string) => IChatConversationLocalItem[];
|
|
13
|
+
export declare const conversationSelector: (state: RootState) => IChatConversationLocal | undefined;
|
|
14
14
|
export declare const conversationByIdSelector: (state: RootState, conversationId: string) => IChatConversationLocal | undefined;
|
|
15
15
|
export declare const conversationsSelector: (state: RootState) => IChatConversationLocal[] | undefined;
|
|
@@ -6,11 +6,33 @@ export const messagesSelector = createSelector(messagesSliceSelector, (state) =>
|
|
|
6
6
|
export const loadedSelector = createSelector(messagesSliceSelector, (state) => state.loaded);
|
|
7
7
|
export const isVerboseSelector = createSelector(messagesSliceSelector, (state) => state.verbose);
|
|
8
8
|
export const lastMessageSelector = createSelector(messagesSliceSelector, (state) => state.messages[state.messageOrder[state.messageOrder.length - 1]]);
|
|
9
|
-
export const hasMessagesSelector = createSelector(messagesSliceSelector, (state) =>
|
|
10
|
-
|
|
9
|
+
export const hasMessagesSelector = createSelector(messagesSliceSelector, (state) => {
|
|
10
|
+
if (state.messageOrder.length > 0) {
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
const data = state.conversationsData[state.currentConversation?.localId ?? ""];
|
|
14
|
+
return (data?.order ?? []).length > 0;
|
|
15
|
+
});
|
|
16
|
+
export const asyncProcessSelector = createSelector(messagesSliceSelector, (state) => {
|
|
17
|
+
if (state.currentConversation) {
|
|
18
|
+
const data = state.conversationsData[state.currentConversation.localId];
|
|
19
|
+
return data?.asyncProcess;
|
|
20
|
+
}
|
|
21
|
+
return state.messageAsyncProcess;
|
|
22
|
+
});
|
|
11
23
|
export const globalErrorSelector = createSelector(messagesSliceSelector, (state) => state.globalError ?? null);
|
|
12
24
|
export const threadIdSelector = createSelector(messagesSliceSelector, (state) => state.threadId);
|
|
13
|
-
export const conversationMessagesSelector = createSelector(messagesSliceSelector, (state) =>
|
|
25
|
+
export const conversationMessagesSelector = createSelector(messagesSliceSelector, (state) => {
|
|
26
|
+
const data = state.conversationsData[state.currentConversation?.localId ?? ""];
|
|
27
|
+
return data?.order.map((id) => data.items[id]) ?? [];
|
|
28
|
+
});
|
|
29
|
+
export const conversationMessagesByIdSelector = createSelector([messagesSliceSelector, (_state, conversationId) => conversationId], (state, conversationId) => {
|
|
30
|
+
const data = state.conversationsData[conversationId ?? ""];
|
|
31
|
+
if (!data) {
|
|
32
|
+
return [];
|
|
33
|
+
}
|
|
34
|
+
return data.order.map((id) => data.items[id]);
|
|
35
|
+
});
|
|
14
36
|
export const conversationSelector = createSelector(messagesSliceSelector, (state) => state.currentConversation);
|
|
15
|
-
export const conversationByIdSelector = createSelector([messagesSliceSelector, (_state, conversationId) => conversationId], (state, conversationId) => state.conversations?.find((conversation) => conversation.
|
|
37
|
+
export const conversationByIdSelector = createSelector([messagesSliceSelector, (_state, conversationId) => conversationId], (state, conversationId) => state.conversations?.find((conversation) => conversation.localId === conversationId));
|
|
16
38
|
export const conversationsSelector = createSelector(messagesSliceSelector, (state) => state.conversations);
|
|
@@ -2,6 +2,7 @@ import { type Reducer } from "@reduxjs/toolkit";
|
|
|
2
2
|
import { type IChatConversationItem, type IChatSuggestionsItem } from "@gooddata/sdk-backend-spi";
|
|
3
3
|
import { type GenAIChatInteractionUserFeedback } from "@gooddata/sdk-model";
|
|
4
4
|
import { type AssistantMessage, type Contents, type IChatConversationErrorContent, type IChatConversationLocal, type IChatConversationLocalContent, type IChatConversationLocalItem, type Message, type UserMessage } from "../../model.js";
|
|
5
|
+
import { type StoredConversation } from "../../types.js";
|
|
5
6
|
type MessagesSliceState = {
|
|
6
7
|
/**
|
|
7
8
|
* A verbose mode defines how much information is shown in the chat.
|
|
@@ -19,38 +20,33 @@ type MessagesSliceState = {
|
|
|
19
20
|
* An order of messages in the chat.
|
|
20
21
|
*/
|
|
21
22
|
messageOrder: string[];
|
|
23
|
+
/**
|
|
24
|
+
* If the interface is busy, this specifies the details of the async operation.
|
|
25
|
+
* Where:
|
|
26
|
+
* - loading: the thread history is being loaded from the backend (no messages to show yet)
|
|
27
|
+
* - restoring: cached messages have been restored while the backend fetch is still in-flight
|
|
28
|
+
* - clearing: the thread is being cleared
|
|
29
|
+
* - evaluating: the new user message is being evaluated by assistant
|
|
30
|
+
*/
|
|
31
|
+
messageAsyncProcess?: "loading" | "restoring" | "clearing" | "evaluating";
|
|
22
32
|
/**
|
|
23
33
|
* A list of conversations.
|
|
24
34
|
*/
|
|
25
35
|
conversations: IChatConversationLocal[] | undefined;
|
|
26
36
|
/**
|
|
27
37
|
* The current conversation.
|
|
28
|
-
* - "new": indicates UI is in a transient state to start a brand new conversation.
|
|
29
38
|
* - undefined: no conversation is selected
|
|
30
39
|
*/
|
|
31
|
-
currentConversation: IChatConversationLocal |
|
|
32
|
-
/**
|
|
33
|
-
* Conversation items.
|
|
34
|
-
*/
|
|
35
|
-
conversationItems: Record<string, IChatConversationLocalItem>;
|
|
40
|
+
currentConversation: IChatConversationLocal | undefined;
|
|
36
41
|
/**
|
|
37
|
-
* Conversation
|
|
42
|
+
* Conversation data
|
|
38
43
|
*/
|
|
39
|
-
|
|
44
|
+
conversationsData: Record<string, StoredConversation>;
|
|
40
45
|
/**
|
|
41
46
|
* A global error object. I.e. if something unexpected went wrong,
|
|
42
47
|
* not on the interaction level.
|
|
43
48
|
*/
|
|
44
49
|
globalError?: Record<string, unknown>;
|
|
45
|
-
/**
|
|
46
|
-
* If the interface is busy, this specifies the details of the async operation.
|
|
47
|
-
* Where:
|
|
48
|
-
* - loading: the thread history is being loaded from the backend (no messages to show yet)
|
|
49
|
-
* - restoring: cached messages have been restored while the backend fetch is still in-flight
|
|
50
|
-
* - clearing: the thread is being cleared
|
|
51
|
-
* - evaluating: the new user message is being evaluated by assistant
|
|
52
|
-
*/
|
|
53
|
-
asyncProcess?: "loading" | "restoring" | "clearing" | "evaluating";
|
|
54
50
|
/**
|
|
55
51
|
* An ID of the conversation thread.
|
|
56
52
|
* Not the same as threadIdSuffix in some of the REST APIs,
|
|
@@ -69,7 +65,7 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
69
65
|
}, "messages/loadThreadSuccessAction">, loadConversationsSuccessAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
70
66
|
conversations: IChatConversationLocal[];
|
|
71
67
|
}, "messages/loadConversationsSuccessAction">, loadConversationSuccessAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
72
|
-
currentConversation:
|
|
68
|
+
currentConversation: IChatConversationLocal;
|
|
73
69
|
conversationItems: IChatConversationLocalItem[];
|
|
74
70
|
threadId?: string | undefined;
|
|
75
71
|
}, "messages/loadConversationSuccessAction">, restoreCachedMessagesAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
@@ -85,26 +81,32 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
85
81
|
title?: string | undefined;
|
|
86
82
|
}, "messages/evaluateConversationTitleAction">, evaluateMessageAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
87
83
|
message: AssistantMessage | IChatConversationLocalItem;
|
|
84
|
+
conversationId?: string | undefined;
|
|
88
85
|
}, "messages/evaluateMessageAction">, evaluateMessageErrorAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
89
86
|
error: string;
|
|
90
87
|
assistantMessageId: string;
|
|
88
|
+
conversationId?: string | undefined;
|
|
91
89
|
}, "messages/evaluateMessageErrorAction">, evaluateMessageStreamingAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
92
90
|
contents?: Contents[] | undefined;
|
|
93
91
|
item?: IChatConversationItem | undefined;
|
|
94
92
|
content?: IChatConversationErrorContent | IChatConversationLocalContent | undefined;
|
|
95
93
|
assistantMessageId: string;
|
|
96
94
|
interactionId?: string | undefined;
|
|
95
|
+
conversationId?: string | undefined;
|
|
97
96
|
}, "messages/evaluateMessageStreamingAction">, evaluateMessageUpdateAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
98
97
|
userMessageId: string;
|
|
99
98
|
conversation: IChatConversationLocal;
|
|
100
99
|
message: IChatConversationItem | UserMessage;
|
|
101
100
|
isStartMessage: boolean;
|
|
102
101
|
interactionId?: string | undefined;
|
|
102
|
+
conversationId?: string | undefined;
|
|
103
103
|
}, "messages/evaluateMessageUpdateAction">, evaluateMessageSuggestionsAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
104
104
|
item?: IChatSuggestionsItem | undefined;
|
|
105
105
|
assistantMessageId: string;
|
|
106
|
+
conversationId?: string | undefined;
|
|
106
107
|
}, "messages/evaluateMessageSuggestionsAction">, evaluateMessageCompleteAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
107
108
|
assistantMessageId: string;
|
|
109
|
+
conversationId?: string | undefined;
|
|
108
110
|
}, "messages/evaluateMessageCompleteAction">, setMessagesAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
109
111
|
messages?: Message[] | undefined;
|
|
110
112
|
items?: IChatConversationLocalItem[] | undefined;
|
|
@@ -118,9 +120,11 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
118
120
|
userTextFeedback?: string | undefined;
|
|
119
121
|
}, "messages/setUserFeedback">, setUserFeedbackError: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
120
122
|
assistantMessageId: string;
|
|
123
|
+
conversationId?: string | undefined;
|
|
121
124
|
error: string;
|
|
122
125
|
}, "messages/setUserFeedbackError">, clearUserFeedbackError: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
123
126
|
assistantMessageId: string;
|
|
127
|
+
conversationId?: string | undefined;
|
|
124
128
|
}, "messages/clearUserFeedbackError">, saveVisualizationAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
125
129
|
visualizationId: string;
|
|
126
130
|
visualizationTitle: string;
|
|
@@ -136,10 +140,12 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
136
140
|
};
|
|
137
141
|
visualizationId: string;
|
|
138
142
|
assistantMessageId: string;
|
|
143
|
+
conversationId?: string | undefined;
|
|
139
144
|
}, "messages/saveVisualizationErrorAction">, saveVisualizationSuccessAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
140
145
|
visualizationId: string;
|
|
141
146
|
assistantMessageId: string;
|
|
142
147
|
savedVisualizationId: string;
|
|
148
|
+
conversationId?: string | undefined;
|
|
143
149
|
explore: boolean;
|
|
144
150
|
}, "messages/saveVisualizationSuccessAction">, saveVisualisationRenderStatusAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
145
151
|
visualizationId: string;
|