@gooddata/sdk-ui-gen-ai 11.43.0-alpha.0 → 11.43.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.
Files changed (37) hide show
  1. package/NOTICE +130 -130
  2. package/esm/components/messages/AgentChangeItem.js +1 -1
  3. package/esm/components/messages/ConversationItemContents.d.ts.map +1 -1
  4. package/esm/components/messages/ConversationItemContents.js +4 -1
  5. package/esm/components/messages/conversationContents/ConversationAlertProposalContent.d.ts +1 -1
  6. package/esm/components/messages/conversationContents/ConversationAlertProposalContent.d.ts.map +1 -1
  7. package/esm/components/messages/conversationContents/ConversationAlertProposalContent.js +171 -26
  8. package/esm/components/messages/conversationContents/ConversationVisualisation.d.ts +1 -1
  9. package/esm/components/messages/conversationContents/ConversationVisualisation.d.ts.map +1 -1
  10. package/esm/components/messages/conversationContents/ConversationVisualisation.js +4 -30
  11. package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts +11 -2
  12. package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts.map +1 -1
  13. package/esm/components/messages/conversationContents/SaveVisualizationDialog.d.ts +11 -2
  14. package/esm/components/messages/conversationContents/SaveVisualizationDialog.d.ts.map +1 -1
  15. package/esm/components/messages/conversationContents/useExecution.d.ts +1 -1
  16. package/esm/components/messages/conversationContents/useExecution.d.ts.map +1 -1
  17. package/esm/components/messages/conversationContents/utils/changeAnalysisDrills.d.ts +4 -0
  18. package/esm/components/messages/conversationContents/utils/changeAnalysisDrills.d.ts.map +1 -0
  19. package/esm/components/messages/conversationContents/utils/changeAnalysisDrills.js +32 -0
  20. package/esm/localization/bundles/en-US.localization-bundle.d.ts +66 -14
  21. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  22. package/esm/localization/bundles/en-US.localization-bundle.js +87 -35
  23. package/esm/store/messages/messagesSlice.js +2 -2
  24. package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
  25. package/esm/store/sideEffects/onUserMessage.js +8 -1
  26. package/esm/store/sideEffects/onVisualizationSave.d.ts.map +1 -1
  27. package/esm/store/sideEffects/onVisualizationSave.js +6 -5
  28. package/esm/tsdoc-metadata.json +1 -1
  29. package/esm/types.d.ts +1 -1
  30. package/esm/types.d.ts.map +1 -1
  31. package/esm/whatIf/whatIfMapping.js +1 -1
  32. package/package.json +20 -20
  33. package/styles/css/main.css +18 -0
  34. package/styles/css/main.css.map +1 -1
  35. package/styles/css/messages.css +18 -0
  36. package/styles/css/messages.css.map +1 -1
  37. package/styles/scss/messages.scss +22 -0
@@ -95,6 +95,10 @@ export declare const en_US: {
95
95
  text: string;
96
96
  crowdinContext: string;
97
97
  };
98
+ "gd.gen-ai.visualization.unavailable": {
99
+ text: string;
100
+ crowdinContext: string;
101
+ };
98
102
  "gd.gen-ai.permission-error": {
99
103
  text: string;
100
104
  crowdinContext: string;
@@ -267,59 +271,107 @@ export declare const en_US: {
267
271
  text: string;
268
272
  crowdinContext: string;
269
273
  };
270
- "gd.gen-ai.alert-proposal.summary.metric": {
274
+ "gd.gen-ai.alert-proposal.summary.date": {
271
275
  text: string;
272
276
  crowdinContext: string;
273
277
  };
274
- "gd.gen-ai.alert-proposal.summary.metric-compared": {
278
+ "gd.gen-ai.alert-proposal.summary.notification-channel": {
275
279
  text: string;
276
280
  crowdinContext: string;
277
281
  };
278
- "gd.gen-ai.alert-proposal.summary.date": {
282
+ "gd.gen-ai.alert-proposal.summary.dashboard": {
279
283
  text: string;
280
284
  crowdinContext: string;
281
285
  };
282
- "gd.gen-ai.alert-proposal.summary.notification-channel": {
286
+ "gd.gen-ai.alert-proposal.summary.recipients": {
283
287
  text: string;
284
288
  crowdinContext: string;
285
289
  };
286
- "gd.gen-ai.alert-proposal.summary.dashboard": {
290
+ "gd.gen-ai.alert-proposal.summary.condition-comparison": {
287
291
  text: string;
288
292
  crowdinContext: string;
289
293
  };
290
- "gd.gen-ai.alert-proposal.summary.operator": {
294
+ "gd.gen-ai.alert-proposal.summary.condition-relative": {
291
295
  text: string;
292
296
  crowdinContext: string;
293
297
  };
294
- "gd.gen-ai.alert-proposal.summary.arithmeticOperator": {
298
+ "gd.gen-ai.alert-proposal.summary.condition-anomalyDetection": {
295
299
  text: string;
296
300
  crowdinContext: string;
297
301
  };
298
- "gd.gen-ai.alert-proposal.summary.threshold": {
302
+ "sdk.ui.genAi.alertProposal.operator.lessThan": {
299
303
  text: string;
300
304
  crowdinContext: string;
301
305
  };
302
- "gd.gen-ai.alert-proposal.summary.range": {
306
+ "sdk.ui.genAi.alertProposal.operator.lessThanOrEqualTo": {
303
307
  text: string;
304
308
  crowdinContext: string;
305
309
  };
306
- "gd.gen-ai.alert-proposal.summary.from": {
310
+ "sdk.ui.genAi.alertProposal.operator.greaterThan": {
307
311
  text: string;
308
312
  crowdinContext: string;
309
313
  };
310
- "gd.gen-ai.alert-proposal.summary.to": {
314
+ "sdk.ui.genAi.alertProposal.operator.greaterThanOrEqualTo": {
311
315
  text: string;
312
316
  crowdinContext: string;
313
317
  };
314
- "gd.gen-ai.alert-proposal.summary.granularity": {
318
+ "sdk.ui.genAi.alertProposal.operator.equalTo": {
315
319
  text: string;
316
320
  crowdinContext: string;
317
321
  };
318
- "gd.gen-ai.alert-proposal.summary.sensitivity": {
322
+ "sdk.ui.genAi.alertProposal.operator.increasesBy": {
319
323
  text: string;
320
324
  crowdinContext: string;
321
325
  };
322
- "gd.gen-ai.alert-proposal.summary.recipients": {
326
+ "sdk.ui.genAi.alertProposal.operator.decreasesBy": {
327
+ text: string;
328
+ crowdinContext: string;
329
+ };
330
+ "sdk.ui.genAi.alertProposal.operator.changesBy": {
331
+ text: string;
332
+ crowdinContext: string;
333
+ };
334
+ "sdk.ui.genAi.alertProposal.operator.change": {
335
+ text: string;
336
+ crowdinContext: string;
337
+ };
338
+ "sdk.ui.genAi.alertProposal.operator.difference": {
339
+ text: string;
340
+ crowdinContext: string;
341
+ };
342
+ "sdk.ui.genAi.alertProposal.granularity.hour": {
343
+ text: string;
344
+ crowdinContext: string;
345
+ };
346
+ "sdk.ui.genAi.alertProposal.granularity.day": {
347
+ text: string;
348
+ crowdinContext: string;
349
+ };
350
+ "sdk.ui.genAi.alertProposal.granularity.week": {
351
+ text: string;
352
+ crowdinContext: string;
353
+ };
354
+ "sdk.ui.genAi.alertProposal.granularity.month": {
355
+ text: string;
356
+ crowdinContext: string;
357
+ };
358
+ "sdk.ui.genAi.alertProposal.granularity.quarter": {
359
+ text: string;
360
+ crowdinContext: string;
361
+ };
362
+ "sdk.ui.genAi.alertProposal.granularity.year": {
363
+ text: string;
364
+ crowdinContext: string;
365
+ };
366
+ "sdk.ui.genAi.alertProposal.senstivity.low": {
367
+ text: string;
368
+ crowdinContext: string;
369
+ };
370
+ "sdk.ui.genAi.alertProposal.senstivity.medium": {
371
+ text: string;
372
+ crowdinContext: string;
373
+ };
374
+ "sdk.ui.genAi.alertProposal.senstivity.high": {
323
375
  text: string;
324
376
  crowdinContext: string;
325
377
  };
@@ -1 +1 @@
1
- {"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAipBjB,CAAC"}
1
+ {"version":3,"file":"en-US.localization-bundle.d.ts","sourceRoot":"","sources":["../../../src/localization/bundles/en-US.localization-bundle.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqsBjB,CAAC"}
@@ -97,6 +97,10 @@ export const en_US = {
97
97
  "text": "<b>Data too large.</b> Ask for reduce a data by applying filters.",
98
98
  "crowdinContext": "Error message when data is too large"
99
99
  },
100
+ "gd.gen-ai.visualization.unavailable": {
101
+ "text": "Visualization could not be displayed.",
102
+ "crowdinContext": "Message shown in place of a chart when the requested visualization is not available to display"
103
+ },
100
104
  "gd.gen-ai.permission-error": {
101
105
  "text": "Insufficient permissions",
102
106
  "crowdinContext": "Error message when user does not have sufficient permissions to access the chatbot"
@@ -269,14 +273,6 @@ export const en_US = {
269
273
  "text": "Filters",
270
274
  "crowdinContext": "Filters for alert in alert proposal dialog."
271
275
  },
272
- "gd.gen-ai.alert-proposal.summary.metric": {
273
- "text": "Metric",
274
- "crowdinContext": "Metric for alert in alert proposal dialog."
275
- },
276
- "gd.gen-ai.alert-proposal.summary.metric-compared": {
277
- "text": "Compared to",
278
- "crowdinContext": "Compared to metric for alert in alert proposal dialog."
279
- },
280
276
  "gd.gen-ai.alert-proposal.summary.date": {
281
277
  "text": "Date",
282
278
  "crowdinContext": "Date dataset for alert in alert proposal dialog."
@@ -289,41 +285,97 @@ export const en_US = {
289
285
  "text": "Dashboard",
290
286
  "crowdinContext": "Dashboard for alert in alert proposal dialog."
291
287
  },
292
- "gd.gen-ai.alert-proposal.summary.operator": {
293
- "text": "Operator",
294
- "crowdinContext": "Operator for alert in alert proposal dialog."
288
+ "gd.gen-ai.alert-proposal.summary.recipients": {
289
+ "text": "Recipients",
290
+ "crowdinContext": "Recipients for alert in alert proposal dialog."
295
291
  },
296
- "gd.gen-ai.alert-proposal.summary.arithmeticOperator": {
297
- "text": "Arithmetic operator",
298
- "crowdinContext": "Arithmetic operator for alert in alert proposal dialog."
292
+ "gd.gen-ai.alert-proposal.summary.condition-comparison": {
293
+ "text": "Comparison",
294
+ "crowdinContext": "Comparison for alert in alert proposal dialog."
299
295
  },
300
- "gd.gen-ai.alert-proposal.summary.threshold": {
301
- "text": "Threshold",
302
- "crowdinContext": "Threshold for alert in alert proposal dialog."
296
+ "gd.gen-ai.alert-proposal.summary.condition-relative": {
297
+ "text": "Relative",
298
+ "crowdinContext": "Relative for alert in alert proposal dialog."
303
299
  },
304
- "gd.gen-ai.alert-proposal.summary.range": {
305
- "text": "Range",
306
- "crowdinContext": "Range for alert in alert proposal dialog."
300
+ "gd.gen-ai.alert-proposal.summary.condition-anomalyDetection": {
301
+ "text": "Anomaly Detection",
302
+ "crowdinContext": "Anomaly Detection for alert in alert proposal dialog."
307
303
  },
308
- "gd.gen-ai.alert-proposal.summary.from": {
309
- "text": "From",
310
- "crowdinContext": "From for alert in alert proposal dialog."
304
+ "sdk.ui.genAi.alertProposal.operator.lessThan": {
305
+ "text": "<",
306
+ "crowdinContext": "Less than operator for alert in alert proposal dialog."
311
307
  },
312
- "gd.gen-ai.alert-proposal.summary.to": {
313
- "text": "To",
314
- "crowdinContext": "To for alert in alert proposal dialog."
308
+ "sdk.ui.genAi.alertProposal.operator.lessThanOrEqualTo": {
309
+ "text": "<=",
310
+ "crowdinContext": "Less than or equal to operator for alert in alert proposal dialog."
315
311
  },
316
- "gd.gen-ai.alert-proposal.summary.granularity": {
317
- "text": "Granularity",
318
- "crowdinContext": "Granularity for alert in alert proposal dialog."
312
+ "sdk.ui.genAi.alertProposal.operator.greaterThan": {
313
+ "text": ">",
314
+ "crowdinContext": "Greater than operator for alert in alert proposal dialog."
319
315
  },
320
- "gd.gen-ai.alert-proposal.summary.sensitivity": {
321
- "text": "Sensitivity",
322
- "crowdinContext": "Sensitivity for alert in alert proposal dialog."
316
+ "sdk.ui.genAi.alertProposal.operator.greaterThanOrEqualTo": {
317
+ "text": ">=",
318
+ "crowdinContext": "Greater than or equal to operator for alert in alert proposal dialog."
323
319
  },
324
- "gd.gen-ai.alert-proposal.summary.recipients": {
325
- "text": "Recipients",
326
- "crowdinContext": "recipients for alert in alert proposal dialog."
320
+ "sdk.ui.genAi.alertProposal.operator.equalTo": {
321
+ "text": "=",
322
+ "crowdinContext": "Equal to operator for alert in alert proposal dialog."
323
+ },
324
+ "sdk.ui.genAi.alertProposal.operator.increasesBy": {
325
+ "text": "increases by",
326
+ "crowdinContext": "Increases by operator for alert in alert proposal dialog."
327
+ },
328
+ "sdk.ui.genAi.alertProposal.operator.decreasesBy": {
329
+ "text": "decreases by",
330
+ "crowdinContext": "Decreases by operator for alert in alert proposal dialog."
331
+ },
332
+ "sdk.ui.genAi.alertProposal.operator.changesBy": {
333
+ "text": "changes by",
334
+ "crowdinContext": "Changes by operator for alert in alert proposal dialog."
335
+ },
336
+ "sdk.ui.genAi.alertProposal.operator.change": {
337
+ "text": "-",
338
+ "crowdinContext": "Changes by operator for alert in alert proposal dialog."
339
+ },
340
+ "sdk.ui.genAi.alertProposal.operator.difference": {
341
+ "text": "%",
342
+ "crowdinContext": "Changes by operator for alert in alert proposal dialog."
343
+ },
344
+ "sdk.ui.genAi.alertProposal.granularity.hour": {
345
+ "text": "on <b>hourly</b> basis",
346
+ "crowdinContext": "Hour granularity for alert in alert proposal dialog."
347
+ },
348
+ "sdk.ui.genAi.alertProposal.granularity.day": {
349
+ "text": "on <b>daily</b> basis",
350
+ "crowdinContext": "Day granularity for alert in alert proposal dialog."
351
+ },
352
+ "sdk.ui.genAi.alertProposal.granularity.week": {
353
+ "text": "on <b>weekly</b> basis",
354
+ "crowdinContext": "Week granularity for alert in alert proposal dialog."
355
+ },
356
+ "sdk.ui.genAi.alertProposal.granularity.month": {
357
+ "text": "on <b>monthly</b> basis",
358
+ "crowdinContext": "Month granularity for alert in alert proposal dialog."
359
+ },
360
+ "sdk.ui.genAi.alertProposal.granularity.quarter": {
361
+ "text": "on <b>quarterly</b> basis",
362
+ "crowdinContext": "Quarter granularity for alert in alert proposal dialog."
363
+ },
364
+ "sdk.ui.genAi.alertProposal.granularity.year": {
365
+ "text": "on <b>yearly</b> basis",
366
+ "crowdinContext": "Year granularity for alert in alert proposal dialog."
367
+ },
368
+ "sdk.ui.genAi.alertProposal.senstivity.low": {
369
+ "text": "with <b>low</b> sensitivity",
370
+ "crowdinContext": "Low sensitivity for alert in alert proposal dialog."
371
+ },
372
+ "sdk.ui.genAi.alertProposal.senstivity.medium": {
373
+ "text": "with <b>medium</b> sensitivity",
374
+ "crowdinContext": "Medium sensitivity for alert in alert proposal dialog."
375
+ },
376
+ "sdk.ui.genAi.alertProposal.senstivity.high": {
377
+ "text": "with <b>high</b> sensitivity",
378
+ "crowdinContext": "High sensitivity for alert in alert proposal dialog."
327
379
  },
328
380
  "gd.gen-ai.alert-proposal.summary.trigger": {
329
381
  "text": "Trigger",
@@ -629,7 +629,7 @@ const messagesSlice = createSlice({
629
629
  const visualization = assistantMessage.content.parts
630
630
  .filter((filter) => filter.type === "visualization")
631
631
  .find((content) => content.visualization?.insight.identifier === payload.visualizationId);
632
- if (visualization) {
632
+ if (visualization?.visualization) {
633
633
  visualization.visualization.insight.title = payload.visualizationTitle;
634
634
  visualization.saving = {
635
635
  started: true,
@@ -698,7 +698,7 @@ const messagesSlice = createSlice({
698
698
  const visualization = assistantMessage.content.parts
699
699
  .filter((filter) => filter.type === "visualization")
700
700
  .find((content) => content.visualization?.insight.identifier === payload.visualizationId);
701
- if (visualization) {
701
+ if (visualization?.visualization) {
702
702
  visualization.saving = {
703
703
  started: true,
704
704
  completed: true,
@@ -1 +1 @@
1
- {"version":3,"file":"onUserMessage.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onUserMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EASzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;AAiBxB,OAAO,EAOH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAmB9E"}
1
+ {"version":3,"file":"onUserMessage.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onUserMessage.ts"],"names":[],"mappings":"AAIA,OAAO,EAEH,KAAK,iBAAiB,EASzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,EAOH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAMtC;;;GAGG;AACH,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAmB9E"}
@@ -3,7 +3,7 @@ import { call, cancel, cancelled, getContext, put, select } from "redux-saga/eff
3
3
  import { isChatConversationError, isChatConversationItem, } from "@gooddata/sdk-backend-spi";
4
4
  import { isChatConversationLocalItem, isTextContents, isUserMessage, makeAssistantItem, makeAssistantMessage, } from "../../model.js";
5
5
  import { generateTitleFromQuestion } from "../../utils.js";
6
- import { agentSwitchingActiveSelector, allowedRelationshipTypesSelector, objectTypesSelector, settingsSelector, userContextSelector, } from "../chatWindow/chatWindowSelectors.js";
6
+ import { agentSwitchingActiveSelector, allowedRelationshipTypesSelector, objectTypesSelector, settingsSelector, tagsSelector, userContextSelector, } from "../chatWindow/chatWindowSelectors.js";
7
7
  import { clearUserContextAction } from "../chatWindow/chatWindowSlice.js";
8
8
  import { conversationMessagesByIdSelector, conversationSelector, messagesSelector, pendingAgentSwitchSelector, selectedAgentIdSelector, } from "../messages/messagesSelectors.js";
9
9
  import { applyPendingAgentSwitchAction, evaluateMessageAction, evaluateMessageCompleteAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, revertAgentSwitchAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
@@ -321,6 +321,7 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
321
321
  let reader = undefined;
322
322
  const settings = yield select(settingsSelector);
323
323
  const objectTypes = yield select(objectTypesSelector);
324
+ const { includeTags, excludeTags } = yield select(tagsSelector);
324
325
  const allowedRelationshipTypes = yield select(allowedRelationshipTypesSelector);
325
326
  const userContext = yield select(userContextSelector);
326
327
  // Clear user context immediately — it is a one-shot value
@@ -332,6 +333,12 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
332
333
  let queryBuilder = preparedChatThread
333
334
  .withSearchLimit(Number(settings?.["aiChatSearchLimit"]) || 5)
334
335
  .withObjectTypes(objectTypes);
336
+ if (excludeTags) {
337
+ queryBuilder = queryBuilder.withExcludeTags(excludeTags);
338
+ }
339
+ if (includeTags) {
340
+ queryBuilder = queryBuilder.withIncludeTags(includeTags);
341
+ }
335
342
  if (allowedRelationshipTypes?.length) {
336
343
  queryBuilder = queryBuilder.withAllowedRelationshipTypes(allowedRelationshipTypes);
337
344
  }
@@ -1 +1 @@
1
- {"version":3,"file":"onVisualizationSave.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onVisualizationSave.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAGH,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAG1B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAEH,KAAK,0BAA0B,EAE/B,KAAK,OAAO,EAEf,MAAM,gBAAgB,CAAC;AASxB,wBAAiB,mBAAmB,CAAC,EACjC,OAAO,EACV,EAAE,aAAa,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA6GD;AAoGD,eAAO,MAAM,cAAc,+FA0C1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,+FAoC5B,CAAC"}
1
+ {"version":3,"file":"onVisualizationSave.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onVisualizationSave.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGtD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAGH,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,kBAAkB,EAG1B,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAEH,KAAK,0BAA0B,EAE/B,KAAK,OAAO,EAEf,MAAM,gBAAgB,CAAC;AASxB,wBAAiB,mBAAmB,CAAC,EACjC,OAAO,EACV,EAAE,aAAa,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;CACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA8GD;AAoGD,eAAO,MAAM,cAAc,+FA0C1B,CAAC;AAEF,eAAO,MAAM,gBAAgB,+FAoC5B,CAAC"}
@@ -24,14 +24,15 @@ export function* onVisualizationSave({ payload, }) {
24
24
  }
25
25
  const visualizationContent = assistantMessage.content.parts
26
26
  .filter((filter) => filter.type === "visualization")
27
- .find((content) => content.visualization.insight.identifier === payload.visualizationId);
28
- if (!visualizationContent) {
27
+ .find((content) => content.visualization?.insight.identifier === payload.visualizationId);
28
+ if (!visualizationContent?.visualization) {
29
29
  return;
30
30
  }
31
+ const sourceVisualization = visualizationContent.visualization;
31
32
  const savedVisualization = yield call(backend.workspace(workspace).insights().createInsight, {
32
- ...visualizationContent.visualization,
33
+ ...sourceVisualization,
33
34
  insight: {
34
- ...visualizationContent.visualization.insight,
35
+ ...sourceVisualization.insight,
35
36
  title: payload.visualizationTitle,
36
37
  },
37
38
  });
@@ -40,7 +41,7 @@ export function* onVisualizationSave({ payload, }) {
40
41
  .genAI()
41
42
  .getChatConversations()
42
43
  .getConversationThread(conversation.id);
43
- yield call(resave.resaveVisualisation.bind(resave), visualizationContent.visualization.insight.identifier, savedVisualization.insight.identifier);
44
+ yield call(resave.resaveVisualisation.bind(resave), sourceVisualization.insight.identifier, savedVisualization.insight.identifier);
44
45
  yield put(saveVisualizationSuccessAction({
45
46
  visualizationId: payload.visualizationId,
46
47
  assistantMessageId: payload.assistantMessageId,
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.58.7"
8
+ "packageVersion": "7.58.9"
9
9
  }
10
10
  ]
11
11
  }
package/esm/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { type IChatConversationVisualisationContent } from "@gooddata/sdk-backend-spi";
2
2
  import { type IGenAIVisualization } from "@gooddata/sdk-model";
3
3
  import { type IChatConversationLocalItem } from "./model.js";
4
- export type Config = IGenAIVisualization["config"] | IChatConversationVisualisationContent["visualization"]["insight"]["properties"]["controls"];
4
+ export type Config = IGenAIVisualization["config"] | NonNullable<IChatConversationVisualisationContent["visualization"]>["insight"]["properties"]["controls"];
5
5
  export type StoredConversation = {
6
6
  /**
7
7
  * A record containing chat conversation items indexed by string keys.
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,MAAM,GACZ,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,qCAAqC,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAElG,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClD;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACnE;;;OAGG;IACH,kBAAkB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,qCAAqC,EAAE,MAAM,2BAA2B,CAAC;AACvF,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,KAAK,0BAA0B,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,MAAM,MAAM,GACZ,mBAAmB,CAAC,QAAQ,CAAC,GAC7B,WAAW,CACP,qCAAqC,CAAC,eAAe,CAAC,CACzD,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;;;;;;OAOG;IACH,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IAClD;;;OAGG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,CAAC;IACnE;;;OAGG;IACH,kBAAkB,CAAC,EAAE;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,eAAe,EAAE,MAAM,GAAG,SAAS,CAAC;KACvC,CAAC;CACL,CAAC"}
@@ -57,7 +57,7 @@ export function loadWhatIfScenarios(content) {
57
57
  }
58
58
  // Search for visualizations
59
59
  const visualisation = content.parts?.find((p) => p.type === "visualization");
60
- if (!visualisation) {
60
+ if (!visualisation?.visualization) {
61
61
  return undefined;
62
62
  }
63
63
  const scenarios = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-gen-ai",
3
- "version": "11.43.0-alpha.0",
3
+ "version": "11.43.0-alpha.2",
4
4
  "description": "GoodData GenAI SDK",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -56,18 +56,18 @@
56
56
  "reselect": "5.1.1",
57
57
  "tslib": "2.8.1",
58
58
  "uuid": "11.1.1",
59
- "@gooddata/api-client-tiger": "11.43.0-alpha.0",
60
- "@gooddata/sdk-backend-spi": "11.43.0-alpha.0",
61
- "@gooddata/sdk-ui": "11.43.0-alpha.0",
62
- "@gooddata/sdk-model": "11.43.0-alpha.0",
63
- "@gooddata/sdk-ui-charts": "11.43.0-alpha.0",
64
- "@gooddata/sdk-ui-dashboard": "11.43.0-alpha.0",
65
- "@gooddata/sdk-ui-filters": "11.43.0-alpha.0",
66
- "@gooddata/sdk-ui-kit": "11.43.0-alpha.0",
67
- "@gooddata/sdk-ui-pivot": "11.43.0-alpha.0",
68
- "@gooddata/sdk-ui-semantic-search": "11.43.0-alpha.0",
69
- "@gooddata/util": "11.43.0-alpha.0",
70
- "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.0"
59
+ "@gooddata/api-client-tiger": "11.43.0-alpha.2",
60
+ "@gooddata/sdk-ui": "11.43.0-alpha.2",
61
+ "@gooddata/sdk-backend-spi": "11.43.0-alpha.2",
62
+ "@gooddata/sdk-ui-charts": "11.43.0-alpha.2",
63
+ "@gooddata/sdk-model": "11.43.0-alpha.2",
64
+ "@gooddata/sdk-ui-dashboard": "11.43.0-alpha.2",
65
+ "@gooddata/sdk-ui-filters": "11.43.0-alpha.2",
66
+ "@gooddata/sdk-ui-kit": "11.43.0-alpha.2",
67
+ "@gooddata/sdk-ui-semantic-search": "11.43.0-alpha.2",
68
+ "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.2",
69
+ "@gooddata/sdk-ui-pivot": "11.43.0-alpha.2",
70
+ "@gooddata/util": "11.43.0-alpha.2"
71
71
  },
72
72
  "devDependencies": {
73
73
  "@microsoft/api-documenter": "^7.17.0",
@@ -110,13 +110,13 @@
110
110
  "typescript": "5.9.3",
111
111
  "vitest": "4.1.8",
112
112
  "vitest-dom": "0.1.1",
113
- "@gooddata/eslint-config": "11.43.0-alpha.0",
114
- "@gooddata/i18n-toolkit": "11.43.0-alpha.0",
115
- "@gooddata/reference-workspace": "11.43.0-alpha.0",
116
- "@gooddata/oxlint-config": "11.43.0-alpha.0",
117
- "@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.0",
118
- "@gooddata/stylelint-config": "11.43.0-alpha.0",
119
- "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.0"
113
+ "@gooddata/eslint-config": "11.43.0-alpha.2",
114
+ "@gooddata/i18n-toolkit": "11.43.0-alpha.2",
115
+ "@gooddata/reference-workspace": "11.43.0-alpha.2",
116
+ "@gooddata/oxlint-config": "11.43.0-alpha.2",
117
+ "@gooddata/sdk-ui-theme-provider": "11.43.0-alpha.2",
118
+ "@gooddata/stylelint-config": "11.43.0-alpha.2",
119
+ "@gooddata/sdk-backend-mockingbird": "11.43.0-alpha.2"
120
120
  },
121
121
  "peerDependencies": {
122
122
  "react": "^18.0.0 || ^19.0.0",
@@ -14303,6 +14303,24 @@ body.gd-kda-dialog-opened .highcharts-tooltip-container {
14303
14303
  display: inline;
14304
14304
  color: var(--gd-palette-complementary-6, #94a1ad);
14305
14305
  }
14306
+ .gd-gen-ai-chat__conversation__item__content--alertProposal .gd-gen-ai-chat__conversation__item__content-alertProposal-condition {
14307
+ display: flex;
14308
+ flex-direction: row;
14309
+ gap: 5px;
14310
+ align-items: center;
14311
+ align-self: center;
14312
+ }
14313
+ .gd-gen-ai-chat__conversation__item__content--alertProposal .gd-gen-ai-chat__conversation__item__content-alertProposal-condition .alertProposal-operand-number {
14314
+ font-weight: bold;
14315
+ }
14316
+ .gd-gen-ai-chat__conversation__item__content--alertProposal .gd-gen-ai-chat__conversation__item__content-alertProposal-anomaly {
14317
+ display: block;
14318
+ padding: 5px 15px 0 15px;
14319
+ text-align: center;
14320
+ }
14321
+ .gd-gen-ai-chat__conversation__item__content--alertProposal .gd-gen-ai-chat__conversation__item__content-alertProposal-anomaly .alertProposal-operand {
14322
+ display: inline-block;
14323
+ }
14306
14324
  .gd-gen-ai-chat__conversation__item__content--kda__button {
14307
14325
  margin-top: 15px;
14308
14326
  display: flex;