@gooddata/sdk-ui-pluggable-host 11.48.0-alpha.2 → 11.48.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/esm/components/HostUiContainer.d.ts.map +1 -1
- package/esm/components/HostUiContainer.js +9 -2
- package/esm/platformContext/bootstrap.d.ts.map +1 -1
- package/esm/platformContext/bootstrap.js +4 -13
- package/esm/ui/GenAIChat.d.ts +9 -1
- package/esm/ui/GenAIChat.d.ts.map +1 -1
- package/esm/ui/GenAIChat.js +2 -2
- package/esm/ui/HostChat.d.ts +2 -0
- package/esm/ui/HostChat.d.ts.map +1 -1
- package/esm/ui/HostChat.js +6 -3
- package/esm/ui/PluggableApplicationRenderer.d.ts +1 -1
- package/esm/ui/PluggableApplicationRenderer.d.ts.map +1 -1
- package/esm/ui/PluggableApplicationRenderer.js +1 -1
- package/esm/ui/SemanticSearch.d.ts +1 -3
- package/esm/ui/SemanticSearch.d.ts.map +1 -1
- package/esm/ui/SemanticSearch.js +3 -3
- package/esm/ui/useHostChromeChat.d.ts +6 -1
- package/esm/ui/useHostChromeChat.d.ts.map +1 -1
- package/esm/ui/useHostChromeChat.js +15 -2
- package/esm/ui/useHostChromeSearch.d.ts.map +1 -1
- package/esm/ui/useHostChromeSearch.js +1 -1
- package/package.json +17 -17
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostUiContainer.d.ts","sourceRoot":"","sources":["../../src/components/HostUiContainer.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAA0B,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAEH,KAAK,gBAAgB,EAExB,MAAM,2CAA2C,CAAC;AAiBnD,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAqB;IAClC,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,qBAAqB,
|
|
1
|
+
{"version":3,"file":"HostUiContainer.d.ts","sourceRoot":"","sources":["../../src/components/HostUiContainer.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,OAAO,EAA0B,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAEH,KAAK,gBAAgB,EAExB,MAAM,2CAA2C,CAAC;AAiBnD,OAAO,wBAAwB,CAAC;AAEhC,MAAM,WAAW,qBAAqB;IAClC,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gCAAgC,EAAE,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,gBAAgB,CAAC;CACpC;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,qBAAqB,2CA6R7F"}
|
|
@@ -39,8 +39,15 @@ export function HostUiContainer({ ctx, apps, pathname, routerNavigate }) {
|
|
|
39
39
|
const [aiVisibility, setAiVisibility] = useState(null);
|
|
40
40
|
const [aiContext, setAiContext] = useState(null);
|
|
41
41
|
const aiVisibilitySeqRef = useRef(0);
|
|
42
|
-
const requestOpenAi = useCallback((question, userContext) => {
|
|
43
|
-
setAiVisibility({
|
|
42
|
+
const requestOpenAi = useCallback((question, userContext, appendToChat, replaceUserContext) => {
|
|
43
|
+
setAiVisibility({
|
|
44
|
+
kind: "open",
|
|
45
|
+
question,
|
|
46
|
+
userContext,
|
|
47
|
+
appendToChat,
|
|
48
|
+
replaceUserContext,
|
|
49
|
+
seq: ++aiVisibilitySeqRef.current,
|
|
50
|
+
});
|
|
44
51
|
}, []);
|
|
45
52
|
const requestCloseAi = useCallback(() => {
|
|
46
53
|
setAiVisibility({ kind: "close", seq: ++aiVisibilitySeqRef.current });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/platformContext/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,WAAW,EACd,MAAM,2CAA2C,CAAC;AAsBnD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,uBAAuB,EAAE,wBAAwB,CAAC;IAClD,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,SAAS,CAAS,CAAC;AA4B3E,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../../src/platformContext/bootstrap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,MAAM,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EACH,KAAK,aAAa,EAClB,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,WAAW,EACd,MAAM,2CAA2C,CAAC;AAsBnD,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/B,YAAY,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAC/C,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACxC,uBAAuB,EAAE,wBAAwB,CAAC;IAClD,YAAY,EAAE,sBAAsB,EAAE,CAAC;IACvC,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,wBAAwB,EAAE,gBAAgB,CAAC,SAAS,CAAS,CAAC;AA4B3E,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoFjG"}
|
|
@@ -63,15 +63,7 @@ export async function bootstrapApplication(backend) {
|
|
|
63
63
|
.organizations()
|
|
64
64
|
.getCurrentOrganization()
|
|
65
65
|
.catch(logAndRethrow("Failed to load current organization."))).organizationId;
|
|
66
|
-
const [
|
|
67
|
-
backend
|
|
68
|
-
.organization(organizationId)
|
|
69
|
-
.users()
|
|
70
|
-
.getUser(userProfile.login)
|
|
71
|
-
.catch((error) => {
|
|
72
|
-
logBootstrapWarning("Failed to load user details from organization.", error);
|
|
73
|
-
return undefined;
|
|
74
|
-
}),
|
|
66
|
+
const [organizationDescriptor, entitlements, theme] = await Promise.all([
|
|
75
67
|
fetchOrganizationDetails(backend, organizationId, includeAdditionalDetails),
|
|
76
68
|
entitlementsPromise,
|
|
77
69
|
backend
|
|
@@ -83,10 +75,9 @@ export async function bootstrapApplication(backend) {
|
|
|
83
75
|
return {};
|
|
84
76
|
}),
|
|
85
77
|
]);
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
};
|
|
78
|
+
// getUserWithDetails already resolves the user entity (including email), so a separate
|
|
79
|
+
// organization user lookup would only repeat the uncacheable /entities/users request.
|
|
80
|
+
const user = userProfile;
|
|
90
81
|
const organizationPermissions = {
|
|
91
82
|
canManageOrganization: user.permissions?.includes("MANAGE") ?? false,
|
|
92
83
|
hasBaseUiAccess: user.permissions?.includes("BASE_UI_ACCESS") ?? false,
|
package/esm/ui/GenAIChat.d.ts
CHANGED
|
@@ -45,6 +45,14 @@ export interface IGenAIChatProps {
|
|
|
45
45
|
* of a hosted application), passed to the assistant alongside the seeded question.
|
|
46
46
|
*/
|
|
47
47
|
userContext?: IGenAIUserContext;
|
|
48
|
+
/**
|
|
49
|
+
* When true, the user context is replaced instead of merged with the existing one.
|
|
50
|
+
*/
|
|
51
|
+
replaceUserContext?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* When true, the seeded question is appended to the existing thread instead of clearing it first.
|
|
54
|
+
*/
|
|
55
|
+
appendToChat?: boolean;
|
|
48
56
|
/**
|
|
49
57
|
* Ambient user context kept in sync by the active hosted application (e.g. the open dashboard
|
|
50
58
|
* and its live filter state). Persists across messages and drives the chat's context indicator.
|
|
@@ -82,5 +90,5 @@ export interface IGenAIChatProps {
|
|
|
82
90
|
* (`@gooddata/sdk-ui-gen-ai/internal`); this adapter only supplies the host's data sources, renders the
|
|
83
91
|
* host's own save-visualization / copy toasts, and forwards telemetry events through `onEvent`.
|
|
84
92
|
*/
|
|
85
|
-
export declare function GenAIChat({ workspaceId, open, onOpen, onClose, askedQuestion, askSeq, userContext, ambientUserContext, includeTags, excludeTags, canManageProject, canAnalyzeProject, canFullControl, settings, dialogPosition, embedded, onAppLinkClick, onEvent }: IGenAIChatProps): import("react/jsx-runtime").JSX.Element;
|
|
93
|
+
export declare function GenAIChat({ workspaceId, open, onOpen, onClose, askedQuestion, askSeq, appendToChat, userContext, replaceUserContext, ambientUserContext, includeTags, excludeTags, canManageProject, canAnalyzeProject, canFullControl, settings, dialogPosition, embedded, onAppLinkClick, onEvent }: IGenAIChatProps): import("react/jsx-runtime").JSX.Element;
|
|
86
94
|
//# sourceMappingURL=GenAIChat.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAIChat.d.ts","sourceRoot":"","sources":["../../src/ui/GenAIChat.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAE5B,MAAM,yBAAyB,CAAC;AAUjC;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC;IACvG,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACtB,WAAW,EACX,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,EACb,MAAM,EACN,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,cAAc,EACd,OAAO,EACV,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"GenAIChat.d.ts","sourceRoot":"","sources":["../../src/ui/GenAIChat.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACH,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAE5B,MAAM,yBAAyB,CAAC;AAUjC;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,GACjD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,OAAO,EAAE,oBAAoB,CAAA;CAAE,GAC5D;IAAE,IAAI,EAAE,wBAAwB,CAAC;IAAC,OAAO,EAAE,yBAAyB,CAAA;CAAE,CAAC;AAE7E,MAAM,WAAW,eAAe;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACvC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC;IACvG,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;CAC7C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,EACtB,WAAW,EACX,IAAI,EACJ,MAAM,EACN,OAAO,EACP,aAAa,EACb,MAAM,EACN,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,cAAc,EACd,OAAO,EACV,EAAE,eAAe,2CAoGjB"}
|
package/esm/ui/GenAIChat.js
CHANGED
|
@@ -16,7 +16,7 @@ const EMBEDDED_CHAT_CLASS = "gd-gen-ai-chat-embedded";
|
|
|
16
16
|
* (`@gooddata/sdk-ui-gen-ai/internal`); this adapter only supplies the host's data sources, renders the
|
|
17
17
|
* host's own save-visualization / copy toasts, and forwards telemetry events through `onEvent`.
|
|
18
18
|
*/
|
|
19
|
-
export function GenAIChat({ workspaceId, open, onOpen, onClose, askedQuestion, askSeq, userContext, ambientUserContext, includeTags, excludeTags, canManageProject, canAnalyzeProject, canFullControl, settings, dialogPosition, embedded, onAppLinkClick, onEvent, }) {
|
|
19
|
+
export function GenAIChat({ workspaceId, open, onOpen, onClose, askedQuestion, askSeq, appendToChat, userContext, replaceUserContext, ambientUserContext, includeTags, excludeTags, canManageProject, canAnalyzeProject, canFullControl, settings, dialogPosition, embedded, onAppLinkClick, onEvent, }) {
|
|
20
20
|
const { addSuccess, addError } = useToastMessage();
|
|
21
21
|
const intl = useIntl();
|
|
22
22
|
const backend = useBackendStrict();
|
|
@@ -76,5 +76,5 @@ export function GenAIChat({ workspaceId, open, onOpen, onClose, askedQuestion, a
|
|
|
76
76
|
break;
|
|
77
77
|
}
|
|
78
78
|
}, [addError, addSuccess, intl, onEvent]);
|
|
79
|
-
return (_jsx(GenAIChatDialogConnected, { backend: backend, workspace: workspaceId, locale: intl.locale, isOpen: open, onOpen: onOpen, onClose: onClose, askedQuestion: askedQuestion, askSeq: askSeq, userContext: userContext, ambientUserContext: ambientUserContext, includeTags: includeTags, excludeTags: excludeTags, canManage: canManageProject, canAnalyze: canAnalyzeProject, canFullControl: canFullControl, settings: settings, dialogPosition: dialogPosition, allowNativeLinks: embedded ? false : undefined, className: embedded ? EMBEDDED_CHAT_CLASS : undefined, onLinkClick: embedded ? onLinkClick : undefined, onEvent: handleEvent, returnFocusTo: embedded ? EMBEDDED_AI_TRIGGER_ID : HEADER_CHAT_BUTTON_ID }));
|
|
79
|
+
return (_jsx(GenAIChatDialogConnected, { backend: backend, workspace: workspaceId, locale: intl.locale, isOpen: open, onOpen: onOpen, onClose: onClose, askedQuestion: askedQuestion, askSeq: askSeq, userContext: userContext, appendToChat: appendToChat, replaceUserContext: replaceUserContext, ambientUserContext: ambientUserContext, includeTags: includeTags, excludeTags: excludeTags, canManage: canManageProject, canAnalyze: canAnalyzeProject, canFullControl: canFullControl, settings: settings, dialogPosition: dialogPosition, allowNativeLinks: embedded ? false : undefined, className: embedded ? EMBEDDED_CHAT_CLASS : undefined, onLinkClick: embedded ? onLinkClick : undefined, onEvent: handleEvent, returnFocusTo: embedded ? EMBEDDED_AI_TRIGGER_ID : HEADER_CHAT_BUTTON_ID }));
|
|
80
80
|
}
|
package/esm/ui/HostChat.d.ts
CHANGED
|
@@ -9,6 +9,8 @@ export interface IHostChatVisibility {
|
|
|
9
9
|
kind: "open" | "close" | "toggle";
|
|
10
10
|
question?: string;
|
|
11
11
|
userContext?: IGenAIUserContext;
|
|
12
|
+
appendToChat?: boolean;
|
|
13
|
+
replaceUserContext?: boolean;
|
|
12
14
|
seq: number;
|
|
13
15
|
}
|
|
14
16
|
/** A link clicked inside the chat, delegated to the active application for in-app handling. */
|
package/esm/ui/HostChat.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HostChat.d.ts","sourceRoot":"","sources":["../../src/ui/HostChat.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAUlF,OAAO,6CAA6C,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,GAAG,EAAE,MAAM,CAAC;CACf;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,gBAAgB,CAAC;IACtB,oBAAoB,EAAE,gCAAgC,EAAE,CAAC;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,oFAAoF;IACpF,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACrB,GAAG,EACH,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,UAAiB,EACjB,OAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACjB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"HostChat.d.ts","sourceRoot":"","sources":["../../src/ui/HostChat.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAUlF,OAAO,6CAA6C,CAAC;AAErD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;CACf;AAED,+FAA+F;AAC/F,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC3B,GAAG,EAAE,gBAAgB,CAAC;IACtB,oBAAoB,EAAE,gCAAgC,EAAE,CAAC;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,qFAAqF;IACrF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+FAA+F;IAC/F,UAAU,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACxC,oFAAoF;IACpF,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,YAAY,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;IAChF;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EACrB,GAAG,EACH,oBAAoB,EACpB,QAAQ,EACR,WAAW,EACX,UAAiB,EACjB,OAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACjB,EAAE,cAAc,2CAyFhB"}
|
package/esm/ui/HostChat.js
CHANGED
|
@@ -29,7 +29,7 @@ export function HostChat({ ctx, resolvedApplications, pathname, activeAppId, vis
|
|
|
29
29
|
embedded: context?.embedded,
|
|
30
30
|
onAppLinkClick,
|
|
31
31
|
});
|
|
32
|
-
const { askAiAssistant: chatAskAiAssistant, open: chatOpen, close: chatClose, toggle: chatToggle, setTags: chatSetTags, setAmbientUserContext: chatSetAmbientUserContext, isOpen: chatIsOpen, showChatItem, } = chat;
|
|
32
|
+
const { askAiAssistant: chatAskAiAssistant, openAiAssistant: chatOpenAiAssistant, open: chatOpen, close: chatClose, toggle: chatToggle, setTags: chatSetTags, setAmbientUserContext: chatSetAmbientUserContext, isOpen: chatIsOpen, showChatItem, } = chat;
|
|
33
33
|
// Report the chat open-state outward so the runtime can forward it to the active pluggable
|
|
34
34
|
// application, keeping app-side assistant controls (and their echoed results) aligned (LX-2544).
|
|
35
35
|
useEffect(() => {
|
|
@@ -66,13 +66,16 @@ export function HostChat({ ctx, resolvedApplications, pathname, activeAppId, vis
|
|
|
66
66
|
chatToggle();
|
|
67
67
|
}
|
|
68
68
|
else if (visibility.question) {
|
|
69
|
-
chatAskAiAssistant(visibility.question, visibility.userContext);
|
|
69
|
+
chatAskAiAssistant(visibility.question, visibility.userContext, visibility.appendToChat, visibility.replaceUserContext);
|
|
70
|
+
}
|
|
71
|
+
else if (visibility.userContext) {
|
|
72
|
+
chatOpenAiAssistant(visibility.userContext, visibility.replaceUserContext);
|
|
70
73
|
}
|
|
71
74
|
else {
|
|
72
75
|
chatOpen();
|
|
73
76
|
}
|
|
74
77
|
// `seq` changes on every request, so a repeated identical open/ask/toggle still re-runs this.
|
|
75
78
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
76
|
-
}, [visibilitySeq, chatAskAiAssistant, chatOpen, chatClose, chatToggle]);
|
|
79
|
+
}, [visibilitySeq, chatAskAiAssistant, chatOpenAiAssistant, chatOpen, chatClose, chatToggle]);
|
|
77
80
|
return (_jsx(HostIntlProvider, { locale: resolveLocale(ctx.preferredLocale), children: _jsx(BackendProvider, { backend: getBackend(), children: _jsx(ToastsCenterContextProvider, { children: chat.element }) }) }));
|
|
78
81
|
}
|
|
@@ -9,7 +9,7 @@ export interface IPluggableApplicationRendererProps {
|
|
|
9
9
|
/** Host-owned AI assistant chat open-state, forwarded to the mounted app's handle. */
|
|
10
10
|
aiAssistantOpen?: boolean;
|
|
11
11
|
/** Open/ask the host-owned chat, requested by the active app via an open-assistant event. */
|
|
12
|
-
onOpenAiAssistant?: (question?: string, userContext?: IGenAIUserContext) => void;
|
|
12
|
+
onOpenAiAssistant?: (question?: string, userContext?: IGenAIUserContext, appendToChat?: boolean, replaceUserContext?: boolean) => void;
|
|
13
13
|
/** Close the host-owned chat, requested by the active app. */
|
|
14
14
|
onCloseAiAssistant?: () => void;
|
|
15
15
|
/** Report the active app's AI-assistant tag scope, presentation and ambient user context to the host-owned chat. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluggableApplicationRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/PluggableApplicationRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAC;AAI1F,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EASxB,MAAM,2CAA2C,CAAC;AAcnD,OAAO,qCAAqC,CAAC;AAkB7C,MAAM,WAAW,kCAAkC;IAC/C,GAAG,EAAE,gCAAgC,CAAC;IACtC,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"PluggableApplicationRenderer.d.ts","sourceRoot":"","sources":["../../src/ui/PluggableApplicationRenderer.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAqD,MAAM,OAAO,CAAC;AAI1F,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,gCAAgC,EAAE,MAAM,qBAAqB,CAAC;AACpG,OAAO,EACH,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EASxB,MAAM,2CAA2C,CAAC;AAcnD,OAAO,qCAAqC,CAAC;AAkB7C,MAAM,WAAW,kCAAkC;IAC/C,GAAG,EAAE,gCAAgC,CAAC;IACtC,GAAG,EAAE,gBAAgB,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,sFAAsF;IACtF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6FAA6F;IAC7F,iBAAiB,CAAC,EAAE,CAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,YAAY,CAAC,EAAE,OAAO,EACtB,kBAAkB,CAAC,EAAE,OAAO,KAC3B,IAAI,CAAC;IACV,8DAA8D;IAC9D,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,oHAAoH;IACpH,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC7B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,WAAW,CAAC,EAAE,iBAAiB,CAAC;KACnC,KAAK,IAAI,CAAC;IACX;;;OAGG;IACH,qBAAqB,CAAC,EAAE,SAAS,CAC7B,CAAC,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,GAAG,SAAS,CACtG,CAAC;IACF,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACpE,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;CAClF;AAED,wBAAgB,4BAA4B,CAAC,EACzC,GAAG,EACH,GAAG,EACH,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACxB,EAAE,kCAAkC,2CAgQpC"}
|
|
@@ -52,7 +52,7 @@ export function PluggableApplicationRenderer({ app, ctx, pathname, aiAssistantOp
|
|
|
52
52
|
// the host's single (host-owned) assistant through these events (open/ask, close and
|
|
53
53
|
// tag-scope changes), which the host runtime drives directly via these callbacks.
|
|
54
54
|
if (isOpenAiAssistantRequestedEvent(event)) {
|
|
55
|
-
onOpenAiAssistantRef.current?.(event.payload.question, event.payload.userContext);
|
|
55
|
+
onOpenAiAssistantRef.current?.(event.payload.question, event.payload.userContext, event.payload.appendToChat, event.payload.replaceUserContext);
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
if (isCloseAiAssistantRequestedEvent(event)) {
|
|
@@ -16,12 +16,10 @@ export interface ISemanticSearchProps {
|
|
|
16
16
|
metadataTimeZone?: string;
|
|
17
17
|
isTrial?: boolean;
|
|
18
18
|
enableUseGenAIChat?: boolean;
|
|
19
|
-
useHostedMetricEditor?: boolean;
|
|
20
19
|
useHostedAnalyticalDesigner?: boolean;
|
|
21
|
-
useHostedLdmModeler?: boolean;
|
|
22
20
|
useHostedDashboards?: boolean;
|
|
23
21
|
onAskAiAssistant?: (question: string) => void;
|
|
24
22
|
onEvent?: (event: SemanticSearchEvent) => void;
|
|
25
23
|
}
|
|
26
|
-
export declare function SemanticSearch({ backend, workspaceId, metadataTimeZone, canManage, canAnalyze, canFullControl, isTrial, enableUseGenAIChat,
|
|
24
|
+
export declare function SemanticSearch({ backend, workspaceId, metadataTimeZone, canManage, canAnalyze, canFullControl, isTrial, enableUseGenAIChat, useHostedAnalyticalDesigner, useHostedDashboards, onAskAiAssistant, onEvent }: ISemanticSearchProps): import("react/jsx-runtime").JSX.Element;
|
|
27
25
|
//# sourceMappingURL=SemanticSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SemanticSearch.d.ts","sourceRoot":"","sources":["../../src/ui/SemanticSearch.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAEH,KAAK,cAAc,EAItB,MAAM,2CAA2C,CAAC;AAInD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAExF,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,
|
|
1
|
+
{"version":3,"file":"SemanticSearch.d.ts","sourceRoot":"","sources":["../../src/ui/SemanticSearch.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAEH,KAAK,cAAc,EAItB,MAAM,2CAA2C,CAAC;AAInD;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAE,CAAC;AAExF,MAAM,WAAW,oBAAoB;IACjC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,cAAc,CAAC,EAC3B,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,SAAiB,EACjB,UAAkB,EAClB,cAAsB,EACtB,OAAe,EACf,kBAA0B,EAC1B,2BAAmC,EACnC,mBAA2B,EAC3B,gBAAgB,EAChB,OAAO,EACV,EAAE,oBAAoB,2CAmFtB"}
|
package/esm/ui/SemanticSearch.js
CHANGED
|
@@ -4,7 +4,7 @@ import { useCallback, useEffect, useMemo } from "react";
|
|
|
4
4
|
import { useIntl } from "react-intl";
|
|
5
5
|
import { FooterButtonAiAssistant, SearchOverlay, useSearchMetrics, } from "@gooddata/sdk-ui-semantic-search/internal";
|
|
6
6
|
const RESULTS_LIMIT = 10;
|
|
7
|
-
export function SemanticSearch({ backend, workspaceId, metadataTimeZone, canManage = false, canAnalyze = false, canFullControl = false, isTrial = false, enableUseGenAIChat = false,
|
|
7
|
+
export function SemanticSearch({ backend, workspaceId, metadataTimeZone, canManage = false, canAnalyze = false, canFullControl = false, isTrial = false, enableUseGenAIChat = false, useHostedAnalyticalDesigner = false, useHostedDashboards = false, onAskAiAssistant, onEvent, }) {
|
|
8
8
|
const intl = useIntl();
|
|
9
9
|
const objectTypes = useMemo(() => {
|
|
10
10
|
const types = ["dashboard", "visualization"];
|
|
@@ -43,9 +43,9 @@ export function SemanticSearch({ backend, workspaceId, metadataTimeZone, canMana
|
|
|
43
43
|
} }));
|
|
44
44
|
};
|
|
45
45
|
return (_jsx(SearchOverlay, { limit: RESULTS_LIMIT, locale: intl.locale, onSelect: onSelect, onSearch: onSearchMetrics, deepSearch: false, objectTypes: objectTypes, workspace: workspaceId, backend: backend, canManage: canManage, canAnalyze: canAnalyze, canFullControl: canFullControl, metadataTimezone: metadataTimeZone, uiPathOptions: {
|
|
46
|
-
useHostedMetricEditor,
|
|
46
|
+
useHostedMetricEditor: true,
|
|
47
47
|
useHostedAnalyticalDesigner,
|
|
48
|
-
useHostedLdmModeler,
|
|
48
|
+
useHostedLdmModeler: true,
|
|
49
49
|
useHostedDashboards,
|
|
50
50
|
}, renderFooter: renderFooter }));
|
|
51
51
|
}
|
|
@@ -22,7 +22,12 @@ export interface IHostChromeChat {
|
|
|
22
22
|
* Open the chat dialog with a pre-seeded user question and optional user-location context
|
|
23
23
|
* (e.g. the active dashboard a hosted application forwards alongside the question).
|
|
24
24
|
*/
|
|
25
|
-
askAiAssistant: (question: string, userContext?: IGenAIUserContext) => void;
|
|
25
|
+
askAiAssistant: (question: string, userContext?: IGenAIUserContext, appendToChat?: boolean, replaceUserContext?: boolean) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Open the chat dialog with a pre-seeded optional user-location context
|
|
28
|
+
* (e.g. the active dashboard a hosted application forwards alongside the question).
|
|
29
|
+
*/
|
|
30
|
+
openAiAssistant: (userContext?: IGenAIUserContext, replaceUserContext?: boolean) => void;
|
|
26
31
|
/**
|
|
27
32
|
* Set the assistant's object-search tag scope, reflecting the active hosted application's
|
|
28
33
|
* current view (e.g. AD's include/exclude tag route filters). Pass empty/undefined to clear.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHostChromeChat.d.ts","sourceRoot":"","sources":["../../src/ui/useHostChromeChat.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,EACvC,MAAM,2CAA2C,CAAC;AAMnD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAExF,MAAM,WAAW,eAAe;IAC5B,4EAA4E;IAC5E,OAAO,EAAE,SAAS,CAAC;IACnB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,6EAA2E;IAC3E,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"useHostChromeChat.d.ts","sourceRoot":"","sources":["../../src/ui/useHostChromeChat.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,+BAA+B,EACvC,MAAM,2CAA2C,CAAC;AAMnD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAExF,MAAM,WAAW,eAAe;IAC5B,4EAA4E;IAC5E,OAAO,EAAE,SAAS,CAAC;IACnB,iDAAiD;IACjD,MAAM,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB,4BAA4B;IAC5B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,6BAA6B;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,6EAA2E;IAC3E,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;;OAGG;IACH,cAAc,EAAE,CACZ,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,iBAAiB,EAC/B,YAAY,CAAC,EAAE,OAAO,EACtB,kBAAkB,CAAC,EAAE,OAAO,KAC3B,IAAI,CAAC;IACV;;;OAGG;IACH,eAAe,EAAE,CAAC,WAAW,CAAC,EAAE,iBAAiB,EAAE,kBAAkB,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACzF;;;OAGG;IACH,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAClE;;;OAGG;IACH,qBAAqB,EAAE,CAAC,WAAW,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACpE;AAED,MAAM,WAAW,sBAAsB;IACnC,QAAQ,EAAE,4BAA4B,CAAC;IACvC,GAAG,EAAE,gBAAgB,CAAC;IACtB,SAAS,EAAE,+BAA+B,GAAG,SAAS,CAAC;IACvD,+FAA+F;IAC/F,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC;CAC1G;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,EAC9B,QAAQ,EACR,GAAG,EACH,SAAS,EACT,cAAc,EACd,QAAQ,EACR,cAAc,EACjB,EAAE,sBAAsB,GAAG,eAAe,CAmH1C"}
|
|
@@ -14,6 +14,8 @@ import { GenAIChat } from "./GenAIChat.js";
|
|
|
14
14
|
export function useHostChromeChat({ features, ctx, telemetry, dialogPosition, embedded, onAppLinkClick, }) {
|
|
15
15
|
const [isChatOpen, setIsChatOpen] = useState(false);
|
|
16
16
|
const [askedQuestion, setAskedQuestion] = useState(null);
|
|
17
|
+
const [appendToChat, setAppendToChat] = useState(false);
|
|
18
|
+
const [replaceUserContext, setReplaceUserContext] = useState(false);
|
|
17
19
|
// Bumped on every ask so the chat re-seeds (clears the thread + sends the message) even when the
|
|
18
20
|
// same prompt is asked again — e.g. "Summarize" clicked twice, or repeated after a close (the
|
|
19
21
|
// seeding effect is otherwise keyed on the question text, which does not change on a repeat).
|
|
@@ -33,10 +35,20 @@ export function useHostChromeChat({ features, ctx, telemetry, dialogPosition, em
|
|
|
33
35
|
const toggle = useCallback(() => {
|
|
34
36
|
setIsChatOpen((isOpen) => !isOpen);
|
|
35
37
|
}, []);
|
|
36
|
-
const askAiAssistant = useCallback((question, questionUserContext) => {
|
|
38
|
+
const askAiAssistant = useCallback((question, questionUserContext, appendToChat, replaceUserContext) => {
|
|
37
39
|
setAskedQuestion(question);
|
|
38
40
|
setUserContext(questionUserContext);
|
|
39
41
|
setAskSeq((seq) => seq + 1);
|
|
42
|
+
setAppendToChat(appendToChat ?? false);
|
|
43
|
+
setReplaceUserContext(replaceUserContext ?? false);
|
|
44
|
+
setIsChatOpen(true);
|
|
45
|
+
}, []);
|
|
46
|
+
const openAiAssistant = useCallback((questionUserContext, replaceUserContext) => {
|
|
47
|
+
setAskedQuestion(null);
|
|
48
|
+
setAppendToChat(false);
|
|
49
|
+
setUserContext(questionUserContext);
|
|
50
|
+
setReplaceUserContext(replaceUserContext ?? false);
|
|
51
|
+
setAskSeq((seq) => seq + 1);
|
|
40
52
|
setIsChatOpen(true);
|
|
41
53
|
}, []);
|
|
42
54
|
const setTags = useCallback((nextIncludeTags, nextExcludeTags) => {
|
|
@@ -48,7 +60,7 @@ export function useHostChromeChat({ features, ctx, telemetry, dialogPosition, em
|
|
|
48
60
|
telemetry?.trackEvent(event.name, event.payload);
|
|
49
61
|
}, [telemetry]);
|
|
50
62
|
const showChatItem = useGenAiChatAvailability(getBackend(), features.workspaceId, features.showChat, features.canManageProject);
|
|
51
|
-
const element = features.showChat && features.workspaceId ? (_jsx(GenAIChat, { workspaceId: features.workspaceId, open: isChatOpen, onOpen: open, onClose: close, askedQuestion: askedQuestion, askSeq: askSeq, userContext: userContext, ambientUserContext: ambientUserContext, includeTags: includeTags, excludeTags: excludeTags, canManageProject: features.canManageProject, canAnalyzeProject: features.canAccessWorkbench, canFullControl: features.canFullControl, settings: ctx.workspaceSettings, dialogPosition: dialogPosition, embedded: embedded, onAppLinkClick: onAppLinkClick, onEvent: handleChatEvent })) : null;
|
|
63
|
+
const element = features.showChat && features.workspaceId ? (_jsx(GenAIChat, { workspaceId: features.workspaceId, open: isChatOpen, onOpen: open, onClose: close, askedQuestion: askedQuestion, appendToChat: appendToChat, replaceUserContext: replaceUserContext, askSeq: askSeq, userContext: userContext, ambientUserContext: ambientUserContext, includeTags: includeTags, excludeTags: excludeTags, canManageProject: features.canManageProject, canAnalyzeProject: features.canAccessWorkbench, canFullControl: features.canFullControl, settings: ctx.workspaceSettings, dialogPosition: dialogPosition, embedded: embedded, onAppLinkClick: onAppLinkClick, onEvent: handleChatEvent })) : null;
|
|
52
64
|
return {
|
|
53
65
|
element,
|
|
54
66
|
isOpen: isChatOpen,
|
|
@@ -57,6 +69,7 @@ export function useHostChromeChat({ features, ctx, telemetry, dialogPosition, em
|
|
|
57
69
|
close,
|
|
58
70
|
toggle,
|
|
59
71
|
askAiAssistant,
|
|
72
|
+
openAiAssistant,
|
|
60
73
|
setTags,
|
|
61
74
|
setAmbientUserContext,
|
|
62
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHostChromeSearch.d.ts","sourceRoot":"","sources":["../../src/ui/useHostChromeSearch.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAKjG,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAExF,MAAM,WAAW,iBAAiB;IAC9B,uFAAuF;IACvF,OAAO,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACrC,QAAQ,EAAE,4BAA4B,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,SAAS,EACZ,EAAE,wBAAwB,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useHostChromeSearch.d.ts","sourceRoot":"","sources":["../../src/ui/useHostChromeSearch.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAe,MAAM,OAAO,CAAC;AAEpD,OAAO,EAAE,KAAK,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAKjG,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AAExF,MAAM,WAAW,iBAAiB;IAC9B,uFAAuF;IACvF,OAAO,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,wBAAwB;IACrC,QAAQ,EAAE,4BAA4B,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,gBAAgB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,SAAS,EAAE,+BAA+B,GAAG,SAAS,CAAC;CAC1D;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,gBAAgB,EAChB,SAAS,EACZ,EAAE,wBAAwB,GAAG,iBAAiB,CA6B9C"}
|
|
@@ -13,6 +13,6 @@ export function useHostChromeSearch({ features, isTrial, onAskAiAssistant, telem
|
|
|
13
13
|
const handleSearchEvent = useCallback((event) => {
|
|
14
14
|
telemetry?.trackEvent(event.name, event.payload);
|
|
15
15
|
}, [telemetry]);
|
|
16
|
-
const element = features.showSearch && features.workspaceId ? (_jsx(SemanticSearch, { backend: getBackend(), workspaceId: features.workspaceId, canManage: features.canManageProject, canAnalyze: features.canCreateVisualization, canFullControl: features.canFullControl, metadataTimeZone: features.settings.metadataTimeZone, isTrial: isTrial, enableUseGenAIChat: features.showChat,
|
|
16
|
+
const element = features.showSearch && features.workspaceId ? (_jsx(SemanticSearch, { backend: getBackend(), workspaceId: features.workspaceId, canManage: features.canManageProject, canAnalyze: features.canCreateVisualization, canFullControl: features.canFullControl, metadataTimeZone: features.settings.metadataTimeZone, isTrial: isTrial, enableUseGenAIChat: features.showChat, useHostedAnalyticalDesigner: Boolean(features.settings.enableShellApplication_analyticalDesigner), useHostedDashboards: Boolean(features.settings.enableShellApplication_dashboards), onAskAiAssistant: onAskAiAssistant, onEvent: handleSearchEvent })) : null;
|
|
17
17
|
return { element };
|
|
18
18
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gooddata/sdk-ui-pluggable-host",
|
|
3
|
-
"version": "11.48.0-alpha.
|
|
3
|
+
"version": "11.48.0-alpha.4",
|
|
4
4
|
"description": "GoodData SDK runtime for hosting pluggable applications — registry, loader, routing, platform context, default UI chrome",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "GoodData Corporation",
|
|
@@ -29,20 +29,20 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@module-federation/runtime": "2.6.0",
|
|
31
31
|
"lodash-es": "^4.17.23",
|
|
32
|
-
"@gooddata/sdk-backend-base": "11.48.0-alpha.
|
|
33
|
-
"@gooddata/sdk-backend-
|
|
34
|
-
"@gooddata/sdk-
|
|
35
|
-
"@gooddata/sdk-
|
|
36
|
-
"@gooddata/sdk-model": "11.48.0-alpha.
|
|
37
|
-
"@gooddata/sdk-pluggable-application-model": "11.48.0-alpha.
|
|
38
|
-
"@gooddata/sdk-ui": "11.48.0-alpha.
|
|
39
|
-
"@gooddata/sdk-ui-application-header": "11.48.0-alpha.
|
|
40
|
-
"@gooddata/sdk-ui-
|
|
41
|
-
"@gooddata/sdk-ui-
|
|
42
|
-
"@gooddata/sdk-ui-
|
|
43
|
-
"@gooddata/sdk-ui-semantic-search": "11.48.0-alpha.
|
|
44
|
-
"@gooddata/sdk-ui-theme-provider": "11.48.0-alpha.
|
|
45
|
-
"@gooddata/util": "11.48.0-alpha.
|
|
32
|
+
"@gooddata/sdk-backend-base": "11.48.0-alpha.4",
|
|
33
|
+
"@gooddata/sdk-backend-tiger": "11.48.0-alpha.4",
|
|
34
|
+
"@gooddata/sdk-backend-spi": "11.48.0-alpha.4",
|
|
35
|
+
"@gooddata/sdk-embedding": "11.48.0-alpha.4",
|
|
36
|
+
"@gooddata/sdk-model": "11.48.0-alpha.4",
|
|
37
|
+
"@gooddata/sdk-pluggable-application-model": "11.48.0-alpha.4",
|
|
38
|
+
"@gooddata/sdk-ui": "11.48.0-alpha.4",
|
|
39
|
+
"@gooddata/sdk-ui-application-header": "11.48.0-alpha.4",
|
|
40
|
+
"@gooddata/sdk-ui-kit": "11.48.0-alpha.4",
|
|
41
|
+
"@gooddata/sdk-ui-ext": "11.48.0-alpha.4",
|
|
42
|
+
"@gooddata/sdk-ui-gen-ai": "11.48.0-alpha.4",
|
|
43
|
+
"@gooddata/sdk-ui-semantic-search": "11.48.0-alpha.4",
|
|
44
|
+
"@gooddata/sdk-ui-theme-provider": "11.48.0-alpha.4",
|
|
45
|
+
"@gooddata/util": "11.48.0-alpha.4"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@microsoft/api-documenter": "^7.17.0",
|
|
@@ -85,8 +85,8 @@
|
|
|
85
85
|
"vite": "8.0.16",
|
|
86
86
|
"vitest": "4.1.8",
|
|
87
87
|
"vitest-dom": "0.1.1",
|
|
88
|
-
"@gooddata/
|
|
89
|
-
"@gooddata/
|
|
88
|
+
"@gooddata/eslint-config": "11.48.0-alpha.4",
|
|
89
|
+
"@gooddata/oxlint-config": "11.48.0-alpha.4"
|
|
90
90
|
},
|
|
91
91
|
"peerDependencies": {
|
|
92
92
|
"react": ">=18.3.1",
|