@gooddata/sdk-ui-gen-ai 11.42.0-alpha.4 → 11.42.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/NOTICE +758 -810
- package/esm/components/messages/AgentChangeItem.d.ts +1 -1
- package/esm/components/messages/AgentChangeItem.d.ts.map +1 -1
- package/esm/components/messages/AgentChangeItem.js +6 -7
- package/esm/components/messages/ItemsGroup.d.ts.map +1 -1
- package/esm/components/messages/ItemsGroup.js +4 -1
- package/esm/localization/bundles/en-US.localization-bundle.d.ts +0 -4
- package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
- package/esm/localization/bundles/en-US.localization-bundle.js +0 -4
- package/esm/store/messages/messagesSelectors.d.ts +8 -4
- package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
- package/esm/store/messages/messagesSelectors.js +1 -0
- package/esm/store/messages/messagesSlice.d.ts +4 -4
- package/esm/store/messages/messagesSlice.d.ts.map +1 -1
- package/esm/store/messages/messagesSlice.js +34 -20
- package/esm/store/sideEffects/index.d.ts.map +1 -1
- package/esm/store/sideEffects/index.js +1 -3
- package/esm/store/sideEffects/onUserMessage.d.ts +13 -0
- package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
- package/esm/store/sideEffects/onUserMessage.js +46 -3
- package/esm/types.d.ts +9 -2
- package/esm/types.d.ts.map +1 -1
- package/esm/utils.js +4 -4
- package/package.json +20 -20
- package/styles/css/main.css +1 -0
- package/styles/css/main.css.map +1 -1
- package/styles/css/messages.css +1 -0
- package/styles/css/messages.css.map +1 -1
- package/styles/scss/messages.scss +1 -0
- package/esm/store/sideEffects/onAgentSwitch.d.ts +0 -22
- package/esm/store/sideEffects/onAgentSwitch.d.ts.map +0 -1
- package/esm/store/sideEffects/onAgentSwitch.js +0 -55
|
@@ -2,6 +2,6 @@ import { type IChatConversationLocalItem } from "../../model.js";
|
|
|
2
2
|
type AgentChangeItemProps = {
|
|
3
3
|
message: IChatConversationLocalItem;
|
|
4
4
|
};
|
|
5
|
-
export declare function AgentChangeItem({ message }: AgentChangeItemProps): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
export declare function AgentChangeItem({ message }: AgentChangeItemProps): import("react/jsx-runtime").JSX.Element | null;
|
|
6
6
|
export {};
|
|
7
7
|
//# sourceMappingURL=AgentChangeItem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentChangeItem.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AgentChangeItem.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentChangeItem.d.ts","sourceRoot":"","sources":["../../../src/components/messages/AgentChangeItem.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,gBAAgB,CAAC;AAGjE,KAAK,oBAAoB,GAAG;IACxB,OAAO,EAAE,0BAA0B,CAAC;CACvC,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,EAAE,oBAAoB,kDAmBhE"}
|
|
@@ -1,17 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2026 GoodData Corporation
|
|
3
|
-
import { FormattedMessage
|
|
3
|
+
import { FormattedMessage } from "react-intl";
|
|
4
4
|
import { useSelector } from "react-redux";
|
|
5
5
|
import { agentsSelector } from "../../store/messages/messagesSelectors.js";
|
|
6
|
-
const msgs = defineMessages({
|
|
7
|
-
unknown: { id: "gd.gen-ai.agent.unknown" },
|
|
8
|
-
});
|
|
9
6
|
export function AgentChangeItem({ message }) {
|
|
10
|
-
const intl = useIntl();
|
|
11
7
|
const agents = useSelector(agentsSelector);
|
|
12
8
|
const { agentId } = message;
|
|
13
|
-
const
|
|
9
|
+
const agent = agents?.find((a) => a.id === agentId);
|
|
10
|
+
if (!agent) {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
14
13
|
return (_jsxs("div", { className: "gd-gen-ai-chat__messages__agent-change", children: [
|
|
15
|
-
_jsx("div", { className: "gd-gen-ai-chat__messages__agent-change__line" }), _jsx("div", { className: "gd-gen-ai-chat__messages__agent-change__label", children: _jsx(FormattedMessage, { id: "gd.gen-ai.agent.switched", values: { title } }) }), _jsx("div", { className: "gd-gen-ai-chat__messages__agent-change__line" })
|
|
14
|
+
_jsx("div", { className: "gd-gen-ai-chat__messages__agent-change__line" }), _jsx("div", { className: "gd-gen-ai-chat__messages__agent-change__label", children: _jsx(FormattedMessage, { id: "gd.gen-ai.agent.switched", values: { title: agent.title } }) }), _jsx("div", { className: "gd-gen-ai-chat__messages__agent-change__line" })
|
|
16
15
|
] }));
|
|
17
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ItemsGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ItemsGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAO1D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,UAAU,gBAAgB;IACtB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ItemsGroup.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ItemsGroup.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAO1D,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,UAAU,gBAAgB;IACtB,aAAa,CAAC,EAAE,kBAAkB,CAAC;IACnC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,gBAAgB,2CAsB9E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2024-2026 GoodData Corporation
|
|
3
3
|
import { useMemo, useState } from "react";
|
|
4
4
|
import cx from "classnames";
|
|
@@ -12,6 +12,9 @@ export function ItemsGroup({ group, previousGroup, children }) {
|
|
|
12
12
|
if (group.type === "reasoning") {
|
|
13
13
|
return (_jsx(ReasoningItemsGroup, { classNames: classNames, previousGroup: previousGroup, group: group, children: children }));
|
|
14
14
|
}
|
|
15
|
+
if (group.type === "system") {
|
|
16
|
+
return _jsx(_Fragment, { children: children });
|
|
17
|
+
}
|
|
15
18
|
return (_jsx(DefaultItemsGroup, { classNames: classNames, previousGroup: previousGroup, group: group, children: children }));
|
|
16
19
|
}
|
|
17
20
|
function ReasoningItemsGroup({ classNames, group, previousGroup, children }) {
|
|
@@ -135,10 +135,6 @@ export declare const en_US: {
|
|
|
135
135
|
text: string;
|
|
136
136
|
crowdinContext: string;
|
|
137
137
|
};
|
|
138
|
-
"gd.gen-ai.agent.unknown": {
|
|
139
|
-
text: string;
|
|
140
|
-
crowdinContext: string;
|
|
141
|
-
};
|
|
142
138
|
"gd.gen-ai.feedback.like": {
|
|
143
139
|
text: string;
|
|
144
140
|
crowdinContext: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAipBjB,CAAC"}
|
|
@@ -137,10 +137,6 @@ export const en_US = {
|
|
|
137
137
|
"text": "Switched to {title} agent",
|
|
138
138
|
"crowdinContext": "Divider message shown in an AI chatbot conversation after the user switches to another agent"
|
|
139
139
|
},
|
|
140
|
-
"gd.gen-ai.agent.unknown": {
|
|
141
|
-
"text": "unknown",
|
|
142
|
-
"crowdinContext": "Placeholder shown in the 'Switched to {title} agent' message when the agent no longer exists"
|
|
143
|
-
},
|
|
144
140
|
"gd.gen-ai.feedback.like": {
|
|
145
141
|
"text": "Mark this message as helpful",
|
|
146
142
|
"crowdinContext": "Button label to mark a message as helpful in the AI chatbot"
|
|
@@ -5,7 +5,11 @@ export declare const loadedSelector: (state: RootState) => boolean;
|
|
|
5
5
|
export declare const isVerboseSelector: (state: RootState) => boolean;
|
|
6
6
|
export declare const lastMessageSelector: (state: RootState) => Message | undefined;
|
|
7
7
|
export declare const hasMessagesSelector: (state: RootState) => boolean;
|
|
8
|
-
export declare const asyncProcessSelector: (state: RootState) => "loading" | "restoring" | "clearing" | "evaluating" |
|
|
8
|
+
export declare const asyncProcessSelector: (state: RootState) => "loading" | "restoring" | "clearing" | "evaluating" | undefined;
|
|
9
|
+
export declare const pendingAgentSwitchSelector: (state: RootState, conversationLocalId: string) => {
|
|
10
|
+
agentId: string;
|
|
11
|
+
previousAgentId: string | undefined;
|
|
12
|
+
} | undefined;
|
|
9
13
|
export declare const globalErrorSelector: (state: RootState) => Record<string, unknown> | null;
|
|
10
14
|
export declare const threadIdSelector: (state: RootState) => string | undefined;
|
|
11
15
|
export declare const conversationMessagesSelector: (state: RootState) => IChatConversationLocalItem[];
|
|
@@ -22,7 +26,7 @@ export declare const agentsSelector: ((state: RootState) => import("../../model.
|
|
|
22
26
|
loaded: boolean;
|
|
23
27
|
messages: Record<string, Message>;
|
|
24
28
|
messageOrder: string[];
|
|
25
|
-
messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" |
|
|
29
|
+
messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" | undefined;
|
|
26
30
|
conversations: IChatConversationLocal[] | undefined;
|
|
27
31
|
conversationsLoaded: boolean;
|
|
28
32
|
currentConversation: IChatConversationLocal | undefined;
|
|
@@ -37,7 +41,7 @@ export declare const agentsSelector: ((state: RootState) => import("../../model.
|
|
|
37
41
|
loaded: boolean;
|
|
38
42
|
messages: Record<string, Message>;
|
|
39
43
|
messageOrder: string[];
|
|
40
|
-
messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" |
|
|
44
|
+
messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" | undefined;
|
|
41
45
|
conversations: IChatConversationLocal[] | undefined;
|
|
42
46
|
conversationsLoaded: boolean;
|
|
43
47
|
currentConversation: IChatConversationLocal | undefined;
|
|
@@ -57,7 +61,7 @@ export declare const agentsSelector: ((state: RootState) => import("../../model.
|
|
|
57
61
|
loaded: boolean;
|
|
58
62
|
messages: Record<string, Message>;
|
|
59
63
|
messageOrder: string[];
|
|
60
|
-
messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" |
|
|
64
|
+
messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" | undefined;
|
|
61
65
|
conversations: IChatConversationLocal[] | undefined;
|
|
62
66
|
conversationsLoaded: boolean;
|
|
63
67
|
currentConversation: IChatConversationLocal | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messagesSelectors.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSelectors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5G,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,EAG3D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OASvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAC/B,KAAK,EAAE,SAAS,KACf,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"messagesSelectors.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSelectors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5G,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,EAG3D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OASvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAC/B,KAAK,EAAE,SAAS,KACf,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,SAS1D,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;aAIgD,CAAC;AAExF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAGjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,SAG7D,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,0BAA0B,EAIrF,CAAC;AAEP,eAAO,MAAM,gCAAgC,EAAE,CAC3C,KAAK,EAAE,SAAS,EAChB,cAAc,CAAC,EAAE,MAAM,KACtB,0BAA0B,EAU9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,sBAAsB,GAAG,SAGjF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,SAGpE,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiE,CAAC;AAE7F,eAAO,MAAM,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,CACnC,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,MAAM,KACrB,sBAAsB,GAAG,SAI7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,sBAAsB,EAAE,GAAG,SACZ,CAAC;AAE1E,eAAO,MAAM,2BAA2B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAG/D,CAAC"}
|
|
@@ -20,6 +20,7 @@ export const asyncProcessSelector = createSelector(messagesSliceSelector, (state
|
|
|
20
20
|
}
|
|
21
21
|
return state.messageAsyncProcess;
|
|
22
22
|
});
|
|
23
|
+
export const pendingAgentSwitchSelector = (state, conversationLocalId) => state[messagesSliceName].conversationsData[conversationLocalId]?.pendingAgentSwitch;
|
|
23
24
|
export const globalErrorSelector = createSelector(messagesSliceSelector, (state) => state.globalError ?? null);
|
|
24
25
|
export const threadIdSelector = createSelector(messagesSliceSelector, (state) => state.threadId);
|
|
25
26
|
export const conversationMessagesSelector = createSelector(messagesSliceSelector, (state) => {
|
|
@@ -27,9 +27,8 @@ type MessagesSliceState = {
|
|
|
27
27
|
* - restoring: cached messages have been restored while the backend fetch is still in-flight
|
|
28
28
|
* - clearing: the thread is being cleared
|
|
29
29
|
* - evaluating: the new user message is being evaluated by assistant
|
|
30
|
-
* - switchingAgent: the active agent switch is being persisted
|
|
31
30
|
*/
|
|
32
|
-
messageAsyncProcess?: "loading" | "restoring" | "clearing" | "evaluating"
|
|
31
|
+
messageAsyncProcess?: "loading" | "restoring" | "clearing" | "evaluating";
|
|
33
32
|
/**
|
|
34
33
|
* A list of conversations.
|
|
35
34
|
*/
|
|
@@ -172,9 +171,10 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
|
|
|
172
171
|
agentId: string | undefined;
|
|
173
172
|
previousAgentId?: string | undefined;
|
|
174
173
|
showChangeEvent?: boolean | undefined;
|
|
175
|
-
}, "messages/setSelectedAgentAction">,
|
|
174
|
+
}, "messages/setSelectedAgentAction">, applyPendingAgentSwitchAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
176
175
|
conversationLocalId: string;
|
|
177
|
-
|
|
176
|
+
beforeItemLocalId?: string | undefined;
|
|
177
|
+
}, "messages/applyPendingAgentSwitchAction">, revertAgentSwitchAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
178
178
|
previousAgentId: string | undefined;
|
|
179
179
|
failedAgentId: string;
|
|
180
180
|
conversationLocalId: string;
|
|
@@ -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
|
|
1
|
+
{"version":3,"file":"messagesSlice.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSlice.ts"],"names":[],"mappings":"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"}
|
|
@@ -484,34 +484,48 @@ const messagesSlice = createSlice({
|
|
|
484
484
|
}
|
|
485
485
|
: conversation);
|
|
486
486
|
const data = getConversationData(state.conversationsData, state.currentConversation.localId);
|
|
487
|
-
// Only persisted conversations (with an id)
|
|
488
|
-
// A draft conversation
|
|
489
|
-
// so it must not show a "switched agent" divider or enter the switching busy state - that
|
|
490
|
-
// switch never happened on the server.
|
|
487
|
+
// Only persisted conversations (with an id) need a backend switchAgent call.
|
|
488
|
+
// A draft conversation is created with the selected agent on the first message.
|
|
491
489
|
if (data &&
|
|
492
490
|
state.currentConversation.id &&
|
|
493
491
|
payload.agentId &&
|
|
494
492
|
previousAgentId !== payload.agentId) {
|
|
495
|
-
//
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
493
|
+
// Track the last BE-confirmed agent so a round-trip switch (A→B→A) is a no-op.
|
|
494
|
+
const originalPreviousAgentId = data.pendingAgentSwitch?.previousAgentId ?? previousAgentId;
|
|
495
|
+
if (payload.agentId === originalPreviousAgentId) {
|
|
496
|
+
// User switched back to the BE-confirmed agent — no switch needed.
|
|
497
|
+
delete data.pendingAgentSwitch;
|
|
498
|
+
}
|
|
499
|
+
else {
|
|
500
|
+
data.pendingAgentSwitch = {
|
|
501
|
+
agentId: payload.agentId,
|
|
502
|
+
previousAgentId: originalPreviousAgentId,
|
|
503
|
+
};
|
|
504
|
+
}
|
|
507
505
|
}
|
|
508
506
|
}
|
|
509
507
|
},
|
|
510
|
-
|
|
508
|
+
applyPendingAgentSwitchAction: (state, { payload }) => {
|
|
511
509
|
const data = state.conversationsData[payload.conversationLocalId];
|
|
512
|
-
if (data?.
|
|
513
|
-
|
|
510
|
+
if (!data?.pendingAgentSwitch) {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
const { agentId, previousAgentId } = data.pendingAgentSwitch;
|
|
514
|
+
// Optimistically insert the agentChange event before the user message so the order is:
|
|
515
|
+
// [...prior items, switch_item, user_message, assistant_placeholder]
|
|
516
|
+
// The backend persists its own agentChange item, which replaces this one when the
|
|
517
|
+
// conversation history is reloaded (onThreadLoad drops unconfirmed optimistic system
|
|
518
|
+
// items before merging the backend version).
|
|
519
|
+
const item = makeAgentChangeItem({ agentId, oldAgentId: previousAgentId });
|
|
520
|
+
data.items[item.localId] = item;
|
|
521
|
+
const insertIdx = payload.beforeItemLocalId ? data.order.indexOf(payload.beforeItemLocalId) : -1;
|
|
522
|
+
if (insertIdx >= 0) {
|
|
523
|
+
data.order.splice(insertIdx, 0, item.localId);
|
|
524
|
+
}
|
|
525
|
+
else {
|
|
526
|
+
data.order.push(item.localId);
|
|
514
527
|
}
|
|
528
|
+
delete data.pendingAgentSwitch;
|
|
515
529
|
},
|
|
516
530
|
revertAgentSwitchAction: (state, { payload, }) => {
|
|
517
531
|
// Only revert the dropdown when the user is still on the failed conversation.
|
|
@@ -804,7 +818,7 @@ const messagesSlice = createSlice({
|
|
|
804
818
|
});
|
|
805
819
|
const errorToObject = (error) => Object.fromEntries(Object.getOwnPropertyNames(error).map((key) => [key, error[key]]));
|
|
806
820
|
export const messagesSliceReducer = messagesSlice.reducer;
|
|
807
|
-
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,
|
|
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,
|
|
808
822
|
/**
|
|
809
823
|
* @public
|
|
810
824
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/index.ts"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,wBAAiB,QAAQ,4HAwBxB"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// (C) 2024-2026 GoodData Corporation
|
|
2
2
|
import { call, fork, takeEvery, takeLatest } from "redux-saga/effects";
|
|
3
3
|
import { setOpenAction } from "../chatWindow/chatWindowSlice.js";
|
|
4
|
-
import { clearThreadAction, deleteConversationAction, evaluateMessageUpdateAction, loadThreadAction, newMessageAction, pinConversationAction, renameConversationAction, saveVisualisationRenderStatusAction, saveVisualizationAction, saveVisualizationSuccessAction,
|
|
4
|
+
import { clearThreadAction, deleteConversationAction, evaluateMessageUpdateAction, loadThreadAction, newMessageAction, pinConversationAction, renameConversationAction, saveVisualisationRenderStatusAction, saveVisualizationAction, saveVisualizationSuccessAction, setUserFeedback, setVerboseAction, } from "../messages/messagesSlice.js";
|
|
5
5
|
import { loadAgents } from "./loadAgents.js";
|
|
6
6
|
import { loadCatalogItems } from "./loadCatalogItems.js";
|
|
7
7
|
import { loadColorPalette } from "./loadColorPalette.js";
|
|
8
8
|
import { loadSettings } from "./loadSettings.js";
|
|
9
|
-
import { onAgentSwitch } from "./onAgentSwitch.js";
|
|
10
9
|
import { onChatOpenSync } from "./onChatOpenSync.js";
|
|
11
10
|
import { onConversationDelete } from "./onConversationDelete.js";
|
|
12
11
|
import { onConversationPin } from "./onConversationPin.js";
|
|
@@ -41,7 +40,6 @@ export function* rootSaga() {
|
|
|
41
40
|
yield takeEvery(pinConversationAction.type, onConversationPin);
|
|
42
41
|
yield takeEvery(renameConversationAction.type, onConversationRename);
|
|
43
42
|
yield takeEvery(deleteConversationAction.type, onConversationDelete);
|
|
44
|
-
yield takeEvery(setSelectedAgentAction.type, onAgentSwitch);
|
|
45
43
|
yield takeEvery(evaluateMessageUpdateAction.type, onUserMessageUpdate);
|
|
46
44
|
//others
|
|
47
45
|
yield takeEvery(setVerboseAction.type, onVerboseStore);
|
|
@@ -52,5 +52,18 @@ export declare function onUserMessage({ payload }: ReturnType<typeof newMessageA
|
|
|
52
52
|
conversation: IChatConversationLocal;
|
|
53
53
|
};
|
|
54
54
|
type: "messages/setCurrentConversationAction";
|
|
55
|
+
}> | import("redux-saga/effects").PutEffect<{
|
|
56
|
+
payload: {
|
|
57
|
+
conversationLocalId: string;
|
|
58
|
+
beforeItemLocalId?: string | undefined;
|
|
59
|
+
};
|
|
60
|
+
type: "messages/applyPendingAgentSwitchAction";
|
|
61
|
+
}> | import("redux-saga/effects").PutEffect<{
|
|
62
|
+
payload: {
|
|
63
|
+
previousAgentId: string | undefined;
|
|
64
|
+
failedAgentId: string;
|
|
65
|
+
conversationLocalId: string;
|
|
66
|
+
};
|
|
67
|
+
type: "messages/revertAgentSwitchAction";
|
|
55
68
|
}> | import("redux-saga/effects").SelectEffect, void, never> | import("redux-saga/effects").SelectEffect, void, IChatConversationLocal | undefined>;
|
|
56
69
|
//# sourceMappingURL=onUserMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onUserMessage.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onUserMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EASzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"onUserMessage.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onUserMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EASzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,EAOH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAmB9E"}
|
|
@@ -5,8 +5,8 @@ import { isChatConversationLocalItem, isTextContents, isUserMessage, makeAssista
|
|
|
5
5
|
import { generateTitleFromQuestion } from "../../utils.js";
|
|
6
6
|
import { agentSwitchingActiveSelector, allowedRelationshipTypesSelector, objectTypesSelector, settingsSelector, userContextSelector, } from "../chatWindow/chatWindowSelectors.js";
|
|
7
7
|
import { clearUserContextAction } from "../chatWindow/chatWindowSlice.js";
|
|
8
|
-
import { conversationMessagesByIdSelector, conversationSelector, messagesSelector, selectedAgentIdSelector, } from "../messages/messagesSelectors.js";
|
|
9
|
-
import { evaluateMessageAction, evaluateMessageCompleteAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
|
|
8
|
+
import { conversationMessagesByIdSelector, conversationSelector, messagesSelector, pendingAgentSwitchSelector, selectedAgentIdSelector, } from "../messages/messagesSelectors.js";
|
|
9
|
+
import { applyPendingAgentSwitchAction, evaluateMessageAction, evaluateMessageCompleteAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, revertAgentSwitchAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
|
|
10
10
|
import { processContents } from "./converters/interactionsToMessages.js";
|
|
11
11
|
import { convertToLocalContent } from "./converters/toLocalContent.js";
|
|
12
12
|
import { convertMessageToChatConversation, extractError } from "./utils.js";
|
|
@@ -227,11 +227,54 @@ function* conversationUserMessage(message) {
|
|
|
227
227
|
if (!conversation) {
|
|
228
228
|
throw new Error("Conversation is not available.");
|
|
229
229
|
}
|
|
230
|
-
//
|
|
230
|
+
// Block input immediately so the user cannot send another message while
|
|
231
|
+
// the deferred switchAgent call (or the streaming response) is in flight.
|
|
231
232
|
yield put(evaluateMessageAction({
|
|
232
233
|
message: initialAssistantMessage,
|
|
233
234
|
conversationId: conversation.localId,
|
|
234
235
|
}));
|
|
236
|
+
// Flush any pending agent switch before sending the message so that the
|
|
237
|
+
// "Switched to X" item and the switchAgent API call happen together with
|
|
238
|
+
// the first message sent to the new agent. evaluateMessageAction above is
|
|
239
|
+
// local-only state — the message stream does not start until after the
|
|
240
|
+
// switch is confirmed by the backend.
|
|
241
|
+
// Guard with the feature flag: when agent switching is off the pending
|
|
242
|
+
// switch should never be set, but skip defensively to preserve the
|
|
243
|
+
// original no-switching behaviour in that case.
|
|
244
|
+
const agentSwitchingActive = yield select(agentSwitchingActiveSelector);
|
|
245
|
+
const pendingSwitch = agentSwitchingActive
|
|
246
|
+
? yield select(pendingAgentSwitchSelector, conversation.localId)
|
|
247
|
+
: undefined;
|
|
248
|
+
if (pendingSwitch) {
|
|
249
|
+
try {
|
|
250
|
+
yield put(applyPendingAgentSwitchAction({
|
|
251
|
+
conversationLocalId: conversation.localId,
|
|
252
|
+
beforeItemLocalId: message.localId,
|
|
253
|
+
}));
|
|
254
|
+
const chatConversations = backend
|
|
255
|
+
.workspace(workspace)
|
|
256
|
+
.genAI()
|
|
257
|
+
.getChatConversations({ isPreview });
|
|
258
|
+
const updatedConversation = yield call(chatConversations.switchAgent.bind(chatConversations), conversation.id, pendingSwitch.agentId);
|
|
259
|
+
yield put(setCurrentConversationAction({
|
|
260
|
+
conversation: { ...updatedConversation, localId: conversation.localId },
|
|
261
|
+
}));
|
|
262
|
+
}
|
|
263
|
+
catch (e) {
|
|
264
|
+
console.error("Failed to switch agent before sending message", e);
|
|
265
|
+
yield put(revertAgentSwitchAction({
|
|
266
|
+
previousAgentId: pendingSwitch.previousAgentId,
|
|
267
|
+
failedAgentId: pendingSwitch.agentId,
|
|
268
|
+
conversationLocalId: conversation.localId,
|
|
269
|
+
}));
|
|
270
|
+
yield put(evaluateMessageErrorAction({
|
|
271
|
+
assistantMessageId: initialAssistantMessage.localId,
|
|
272
|
+
error: extractError(e),
|
|
273
|
+
conversationId: conversation.localId,
|
|
274
|
+
}));
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
235
278
|
// Make the request to start the evaluation
|
|
236
279
|
const chatThreadQuery = backend
|
|
237
280
|
.workspace(workspace)
|
package/esm/types.d.ts
CHANGED
|
@@ -24,8 +24,15 @@ export type StoredConversation = {
|
|
|
24
24
|
* - restoring: cached messages have been restored while the backend fetch is still in-flight
|
|
25
25
|
* - clearing: the thread is being cleared
|
|
26
26
|
* - evaluating: the new user message is being evaluated by assistant
|
|
27
|
-
* - switchingAgent: the active agent switch is being persisted
|
|
28
27
|
*/
|
|
29
|
-
asyncProcess?: "loading" | "restoring" | "clearing" | "evaluating"
|
|
28
|
+
asyncProcess?: "loading" | "restoring" | "clearing" | "evaluating";
|
|
29
|
+
/**
|
|
30
|
+
* An agent switch selected by the user that has not yet been sent to the backend.
|
|
31
|
+
* It is flushed (switchAgent API + optimistic item) just before the next message is sent.
|
|
32
|
+
*/
|
|
33
|
+
pendingAgentSwitch?: {
|
|
34
|
+
agentId: string;
|
|
35
|
+
previousAgentId: string | undefined;
|
|
36
|
+
};
|
|
30
37
|
};
|
|
31
38
|
//# sourceMappingURL=types.d.ts.map
|
package/esm/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,MAAM,GACZ,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,qCAAqC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAElG,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClD;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,MAAM,GACZ,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,qCAAqC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAElG,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClD;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACnE;;;OAGG;IACH,kBAAkB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;CACL,CAAC"}
|
package/esm/utils.js
CHANGED
|
@@ -10,9 +10,9 @@ export function getAbsoluteVisualizationHref(wsId, visId, useHostedAnalyticalDes
|
|
|
10
10
|
}
|
|
11
11
|
export function getSettingHref(section, action) {
|
|
12
12
|
if (!action) {
|
|
13
|
-
return `/
|
|
13
|
+
return `/ai-hub#/${section}`;
|
|
14
14
|
}
|
|
15
|
-
return `/
|
|
15
|
+
return `/ai-hub#/${section}/${action}`;
|
|
16
16
|
}
|
|
17
17
|
export function getAbsoluteSettingHref(section, action) {
|
|
18
18
|
return `${window.location.origin}${getSettingHref(section, action)}`;
|
|
@@ -33,9 +33,9 @@ export function getAbsoluteWorkspaceSettingHref(workspaceId, section, action) {
|
|
|
33
33
|
// workspaces list.
|
|
34
34
|
export function getShellAppOrgSettingHref(section, action) {
|
|
35
35
|
if (!action) {
|
|
36
|
-
return `/organization/settings/
|
|
36
|
+
return `/organization/settings/ai-hub#/${section}`;
|
|
37
37
|
}
|
|
38
|
-
return `/organization/settings/
|
|
38
|
+
return `/organization/settings/ai-hub#/${section}/${action}`;
|
|
39
39
|
}
|
|
40
40
|
export function getAbsoluteShellAppOrgSettingHref(section, action) {
|
|
41
41
|
return `${window.location.origin}${getShellAppOrgSettingHref(section, action)}`;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-gen-ai",
|
|
3
|
-
"version": "11.42.0
|
|
3
|
+
"version": "11.42.0",
|
|
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/sdk-model": "11.42.0
|
|
60
|
-
"@gooddata/sdk-
|
|
61
|
-
"@gooddata/api-client-tiger": "11.42.0
|
|
62
|
-
"@gooddata/sdk-ui
|
|
63
|
-
"@gooddata/sdk-ui-
|
|
64
|
-
"@gooddata/sdk-ui-
|
|
65
|
-
"@gooddata/sdk-
|
|
66
|
-
"@gooddata/sdk-ui-
|
|
67
|
-
"@gooddata/sdk-ui-
|
|
68
|
-
"@gooddata/sdk-ui-semantic-search": "11.42.0
|
|
69
|
-
"@gooddata/
|
|
70
|
-
"@gooddata/
|
|
59
|
+
"@gooddata/sdk-model": "11.42.0",
|
|
60
|
+
"@gooddata/sdk-backend-spi": "11.42.0",
|
|
61
|
+
"@gooddata/api-client-tiger": "11.42.0",
|
|
62
|
+
"@gooddata/sdk-ui": "11.42.0",
|
|
63
|
+
"@gooddata/sdk-ui-charts": "11.42.0",
|
|
64
|
+
"@gooddata/sdk-ui-dashboard": "11.42.0",
|
|
65
|
+
"@gooddata/sdk-ui-filters": "11.42.0",
|
|
66
|
+
"@gooddata/sdk-ui-kit": "11.42.0",
|
|
67
|
+
"@gooddata/sdk-ui-pivot": "11.42.0",
|
|
68
|
+
"@gooddata/sdk-ui-semantic-search": "11.42.0",
|
|
69
|
+
"@gooddata/sdk-ui-theme-provider": "11.42.0",
|
|
70
|
+
"@gooddata/util": "11.42.0"
|
|
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.42.0
|
|
114
|
-
"@gooddata/
|
|
115
|
-
"@gooddata/
|
|
116
|
-
"@gooddata/
|
|
117
|
-
"@gooddata/
|
|
118
|
-
"@gooddata/sdk-ui-theme-provider": "11.42.0
|
|
119
|
-
"@gooddata/stylelint-config": "11.42.0
|
|
113
|
+
"@gooddata/eslint-config": "11.42.0",
|
|
114
|
+
"@gooddata/oxlint-config": "11.42.0",
|
|
115
|
+
"@gooddata/reference-workspace": "11.42.0",
|
|
116
|
+
"@gooddata/sdk-backend-mockingbird": "11.42.0",
|
|
117
|
+
"@gooddata/i18n-toolkit": "11.42.0",
|
|
118
|
+
"@gooddata/sdk-ui-theme-provider": "11.42.0",
|
|
119
|
+
"@gooddata/stylelint-config": "11.42.0"
|
|
120
120
|
},
|
|
121
121
|
"peerDependencies": {
|
|
122
122
|
"react": "^18.0.0 || ^19.0.0",
|
package/styles/css/main.css
CHANGED
|
@@ -12928,6 +12928,7 @@ body.gd-kda-dialog-opened .highcharts-tooltip-container {
|
|
|
12928
12928
|
display: flex;
|
|
12929
12929
|
align-items: center;
|
|
12930
12930
|
gap: 15px;
|
|
12931
|
+
margin: 18px 0;
|
|
12931
12932
|
color: var(--gd-palette-complementary-6, #94a1ad);
|
|
12932
12933
|
font-size: 12px;
|
|
12933
12934
|
line-height: 23px;
|