@gooddata/sdk-ui-gen-ai 11.43.0-alpha.2 → 11.43.0-alpha.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/NOTICE +4826 -13873
- package/esm/components/ConfigContext.d.ts +5 -5
- package/esm/components/ConfigContext.d.ts.map +1 -1
- package/esm/components/ConfigContext.js +17 -8
- package/esm/components/GenAIChat.d.ts +1 -1
- package/esm/components/GenAIChat.d.ts.map +1 -1
- package/esm/components/GenAIChat.js +5 -4
- package/esm/components/GenAIChatDialog.d.ts +2 -2
- package/esm/components/GenAIChatDialog.d.ts.map +1 -1
- package/esm/components/GenAIChatDialog.js +4 -4
- package/esm/components/GenAiConversations.d.ts.map +1 -1
- package/esm/components/GenAiConversations.js +2 -2
- package/esm/components/GenAiStore.d.ts +9 -0
- package/esm/components/GenAiStore.d.ts.map +1 -1
- package/esm/components/GenAiStore.js +7 -4
- package/esm/components/hooks/useEndpointCheck.d.ts +1 -1
- package/esm/components/hooks/useEndpointCheck.d.ts.map +1 -1
- package/esm/components/messages/AssistantItem.d.ts +1 -1
- package/esm/components/messages/AssistantItem.d.ts.map +1 -1
- package/esm/components/messages/AssistantItem.js +8 -0
- package/esm/components/messages/AssistantItemFeedback.d.ts.map +1 -1
- package/esm/components/messages/AssistantItemFeedback.js +3 -0
- package/esm/components/messages/ItemsGroup.js +8 -10
- package/esm/components/messages/ToolItem.d.ts +1 -1
- package/esm/components/messages/ToolItem.d.ts.map +1 -1
- package/esm/components/messages/ToolItem.js +28 -14
- package/esm/components/messages/components/SemanticSearchTreeView.d.ts.map +1 -1
- package/esm/components/messages/components/SemanticSearchTreeView.js +2 -0
- package/esm/components/messages/contents/VisualizationContents.d.ts.map +1 -1
- package/esm/components/messages/contents/VisualizationContents.js +18 -3
- package/esm/components/messages/conversationContents/ConversationReasoningContent.d.ts.map +1 -1
- package/esm/components/messages/conversationContents/ConversationReasoningContent.js +1 -3
- package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts.map +1 -1
- package/esm/components/messages/conversationContents/ConversationVisualizationContent.js +20 -5
- package/esm/hooks/useGenAIStore.d.ts +3 -0
- package/esm/hooks/useGenAIStore.d.ts.map +1 -1
- package/esm/hooks/useGenAIStore.js +4 -1
- package/esm/localization/bundles/de-DE.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/de-DE.localization-bundle.js +23 -11
- package/esm/localization/bundles/en-AU.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/en-AU.localization-bundle.js +23 -11
- package/esm/localization/bundles/en-GB.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/en-GB.localization-bundle.js +23 -11
- package/esm/localization/bundles/en-US.localization-bundle.d.ts +0 -16
- package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/en-US.localization-bundle.js +0 -16
- package/esm/localization/bundles/es-419.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/es-419.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/es-419.localization-bundle.js +23 -11
- package/esm/localization/bundles/es-ES.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/es-ES.localization-bundle.js +23 -11
- package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/fi-FI.localization-bundle.js +23 -11
- package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/fr-CA.localization-bundle.js +23 -11
- package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/fr-FR.localization-bundle.js +23 -11
- package/esm/localization/bundles/id-ID.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/id-ID.localization-bundle.js +23 -11
- package/esm/localization/bundles/it-IT.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/it-IT.localization-bundle.js +23 -11
- package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/ja-JP.localization-bundle.js +23 -11
- package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/ko-KR.localization-bundle.js +23 -11
- package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/nl-NL.localization-bundle.js +24 -12
- package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/pl-PL.localization-bundle.js +23 -11
- package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/pt-BR.localization-bundle.js +23 -11
- package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/pt-PT.localization-bundle.js +23 -11
- package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/ru-RU.localization-bundle.js +23 -11
- package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/sl-SI.localization-bundle.js +23 -11
- package/esm/localization/bundles/th-TH.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/th-TH.localization-bundle.js +23 -11
- package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/tr-TR.localization-bundle.js +23 -11
- package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/uk-UA.localization-bundle.js +23 -11
- package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/vi-VN.localization-bundle.js +23 -11
- package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/zh-HK.localization-bundle.js +23 -11
- package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/zh-Hans.localization-bundle.js +23 -11
- package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +23 -11
- package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/zh-Hant.localization-bundle.js +23 -11
- package/esm/sdk-ui-gen-ai.d.ts +9 -1
- package/esm/store/messages/messagesSlice.d.ts +3 -1
- package/esm/store/messages/messagesSlice.d.ts.map +1 -1
- package/esm/store/messages/messagesSlice.js +37 -1
- package/esm/store/options.d.ts +8 -0
- package/esm/store/options.d.ts.map +1 -1
- package/esm/store/options.js +12 -0
- package/esm/store/sideEffects/onThreadLoad.d.ts +8 -3
- package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
- package/esm/store/sideEffects/onThreadLoad.js +24 -1
- package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts +2 -1
- package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts.map +1 -1
- package/esm/store/sideEffects/onVisualizationSuccessSave.js +29 -2
- package/package.json +20 -20
- package/styles/css/main.css +18 -0
- package/styles/css/main.css.map +1 -1
- package/styles/css/messages.css +18 -0
- package/styles/css/messages.css.map +1 -1
- package/styles/scss/messages.scss +23 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"zh-Hans.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hans.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkLnB,CAAC"}
|
|
@@ -25,6 +25,7 @@ export const zh_Hans = {
|
|
|
25
25
|
"gd.gen-ai.visualization.error.forecast": "<b>未收到预测:</b> {error}",
|
|
26
26
|
"gd.gen-ai.visualization.error.clustering": "<b>未收到聚类结果:</b> {error}",
|
|
27
27
|
"gd.gen-ai.visualization.error.data_too_large": "<b>数据过大。</b> 请通过应用筛选来减少数据量。",
|
|
28
|
+
"gd.gen-ai.visualization.unavailable": "无法显示可视化。",
|
|
28
29
|
"gd.gen-ai.permission-error": "权限不足",
|
|
29
30
|
"gd.gen-ai.permission-error.description": "您无权访问聊天机器人。请联系您的管理员申请访问权限。",
|
|
30
31
|
"gd.gen-ai.input-placeholder": "在这里询问…",
|
|
@@ -35,7 +36,6 @@ export const zh_Hans = {
|
|
|
35
36
|
"gd.gen-ai.agent.unavailable": "无可用智能体",
|
|
36
37
|
"gd.gen-ai.agent.unavailable.disabled-tooltip": "已禁用——无可用智能体。",
|
|
37
38
|
"gd.gen-ai.agent.switched": "已切换到 {title} 智能体",
|
|
38
|
-
"gd.gen-ai.agent.unknown": "未知",
|
|
39
39
|
"gd.gen-ai.feedback.like": "将此消息标记为有用",
|
|
40
40
|
"gd.gen-ai.feedback.dislike": "将此消息标记为无帮助",
|
|
41
41
|
"gd.gen-ai.feedback.popup.title": "我们已收到您的反馈",
|
|
@@ -69,20 +69,32 @@ export const zh_Hans = {
|
|
|
69
69
|
"gd.gen-ai.alert-proposal.summary.title": "标题",
|
|
70
70
|
"gd.gen-ai.alert-proposal.summary.attributes": "属性",
|
|
71
71
|
"gd.gen-ai.alert-proposal.summary.filters": "筛选器",
|
|
72
|
-
"gd.gen-ai.alert-proposal.summary.metric": "指标",
|
|
73
|
-
"gd.gen-ai.alert-proposal.summary.metric-compared": "相比",
|
|
74
72
|
"gd.gen-ai.alert-proposal.summary.date": "日期",
|
|
75
73
|
"gd.gen-ai.alert-proposal.summary.notification-channel": "渠道",
|
|
76
74
|
"gd.gen-ai.alert-proposal.summary.dashboard": "控制面板",
|
|
77
|
-
"gd.gen-ai.alert-proposal.summary.operator": "运算符",
|
|
78
|
-
"gd.gen-ai.alert-proposal.summary.arithmeticOperator": "算术运算符",
|
|
79
|
-
"gd.gen-ai.alert-proposal.summary.threshold": "临界点",
|
|
80
|
-
"gd.gen-ai.alert-proposal.summary.range": "范围",
|
|
81
|
-
"gd.gen-ai.alert-proposal.summary.from": "从",
|
|
82
|
-
"gd.gen-ai.alert-proposal.summary.to": "到",
|
|
83
|
-
"gd.gen-ai.alert-proposal.summary.granularity": "精细度",
|
|
84
|
-
"gd.gen-ai.alert-proposal.summary.sensitivity": "敏感性",
|
|
85
75
|
"gd.gen-ai.alert-proposal.summary.recipients": "收件人",
|
|
76
|
+
"gd.gen-ai.alert-proposal.summary.condition-comparison": "比较",
|
|
77
|
+
"gd.gen-ai.alert-proposal.summary.condition-relative": "相对",
|
|
78
|
+
"gd.gen-ai.alert-proposal.summary.condition-anomalyDetection": "异常检测",
|
|
79
|
+
"sdk.ui.genAi.alertProposal.operator.lessThan": "<",
|
|
80
|
+
"sdk.ui.genAi.alertProposal.operator.lessThanOrEqualTo": "<=",
|
|
81
|
+
"sdk.ui.genAi.alertProposal.operator.greaterThan": ">",
|
|
82
|
+
"sdk.ui.genAi.alertProposal.operator.greaterThanOrEqualTo": ">=",
|
|
83
|
+
"sdk.ui.genAi.alertProposal.operator.equalTo": "=",
|
|
84
|
+
"sdk.ui.genAi.alertProposal.operator.increasesBy": "增加",
|
|
85
|
+
"sdk.ui.genAi.alertProposal.operator.decreasesBy": "减少",
|
|
86
|
+
"sdk.ui.genAi.alertProposal.operator.changesBy": "变化",
|
|
87
|
+
"sdk.ui.genAi.alertProposal.operator.change": "-",
|
|
88
|
+
"sdk.ui.genAi.alertProposal.operator.difference": "%",
|
|
89
|
+
"sdk.ui.genAi.alertProposal.granularity.hour": "按<b>小时</b>计算",
|
|
90
|
+
"sdk.ui.genAi.alertProposal.granularity.day": "按<b>每日</b>计算",
|
|
91
|
+
"sdk.ui.genAi.alertProposal.granularity.week": "按<b>每周</b>计算",
|
|
92
|
+
"sdk.ui.genAi.alertProposal.granularity.month": "按<b>每月</b>计算",
|
|
93
|
+
"sdk.ui.genAi.alertProposal.granularity.quarter": "按<b>每季度</b>计算",
|
|
94
|
+
"sdk.ui.genAi.alertProposal.granularity.year": "按<b>每年</b>计算",
|
|
95
|
+
"sdk.ui.genAi.alertProposal.senstivity.low": "具有<b>低</b>敏感度",
|
|
96
|
+
"sdk.ui.genAi.alertProposal.senstivity.medium": "具有<b>中</b>敏感度",
|
|
97
|
+
"sdk.ui.genAi.alertProposal.senstivity.high": "具有<b>高</b>敏感度",
|
|
86
98
|
"gd.gen-ai.alert-proposal.summary.trigger": "扳机",
|
|
87
99
|
"gd.gen-ai.alert-proposal.summary.trigger.mode": "模式",
|
|
88
100
|
"gd.gen-ai.alert-proposal.summary.trigger.interval": "间隔",
|
|
@@ -23,6 +23,7 @@ export declare const zh_Hant: {
|
|
|
23
23
|
"gd.gen-ai.visualization.error.forecast": string;
|
|
24
24
|
"gd.gen-ai.visualization.error.clustering": string;
|
|
25
25
|
"gd.gen-ai.visualization.error.data_too_large": string;
|
|
26
|
+
"gd.gen-ai.visualization.unavailable": string;
|
|
26
27
|
"gd.gen-ai.permission-error": string;
|
|
27
28
|
"gd.gen-ai.permission-error.description": string;
|
|
28
29
|
"gd.gen-ai.input-placeholder": string;
|
|
@@ -33,7 +34,6 @@ export declare const zh_Hant: {
|
|
|
33
34
|
"gd.gen-ai.agent.unavailable": string;
|
|
34
35
|
"gd.gen-ai.agent.unavailable.disabled-tooltip": string;
|
|
35
36
|
"gd.gen-ai.agent.switched": string;
|
|
36
|
-
"gd.gen-ai.agent.unknown": string;
|
|
37
37
|
"gd.gen-ai.feedback.like": string;
|
|
38
38
|
"gd.gen-ai.feedback.dislike": string;
|
|
39
39
|
"gd.gen-ai.feedback.popup.title": string;
|
|
@@ -67,20 +67,32 @@ export declare const zh_Hant: {
|
|
|
67
67
|
"gd.gen-ai.alert-proposal.summary.title": string;
|
|
68
68
|
"gd.gen-ai.alert-proposal.summary.attributes": string;
|
|
69
69
|
"gd.gen-ai.alert-proposal.summary.filters": string;
|
|
70
|
-
"gd.gen-ai.alert-proposal.summary.metric": string;
|
|
71
|
-
"gd.gen-ai.alert-proposal.summary.metric-compared": string;
|
|
72
70
|
"gd.gen-ai.alert-proposal.summary.date": string;
|
|
73
71
|
"gd.gen-ai.alert-proposal.summary.notification-channel": string;
|
|
74
72
|
"gd.gen-ai.alert-proposal.summary.dashboard": string;
|
|
75
|
-
"gd.gen-ai.alert-proposal.summary.operator": string;
|
|
76
|
-
"gd.gen-ai.alert-proposal.summary.arithmeticOperator": string;
|
|
77
|
-
"gd.gen-ai.alert-proposal.summary.threshold": string;
|
|
78
|
-
"gd.gen-ai.alert-proposal.summary.range": string;
|
|
79
|
-
"gd.gen-ai.alert-proposal.summary.from": string;
|
|
80
|
-
"gd.gen-ai.alert-proposal.summary.to": string;
|
|
81
|
-
"gd.gen-ai.alert-proposal.summary.granularity": string;
|
|
82
|
-
"gd.gen-ai.alert-proposal.summary.sensitivity": string;
|
|
83
73
|
"gd.gen-ai.alert-proposal.summary.recipients": string;
|
|
74
|
+
"gd.gen-ai.alert-proposal.summary.condition-comparison": string;
|
|
75
|
+
"gd.gen-ai.alert-proposal.summary.condition-relative": string;
|
|
76
|
+
"gd.gen-ai.alert-proposal.summary.condition-anomalyDetection": string;
|
|
77
|
+
"sdk.ui.genAi.alertProposal.operator.lessThan": string;
|
|
78
|
+
"sdk.ui.genAi.alertProposal.operator.lessThanOrEqualTo": string;
|
|
79
|
+
"sdk.ui.genAi.alertProposal.operator.greaterThan": string;
|
|
80
|
+
"sdk.ui.genAi.alertProposal.operator.greaterThanOrEqualTo": string;
|
|
81
|
+
"sdk.ui.genAi.alertProposal.operator.equalTo": string;
|
|
82
|
+
"sdk.ui.genAi.alertProposal.operator.increasesBy": string;
|
|
83
|
+
"sdk.ui.genAi.alertProposal.operator.decreasesBy": string;
|
|
84
|
+
"sdk.ui.genAi.alertProposal.operator.changesBy": string;
|
|
85
|
+
"sdk.ui.genAi.alertProposal.operator.change": string;
|
|
86
|
+
"sdk.ui.genAi.alertProposal.operator.difference": string;
|
|
87
|
+
"sdk.ui.genAi.alertProposal.granularity.hour": string;
|
|
88
|
+
"sdk.ui.genAi.alertProposal.granularity.day": string;
|
|
89
|
+
"sdk.ui.genAi.alertProposal.granularity.week": string;
|
|
90
|
+
"sdk.ui.genAi.alertProposal.granularity.month": string;
|
|
91
|
+
"sdk.ui.genAi.alertProposal.granularity.quarter": string;
|
|
92
|
+
"sdk.ui.genAi.alertProposal.granularity.year": string;
|
|
93
|
+
"sdk.ui.genAi.alertProposal.senstivity.low": string;
|
|
94
|
+
"sdk.ui.genAi.alertProposal.senstivity.medium": string;
|
|
95
|
+
"sdk.ui.genAi.alertProposal.senstivity.high": string;
|
|
84
96
|
"gd.gen-ai.alert-proposal.summary.trigger": string;
|
|
85
97
|
"gd.gen-ai.alert-proposal.summary.trigger.mode": string;
|
|
86
98
|
"gd.gen-ai.alert-proposal.summary.trigger.interval": string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO
|
|
1
|
+
{"version":3,"file":"zh-Hant.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/zh-Hant.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkLnB,CAAC"}
|
|
@@ -25,6 +25,7 @@ export const zh_Hant = {
|
|
|
25
25
|
"gd.gen-ai.visualization.error.forecast": "<b>未收到預測:</b> {error}",
|
|
26
26
|
"gd.gen-ai.visualization.error.clustering": "<b>未收到分群:</b> {error}",
|
|
27
27
|
"gd.gen-ai.visualization.error.data_too_large": "<b>資料過大。</b> 請套用篩選條件以減少資料量。",
|
|
28
|
+
"gd.gen-ai.visualization.unavailable": "無法顯示可視化。",
|
|
28
29
|
"gd.gen-ai.permission-error": "權限不足",
|
|
29
30
|
"gd.gen-ai.permission-error.description": "您無權存取聊天機器人。請聯絡您的管理員申請存取權限。",
|
|
30
31
|
"gd.gen-ai.input-placeholder": "在這裡詢問…",
|
|
@@ -35,7 +36,6 @@ export const zh_Hant = {
|
|
|
35
36
|
"gd.gen-ai.agent.unavailable": "沒有可用的智能體",
|
|
36
37
|
"gd.gen-ai.agent.unavailable.disabled-tooltip": "已停用 — 沒有可用的智能體。",
|
|
37
38
|
"gd.gen-ai.agent.switched": "已切換至 {title} 智能體",
|
|
38
|
-
"gd.gen-ai.agent.unknown": "未知",
|
|
39
39
|
"gd.gen-ai.feedback.like": "將此訊息標記為有用",
|
|
40
40
|
"gd.gen-ai.feedback.dislike": "將此訊息標記為無幫助",
|
|
41
41
|
"gd.gen-ai.feedback.popup.title": "我們已收到您的回饋",
|
|
@@ -69,20 +69,32 @@ export const zh_Hant = {
|
|
|
69
69
|
"gd.gen-ai.alert-proposal.summary.title": "標題",
|
|
70
70
|
"gd.gen-ai.alert-proposal.summary.attributes": "屬性",
|
|
71
71
|
"gd.gen-ai.alert-proposal.summary.filters": "過濾器",
|
|
72
|
-
"gd.gen-ai.alert-proposal.summary.metric": "指標",
|
|
73
|
-
"gd.gen-ai.alert-proposal.summary.metric-compared": "相比",
|
|
74
72
|
"gd.gen-ai.alert-proposal.summary.date": "日期",
|
|
75
73
|
"gd.gen-ai.alert-proposal.summary.notification-channel": "管道",
|
|
76
74
|
"gd.gen-ai.alert-proposal.summary.dashboard": "儀表板",
|
|
77
|
-
"gd.gen-ai.alert-proposal.summary.operator": "運算子",
|
|
78
|
-
"gd.gen-ai.alert-proposal.summary.arithmeticOperator": "算術運算子",
|
|
79
|
-
"gd.gen-ai.alert-proposal.summary.threshold": "臨界點",
|
|
80
|
-
"gd.gen-ai.alert-proposal.summary.range": "範圍",
|
|
81
|
-
"gd.gen-ai.alert-proposal.summary.from": "從",
|
|
82
|
-
"gd.gen-ai.alert-proposal.summary.to": "到",
|
|
83
|
-
"gd.gen-ai.alert-proposal.summary.granularity": "粒徑",
|
|
84
|
-
"gd.gen-ai.alert-proposal.summary.sensitivity": "敏感度",
|
|
85
75
|
"gd.gen-ai.alert-proposal.summary.recipients": "收件者",
|
|
76
|
+
"gd.gen-ai.alert-proposal.summary.condition-comparison": "比較",
|
|
77
|
+
"gd.gen-ai.alert-proposal.summary.condition-relative": "相對",
|
|
78
|
+
"gd.gen-ai.alert-proposal.summary.condition-anomalyDetection": "異常偵測",
|
|
79
|
+
"sdk.ui.genAi.alertProposal.operator.lessThan": "<",
|
|
80
|
+
"sdk.ui.genAi.alertProposal.operator.lessThanOrEqualTo": "<=",
|
|
81
|
+
"sdk.ui.genAi.alertProposal.operator.greaterThan": ">",
|
|
82
|
+
"sdk.ui.genAi.alertProposal.operator.greaterThanOrEqualTo": ">=",
|
|
83
|
+
"sdk.ui.genAi.alertProposal.operator.equalTo": "=",
|
|
84
|
+
"sdk.ui.genAi.alertProposal.operator.increasesBy": "增加",
|
|
85
|
+
"sdk.ui.genAi.alertProposal.operator.decreasesBy": "減少",
|
|
86
|
+
"sdk.ui.genAi.alertProposal.operator.changesBy": "變化",
|
|
87
|
+
"sdk.ui.genAi.alertProposal.operator.change": "-",
|
|
88
|
+
"sdk.ui.genAi.alertProposal.operator.difference": "%",
|
|
89
|
+
"sdk.ui.genAi.alertProposal.granularity.hour": "以<b>每小時</b>為基準",
|
|
90
|
+
"sdk.ui.genAi.alertProposal.granularity.day": "以<b>每日</b>為基準",
|
|
91
|
+
"sdk.ui.genAi.alertProposal.granularity.week": "以<b>每週</b>為基準",
|
|
92
|
+
"sdk.ui.genAi.alertProposal.granularity.month": "以<b>每月</b>為基準",
|
|
93
|
+
"sdk.ui.genAi.alertProposal.granularity.quarter": "以<b>每季</b>為基準",
|
|
94
|
+
"sdk.ui.genAi.alertProposal.granularity.year": "以<b>每年</b>為基準",
|
|
95
|
+
"sdk.ui.genAi.alertProposal.senstivity.low": "具有<b>低</b>敏感度",
|
|
96
|
+
"sdk.ui.genAi.alertProposal.senstivity.medium": "具有<b>中</b>敏感度",
|
|
97
|
+
"sdk.ui.genAi.alertProposal.senstivity.high": "具有<b>高</b>敏感度",
|
|
86
98
|
"gd.gen-ai.alert-proposal.summary.trigger": "扳機",
|
|
87
99
|
"gd.gen-ai.alert-proposal.summary.trigger.mode": "模式",
|
|
88
100
|
"gd.gen-ai.alert-proposal.summary.trigger.interval": "間隔",
|
package/esm/sdk-ui-gen-ai.d.ts
CHANGED
|
@@ -369,7 +369,7 @@ export declare type GenAIAssistantProps = Omit<GenAiStoreProps, "children"> & {
|
|
|
369
369
|
* When provided, references to the metadata objects will be rendered as clickable links.
|
|
370
370
|
* Otherwise, the metadata objects will be rendered as plain text (using object title).
|
|
371
371
|
*/
|
|
372
|
-
onLinkClick?: (linkClickEvent: LinkHandlerEvent) =>
|
|
372
|
+
onLinkClick?: (linkClickEvent: LinkHandlerEvent) => string | undefined;
|
|
373
373
|
/**
|
|
374
374
|
* When true, allows the chat to render links that open in a new tab or window. This
|
|
375
375
|
* is handy only when embedding the chat in same environment where GD platform is running because
|
|
@@ -473,6 +473,14 @@ export declare type GenAiStoreProps = {
|
|
|
473
473
|
* User settings to use for the chat UI.
|
|
474
474
|
*/
|
|
475
475
|
settings?: IUserWorkspaceSettings;
|
|
476
|
+
/**
|
|
477
|
+
* Callback to handle link clicks.
|
|
478
|
+
*/
|
|
479
|
+
onLinkClick?: (linkClickEvent: LinkHandlerEvent) => string | undefined;
|
|
480
|
+
/**
|
|
481
|
+
* Whether to allow native links to be opened in a new tab.
|
|
482
|
+
*/
|
|
483
|
+
allowNativeLinks?: boolean;
|
|
476
484
|
/**
|
|
477
485
|
* Event handlers to subscribe to chat events.
|
|
478
486
|
*/
|
|
@@ -123,7 +123,9 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
123
123
|
verbose: boolean;
|
|
124
124
|
}, "messages/setVerboseAction">, setGlobalErrorAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
125
125
|
error: Error;
|
|
126
|
-
}, "messages/setGlobalErrorAction">, cancelAsyncAction: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"messages/cancelAsyncAction">,
|
|
126
|
+
}, "messages/setGlobalErrorAction">, cancelAsyncAction: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"messages/cancelAsyncAction">, clearConversationLoadingAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
127
|
+
conversationLocalId?: string | undefined;
|
|
128
|
+
}, "messages/clearConversationLoadingAction">, setUserFeedback: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
127
129
|
assistantMessageId: string;
|
|
128
130
|
feedback: GenAIChatInteractionUserFeedback;
|
|
129
131
|
userTextFeedback?: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messagesSlice.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAI5E,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAE/B,KAAK,OAAO,EACZ,KAAK,WAAW,EAQnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASzD,KAAK,kBAAkB,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IAE1E;;OAEG;IACH,aAAa,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IACpD;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,mBAAmB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACxD;;OAEG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACjC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAEtD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAClD,eAAO,MAAM,iBAAiB,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"messagesSlice.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AAI5E,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,6BAA6B,EAClC,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAE/B,KAAK,OAAO,EACZ,KAAK,WAAW,EAQnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASzD,KAAK,kBAAkB,GAAG;IACtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC;;OAEG;IACH,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IAE1E;;OAEG;IACH,aAAa,EAAE,sBAAsB,EAAE,GAAG,SAAS,CAAC;IACpD;;OAEG;IACH,mBAAmB,EAAE,OAAO,CAAC;IAC7B;;;OAGG;IACH,mBAAmB,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACxD;;OAEG;IACH,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;OAGG;IACH,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACjC;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAEtD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAClD,eAAO,MAAM,iBAAiB,aAAa,CAAC;AAquC5C,eAAO,MAAM,oBAAoB,EAAE,OAAO,CAAC,kBAAkB,CAAyB,CAAC;AACvF,eAAO,MACH,gBAAgB,uFAChB,qBAAqB;;sCACrB,uBAAuB;;;wCACvB,8BAA8B;;+CAC9B,6BAA6B;;;;8CAC7B,2BAA2B;;4CAC3B,sBAAsB;;uCACtB,wBAAwB,+FACxB,8BAA8B;;;+CAC9B,+BAA+B;;;;gDAC/B,qBAAqB;;;sCACrB,0BAA0B;;;;2CAC1B,8BAA8B;;;;;;;+CAC9B,2BAA2B;;;;;;;4CAC3B,6BAA6B;;;8CAC7B,iBAAiB;;;kCACjB,gBAAgB;;iCAChB,oBAAoB;;qCACpB,iBAAiB,wFACjB,8BAA8B;;+CAC9B,eAAe;;;;gCACf,oBAAoB;;;;qCACpB,sBAAsB;;;uCACtB,uBAAuB;;;;;wCACvB,wBAAwB;;;yCACxB,4BAA4B;;;;;;;;6CAC5B,8BAA8B;;;;;;+CAC9B,mCAAmC;;;;oDACnC,0CAA0C;;;;2DAC1C,wBAAwB;;;yCACxB,sBAAsB;;;;uCACtB,6BAA6B;;;8CAC7B,uBAAuB;;;;wCACvB,eAAe;;gCACf,qBAAqB;;;sCACrB,4BAA4B;;;6CAC5B,4BAA4B;;;;6CAC5B,wBAAwB;;;yCACxB,+BAA+B;;;gDAC/B,+BAA+B;;;;gDAC/B,wBAAwB;;yCACxB,6BAA6B;;8CAC7B,+BAA+B;;gDAC/B,+BAA+B;;;;AAC/B;;GAEG;AACH,4BAA4B;;;AAC5B;;GAEG;AACH,0BAA0B;AAC1B;;GAEG;AACH,iBAAiB;AACjB;;GAEG;AACH,gBAAgB,wHACK,CAAC"}
|
|
@@ -563,6 +563,23 @@ const messagesSlice = createSlice({
|
|
|
563
563
|
state.globalError = errorToObject(error);
|
|
564
564
|
},
|
|
565
565
|
cancelAsyncAction: (state) => {
|
|
566
|
+
// Aborting the in-flight thread load. A conversation switch can move
|
|
567
|
+
// currentConversation between load-start (loadThreadAction) and this cancel
|
|
568
|
+
// (the useThreadLoading cleanup runs after the new conversation is already
|
|
569
|
+
// current), so keying the clear only to the live current conversation would
|
|
570
|
+
// orphan the "loading" flag on the conversation that was actually loading -
|
|
571
|
+
// its skeleton then spins forever when it is reopened (LX-2577). Clear the
|
|
572
|
+
// load flag wherever it sits; there is only ever one load in flight.
|
|
573
|
+
if (state.messageAsyncProcess === "loading" || state.messageAsyncProcess === "restoring") {
|
|
574
|
+
delete state.messageAsyncProcess;
|
|
575
|
+
}
|
|
576
|
+
for (const data of Object.values(state.conversationsData)) {
|
|
577
|
+
if (data.asyncProcess === "loading" || data.asyncProcess === "restoring") {
|
|
578
|
+
delete data.asyncProcess;
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
// Preserve the original behaviour for the current conversation's non-load
|
|
582
|
+
// async states (e.g. "evaluating"/"clearing").
|
|
566
583
|
if (state.currentConversation) {
|
|
567
584
|
const data = getConversationData(state.conversationsData, state.currentConversation.localId);
|
|
568
585
|
delete data?.asyncProcess;
|
|
@@ -571,6 +588,25 @@ const messagesSlice = createSlice({
|
|
|
571
588
|
delete state.messageAsyncProcess;
|
|
572
589
|
}
|
|
573
590
|
},
|
|
591
|
+
/**
|
|
592
|
+
* Clear the "loading"/"restoring" flag for a specific conversation.
|
|
593
|
+
*
|
|
594
|
+
* Used when a thread load is superseded by a newer one (takeLatest cancels the
|
|
595
|
+
* running onThreadLoad saga without dispatching cancelAsyncAction). The clear must
|
|
596
|
+
* target the conversation that was actually loading - identified by its localId -
|
|
597
|
+
* rather than whichever conversation is current now, which may already have changed.
|
|
598
|
+
*/
|
|
599
|
+
clearConversationLoadingAction: (state, { payload: { conversationLocalId } }) => {
|
|
600
|
+
if (conversationLocalId) {
|
|
601
|
+
const data = state.conversationsData[conversationLocalId];
|
|
602
|
+
if (data?.asyncProcess === "loading" || data?.asyncProcess === "restoring") {
|
|
603
|
+
delete data.asyncProcess;
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
else if (state.messageAsyncProcess === "loading" || state.messageAsyncProcess === "restoring") {
|
|
607
|
+
delete state.messageAsyncProcess;
|
|
608
|
+
}
|
|
609
|
+
},
|
|
574
610
|
setUserFeedback: (state, { payload, }) => {
|
|
575
611
|
const conversationId = getConversationLocalId(state.currentConversation);
|
|
576
612
|
const assistantMessage = getAssistantMessageStrict(state, payload.assistantMessageId, conversationId);
|
|
@@ -818,7 +854,7 @@ const messagesSlice = createSlice({
|
|
|
818
854
|
});
|
|
819
855
|
const errorToObject = (error) => Object.fromEntries(Object.getOwnPropertyNames(error).map((key) => [key, error[key]]));
|
|
820
856
|
export const messagesSliceReducer = messagesSlice.reducer;
|
|
821
|
-
export const { loadThreadAction, loadThreadErrorAction, loadThreadSuccessAction, loadConversationsSuccessAction, loadConversationSuccessAction, restoreCachedMessagesAction, clearThreadErrorAction, clearThreadSuccessAction, clearConversationSuccessAction, evaluateConversationTitleAction, evaluateMessageAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, evaluateMessageCompleteAction, setMessagesAction, setVerboseAction, setGlobalErrorAction, cancelAsyncAction, setUserFeedback, setUserFeedbackError, clearUserFeedbackError, saveVisualizationAction, savedVisualizationAction, saveVisualizationErrorAction, saveVisualizationSuccessAction, saveVisualisationRenderStatusAction, saveVisualisationRenderStatusSuccessAction, visualizationErrorAction, setSelectedAgentAction, applyPendingAgentSwitchAction, revertAgentSwitchAction, setAgentsAction, pinConversationAction, pinConversationSuccessAction, pinConversationFailureAction, renameConversationAction, renameConversationSuccessAction, renameConversationFailureAction, deleteConversationAction, deleteConversationStartAction, deleteConversationSuccessAction, deleteConversationFailureAction,
|
|
857
|
+
export const { loadThreadAction, loadThreadErrorAction, loadThreadSuccessAction, loadConversationsSuccessAction, loadConversationSuccessAction, restoreCachedMessagesAction, clearThreadErrorAction, clearThreadSuccessAction, clearConversationSuccessAction, evaluateConversationTitleAction, evaluateMessageAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, evaluateMessageCompleteAction, setMessagesAction, setVerboseAction, setGlobalErrorAction, cancelAsyncAction, clearConversationLoadingAction, setUserFeedback, setUserFeedbackError, clearUserFeedbackError, saveVisualizationAction, savedVisualizationAction, saveVisualizationErrorAction, saveVisualizationSuccessAction, saveVisualisationRenderStatusAction, saveVisualisationRenderStatusSuccessAction, visualizationErrorAction, setSelectedAgentAction, applyPendingAgentSwitchAction, revertAgentSwitchAction, setAgentsAction, pinConversationAction, pinConversationSuccessAction, pinConversationFailureAction, renameConversationAction, renameConversationSuccessAction, renameConversationFailureAction, deleteConversationAction, deleteConversationStartAction, deleteConversationSuccessAction, deleteConversationFailureAction,
|
|
822
858
|
/**
|
|
823
859
|
* @public
|
|
824
860
|
*/
|
package/esm/store/options.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
|
|
2
2
|
import { type CatalogItem, type GenAIObjectType, type IColorPalette } from "@gooddata/sdk-model";
|
|
3
|
+
import type { LinkHandlerEvent } from "../components/ConfigContext.js";
|
|
3
4
|
/**
|
|
4
5
|
* A dispatcher for chat events.
|
|
5
6
|
* @internal
|
|
@@ -11,8 +12,15 @@ export declare class OptionsDispatcher {
|
|
|
11
12
|
private includeTags;
|
|
12
13
|
private excludeTags;
|
|
13
14
|
private catalogItems;
|
|
15
|
+
private onLinkClick;
|
|
16
|
+
private allowNativeLinks;
|
|
14
17
|
setColorPalette(colorPalette: IColorPalette | undefined): void;
|
|
15
18
|
getColorPalette(): IColorPalette | undefined;
|
|
19
|
+
setOnLinkClick(onLinkClick?: (linkClickEvent: LinkHandlerEvent) => string | undefined, allowNativeLinks?: boolean): void;
|
|
20
|
+
getOnLinkClick(): {
|
|
21
|
+
onLinkClick?: (linkClickEvent: LinkHandlerEvent) => string | undefined;
|
|
22
|
+
allowNativeLinks?: boolean;
|
|
23
|
+
};
|
|
16
24
|
setSettings(settings: IUserWorkspaceSettings | undefined): void;
|
|
17
25
|
getSettings(): IUserWorkspaceSettings | undefined;
|
|
18
26
|
setObjectTypes(objectTypes: GenAIObjectType[] | undefined): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/store/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjG;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAwC;
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/store/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAEvE;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,WAAW,CAAqF;IACxG,OAAO,CAAC,gBAAgB,CAAkC;IAEnD,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAEpE;IAEM,eAAe,IAAI,aAAa,GAAG,SAAS,CAElD;IAEM,cAAc,CACjB,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,EACtE,gBAAgB,CAAC,EAAE,OAAO,GAC3B,IAAI,CAGN;IAEM,cAAc,IAAI;QACrB,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAC;QACvE,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAKA;IAEM,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,SAAS,GAAG,IAAI,CAErE;IAEM,WAAW,IAAI,sBAAsB,GAAG,SAAS,CAEvD;IAEM,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,SAAS,GAAG,IAAI,CAEtE;IAEM,cAAc,IAAI,eAAe,EAAE,GAAG,SAAS,CAErD;IAEM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAGzF;IAEM,OAAO,IAAI;QAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAKzF;IAEM,eAAe,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,GAAG,IAAI,CAEpE;IAEM,eAAe,IAAI,WAAW,EAAE,GAAG,SAAS,CAElD;CACJ"}
|
package/esm/store/options.js
CHANGED
|
@@ -10,12 +10,24 @@ export class OptionsDispatcher {
|
|
|
10
10
|
includeTags = undefined;
|
|
11
11
|
excludeTags = undefined;
|
|
12
12
|
catalogItems = undefined;
|
|
13
|
+
onLinkClick = undefined;
|
|
14
|
+
allowNativeLinks = undefined;
|
|
13
15
|
setColorPalette(colorPalette) {
|
|
14
16
|
this.colorPalette = colorPalette;
|
|
15
17
|
}
|
|
16
18
|
getColorPalette() {
|
|
17
19
|
return this.colorPalette;
|
|
18
20
|
}
|
|
21
|
+
setOnLinkClick(onLinkClick, allowNativeLinks) {
|
|
22
|
+
this.onLinkClick = onLinkClick;
|
|
23
|
+
this.allowNativeLinks = allowNativeLinks;
|
|
24
|
+
}
|
|
25
|
+
getOnLinkClick() {
|
|
26
|
+
return {
|
|
27
|
+
onLinkClick: this.onLinkClick,
|
|
28
|
+
allowNativeLinks: this.allowNativeLinks,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
19
31
|
setSettings(settings) {
|
|
20
32
|
this.settings = settings;
|
|
21
33
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { type IAnalyticalBackend, type IChatThreadHistory, type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
|
|
2
|
-
import { type Message } from "../../model.js";
|
|
2
|
+
import { type IChatConversationLocal, type Message } from "../../model.js";
|
|
3
3
|
/**
|
|
4
4
|
* Load thread history and put it to the store.
|
|
5
5
|
* @internal
|
|
6
6
|
*/
|
|
7
|
-
export declare function onThreadLoad(): Generator<Generator<import("redux-saga/effects").CallEffect<void>, void, unknown> | Generator<import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").PutEffect<{
|
|
7
|
+
export declare function onThreadLoad(): Generator<import("redux-saga/effects").CancelledEffect | Generator<import("redux-saga/effects").CallEffect<void>, void, unknown> | Generator<import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").PutEffect<{
|
|
8
8
|
payload: {
|
|
9
9
|
messages: Message[];
|
|
10
10
|
threadId: string;
|
|
@@ -23,7 +23,12 @@ export declare function onThreadLoad(): Generator<Generator<import("redux-saga/e
|
|
|
23
23
|
error: Error;
|
|
24
24
|
};
|
|
25
25
|
type: "messages/loadThreadErrorAction";
|
|
26
|
-
}> | import("redux-saga/effects").
|
|
26
|
+
}> | import("redux-saga/effects").PutEffect<{
|
|
27
|
+
payload: {
|
|
28
|
+
conversationLocalId?: string | undefined;
|
|
29
|
+
};
|
|
30
|
+
type: "messages/clearConversationLoadingAction";
|
|
31
|
+
}> | import("redux-saga/effects").SelectEffect, void, (IChatConversationLocal | undefined) & ((IUserWorkspaceSettings & false) | (IUserWorkspaceSettings & true))>;
|
|
27
32
|
/**
|
|
28
33
|
* Merge backend-loaded messages with cached messages.
|
|
29
34
|
* For each assistant message from the backend, if its content is missing semanticSearch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onThreadLoad.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onThreadLoad.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,kBAAkB,EAKvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,
|
|
1
|
+
{"version":3,"file":"onThreadLoad.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onThreadLoad.ts"],"names":[],"mappings":"AAIA,OAAO,EACH,KAAK,kBAAkB,EAKvB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC9B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAGH,KAAK,sBAAsB,EAE3B,KAAK,OAAO,EAIf,MAAM,gBAAgB,CAAC;AAuBxB;;;GAGG;AACH,wBAAiB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;mKAoC5B;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CA+B/F"}
|
|
@@ -4,7 +4,7 @@ import { isAssistantMessage, isSemanticSearchContents, makeConversationItem, } f
|
|
|
4
4
|
import { settingsSelector } from "../chatWindow/chatWindowSelectors.js";
|
|
5
5
|
import { loadMessages } from "../localStorage.js";
|
|
6
6
|
import { conversationMessagesByIdSelector, conversationSelector, conversationsLoadedSelector, conversationsSelector, } from "../messages/messagesSelectors.js";
|
|
7
|
-
import { cancelAsyncAction, loadConversationSuccessAction, loadConversationsSuccessAction, loadThreadErrorAction, loadThreadSuccessAction, restoreCachedMessagesAction, } from "../messages/messagesSlice.js";
|
|
7
|
+
import { cancelAsyncAction, clearConversationLoadingAction, loadConversationSuccessAction, loadConversationsSuccessAction, loadThreadErrorAction, loadThreadSuccessAction, restoreCachedMessagesAction, } from "../messages/messagesSlice.js";
|
|
8
8
|
import { createEmptyConversation } from "../utils.js";
|
|
9
9
|
import { interactionsToMessages } from "./converters/interactionsToMessages.js";
|
|
10
10
|
import { convertToLocalContent } from "./converters/toLocalContent.js";
|
|
@@ -13,6 +13,13 @@ import { convertToLocalContent } from "./converters/toLocalContent.js";
|
|
|
13
13
|
* @internal
|
|
14
14
|
*/
|
|
15
15
|
export function* onThreadLoad() {
|
|
16
|
+
// Remember which conversation this load marked as "loading" (loadThreadAction keyed the
|
|
17
|
+
// flag to the conversation that was current when this saga was dispatched). If a newer
|
|
18
|
+
// load supersedes us, takeLatest cancels this saga without dispatching cancelAsyncAction,
|
|
19
|
+
// so we must clear that conversation's flag ourselves - otherwise its skeleton spins
|
|
20
|
+
// forever when reopened (LX-2577).
|
|
21
|
+
const loadingConversation = yield select(conversationSelector);
|
|
22
|
+
const loadingConversationLocalId = loadingConversation?.localId;
|
|
16
23
|
try {
|
|
17
24
|
const settings = yield select(settingsSelector);
|
|
18
25
|
if (settings?.enableAiAgenticConversations) {
|
|
@@ -25,6 +32,22 @@ export function* onThreadLoad() {
|
|
|
25
32
|
catch (e) {
|
|
26
33
|
yield put(loadThreadErrorAction({ error: e }));
|
|
27
34
|
}
|
|
35
|
+
finally {
|
|
36
|
+
const wasCancelled = yield cancelled();
|
|
37
|
+
if (wasCancelled) {
|
|
38
|
+
// Only clear when the load was genuinely orphaned, i.e. the conversation we were
|
|
39
|
+
// loading is no longer the current one (the user switched away mid-load). When a
|
|
40
|
+
// newer load supersedes us on the SAME conversation - e.g. a split layout mounts
|
|
41
|
+
// both GenAIConversations and GenAIAssistant and each useThreadLoading dispatches
|
|
42
|
+
// loadThreadAction - the replacement saga has already re-set the "loading" flag and
|
|
43
|
+
// is still fetching, so clearing it here would prematurely hide the skeleton and
|
|
44
|
+
// re-enable the input.
|
|
45
|
+
const currentConversation = yield select(conversationSelector);
|
|
46
|
+
if (currentConversation?.localId !== loadingConversationLocalId) {
|
|
47
|
+
yield put(clearConversationLoadingAction({ conversationLocalId: loadingConversationLocalId }));
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
28
51
|
}
|
|
29
52
|
/**
|
|
30
53
|
* Merge backend-loaded messages with cached messages.
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { type PayloadAction } from "@reduxjs/toolkit";
|
|
2
2
|
import { type IAnalyticalBackend, type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
|
|
3
3
|
import { type Message } from "../../model.js";
|
|
4
|
+
import { type OptionsDispatcher } from "../options.js";
|
|
4
5
|
export declare function onVisualizationSuccessSave({ payload }: PayloadAction<{
|
|
5
6
|
visualizationId: string;
|
|
6
7
|
assistantMessageId: string;
|
|
7
8
|
savedVisualizationId: string;
|
|
8
9
|
explore: boolean;
|
|
9
|
-
}>): Generator<import("redux-saga/effects").CallEffect<void> | import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").SelectEffect, void, IAnalyticalBackend & string & import("@gooddata/sdk-backend-spi").IChatConversation & {
|
|
10
|
+
}>): Generator<import("redux-saga/effects").CallEffect<void> | import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").SelectEffect, void, IAnalyticalBackend & string & OptionsDispatcher & import("@gooddata/sdk-backend-spi").IChatConversation & {
|
|
10
11
|
localId: string;
|
|
11
12
|
generatingTitle?: boolean | undefined;
|
|
12
13
|
inProgress?: boolean | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onVisualizationSuccessSave.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onVisualizationSuccessSave.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"onVisualizationSuccessSave.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onVisualizationSuccessSave.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGjG,OAAO,EAA+B,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI3E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,wBAAiB,0BAA0B,CAAC,EACxC,OAAO,EACV,EAAE,aAAa,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;;;;wCA0ED"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// (C) 2025-2026 GoodData Corporation
|
|
2
|
+
import noop from "lodash-es/noop.js";
|
|
2
3
|
import { call, getContext, select } from "redux-saga/effects";
|
|
3
4
|
import { getVisualizationHref } from "../../utils.js";
|
|
4
5
|
import { settingsSelector } from "../chatWindow/chatWindowSelectors.js";
|
|
@@ -7,12 +8,26 @@ export function* onVisualizationSuccessSave({ payload, }) {
|
|
|
7
8
|
// Retrieve backend from context
|
|
8
9
|
const backend = yield getContext("backend");
|
|
9
10
|
const workspace = yield getContext("workspace");
|
|
11
|
+
const options = yield getContext("optionsDispatcher");
|
|
10
12
|
const conversation = yield select(conversationSelector);
|
|
11
13
|
const settings = yield select(settingsSelector);
|
|
12
14
|
const useHostedAnalyticalDesigner = Boolean(settings?.enableShellApplication_analyticalDesigner);
|
|
15
|
+
const { onLinkClick, allowNativeLinks } = options.getOnLinkClick();
|
|
13
16
|
if (conversation) {
|
|
14
17
|
if (payload.explore) {
|
|
15
|
-
|
|
18
|
+
if (allowNativeLinks) {
|
|
19
|
+
window.location.href = getVisualizationHref(workspace, payload.savedVisualizationId, useHostedAnalyticalDesigner);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
onLinkClick?.({
|
|
23
|
+
id: payload.savedVisualizationId,
|
|
24
|
+
type: "visualization",
|
|
25
|
+
workspaceId: workspace,
|
|
26
|
+
newTab: true,
|
|
27
|
+
preventDefault: noop,
|
|
28
|
+
itemUrl: getVisualizationHref(workspace, payload.savedVisualizationId, useHostedAnalyticalDesigner),
|
|
29
|
+
});
|
|
30
|
+
}
|
|
16
31
|
}
|
|
17
32
|
//NOTE: In new conversations, save call is already done before
|
|
18
33
|
}
|
|
@@ -20,7 +35,19 @@ export function* onVisualizationSuccessSave({ payload, }) {
|
|
|
20
35
|
const messages = yield select(messagesSelector);
|
|
21
36
|
const message = messages.find((message) => message.localId === payload.assistantMessageId);
|
|
22
37
|
if (payload.explore) {
|
|
23
|
-
|
|
38
|
+
if (allowNativeLinks) {
|
|
39
|
+
window.location.href = getVisualizationHref(workspace, payload.savedVisualizationId, useHostedAnalyticalDesigner);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
onLinkClick?.({
|
|
43
|
+
id: payload.savedVisualizationId,
|
|
44
|
+
type: "visualization",
|
|
45
|
+
workspaceId: workspace,
|
|
46
|
+
newTab: true,
|
|
47
|
+
preventDefault: noop,
|
|
48
|
+
itemUrl: getVisualizationHref(workspace, payload.savedVisualizationId, useHostedAnalyticalDesigner),
|
|
49
|
+
});
|
|
50
|
+
}
|
|
24
51
|
}
|
|
25
52
|
if (!message?.id) {
|
|
26
53
|
return;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-gen-ai",
|
|
3
|
-
"version": "11.43.0-alpha.
|
|
3
|
+
"version": "11.43.0-alpha.4",
|
|
4
4
|
"description": "GoodData GenAI SDK",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -56,18 +56,18 @@
|
|
|
56
56
|
"reselect": "5.1.1",
|
|
57
57
|
"tslib": "2.8.1",
|
|
58
58
|
"uuid": "11.1.1",
|
|
59
|
-
"@gooddata/api-client-tiger": "11.43.0-alpha.
|
|
60
|
-
"@gooddata/sdk-
|
|
61
|
-
"@gooddata/sdk-
|
|
62
|
-
"@gooddata/sdk-ui
|
|
63
|
-
"@gooddata/sdk-
|
|
64
|
-
"@gooddata/sdk-ui-dashboard": "11.43.0-alpha.
|
|
65
|
-
"@gooddata/sdk-ui-filters": "11.43.0-alpha.
|
|
66
|
-
"@gooddata/sdk-ui-kit": "11.43.0-alpha.
|
|
67
|
-
"@gooddata/sdk-ui-semantic-search": "11.43.0-alpha.
|
|
68
|
-
"@gooddata/sdk-ui-
|
|
69
|
-
"@gooddata/sdk-ui-
|
|
70
|
-
"@gooddata/util": "11.43.0-alpha.
|
|
59
|
+
"@gooddata/api-client-tiger": "11.43.0-alpha.4",
|
|
60
|
+
"@gooddata/sdk-backend-spi": "11.43.0-alpha.4",
|
|
61
|
+
"@gooddata/sdk-model": "11.43.0-alpha.4",
|
|
62
|
+
"@gooddata/sdk-ui": "11.43.0-alpha.4",
|
|
63
|
+
"@gooddata/sdk-ui-charts": "11.43.0-alpha.4",
|
|
64
|
+
"@gooddata/sdk-ui-dashboard": "11.43.0-alpha.4",
|
|
65
|
+
"@gooddata/sdk-ui-filters": "11.43.0-alpha.4",
|
|
66
|
+
"@gooddata/sdk-ui-kit": "11.43.0-alpha.4",
|
|
67
|
+
"@gooddata/sdk-ui-semantic-search": "11.43.0-alpha.4",
|
|
68
|
+
"@gooddata/sdk-ui-pivot": "11.43.0-alpha.4",
|
|
69
|
+
"@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.4",
|
|
70
|
+
"@gooddata/util": "11.43.0-alpha.4"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@microsoft/api-documenter": "^7.17.0",
|
|
@@ -110,13 +110,13 @@
|
|
|
110
110
|
"typescript": "5.9.3",
|
|
111
111
|
"vitest": "4.1.8",
|
|
112
112
|
"vitest-dom": "0.1.1",
|
|
113
|
-
"@gooddata/eslint-config": "11.43.0-alpha.
|
|
114
|
-
"@gooddata/i18n-toolkit": "11.43.0-alpha.
|
|
115
|
-
"@gooddata/
|
|
116
|
-
"@gooddata/
|
|
117
|
-
"@gooddata/sdk-
|
|
118
|
-
"@gooddata/
|
|
119
|
-
"@gooddata/
|
|
113
|
+
"@gooddata/eslint-config": "11.43.0-alpha.4",
|
|
114
|
+
"@gooddata/i18n-toolkit": "11.43.0-alpha.4",
|
|
115
|
+
"@gooddata/oxlint-config": "11.43.0-alpha.4",
|
|
116
|
+
"@gooddata/reference-workspace": "11.43.0-alpha.4",
|
|
117
|
+
"@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.4",
|
|
118
|
+
"@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.4",
|
|
119
|
+
"@gooddata/stylelint-config": "11.43.0-alpha.4"
|
|
120
120
|
},
|
|
121
121
|
"peerDependencies": {
|
|
122
122
|
"react": "^18.0.0 || ^19.0.0",
|
package/styles/css/main.css
CHANGED
|
@@ -13852,6 +13852,24 @@ body.gd-kda-dialog-opened .highcharts-tooltip-container {
|
|
|
13852
13852
|
.gd-gen-ai-chat__messages__conversation-group--content .gd-gen-ai-chat__messages__conversation--isLast .gd-gen-ai-chat__icon .gd-gen-ai-chat__icon__special {
|
|
13853
13853
|
animation: pulsate-opacity 1s infinite ease-in-out;
|
|
13854
13854
|
}
|
|
13855
|
+
.gd-gen-ai-chat__messages__conversation-group--content--loading {
|
|
13856
|
+
position: relative;
|
|
13857
|
+
padding-left: 15px;
|
|
13858
|
+
}
|
|
13859
|
+
.gd-gen-ai-chat__messages__conversation-group--content--loading::before {
|
|
13860
|
+
content: "";
|
|
13861
|
+
position: absolute;
|
|
13862
|
+
left: 5px;
|
|
13863
|
+
top: 0;
|
|
13864
|
+
bottom: 16px;
|
|
13865
|
+
width: 1px;
|
|
13866
|
+
background-color: var(--gd-palette-complementary-6, #94a1ad);
|
|
13867
|
+
opacity: 0.3;
|
|
13868
|
+
}
|
|
13869
|
+
.gd-gen-ai-chat__messages__conversation-group--content--loading--spinner svg {
|
|
13870
|
+
width: 16px;
|
|
13871
|
+
height: 16px;
|
|
13872
|
+
}
|
|
13855
13873
|
|
|
13856
13874
|
.gd-gen-ai-chat__messages__conversation {
|
|
13857
13875
|
display: flex;
|