@gooddata/sdk-ui-gen-ai 11.50.0-alpha.1 → 11.50.0-alpha.2
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 +216 -203
- package/esm/components/ConfigContext.d.ts +5 -1
- package/esm/components/ConfigContext.d.ts.map +1 -1
- package/esm/components/GenAIChatDialogConnected.d.ts +4 -1
- package/esm/components/GenAIChatDialogConnected.d.ts.map +1 -1
- package/esm/components/GenAIChatDialogConnected.js +9 -2
- package/esm/components/messages/ConversationItemContents.d.ts.map +1 -1
- package/esm/components/messages/ConversationItemContents.js +1 -1
- package/esm/components/messages/contents/VisualizationContents.d.ts.map +1 -1
- package/esm/components/messages/contents/VisualizationContents.js +8 -4
- package/esm/components/messages/conversationContents/ConversationDashboardContent.d.ts +1 -0
- package/esm/components/messages/conversationContents/ConversationDashboardContent.d.ts.map +1 -1
- package/esm/components/messages/conversationContents/ConversationDashboardContent.js +34 -2
- package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts.map +1 -1
- package/esm/components/messages/conversationContents/ConversationVisualizationContent.js +10 -4
- package/esm/index.d.ts +1 -1
- package/esm/index.d.ts.map +1 -1
- package/esm/index.js +1 -1
- package/esm/sdk-ui-gen-ai.d.ts +28 -1
- package/esm/store/chatWindow/chatWindowSlice.d.ts +9 -2
- package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -1
- package/esm/store/chatWindow/chatWindowSlice.js +2 -1
- package/esm/store/events.d.ts +21 -2
- package/esm/store/events.d.ts.map +1 -1
- package/esm/store/events.js +7 -0
- package/esm/store/sideEffects/onChatOpenSync.d.ts +1 -9
- package/esm/store/sideEffects/onChatOpenSync.d.ts.map +1 -1
- package/esm/store/sideEffects/onChatOpenSync.js +7 -3
- package/esm/store/sideEffects/onDefinitionReceivedTrigger.d.ts +7 -0
- package/esm/store/sideEffects/onDefinitionReceivedTrigger.d.ts.map +1 -0
- package/esm/store/sideEffects/onDefinitionReceivedTrigger.js +49 -0
- package/esm/store/sideEffects/onEvent.d.ts.map +1 -1
- package/esm/store/sideEffects/onEvent.js +11 -1
- package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -1
- package/esm/store/sideEffects/onThreadLoad.js +9 -6
- package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
- package/esm/store/sideEffects/onUserMessage.js +15 -2
- package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts.map +1 -1
- package/esm/store/sideEffects/onVisualizationSuccessSave.js +7 -4
- package/esm/tsdoc-metadata.json +1 -1
- package/esm/utils.d.ts +3 -2
- package/esm/utils.d.ts.map +1 -1
- package/esm/utils.js +18 -3
- package/package.json +20 -20
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PropsWithChildren } from "react";
|
|
2
|
-
import { type CatalogItem, type GenAIObjectType } from "@gooddata/sdk-model";
|
|
2
|
+
import { type CatalogItem, type GenAIObjectType, type IDashboard, type IInsight } from "@gooddata/sdk-model";
|
|
3
3
|
export type ConfigContext = {
|
|
4
4
|
allowNativeLinks?: boolean;
|
|
5
5
|
canManage?: boolean;
|
|
@@ -19,6 +19,10 @@ export type LinkHandlerEvent = {
|
|
|
19
19
|
itemUrl: string;
|
|
20
20
|
preventDefault: () => void;
|
|
21
21
|
section?: "ai";
|
|
22
|
+
dashboard?: IDashboard;
|
|
23
|
+
dashboardStatus?: "saved" | "draft";
|
|
24
|
+
visualization?: IInsight;
|
|
25
|
+
visualizationStatus?: "saved" | "draft";
|
|
22
26
|
};
|
|
23
27
|
export declare function ConfigProvider({ children, allowNativeLinks, linkHandler, catalogItems, canManage, canAnalyze, canFullControl }: PropsWithChildren<ConfigContext>): import("react/jsx-runtime").JSX.Element;
|
|
24
28
|
export declare const useConfig: () => ConfigContext;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigContext.d.ts","sourceRoot":"","sources":["../../src/components/ConfigContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAsC,MAAM,OAAO,CAAC;AAEnF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ConfigContext.d.ts","sourceRoot":"","sources":["../../src/components/ConfigContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAsC,MAAM,OAAO,CAAC;AAEnF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE7G,MAAM,MAAM,aAAa,GAAG;IACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,KAAK,MAAM,GAAG,SAAS,CAAC;IACvE,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,SAAS,GAAG,eAAe,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IACpC,aAAa,CAAC,EAAE,QAAQ,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC3C,CAAC;AAIF,wBAAgB,cAAc,CAAC,EAC3B,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACjB,EAAE,iBAAiB,CAAC,aAAa,CAAC,2CA6BlC;AAED,eAAO,MAAM,SAAS,qBAErB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type RefObject } from "react";
|
|
2
2
|
import { type IAnalyticalBackend, type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
|
|
3
3
|
import type { GenAIObjectType, IColorPalette, IGenAIUserContext } from "@gooddata/sdk-model";
|
|
4
|
-
import { type ChatAssistantMessageEvent, type ChatClosedEvent, type ChatCopyToClipboardEvent, type ChatEvent, type ChatFeedbackErrorEvent, type ChatFeedbackEvent, type ChatOpenedEvent, type ChatResetEvent, type ChatSaveVisualizationErrorEvent, type ChatSaveVisualizationSuccessEvent, type ChatUserMessageEvent } from "../store/events.js";
|
|
4
|
+
import { type ChatAssistantMessageEvent, type ChatClosedEvent, type ChatCopyToClipboardEvent, type ChatDefinitionReceivedEvent, type ChatEvent, type ChatFeedbackErrorEvent, type ChatFeedbackEvent, type ChatOpenedEvent, type ChatResetEvent, type ChatSaveVisualizationErrorEvent, type ChatSaveVisualizationSuccessEvent, type ChatUserMessageEvent } from "../store/events.js";
|
|
5
5
|
import { type LinkHandlerEvent } from "./ConfigContext.js";
|
|
6
6
|
/**
|
|
7
7
|
* Discriminated union of GenAI chat events surfaced to a caller via {@link IGenAIChatDialogConnectedProps.onEvent}.
|
|
@@ -43,6 +43,9 @@ export type GenAIChatConnectedEvent = {
|
|
|
43
43
|
} | {
|
|
44
44
|
name: "copy-to-clipboard";
|
|
45
45
|
payload: ChatCopyToClipboardEvent;
|
|
46
|
+
} | {
|
|
47
|
+
name: "definition-received";
|
|
48
|
+
payload: ChatDefinitionReceivedEvent;
|
|
46
49
|
};
|
|
47
50
|
/**
|
|
48
51
|
* Props for {@link GenAIChatDialogConnected}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIChatDialogConnected.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatDialogConnected.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAC;AAE1F,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAI7F,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,SAAS,EACd,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,+BAA+B,EACpC,KAAK,iCAAiC,EACtC,KAAK,oBAAoB,
|
|
1
|
+
{"version":3,"file":"GenAIChatDialogConnected.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatDialogConnected.tsx"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
4
4
|
import { makeTextContents, makeUserItem, makeUserMessage } from "../model.js";
|
|
5
5
|
import { setAmbientUserContextAction, setUserContextAction } from "../store/chatWindow/chatWindowSlice.js";
|
|
6
|
-
import { isChatAssistantMessageEvent, isChatClosedEvent, isChatCopyToClipboardEvent, isChatFeedbackErrorEvent, isChatFeedbackEvent, isChatOpenedEvent, isChatResetEvent, isChatSaveVisualizationErrorEvent, isChatSaveVisualizationSuccessEvent, isChatUserMessageEvent, } from "../store/events.js";
|
|
6
|
+
import { isChatAssistantMessageEvent, isChatClosedEvent, isChatCopyToClipboardEvent, isChatDefinitionReceivedEvent, isChatFeedbackErrorEvent, isChatFeedbackEvent, isChatOpenedEvent, isChatResetEvent, isChatSaveVisualizationErrorEvent, isChatSaveVisualizationSuccessEvent, isChatUserMessageEvent, } from "../store/events.js";
|
|
7
7
|
import { clearThreadAction, newMessageAction, setSelectedAgentAction, } from "../store/messages/messagesSlice.js";
|
|
8
8
|
import { GenAIChatDialog } from "./GenAIChatDialog.js";
|
|
9
9
|
/**
|
|
@@ -18,7 +18,11 @@ import { GenAIChatDialog } from "./GenAIChatDialog.js";
|
|
|
18
18
|
* @internal
|
|
19
19
|
*/
|
|
20
20
|
export function GenAIChatDialogConnected({ backend, workspace, locale, canManage, canAnalyze, canFullControl, settings, agentId, isOpen, onOpen, onClose, askedQuestion, askSeq, userContext, ambientUserContext, appendToChat, replaceUserContext, includeTags, excludeTags, objectTypes: objectTypesOverride, onEvent, onAnyEvent, dialogPosition, className, colorPalette, allowNativeLinks = true, onLinkClick, returnFocusTo, }) {
|
|
21
|
-
const defaultLinkClick = useCallback(({ itemUrl, newTab, preventDefault }) => {
|
|
21
|
+
const defaultLinkClick = useCallback(({ itemUrl, newTab, preventDefault, type, dashboardStatus, }) => {
|
|
22
|
+
// NOTE: If dashboard is draft, do nothing for now
|
|
23
|
+
if (type === "dashboard" && dashboardStatus === "draft") {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
22
26
|
if (itemUrl) {
|
|
23
27
|
preventDefault();
|
|
24
28
|
if (newTab) {
|
|
@@ -69,6 +73,9 @@ export function GenAIChatDialogConnected({ backend, workspace, locale, canManage
|
|
|
69
73
|
else if (isChatCopyToClipboardEvent(event)) {
|
|
70
74
|
onEvent({ name: "copy-to-clipboard", payload: event });
|
|
71
75
|
}
|
|
76
|
+
else if (isChatDefinitionReceivedEvent(event)) {
|
|
77
|
+
onEvent({ name: "definition-received", payload: event });
|
|
78
|
+
}
|
|
72
79
|
},
|
|
73
80
|
},
|
|
74
81
|
], [onEvent, onAnyEvent]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationItemContents.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ConversationItemContents.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,0BAA0B,EAE/B,KAAK,iBAAiB,EACzB,MAAM,gBAAgB,CAAC;AAexB,KAAK,6BAA6B,GAAG;IACjC,OAAO,EAAE,0BAA0B,CAAC;IACpC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,6BAA6B,
|
|
1
|
+
{"version":3,"file":"ConversationItemContents.d.ts","sourceRoot":"","sources":["../../../src/components/messages/ConversationItemContents.tsx"],"names":[],"mappings":"AAIA,OAAO,EAGH,KAAK,0BAA0B,EAE/B,KAAK,iBAAiB,EACzB,MAAM,gBAAgB,CAAC;AAexB,KAAK,6BAA6B,GAAG;IACjC,OAAO,EAAE,0BAA0B,CAAC;IACpC,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,6BAA6B,kDAwIzG"}
|
|
@@ -47,7 +47,7 @@ export function ConversationItemContents({ message, references, isLoading }) {
|
|
|
47
47
|
return (_jsx(ConversationWhatIfContent, { message: message, part: part, whatIf: whatIf }, index));
|
|
48
48
|
}
|
|
49
49
|
if (part.type === "dashboard") {
|
|
50
|
-
return (_jsx(ConversationDashboardContent, { message: message, part: part, dashboard: part.dashboard }, index));
|
|
50
|
+
return (_jsx(ConversationDashboardContent, { message: message, part: part, dashboard: part.dashboard, saved: part.saved }, index));
|
|
51
51
|
}
|
|
52
52
|
// Add more multipart types if needed
|
|
53
53
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VisualizationContents.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/contents/VisualizationContents.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAEH,KAAK,aAAa,EAYrB,MAAM,qBAAqB,CAAC;AAgD7B,OAAO,EAAE,KAAK,qBAAqB,EAAqC,MAAM,mBAAmB,CAAC;AAMlG,OAAO,EAEH,0BAA0B,EAC7B,MAAM,8CAA8C,CAAC;AAgCtD,MAAM,MAAM,0BAA0B,GAAG;IACrC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,oBAAoB,CAAC,EAAE,OAAO,0BAA0B,CAAC;CAC5D,CAAC;AAEF,iBAAS,kCAAkC,CAAC,EACxC,OAAO,EACP,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAA0B,EAC1B,4BAAoC,EACpC,oBAA4B,EAC5B,oBAA4B,EAC5B,WAAW,EACX,eAAe,EACf,eAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACvB,EAAE,0BAA0B,
|
|
1
|
+
{"version":3,"file":"VisualizationContents.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/contents/VisualizationContents.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAEH,KAAK,aAAa,EAYrB,MAAM,qBAAqB,CAAC;AAgD7B,OAAO,EAAE,KAAK,qBAAqB,EAAqC,MAAM,mBAAmB,CAAC;AAMlG,OAAO,EAEH,0BAA0B,EAC7B,MAAM,8CAA8C,CAAC;AAgCtD,MAAM,MAAM,0BAA0B,GAAG;IACrC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,oBAAoB,CAAC,EAAE,OAAO,0BAA0B,CAAC;CAC5D,CAAC;AAEF,iBAAS,kCAAkC,CAAC,EACxC,OAAO,EACP,SAAS,EACT,WAAW,EACX,YAAY,EACZ,mBAA0B,EAC1B,4BAAoC,EACpC,oBAA4B,EAC5B,oBAA4B,EAC5B,WAAW,EACX,eAAe,EACf,eAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACvB,EAAE,0BAA0B,2CA+sB5B;AA2XD,eAAO,MAAM,8BAA8B;;;;;;;EAGN,CAAC"}
|
|
@@ -130,13 +130,15 @@ function VisualizationContentsComponentCore({ content, messageId, useMarkdown, c
|
|
|
130
130
|
if (!vis?.savedVisualizationId) {
|
|
131
131
|
return;
|
|
132
132
|
}
|
|
133
|
+
const visualizationStatus = "saved";
|
|
133
134
|
config.linkHandler?.({
|
|
134
135
|
id: vis.id,
|
|
135
136
|
type: "visualization",
|
|
136
137
|
workspaceId,
|
|
137
138
|
newTab: e.metaKey,
|
|
138
139
|
preventDefault: e.preventDefault.bind(e),
|
|
139
|
-
itemUrl: getVisualizationHref(workspaceId, vis.savedVisualizationId, useHostedAnalyticalDesigner),
|
|
140
|
+
itemUrl: getVisualizationHref(workspaceId, vis.savedVisualizationId, visualizationStatus, useHostedAnalyticalDesigner),
|
|
141
|
+
visualizationStatus,
|
|
140
142
|
});
|
|
141
143
|
e.stopPropagation();
|
|
142
144
|
};
|
|
@@ -149,7 +151,7 @@ function VisualizationContentsComponentCore({ content, messageId, useMarkdown, c
|
|
|
149
151
|
case "button-open":
|
|
150
152
|
if (visualization?.savedVisualizationId) {
|
|
151
153
|
if (config.allowNativeLinks) {
|
|
152
|
-
window.location.href = getVisualizationHref(workspaceId, visualization.savedVisualizationId, useHostedAnalyticalDesigner);
|
|
154
|
+
window.location.href = getVisualizationHref(workspaceId, visualization.savedVisualizationId, "saved", useHostedAnalyticalDesigner);
|
|
153
155
|
}
|
|
154
156
|
else {
|
|
155
157
|
handleOpen(e, visualization);
|
|
@@ -162,9 +164,10 @@ function VisualizationContentsComponentCore({ content, messageId, useMarkdown, c
|
|
|
162
164
|
break;
|
|
163
165
|
case "button-copy":
|
|
164
166
|
if (visualization?.savedVisualizationId) {
|
|
167
|
+
const visualizationStatus = "saved";
|
|
165
168
|
let link = undefined;
|
|
166
169
|
if (config.allowNativeLinks) {
|
|
167
|
-
link = getAbsoluteVisualizationHref(workspaceId, visualization.savedVisualizationId, useHostedAnalyticalDesigner);
|
|
170
|
+
link = getAbsoluteVisualizationHref(workspaceId, visualization.savedVisualizationId, visualizationStatus, useHostedAnalyticalDesigner);
|
|
168
171
|
}
|
|
169
172
|
else {
|
|
170
173
|
link = config.linkHandler?.({
|
|
@@ -173,7 +176,8 @@ function VisualizationContentsComponentCore({ content, messageId, useMarkdown, c
|
|
|
173
176
|
workspaceId,
|
|
174
177
|
newTab: e.metaKey,
|
|
175
178
|
preventDefault: e.preventDefault.bind(e),
|
|
176
|
-
itemUrl: getAbsoluteVisualizationHref(workspaceId, visualization.savedVisualizationId, useHostedAnalyticalDesigner),
|
|
179
|
+
itemUrl: getAbsoluteVisualizationHref(workspaceId, visualization.savedVisualizationId, visualizationStatus, useHostedAnalyticalDesigner),
|
|
180
|
+
visualizationStatus,
|
|
177
181
|
});
|
|
178
182
|
}
|
|
179
183
|
if (link) {
|
|
@@ -4,6 +4,7 @@ export type ConversationDashboardContentProps = {
|
|
|
4
4
|
message: IChatConversationLocalItem;
|
|
5
5
|
part: IChatConversationMultipartLocalPart;
|
|
6
6
|
dashboard?: IDashboard | null;
|
|
7
|
+
saved?: boolean;
|
|
7
8
|
className?: string;
|
|
8
9
|
};
|
|
9
10
|
export declare function ConversationDashboardContent(props: ConversationDashboardContentProps): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationDashboardContent.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/conversationContents/ConversationDashboardContent.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConversationDashboardContent.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/conversationContents/ConversationDashboardContent.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAItD,OAAO,KAAK,EAAE,0BAA0B,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAKzG,MAAM,MAAM,iCAAiC,GAAG;IAC5C,OAAO,EAAE,0BAA0B,CAAC;IACpC,IAAI,EAAE,mCAAmC,CAAC;IAC1C,SAAS,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,iCAAiC,kDAsGpF"}
|
|
@@ -1,11 +1,43 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
// (C) 2024-2026 GoodData Corporation
|
|
3
|
+
import { useMemo } from "react";
|
|
3
4
|
import cx from "classnames";
|
|
4
5
|
import { FormattedMessage, useIntl } from "react-intl";
|
|
6
|
+
import { useSelector } from "react-redux";
|
|
7
|
+
import { useWorkspaceStrict } from "@gooddata/sdk-ui";
|
|
5
8
|
import { UiButton, UiIcon } from "@gooddata/sdk-ui-kit";
|
|
9
|
+
import { settingsSelector } from "../../../store/chatWindow/chatWindowSelectors.js";
|
|
10
|
+
import { getDashboardHref } from "../../../utils.js";
|
|
11
|
+
import { useConfig } from "../../ConfigContext.js";
|
|
6
12
|
export function ConversationDashboardContent(props) {
|
|
7
|
-
const { className, dashboard } = props;
|
|
13
|
+
const { className, dashboard, saved } = props;
|
|
8
14
|
const intl = useIntl();
|
|
15
|
+
const config = useConfig();
|
|
16
|
+
const workspaceId = useWorkspaceStrict();
|
|
17
|
+
const useHostedDashboards = Boolean(useSelector(settingsSelector)?.enableShellApplication_dashboards);
|
|
18
|
+
const handleOpenDashboard = useMemo(() => {
|
|
19
|
+
if (!dashboard) {
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
return (e) => {
|
|
23
|
+
const dashboardStatus = saved ? "saved" : "draft";
|
|
24
|
+
if (config.allowNativeLinks) {
|
|
25
|
+
window.location.href = getDashboardHref(workspaceId, dashboard.identifier, dashboardStatus, useHostedDashboards);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
config.linkHandler?.({
|
|
29
|
+
type: "dashboard",
|
|
30
|
+
id: dashboard.identifier,
|
|
31
|
+
workspaceId,
|
|
32
|
+
newTab: e.metaKey,
|
|
33
|
+
preventDefault: e.preventDefault.bind(e),
|
|
34
|
+
itemUrl: getDashboardHref(workspaceId, dashboard.identifier, dashboardStatus, useHostedDashboards),
|
|
35
|
+
dashboard,
|
|
36
|
+
dashboardStatus,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}, [dashboard, config, workspaceId, useHostedDashboards, saved]);
|
|
9
41
|
const classNames = cx("gd-gen-ai-chat__conversation__item__content", "gd-gen-ai-chat__conversation__item__content--dashboard", className);
|
|
10
42
|
if (!dashboard) {
|
|
11
43
|
return null;
|
|
@@ -20,7 +52,7 @@ export function ConversationDashboardContent(props) {
|
|
|
20
52
|
] }), _jsxs("li", { className: "gd-gen-ai-chat__conversation__item__content-dashboard-item", children: [
|
|
21
53
|
_jsxs("div", { className: "gd-gen-ai-chat__conversation__item__content-dashboard-item-title", children: [intl.formatMessage({ id: "gd.gen-ai.dashboard.description" }), ":"] }), _jsx("div", { className: "gd-gen-ai-chat__conversation__item__content-dashboard-item-description", children: _jsx("p", { children: dashboard.description }) })
|
|
22
54
|
] })
|
|
23
|
-
] }), _jsx("div", { className: "gd-gen-ai-chat__conversation__item__content-dashboard-item-buttons", children: _jsx(UiButton, { label: intl.formatMessage({ id: "gd.gen-ai.dashboard.open-dashboard" }), variant: "tertiary" }) })
|
|
55
|
+
] }), _jsx("div", { className: "gd-gen-ai-chat__conversation__item__content-dashboard-item-buttons", children: _jsx(UiButton, { label: intl.formatMessage({ id: "gd.gen-ai.dashboard.open-dashboard" }), variant: "tertiary", onClick: handleOpenDashboard }) })
|
|
24
56
|
] })
|
|
25
57
|
] }));
|
|
26
58
|
}
|
package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConversationVisualizationContent.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/conversationContents/ConversationVisualizationContent.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,aAAa,EAAgD,MAAM,qBAAqB,CAAC;AAwBvG,OAAO,EAAE,KAAK,0BAA0B,EAAE,KAAK,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAM9G,OAAO,EAEH,0BAA0B,EAC7B,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAwBlF,MAAM,MAAM,qCAAqC,GAAG;IAChD,OAAO,EAAE,0BAA0B,CAAC;IACpC,IAAI,EAAE,mCAAmC,CAAC;IAC1C,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,aAAa,EAAE,WAAW,CAAC,qCAAqC,CAAC,eAAe,CAAC,CAAC,CAAC;IACnF,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,oBAAoB,CAAC,EAAE,OAAO,0BAA0B,CAAC;IACzD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,4BAA4B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF,iBAAS,oCAAoC,CAAC,EAC1C,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,EAC/B,EAAE,qCAAqC,2CAmGvC;
|
|
1
|
+
{"version":3,"file":"ConversationVisualizationContent.d.ts","sourceRoot":"","sources":["../../../../src/components/messages/conversationContents/ConversationVisualizationContent.tsx"],"names":[],"mappings":"AAoBA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,aAAa,EAAgD,MAAM,qBAAqB,CAAC;AAwBvG,OAAO,EAAE,KAAK,0BAA0B,EAAE,KAAK,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAM9G,OAAO,EAEH,0BAA0B,EAC7B,MAAM,8CAA8C,CAAC;AAGtD,OAAO,EAAE,KAAK,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAwBlF,MAAM,MAAM,qCAAqC,GAAG;IAChD,OAAO,EAAE,0BAA0B,CAAC;IACpC,IAAI,EAAE,mCAAmC,CAAC;IAC1C,QAAQ,CAAC,EAAE,yBAAyB,CAAC;IACrC,aAAa,EAAE,WAAW,CAAC,qCAAqC,CAAC,eAAe,CAAC,CAAC,CAAC;IACnF,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,oBAAoB,CAAC,EAAE,OAAO,0BAA0B,CAAC;IACzD,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,4BAA4B,CAAC,EAAE,OAAO,CAAC;CAC1C,CAAC;AAEF,iBAAS,oCAAoC,CAAC,EAC1C,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,aAAa,EACb,SAAS,EACT,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,4BAA4B,EAC/B,EAAE,qCAAqC,2CAmGvC;AAmnBD,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;EAGN,CAAC"}
|
|
@@ -283,8 +283,9 @@ function useHandlers({ visualization, setSaveDialogOpen, onCopyToClipboard }) {
|
|
|
283
283
|
return;
|
|
284
284
|
}
|
|
285
285
|
if (isSaved) {
|
|
286
|
+
const visualizationStatus = "saved";
|
|
286
287
|
if (config.allowNativeLinks) {
|
|
287
|
-
window.location.href = getVisualizationHref(workspaceId, visualization.insight.identifier, useHostedAnalyticalDesigner);
|
|
288
|
+
window.location.href = getVisualizationHref(workspaceId, visualization.insight.identifier, visualizationStatus, useHostedAnalyticalDesigner);
|
|
288
289
|
}
|
|
289
290
|
else {
|
|
290
291
|
config.linkHandler?.({
|
|
@@ -293,7 +294,9 @@ function useHandlers({ visualization, setSaveDialogOpen, onCopyToClipboard }) {
|
|
|
293
294
|
workspaceId,
|
|
294
295
|
newTab: e.metaKey,
|
|
295
296
|
preventDefault: e.preventDefault.bind(e),
|
|
296
|
-
itemUrl: getVisualizationHref(workspaceId, visualization.insight.identifier, useHostedAnalyticalDesigner),
|
|
297
|
+
itemUrl: getVisualizationHref(workspaceId, visualization.insight.identifier, visualizationStatus, useHostedAnalyticalDesigner),
|
|
298
|
+
visualization,
|
|
299
|
+
visualizationStatus,
|
|
297
300
|
});
|
|
298
301
|
e.stopPropagation();
|
|
299
302
|
}
|
|
@@ -306,9 +309,10 @@ function useHandlers({ visualization, setSaveDialogOpen, onCopyToClipboard }) {
|
|
|
306
309
|
if (!visualization) {
|
|
307
310
|
return;
|
|
308
311
|
}
|
|
312
|
+
const visualizationStatus = "saved";
|
|
309
313
|
let link = undefined;
|
|
310
314
|
if (config.allowNativeLinks) {
|
|
311
|
-
link = getAbsoluteVisualizationHref(workspaceId, visualization.insight.identifier, useHostedAnalyticalDesigner);
|
|
315
|
+
link = getAbsoluteVisualizationHref(workspaceId, visualization.insight.identifier, visualizationStatus, useHostedAnalyticalDesigner);
|
|
312
316
|
}
|
|
313
317
|
else {
|
|
314
318
|
link = config.linkHandler?.({
|
|
@@ -317,7 +321,9 @@ function useHandlers({ visualization, setSaveDialogOpen, onCopyToClipboard }) {
|
|
|
317
321
|
workspaceId,
|
|
318
322
|
newTab: e.metaKey,
|
|
319
323
|
preventDefault: e.preventDefault.bind(e),
|
|
320
|
-
itemUrl: getAbsoluteVisualizationHref(workspaceId, visualization.insight.identifier, useHostedAnalyticalDesigner),
|
|
324
|
+
itemUrl: getAbsoluteVisualizationHref(workspaceId, visualization.insight.identifier, visualizationStatus, useHostedAnalyticalDesigner),
|
|
325
|
+
visualization,
|
|
326
|
+
visualizationStatus,
|
|
321
327
|
});
|
|
322
328
|
}
|
|
323
329
|
if (link) {
|
package/esm/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export { GenAIChat, GenAIAssistant, type GenAIChatProps, type GenAIAssistantProp
|
|
|
7
7
|
export { GenAIConversations, type GenAIConversationsProps } from "./components/GenAiConversations.js";
|
|
8
8
|
export { GenAiStore, type GenAiStoreProps } from "./components/GenAiStore.js";
|
|
9
9
|
export { makeUserMessage, makeTextContents, makeUserItem, makeAssistantItem, type Message, type BaseMessage, type UserMessage, type AssistantMessage, type Contents, type TextContents, type SearchContents, type SemanticSearchContents, type RoutingContents, type ReasoningContents, type ReasoningStep, type ReasoningThought, type VisualizationContents, type ChangeAnalysisContents, type ErrorContents, type TextContentObject, type IChatConversationLocalContent, type IChatConversationLocalItem, type IChatConversationErrorContent, type IChatConversationMultipartLocalPart, type IChatConversationLocal, type IChatConversationSystemContent, } from "./model.js";
|
|
10
|
-
export { type ChatEventHandler, type BaseEvent, type ChatAssistantMessageEvent, type ChatUserMessageEvent, type ChatClosedEvent, type ChatOpenedEvent, type ChatResetEvent, type ChatFeedbackEvent, type ChatFeedbackErrorEvent, type ChatEvent, type ChatVisualizationErrorEvent, type ChatSaveVisualizationErrorEvent, type ChatSaveVisualizationSuccessEvent, type ChatCopyToClipboardEvent, type ChatConversationPinnedEvent, type ChatConversationPinErrorEvent, type ChatConversationDeleteEvent, type ChatConversationDeletedSuccessEvent, type ChatConversationDeletedErrorEvent, type ChatConversationRenameEvent, type ChatConversationRenamedSuccessEvent, type ChatConversationRenamedErrorEvent, type ChatConversationChangedEvent, isChatAssistantMessageEvent, isChatUserMessageEvent, isChatClosedEvent, isChatOpenedEvent, isChatResetEvent, isChatFeedbackEvent, isChatFeedbackErrorEvent, isChatVisualizationErrorEvent, isChatSaveVisualizationErrorEvent, isChatSaveVisualizationSuccessEvent, isChatCopyToClipboardEvent, isChatConversationPinnedEvent, isChatConversationPinErrorEvent, isChatConversationDeleteEvent, isChatConversationDeletedErrorEvent, isChatConversationDeletedSuccessEvent, isChatConversationRenameEvent, isChatConversationRenamedSuccessEvent, isChatConversationRenamedErrorEvent, isChatConversationChangedEvent, } from "./store/events.js";
|
|
10
|
+
export { type ChatEventHandler, type BaseEvent, type ChatAssistantMessageEvent, type ChatUserMessageEvent, type ChatClosedEvent, type ChatOpenedEvent, type ChatResetEvent, type ChatFeedbackEvent, type ChatFeedbackErrorEvent, type ChatEvent, type ChatVisualizationErrorEvent, type ChatSaveVisualizationErrorEvent, type ChatSaveVisualizationSuccessEvent, type ChatCopyToClipboardEvent, type ChatConversationPinnedEvent, type ChatConversationPinErrorEvent, type ChatConversationDeleteEvent, type ChatConversationDeletedSuccessEvent, type ChatConversationDeletedErrorEvent, type ChatConversationRenameEvent, type ChatConversationRenamedSuccessEvent, type ChatConversationRenamedErrorEvent, type ChatConversationChangedEvent, type ChatDefinitionReceivedEvent, isChatAssistantMessageEvent, isChatUserMessageEvent, isChatClosedEvent, isChatOpenedEvent, isChatResetEvent, isChatFeedbackEvent, isChatFeedbackErrorEvent, isChatVisualizationErrorEvent, isChatSaveVisualizationErrorEvent, isChatSaveVisualizationSuccessEvent, isChatCopyToClipboardEvent, isChatConversationPinnedEvent, isChatConversationPinErrorEvent, isChatConversationDeleteEvent, isChatConversationDeletedErrorEvent, isChatConversationDeletedSuccessEvent, isChatConversationRenameEvent, isChatConversationRenamedSuccessEvent, isChatConversationRenamedErrorEvent, isChatConversationChangedEvent, isChatDefinitionReceivedEvent, } from "./store/events.js";
|
|
11
11
|
export { clearThreadAction, newMessageAction, startNewConversationAction, setCurrentConversationAction, } from "./store/messages/messagesSlice.js";
|
|
12
12
|
export { type LinkHandlerEvent } from "./components/ConfigContext.js";
|
|
13
13
|
export { useGenAiChatAvailability } from "./hooks/useGenAiChatAvailability.js";
|
package/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EACH,SAAS,EACT,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,mBAAmB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACxC,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,GACtC,MAAM,YAAY,CAAC;AACpB,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACd,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,mCAAmC,EACxC,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAChC,KAAK,mCAAmC,EACxC,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,mCAAmC,EACnC,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,mCAAmC,EACnC,qCAAqC,EACrC,6BAA6B,EAC7B,qCAAqC,EACrC,mCAAmC,EACnC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA;;;;GAIG;AAEH,OAAO,EACH,SAAS,EACT,cAAc,EACd,KAAK,cAAc,EACnB,KAAK,mBAAmB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AACtG,OAAO,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,EACH,eAAe,EACf,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,6BAA6B,EAClC,KAAK,0BAA0B,EAC/B,KAAK,6BAA6B,EAClC,KAAK,mCAAmC,EACxC,KAAK,sBAAsB,EAC3B,KAAK,8BAA8B,GACtC,MAAM,YAAY,CAAC;AACpB,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC3B,KAAK,SAAS,EACd,KAAK,2BAA2B,EAChC,KAAK,+BAA+B,EACpC,KAAK,iCAAiC,EACtC,KAAK,wBAAwB,EAC7B,KAAK,2BAA2B,EAChC,KAAK,6BAA6B,EAClC,KAAK,2BAA2B,EAChC,KAAK,mCAAmC,EACxC,KAAK,iCAAiC,EACtC,KAAK,2BAA2B,EAChC,KAAK,mCAAmC,EACxC,KAAK,iCAAiC,EACtC,KAAK,4BAA4B,EACjC,KAAK,2BAA2B,EAChC,2BAA2B,EAC3B,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,wBAAwB,EACxB,6BAA6B,EAC7B,iCAAiC,EACjC,mCAAmC,EACnC,0BAA0B,EAC1B,6BAA6B,EAC7B,+BAA+B,EAC/B,6BAA6B,EAC7B,mCAAmC,EACnC,qCAAqC,EACrC,6BAA6B,EAC7B,qCAAqC,EACrC,mCAAmC,EACnC,8BAA8B,EAC9B,6BAA6B,GAChC,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACH,iBAAiB,EACjB,gBAAgB,EAChB,0BAA0B,EAC1B,4BAA4B,GAC/B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAI/E,OAAO,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AACzG,OAAO,EACH,mBAAmB,EACnB,yBAAyB,EACzB,KAAK,kBAAkB,GAC1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,EACH,sBAAsB,EACtB,KAAK,qBAAqB,GAC7B,MAAM,4CAA4C,CAAC;AACpD,OAAO,EACH,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,oBAAoB,GAC5B,MAAM,6CAA6C,CAAC"}
|
package/esm/index.js
CHANGED
|
@@ -9,7 +9,7 @@ export { GenAIChat, GenAIAssistant, } from "./components/GenAIChat.js";
|
|
|
9
9
|
export { GenAIConversations } from "./components/GenAiConversations.js";
|
|
10
10
|
export { GenAiStore } from "./components/GenAiStore.js";
|
|
11
11
|
export { makeUserMessage, makeTextContents, makeUserItem, makeAssistantItem, } from "./model.js";
|
|
12
|
-
export { isChatAssistantMessageEvent, isChatUserMessageEvent, isChatClosedEvent, isChatOpenedEvent, isChatResetEvent, isChatFeedbackEvent, isChatFeedbackErrorEvent, isChatVisualizationErrorEvent, isChatSaveVisualizationErrorEvent, isChatSaveVisualizationSuccessEvent, isChatCopyToClipboardEvent, isChatConversationPinnedEvent, isChatConversationPinErrorEvent, isChatConversationDeleteEvent, isChatConversationDeletedErrorEvent, isChatConversationDeletedSuccessEvent, isChatConversationRenameEvent, isChatConversationRenamedSuccessEvent, isChatConversationRenamedErrorEvent, isChatConversationChangedEvent, } from "./store/events.js";
|
|
12
|
+
export { isChatAssistantMessageEvent, isChatUserMessageEvent, isChatClosedEvent, isChatOpenedEvent, isChatResetEvent, isChatFeedbackEvent, isChatFeedbackErrorEvent, isChatVisualizationErrorEvent, isChatSaveVisualizationErrorEvent, isChatSaveVisualizationSuccessEvent, isChatCopyToClipboardEvent, isChatConversationPinnedEvent, isChatConversationPinErrorEvent, isChatConversationDeleteEvent, isChatConversationDeletedErrorEvent, isChatConversationDeletedSuccessEvent, isChatConversationRenameEvent, isChatConversationRenamedSuccessEvent, isChatConversationRenamedErrorEvent, isChatConversationChangedEvent, isChatDefinitionReceivedEvent, } from "./store/events.js";
|
|
13
13
|
export { clearThreadAction, newMessageAction, startNewConversationAction, setCurrentConversationAction, } from "./store/messages/messagesSlice.js";
|
|
14
14
|
export { useGenAiChatAvailability } from "./hooks/useGenAiChatAvailability.js";
|
|
15
15
|
//customization
|
package/esm/sdk-ui-gen-ai.d.ts
CHANGED
|
@@ -19,10 +19,13 @@ import { IChatConversationContent } from '@gooddata/sdk-backend-spi';
|
|
|
19
19
|
import { IChatConversationError } from '@gooddata/sdk-backend-spi';
|
|
20
20
|
import { IChatConversationItem } from '@gooddata/sdk-backend-spi';
|
|
21
21
|
import { IChatConversationMultipartPart } from '@gooddata/sdk-backend-spi';
|
|
22
|
+
import { IChatConversationVisualisationContent } from '@gooddata/sdk-backend-spi';
|
|
22
23
|
import { IChatSuggestions } from '@gooddata/sdk-backend-spi';
|
|
23
24
|
import { IColorPalette } from '@gooddata/sdk-model';
|
|
25
|
+
import { IDashboard } from '@gooddata/sdk-model';
|
|
24
26
|
import type { IGenAIChangeAnalysisParams } from '@gooddata/sdk-model';
|
|
25
27
|
import type { IGenAIVisualization } from '@gooddata/sdk-model';
|
|
28
|
+
import { IInsight } from '@gooddata/sdk-model';
|
|
26
29
|
import type { ISemanticSearchRelationship } from '@gooddata/sdk-model';
|
|
27
30
|
import type { ISemanticSearchResultItem } from '@gooddata/sdk-model';
|
|
28
31
|
import { IUiButtonProps } from '@gooddata/sdk-ui-kit';
|
|
@@ -202,11 +205,25 @@ export declare type ChatCopyToClipboardEvent = BaseEvent & {
|
|
|
202
205
|
content: string;
|
|
203
206
|
};
|
|
204
207
|
|
|
208
|
+
/**
|
|
209
|
+
* A chat definition received event.
|
|
210
|
+
* @public
|
|
211
|
+
*/
|
|
212
|
+
export declare type ChatDefinitionReceivedEvent = BaseEvent & {
|
|
213
|
+
type: "onDefinitionReceived";
|
|
214
|
+
definitionType: "dashboard" | "visualization";
|
|
215
|
+
itemId: string;
|
|
216
|
+
conversationId: string;
|
|
217
|
+
interactionId?: string;
|
|
218
|
+
dashboard?: IDashboard;
|
|
219
|
+
visualization?: NonNullable<IChatConversationVisualisationContent["visualization"]>;
|
|
220
|
+
};
|
|
221
|
+
|
|
205
222
|
/**
|
|
206
223
|
* A union type for all chat events.
|
|
207
224
|
* @public
|
|
208
225
|
*/
|
|
209
|
-
export declare type ChatEvent = ChatOpenedEvent | ChatClosedEvent | ChatResetEvent | ChatConversationPinnedEvent | ChatConversationPinErrorEvent | ChatConversationDeleteEvent | ChatConversationDeletedSuccessEvent | ChatConversationDeletedErrorEvent | ChatConversationRenameEvent | ChatConversationRenamedSuccessEvent | ChatConversationRenamedErrorEvent | ChatUserMessageEvent | ChatAssistantMessageEvent | ChatFeedbackEvent | ChatFeedbackErrorEvent | ChatCopyToClipboardEvent | ChatVisualizationErrorEvent | ChatSaveVisualizationErrorEvent | ChatSaveVisualizationSuccessEvent | ChatConversationChangedEvent;
|
|
226
|
+
export declare type ChatEvent = ChatOpenedEvent | ChatClosedEvent | ChatResetEvent | ChatConversationPinnedEvent | ChatConversationPinErrorEvent | ChatConversationDeleteEvent | ChatConversationDeletedSuccessEvent | ChatConversationDeletedErrorEvent | ChatConversationRenameEvent | ChatConversationRenamedSuccessEvent | ChatConversationRenamedErrorEvent | ChatUserMessageEvent | ChatAssistantMessageEvent | ChatFeedbackEvent | ChatFeedbackErrorEvent | ChatCopyToClipboardEvent | ChatVisualizationErrorEvent | ChatSaveVisualizationErrorEvent | ChatSaveVisualizationSuccessEvent | ChatConversationChangedEvent | ChatDefinitionReceivedEvent;
|
|
210
227
|
|
|
211
228
|
/**
|
|
212
229
|
* An event handler for the Chat component.
|
|
@@ -696,6 +713,12 @@ export declare const isChatConversationRenameEvent: (event: ChatEvent) => event
|
|
|
696
713
|
*/
|
|
697
714
|
export declare const isChatCopyToClipboardEvent: (event: ChatEvent) => event is ChatCopyToClipboardEvent;
|
|
698
715
|
|
|
716
|
+
/**
|
|
717
|
+
* Type guard for the ChatDefinitionReceivedEvent.
|
|
718
|
+
* @public
|
|
719
|
+
*/
|
|
720
|
+
export declare const isChatDefinitionReceivedEvent: (event: ChatEvent) => event is ChatDefinitionReceivedEvent;
|
|
721
|
+
|
|
699
722
|
/**
|
|
700
723
|
* Type guard for the ChatFeedbackErrorEvent.
|
|
701
724
|
* @public
|
|
@@ -765,6 +788,10 @@ export declare type LinkHandlerEvent = {
|
|
|
765
788
|
itemUrl: string;
|
|
766
789
|
preventDefault: () => void;
|
|
767
790
|
section?: "ai";
|
|
791
|
+
dashboard?: IDashboard;
|
|
792
|
+
dashboardStatus?: "saved" | "draft";
|
|
793
|
+
visualization?: IInsight;
|
|
794
|
+
visualizationStatus?: "saved" | "draft";
|
|
768
795
|
};
|
|
769
796
|
|
|
770
797
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type Reducer } from "@reduxjs/toolkit";
|
|
2
2
|
import { type IUserWorkspaceSettings } from "@gooddata/sdk-backend-spi";
|
|
3
|
-
import { type CatalogItem, type GenAIObjectType, type IAllowedRelationshipType, type IColorPalette, type IGenAIUserContext } from "@gooddata/sdk-model";
|
|
3
|
+
import { type CatalogItem, type GenAIObjectType, type IAllowedRelationshipType, type IColorPalette, type IDashboard, type IGenAIUserContext, type IInsight } from "@gooddata/sdk-model";
|
|
4
4
|
import type { IKdaDefinition } from "@gooddata/sdk-ui-dashboard";
|
|
5
5
|
import { type IGenAIContextObject, type StoreContext } from "../../types.js";
|
|
6
6
|
type ChatWindowSliceState = {
|
|
@@ -90,7 +90,14 @@ export declare const setOpenAction: import("@reduxjs/toolkit").ActionCreatorWith
|
|
|
90
90
|
excludeTags?: string[] | undefined;
|
|
91
91
|
}, "chatWindow/setTagsAction">, setCatalogItemsActions: import("@reduxjs/toolkit").ActionCreatorWithOptionalPayload<CatalogItem[] | undefined, "chatWindow/setCatalogItemsActions">, setAllowedRelationshipTypesAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
92
92
|
allowedRelationshipTypes?: IAllowedRelationshipType[] | undefined;
|
|
93
|
-
}, "chatWindow/setAllowedRelationshipTypesAction">,
|
|
93
|
+
}, "chatWindow/setAllowedRelationshipTypesAction">, onDefinitionReceivedAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
94
|
+
definitionType: "dashboard" | "visualization";
|
|
95
|
+
conversationId: string;
|
|
96
|
+
itemId: string;
|
|
97
|
+
interactionId?: string | undefined;
|
|
98
|
+
dashboard?: IDashboard<import("@gooddata/sdk-model").IDashboardWidget> | undefined;
|
|
99
|
+
visualization?: IInsight | undefined;
|
|
100
|
+
}, "chatWindow/onDefinitionReceivedAction">, addContextReferenceAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
94
101
|
object: IGenAIContextObject;
|
|
95
102
|
}, "chatWindow/addContextReferenceAction">, removeContextReferenceAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
|
|
96
103
|
object: IGenAIContextObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chatWindowSlice.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"chatWindowSlice.d.ts","sourceRoot":"","sources":["../../../src/store/chatWindow/chatWindowSlice.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,KAAK,OAAO,EAAe,MAAM,kBAAkB,CAAC;AAEjF,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EACH,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE,OAAO,EAAE,KAAK,mBAAmB,EAAE,KAAK,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE7E,KAAK,oBAAoB,GAAG;IACxB;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,iBAAiB,CAAC,EAAE,cAAc,CAAC;IACnC;;OAEG;IACH,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,wBAAwB,CAAC,EAAE,wBAAwB,EAAE,CAAC;IACtD;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAmBhD,eAAO,MAAM,yBAAyB;;0BAOpC,CAAC;AA6HH,eAAO,MAAM,sBAAsB,EAAE,OAAO,CAAC,oBAAoB,CAA2B,CAAC;AAC7F,eAAO,MACH,aAAa;;gCACb,mBAAmB;;sCACnB,gBAAgB;;mCAChB,qBAAqB;;wCACrB,iBAAiB;;oCACjB,qBAAqB;;wCACrB,0BAA0B;;6CAC1B,mCAAmC;;sDACnC,oBAAoB;;uCACpB,aAAa;;;gCACb,sBAAsB,+HACtB,iCAAiC;;oDACjC,0BAA0B;;;;;;;6CAC1B,yBAAyB;;4CACzB,4BAA4B;;+CAC5B,kBAAkB;;;AAClB;;GAEG;AACH,2BAA2B;;;AAC3B;;GAEG;AACH,oBAAoB;;;qCACG,CAAC"}
|
|
@@ -88,11 +88,12 @@ const chatWindowSlice = createSlice({
|
|
|
88
88
|
setIsPreviewAction: (state, { payload: { isPreview } }) => {
|
|
89
89
|
state.isPreview = isPreview;
|
|
90
90
|
},
|
|
91
|
+
onDefinitionReceivedAction: (state, _action) => state,
|
|
91
92
|
copyToClipboardAction: (state, _action) => state,
|
|
92
93
|
},
|
|
93
94
|
});
|
|
94
95
|
export const chatWindowSliceReducer = chatWindowSlice.reducer;
|
|
95
|
-
export const { setOpenAction, setFullscreenAction, setHistoryAction, setColorPaletteAction, setSettingsAction, copyToClipboardAction, setKeyDriverAnalysisAction, setKeyDriverAnalysisMinimizedAction, setObjectTypesAction, setTagsAction, setCatalogItemsActions, setAllowedRelationshipTypesAction, addContextReferenceAction, removeContextReferenceAction, setIsPreviewAction,
|
|
96
|
+
export const { setOpenAction, setFullscreenAction, setHistoryAction, setColorPaletteAction, setSettingsAction, copyToClipboardAction, setKeyDriverAnalysisAction, setKeyDriverAnalysisMinimizedAction, setObjectTypesAction, setTagsAction, setCatalogItemsActions, setAllowedRelationshipTypesAction, onDefinitionReceivedAction, addContextReferenceAction, removeContextReferenceAction, setIsPreviewAction,
|
|
96
97
|
/**
|
|
97
98
|
* @public
|
|
98
99
|
*/
|
package/esm/store/events.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { type IChatConversation } from "@gooddata/sdk-backend-spi";
|
|
1
|
+
import { type IChatConversation, type IChatConversationVisualisationContent } from "@gooddata/sdk-backend-spi";
|
|
2
|
+
import { type IDashboard } from "@gooddata/sdk-model";
|
|
2
3
|
import { type SdkErrorType } from "@gooddata/sdk-ui";
|
|
3
4
|
import { type IChatConversationLocal, type TextContentObject } from "../model.js";
|
|
4
5
|
/**
|
|
@@ -279,11 +280,29 @@ export type ChatConversationChangedEvent = BaseEvent & {
|
|
|
279
280
|
* @public
|
|
280
281
|
*/
|
|
281
282
|
export declare const isChatConversationChangedEvent: (event: ChatEvent) => event is ChatConversationChangedEvent;
|
|
283
|
+
/**
|
|
284
|
+
* A chat definition received event.
|
|
285
|
+
* @public
|
|
286
|
+
*/
|
|
287
|
+
export type ChatDefinitionReceivedEvent = BaseEvent & {
|
|
288
|
+
type: "onDefinitionReceived";
|
|
289
|
+
definitionType: "dashboard" | "visualization";
|
|
290
|
+
itemId: string;
|
|
291
|
+
conversationId: string;
|
|
292
|
+
interactionId?: string;
|
|
293
|
+
dashboard?: IDashboard;
|
|
294
|
+
visualization?: NonNullable<IChatConversationVisualisationContent["visualization"]>;
|
|
295
|
+
};
|
|
296
|
+
/**
|
|
297
|
+
* Type guard for the ChatDefinitionReceivedEvent.
|
|
298
|
+
* @public
|
|
299
|
+
*/
|
|
300
|
+
export declare const isChatDefinitionReceivedEvent: (event: ChatEvent) => event is ChatDefinitionReceivedEvent;
|
|
282
301
|
/**
|
|
283
302
|
* A union type for all chat events.
|
|
284
303
|
* @public
|
|
285
304
|
*/
|
|
286
|
-
export type ChatEvent = ChatOpenedEvent | ChatClosedEvent | ChatResetEvent | ChatConversationPinnedEvent | ChatConversationPinErrorEvent | ChatConversationDeleteEvent | ChatConversationDeletedSuccessEvent | ChatConversationDeletedErrorEvent | ChatConversationRenameEvent | ChatConversationRenamedSuccessEvent | ChatConversationRenamedErrorEvent | ChatUserMessageEvent | ChatAssistantMessageEvent | ChatFeedbackEvent | ChatFeedbackErrorEvent | ChatCopyToClipboardEvent | ChatVisualizationErrorEvent | ChatSaveVisualizationErrorEvent | ChatSaveVisualizationSuccessEvent | ChatConversationChangedEvent;
|
|
305
|
+
export type ChatEvent = ChatOpenedEvent | ChatClosedEvent | ChatResetEvent | ChatConversationPinnedEvent | ChatConversationPinErrorEvent | ChatConversationDeleteEvent | ChatConversationDeletedSuccessEvent | ChatConversationDeletedErrorEvent | ChatConversationRenameEvent | ChatConversationRenamedSuccessEvent | ChatConversationRenamedErrorEvent | ChatUserMessageEvent | ChatAssistantMessageEvent | ChatFeedbackEvent | ChatFeedbackErrorEvent | ChatCopyToClipboardEvent | ChatVisualizationErrorEvent | ChatSaveVisualizationErrorEvent | ChatSaveVisualizationSuccessEvent | ChatConversationChangedEvent | ChatDefinitionReceivedEvent;
|
|
287
306
|
/**
|
|
288
307
|
* An event handler for the Chat component.
|
|
289
308
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"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"}
|
package/esm/store/events.js
CHANGED
|
@@ -139,6 +139,13 @@ export const isChatCopyToClipboardEvent = (event) => {
|
|
|
139
139
|
export const isChatConversationChangedEvent = (event) => {
|
|
140
140
|
return event.type === "chatConversationChanged";
|
|
141
141
|
};
|
|
142
|
+
/**
|
|
143
|
+
* Type guard for the ChatDefinitionReceivedEvent.
|
|
144
|
+
* @public
|
|
145
|
+
*/
|
|
146
|
+
export const isChatDefinitionReceivedEvent = (event) => {
|
|
147
|
+
return event.type === "onDefinitionReceived";
|
|
148
|
+
};
|
|
142
149
|
/**
|
|
143
150
|
* A dispatcher for chat events.
|
|
144
151
|
* @internal
|
|
@@ -21,15 +21,7 @@ import { type IChatConversationLocal, type IChatConversationLocalItem } from "..
|
|
|
21
21
|
*/
|
|
22
22
|
export declare function onChatOpenSync({ payload: { isOpen } }: PayloadAction<{
|
|
23
23
|
isOpen: boolean;
|
|
24
|
-
}>): Generator<import("redux-saga/effects").CallEffect<
|
|
25
|
-
id: string;
|
|
26
|
-
createdAt: string;
|
|
27
|
-
updatedAt: string;
|
|
28
|
-
title?: string | undefined;
|
|
29
|
-
pinned?: boolean | undefined;
|
|
30
|
-
agentId?: string | undefined;
|
|
31
|
-
localId: string;
|
|
32
|
-
} | undefined> | import("redux-saga/effects").PutEffect<{
|
|
24
|
+
}>): Generator<import("redux-saga/effects").CallEffect<any> | import("redux-saga/effects").PutEffect<{
|
|
33
25
|
payload: {
|
|
34
26
|
messages?: import("../../model.js").Message[] | undefined;
|
|
35
27
|
items?: IChatConversationLocalItem[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onChatOpenSync.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onChatOpenSync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUtD,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAElC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"onChatOpenSync.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onChatOpenSync.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAUtD,OAAO,EACH,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAElC,MAAM,gBAAgB,CAAC;AAgBxB;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAiB,cAAc,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC;;;;;;;;;;;6DA4F1F"}
|
|
@@ -5,6 +5,7 @@ import { settingsSelector } from "../chatWindow/chatWindowSelectors.js";
|
|
|
5
5
|
import { asyncProcessSelector, conversationSelector, conversationsLoadedSelector, } from "../messages/messagesSelectors.js";
|
|
6
6
|
import { loadConversationsSuccessAction, setCurrentConversationAction, setMessagesAction, } from "../messages/messagesSlice.js";
|
|
7
7
|
import { convertToLocalContent } from "./converters/toLocalContent.js";
|
|
8
|
+
import { notifyDefinitionReceived } from "./onDefinitionReceivedTrigger.js";
|
|
8
9
|
/**
|
|
9
10
|
* Re-sync the active conversation with the backend whenever the chat window is opened.
|
|
10
11
|
*
|
|
@@ -56,7 +57,7 @@ export function* onChatOpenSync({ payload: { isOpen } }) {
|
|
|
56
57
|
return;
|
|
57
58
|
}
|
|
58
59
|
try {
|
|
59
|
-
const latest = yield call(fetchLatestConversation);
|
|
60
|
+
const latest = yield call(fetchLatestConversation, current);
|
|
60
61
|
// Empty (or transient) backend result - most likely a flaky list fetch. Keep the current UI
|
|
61
62
|
// (list + thread) untouched rather than half-clearing it. fetchLatestConversation already
|
|
62
63
|
// refrains from clobbering the stored list in this case, so there is nothing to reconcile.
|
|
@@ -101,6 +102,7 @@ export function* onChatOpenSync({ payload: { isOpen } }) {
|
|
|
101
102
|
yield put(setCurrentConversationAction({ conversation: latest }));
|
|
102
103
|
}
|
|
103
104
|
yield put(setMessagesAction({ items }));
|
|
105
|
+
yield call(notifyDefinitionReceived, items, latest.localId);
|
|
104
106
|
}
|
|
105
107
|
catch {
|
|
106
108
|
// Fail silently - keep showing whatever is currently loaded.
|
|
@@ -114,7 +116,7 @@ export function* onChatOpenSync({ payload: { isOpen } }) {
|
|
|
114
116
|
* chat still shows a thread (which would be an inconsistent half-cleared state).
|
|
115
117
|
* @internal
|
|
116
118
|
*/
|
|
117
|
-
function* fetchLatestConversation() {
|
|
119
|
+
function* fetchLatestConversation(current) {
|
|
118
120
|
const backend = yield getContext("backend");
|
|
119
121
|
const workspace = yield getContext("workspace");
|
|
120
122
|
const isPreview = yield getContext("isPreview");
|
|
@@ -129,9 +131,11 @@ function* fetchLatestConversation() {
|
|
|
129
131
|
}
|
|
130
132
|
// Refresh the stored list so the history panel reflects the latest state too.
|
|
131
133
|
yield put(loadConversationsSuccessAction({ conversations }));
|
|
132
|
-
|
|
134
|
+
const active = conversations.find((c) => c.localId === current?.localId);
|
|
135
|
+
const latest = conversations
|
|
133
136
|
.slice()
|
|
134
137
|
.sort((a, b) => new Date(b.updatedAt).getTime() - new Date(a.updatedAt).getTime())[0];
|
|
138
|
+
return active ?? latest;
|
|
135
139
|
}
|
|
136
140
|
/**
|
|
137
141
|
* Fetch the thread history for the given conversation and convert it to local items.
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type IChatConversationLocalItem, type Message } from "../../model.js";
|
|
2
|
+
/**
|
|
3
|
+
* Notify the store that a definition was received.
|
|
4
|
+
* @internal
|
|
5
|
+
*/
|
|
6
|
+
export declare function notifyDefinitionReceived(items: IChatConversationLocalItem | Message | (IChatConversationLocalItem | Message)[], conversationId: string): Generator<unknown, void, any>;
|
|
7
|
+
//# sourceMappingURL=onDefinitionReceivedTrigger.d.ts.map
|