@gooddata/sdk-ui-gen-ai 11.52.0 → 11.53.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (133) hide show
  1. package/esm/components/GenAIChat.d.ts.map +1 -1
  2. package/esm/components/GenAIChat.js +2 -2
  3. package/esm/components/GenAiStore.d.ts +9 -0
  4. package/esm/components/GenAiStore.d.ts.map +1 -1
  5. package/esm/components/GenAiStore.js +2 -1
  6. package/esm/components/intelligence/GenAiInteractionIntelligence.d.ts +21 -0
  7. package/esm/components/intelligence/GenAiInteractionIntelligence.d.ts.map +1 -0
  8. package/esm/components/intelligence/GenAiInteractionIntelligence.js +57 -0
  9. package/esm/components/intelligence/InteractionIntelligenceTrigger.d.ts +15 -0
  10. package/esm/components/intelligence/InteractionIntelligenceTrigger.d.ts.map +1 -0
  11. package/esm/components/intelligence/InteractionIntelligenceTrigger.js +19 -0
  12. package/esm/components/intelligence/data/categoryDetailRows.d.ts +12 -0
  13. package/esm/components/intelligence/data/categoryDetailRows.d.ts.map +1 -0
  14. package/esm/components/intelligence/data/categoryDetailRows.js +206 -0
  15. package/esm/components/intelligence/data/constants.d.ts +22 -0
  16. package/esm/components/intelligence/data/constants.d.ts.map +1 -0
  17. package/esm/components/intelligence/data/constants.js +27 -0
  18. package/esm/components/intelligence/data/deriveInteractionIntelligenceFromSteps.d.ts +23 -0
  19. package/esm/components/intelligence/data/deriveInteractionIntelligenceFromSteps.d.ts.map +1 -0
  20. package/esm/components/intelligence/data/deriveInteractionIntelligenceFromSteps.js +109 -0
  21. package/esm/components/intelligence/data/mergeDetailRows.d.ts +15 -0
  22. package/esm/components/intelligence/data/mergeDetailRows.d.ts.map +1 -0
  23. package/esm/components/intelligence/data/mergeDetailRows.js +91 -0
  24. package/esm/components/intelligence/data/timeline.d.ts +18 -0
  25. package/esm/components/intelligence/data/timeline.d.ts.map +1 -0
  26. package/esm/components/intelligence/data/timeline.js +40 -0
  27. package/esm/components/intelligence/data/types.d.ts +159 -0
  28. package/esm/components/intelligence/data/types.d.ts.map +1 -0
  29. package/esm/components/intelligence/data/types.js +2 -0
  30. package/esm/components/intelligence/data/useInteractionIntelligenceData.d.ts +9 -0
  31. package/esm/components/intelligence/data/useInteractionIntelligenceData.d.ts.map +1 -0
  32. package/esm/components/intelligence/data/useInteractionIntelligenceData.js +20 -0
  33. package/esm/components/intelligence/data/useInteractionIntelligenceTotals.d.ts +9 -0
  34. package/esm/components/intelligence/data/useInteractionIntelligenceTotals.d.ts.map +1 -0
  35. package/esm/components/intelligence/data/useInteractionIntelligenceTotals.js +20 -0
  36. package/esm/components/intelligence/detail/DetailRowValue.d.ts +10 -0
  37. package/esm/components/intelligence/detail/DetailRowValue.d.ts.map +1 -0
  38. package/esm/components/intelligence/detail/DetailRowValue.js +23 -0
  39. package/esm/components/intelligence/detail/IntelligenceCategoryDetail.d.ts +17 -0
  40. package/esm/components/intelligence/detail/IntelligenceCategoryDetail.d.ts.map +1 -0
  41. package/esm/components/intelligence/detail/IntelligenceCategoryDetail.js +21 -0
  42. package/esm/components/intelligence/detail/IntelligenceDetailHeader.d.ts +12 -0
  43. package/esm/components/intelligence/detail/IntelligenceDetailHeader.d.ts.map +1 -0
  44. package/esm/components/intelligence/detail/IntelligenceDetailHeader.js +19 -0
  45. package/esm/components/intelligence/detail/IntelligenceDetailRows.d.ts +11 -0
  46. package/esm/components/intelligence/detail/IntelligenceDetailRows.d.ts.map +1 -0
  47. package/esm/components/intelligence/detail/IntelligenceDetailRows.js +16 -0
  48. package/esm/components/intelligence/detail/IntelligenceStepCarousel.d.ts +12 -0
  49. package/esm/components/intelligence/detail/IntelligenceStepCarousel.d.ts.map +1 -0
  50. package/esm/components/intelligence/detail/IntelligenceStepCarousel.js +21 -0
  51. package/esm/components/intelligence/format/formatDuration.d.ts +23 -0
  52. package/esm/components/intelligence/format/formatDuration.d.ts.map +1 -0
  53. package/esm/components/intelligence/format/formatDuration.js +38 -0
  54. package/esm/components/intelligence/format/formatTokens.d.ts +8 -0
  55. package/esm/components/intelligence/format/formatTokens.d.ts.map +1 -0
  56. package/esm/components/intelligence/format/formatTokens.js +10 -0
  57. package/esm/components/intelligence/format/resolveMessage.d.ts +9 -0
  58. package/esm/components/intelligence/format/resolveMessage.d.ts.map +1 -0
  59. package/esm/components/intelligence/format/resolveMessage.js +10 -0
  60. package/esm/components/intelligence/intelligenceBem.d.ts +7 -0
  61. package/esm/components/intelligence/intelligenceBem.d.ts.map +1 -0
  62. package/esm/components/intelligence/intelligenceBem.js +8 -0
  63. package/esm/components/intelligence/panel/IconCircle.d.ts +10 -0
  64. package/esm/components/intelligence/panel/IconCircle.d.ts.map +1 -0
  65. package/esm/components/intelligence/panel/IconCircle.js +12 -0
  66. package/esm/components/intelligence/panel/IntelligenceCategoryList.d.ts +13 -0
  67. package/esm/components/intelligence/panel/IntelligenceCategoryList.d.ts.map +1 -0
  68. package/esm/components/intelligence/panel/IntelligenceCategoryList.js +10 -0
  69. package/esm/components/intelligence/panel/IntelligenceCategoryRow.d.ts +14 -0
  70. package/esm/components/intelligence/panel/IntelligenceCategoryRow.d.ts.map +1 -0
  71. package/esm/components/intelligence/panel/IntelligenceCategoryRow.js +19 -0
  72. package/esm/components/intelligence/panel/IntelligenceDurationTokens.d.ts +12 -0
  73. package/esm/components/intelligence/panel/IntelligenceDurationTokens.d.ts.map +1 -0
  74. package/esm/components/intelligence/panel/IntelligenceDurationTokens.js +19 -0
  75. package/esm/components/intelligence/panel/IntelligenceFooter.d.ts +10 -0
  76. package/esm/components/intelligence/panel/IntelligenceFooter.d.ts.map +1 -0
  77. package/esm/components/intelligence/panel/IntelligenceFooter.js +20 -0
  78. package/esm/components/intelligence/panel/IntelligenceHeader.d.ts +8 -0
  79. package/esm/components/intelligence/panel/IntelligenceHeader.d.ts.map +1 -0
  80. package/esm/components/intelligence/panel/IntelligenceHeader.js +15 -0
  81. package/esm/components/intelligence/panel/IntelligenceStepTooltip.d.ts +12 -0
  82. package/esm/components/intelligence/panel/IntelligenceStepTooltip.d.ts.map +1 -0
  83. package/esm/components/intelligence/panel/IntelligenceStepTooltip.js +18 -0
  84. package/esm/components/intelligence/panel/IntelligenceTimeline.d.ts +15 -0
  85. package/esm/components/intelligence/panel/IntelligenceTimeline.d.ts.map +1 -0
  86. package/esm/components/intelligence/panel/IntelligenceTimeline.js +16 -0
  87. package/esm/components/intelligence/panel/TimelineBar.d.ts +19 -0
  88. package/esm/components/intelligence/panel/TimelineBar.d.ts.map +1 -0
  89. package/esm/components/intelligence/panel/TimelineBar.js +34 -0
  90. package/esm/components/messages/AssistantItem.d.ts.map +1 -1
  91. package/esm/components/messages/AssistantItem.js +15 -1
  92. package/esm/components/messages/AssistantItemFeedback.d.ts +6 -1
  93. package/esm/components/messages/AssistantItemFeedback.d.ts.map +1 -1
  94. package/esm/components/messages/AssistantItemFeedback.js +11 -4
  95. package/esm/hooks/useGenAIStore.d.ts +1 -0
  96. package/esm/hooks/useGenAIStore.d.ts.map +1 -1
  97. package/esm/hooks/useGenAIStore.js +3 -3
  98. package/esm/index.d.ts +2 -0
  99. package/esm/index.d.ts.map +1 -1
  100. package/esm/index.js +2 -0
  101. package/esm/localization/bundles/en-US.localization-bundle.d.ts +184 -0
  102. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -1
  103. package/esm/localization/bundles/en-US.localization-bundle.js +184 -0
  104. package/esm/sdk-ui-gen-ai.d.ts +36 -0
  105. package/esm/store/chatWindow/chatWindowSelectors.d.ts +2 -0
  106. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -1
  107. package/esm/store/chatWindow/chatWindowSelectors.js +5 -0
  108. package/esm/store/chatWindow/chatWindowSlice.d.ts +7 -1
  109. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -1
  110. package/esm/store/chatWindow/chatWindowSlice.js +3 -1
  111. package/esm/store/messages/messagesSelectors.d.ts +6 -0
  112. package/esm/store/messages/messagesSelectors.d.ts.map +1 -1
  113. package/esm/store/messages/messagesSelectors.js +9 -0
  114. package/esm/store/messages/messagesSlice.d.ts +11 -3
  115. package/esm/store/messages/messagesSlice.d.ts.map +1 -1
  116. package/esm/store/messages/messagesSlice.js +34 -1
  117. package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -1
  118. package/esm/store/sideEffects/onUserMessage.js +40 -6
  119. package/esm/store/store.d.ts +1 -1
  120. package/esm/store/store.d.ts.map +1 -1
  121. package/esm/store/store.js +2 -2
  122. package/esm/types.d.ts +33 -1
  123. package/esm/types.d.ts.map +1 -1
  124. package/package.json +20 -20
  125. package/styles/css/intelligence.css +300 -0
  126. package/styles/css/intelligence.css.map +1 -0
  127. package/styles/css/main.css +304 -1
  128. package/styles/css/main.css.map +1 -1
  129. package/styles/css/messages.css +5 -1
  130. package/styles/css/messages.css.map +1 -1
  131. package/styles/scss/intelligence.scss +328 -0
  132. package/styles/scss/main.scss +1 -0
  133. package/styles/scss/messages.scss +10 -1
@@ -1 +1 @@
1
- {"version":3,"file":"messagesSlice.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSlice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"messagesSlice.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSlice.ts"],"names":[],"mappings":"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"}
@@ -92,6 +92,14 @@ const setConversationInProgress = (state, inProgress, localConversationId) => {
92
92
  };
93
93
  }
94
94
  };
95
+ const getResponseTrace = (state, conversationId, responseId) => {
96
+ const data = getConversationData(state.conversationsData, conversationId);
97
+ if (!data) {
98
+ return undefined;
99
+ }
100
+ const trace = (data.interactionTrace ??= {});
101
+ return (trace[responseId] ??= { steps: [], detailsByStepId: {} });
102
+ };
95
103
  const getAssistantMessageStrict = (state, assistantMessageId, conversationId) => {
96
104
  if (state.currentConversation) {
97
105
  const data = getConversationData(state.conversationsData, conversationId);
@@ -537,6 +545,31 @@ const messagesSlice = createSlice({
537
545
  state.selectedEffort = payload.effort;
538
546
  }
539
547
  },
548
+ appendInteractionStepAction: (state, { payload, }) => {
549
+ const trace = getResponseTrace(state, payload.conversationId, payload.step.responseId);
550
+ if (!trace) {
551
+ return;
552
+ }
553
+ // Defensive: a redelivered step must not be counted twice.
554
+ if (trace.steps.some((step) => step.stepId === payload.step.stepId)) {
555
+ return;
556
+ }
557
+ trace.steps.push(payload.step);
558
+ if (trace.traceId === undefined) {
559
+ trace.traceId = payload.step.traceId;
560
+ }
561
+ },
562
+ appendTracedActionAction: (state, { payload, }) => {
563
+ const trace = getResponseTrace(state, payload.conversationId, payload.responseId);
564
+ if (!trace) {
565
+ return;
566
+ }
567
+ const actions = (trace.detailsByStepId[payload.stepId] ??= []);
568
+ if (actions.some((action) => action.itemId === payload.action.itemId)) {
569
+ return;
570
+ }
571
+ actions.push(payload.action);
572
+ },
540
573
  applyPendingAgentSwitchAction: (state, { payload }) => {
541
574
  const data = state.conversationsData[payload.conversationLocalId];
542
575
  if (!data?.pendingAgentSwitch) {
@@ -886,7 +919,7 @@ const messagesSlice = createSlice({
886
919
  });
887
920
  const errorToObject = (error) => Object.fromEntries(Object.getOwnPropertyNames(error).map((key) => [key, error[key]]));
888
921
  export const messagesSliceReducer = messagesSlice.reducer;
889
- export const { loadThreadAction, loadThreadErrorAction, loadThreadSuccessAction, loadConversationsSuccessAction, loadConversationSuccessAction, restoreCachedMessagesAction, clearThreadErrorAction, clearThreadSuccessAction, clearConversationSuccessAction, evaluateConversationTitleAction, evaluateMessageAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, evaluateMessageCompleteAction, setMessagesAction, setVerboseAction, setGlobalErrorAction, cancelAsyncAction, clearConversationLoadingAction, setUserFeedback, setUserFeedbackError, clearUserFeedbackError, saveVisualizationAction, savedVisualizationAction, saveVisualizationErrorAction, saveVisualizationSuccessAction, saveVisualisationRenderStatusAction, saveVisualisationRenderStatusSuccessAction, visualizationErrorAction, applyPendingAgentSwitchAction, revertAgentSwitchAction, setAgentsAction, pinConversationAction, pinConversationSuccessAction, pinConversationFailureAction, renameConversationAction, renameConversationSuccessAction, renameConversationFailureAction, deleteConversationAction, deleteConversationStartAction, deleteConversationSuccessAction, deleteConversationFailureAction,
922
+ export const { loadThreadAction, loadThreadErrorAction, loadThreadSuccessAction, loadConversationsSuccessAction, loadConversationSuccessAction, restoreCachedMessagesAction, clearThreadErrorAction, clearThreadSuccessAction, clearConversationSuccessAction, evaluateConversationTitleAction, evaluateMessageAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, evaluateMessageCompleteAction, setMessagesAction, setVerboseAction, setGlobalErrorAction, cancelAsyncAction, clearConversationLoadingAction, setUserFeedback, setUserFeedbackError, clearUserFeedbackError, saveVisualizationAction, savedVisualizationAction, saveVisualizationErrorAction, saveVisualizationSuccessAction, saveVisualisationRenderStatusAction, saveVisualisationRenderStatusSuccessAction, visualizationErrorAction, appendInteractionStepAction, appendTracedActionAction, applyPendingAgentSwitchAction, revertAgentSwitchAction, setAgentsAction, pinConversationAction, pinConversationSuccessAction, pinConversationFailureAction, renameConversationAction, renameConversationSuccessAction, renameConversationFailureAction, deleteConversationAction, deleteConversationStartAction, deleteConversationSuccessAction, deleteConversationFailureAction,
890
923
  /**
891
924
  * @public
892
925
  */
@@ -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;AAkBxB,OAAO,EAOH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAOtC;;;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,EAWzB,MAAM,2BAA2B,CAAC;AAOnC,OAAO,EACH,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,0BAA0B,EAOlC,MAAM,gBAAgB,CAAC;AAkBxB,OAAO,EASH,KAAK,gBAAgB,EAGxB,MAAM,8BAA8B,CAAC;AAOtC;;;GAGG;AACH,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oJAmB9E"}
@@ -1,11 +1,11 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { call, cancel, cancelled, getContext, put, select } from "redux-saga/effects";
3
- import { isChatConversationError, isChatConversationItem, } from "@gooddata/sdk-backend-spi";
3
+ import { isChatConversationError, isChatConversationInteractionStep, 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
6
  import { agentSwitchingActiveSelector, allowedRelationshipTypesSelector, objectTypesSelector, settingsSelector, tagsSelector, userContextSelector, } from "../chatWindow/chatWindowSelectors.js";
7
7
  import { conversationEffortSelector, conversationMessagesByIdSelector, conversationSelector, messagesSelector, pendingAgentSwitchSelector, selectedAgentIdSelector, } from "../messages/messagesSelectors.js";
8
- import { applyPendingAgentSwitchAction, evaluateMessageAction, evaluateMessageCompleteAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, revertAgentSwitchAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
8
+ import { appendInteractionStepAction, appendTracedActionAction, applyPendingAgentSwitchAction, evaluateMessageAction, evaluateMessageCompleteAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, revertAgentSwitchAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
9
9
  import { processContents } from "./converters/interactionsToMessages.js";
10
10
  import { convertToLocalContent } from "./converters/toLocalContent.js";
11
11
  import { notifyDefinitionReceived } from "./onDefinitionReceivedTrigger.js";
@@ -333,6 +333,8 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
333
333
  let currentUserMessage = userMessage;
334
334
  let currentAssistantMessage = assistantMessage;
335
335
  let currentInteractionId = undefined;
336
+ // Tool names by callId, so a toolResult's trace detail can name the tool that produced it.
337
+ const toolNamesByCallId = new Map();
336
338
  let queryBuilder = preparedChatThread
337
339
  .withSearchLimit(Number(settings?.["aiChatSearchLimit"]) || 10)
338
340
  .withObjectTypes(objectTypes)
@@ -350,16 +352,22 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
350
352
  queryBuilder = queryBuilder.withUserContext(context);
351
353
  }
352
354
  try {
353
- const results = yield call([
354
- queryBuilder,
355
- queryBuilder.stream,
356
- ]);
355
+ const results = yield call([queryBuilder, queryBuilder.stream]);
357
356
  reader = results.getReader();
358
357
  while (true) {
359
358
  const { value, done, } = yield call([reader, reader.read]);
360
359
  if (done) {
361
360
  break;
362
361
  }
362
+ // Interaction steps are the "Interaction Intelligence" trace, not messages — they carry the
363
+ // turn's timing and spend and never touch the assistant's content.
364
+ if (value && isChatConversationInteractionStep(value)) {
365
+ yield put(appendInteractionStepAction({
366
+ conversationId: conversation.localId,
367
+ step: value,
368
+ }));
369
+ continue;
370
+ }
363
371
  if (value) {
364
372
  if (isChatConversationItem(value)) {
365
373
  // Special case, when we have current user message
@@ -380,6 +388,32 @@ function* evaluateUserConversationMessage(conversation, userMessage, assistantMe
380
388
  if (value.role === "user" || value.role === "system") {
381
389
  continue;
382
390
  }
391
+ // Remember each tool call's name so the matching toolResult — which carries
392
+ // only its callId — can be attributed to the tool that produced it.
393
+ if (value.content.type === "toolCall") {
394
+ toolNamesByCallId.set(value.content.callId, value.content.name);
395
+ }
396
+ // Every tool result that belongs to a step is part of the "Interaction Intelligence"
397
+ // trace, whether or not it carried a `detail` — one without a body still names
398
+ // its step after the tool that ran, so the step's time is accounted for.
399
+ // Captured aside; the item itself still flows on.
400
+ if ((value.detail || value.content.type === "toolResult") &&
401
+ value.stepId &&
402
+ value.responseId) {
403
+ yield put(appendTracedActionAction({
404
+ conversationId: conversation.localId,
405
+ responseId: value.responseId,
406
+ stepId: value.stepId,
407
+ action: {
408
+ itemId: value.id,
409
+ createdAt: value.createdAt,
410
+ toolName: value.content.type === "toolResult"
411
+ ? toolNamesByCallId.get(value.content.callId)
412
+ : undefined,
413
+ detail: value.detail,
414
+ },
415
+ }));
416
+ }
383
417
  const chunkInteractionId = value.id;
384
418
  // If we see a NEW interaction ID, create a new assistant message
385
419
  if (chunkInteractionId &&
@@ -1,5 +1,5 @@
1
1
  import { type IAnalyticalBackend } from "@gooddata/sdk-backend-spi";
2
2
  import { type EventDispatcher } from "./events.js";
3
3
  import { type OptionsDispatcher } from "./options.js";
4
- export declare const getStore: (backend: IAnalyticalBackend, workspace: string, eventDispatcher: EventDispatcher, optionsDispatcher: OptionsDispatcher, isPreview: boolean | undefined) => import("redux").Store<any, import("redux").UnknownAction, unknown>;
4
+ export declare const getStore: (backend: IAnalyticalBackend, workspace: string, eventDispatcher: EventDispatcher, optionsDispatcher: OptionsDispatcher, isPreview: boolean | undefined, allowInteractionIntelligence: boolean | undefined) => import("redux").Store<any, import("redux").UnknownAction, unknown>;
5
5
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAStD,eAAO,MAAM,QAAQ,gOAwCpB,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/store/store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAOpE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAStD,eAAO,MAAM,QAAQ,mRAyCpB,CAAC"}
@@ -10,7 +10,7 @@ import { rootSaga } from "./sideEffects/index.js";
10
10
  // In ESM, default exports of CJS modules are wrapped in default properties instead of being exposed directly.
11
11
  // https://github.com/microsoft/TypeScript/issues/52086#issuecomment-1385978414
12
12
  const createSagaMiddleware = defaultImport(defaultReduxSaga);
13
- export const getStore = (backend, workspace, eventDispatcher, optionsDispatcher, isPreview) => {
13
+ export const getStore = (backend, workspace, eventDispatcher, optionsDispatcher, isPreview, allowInteractionIntelligence) => {
14
14
  const sagaMiddleware = createSagaMiddleware({
15
15
  context: {
16
16
  backend,
@@ -26,7 +26,7 @@ export const getStore = (backend, workspace, eventDispatcher, optionsDispatcher,
26
26
  [chatWindowSliceName]: chatWindowSliceReducer,
27
27
  },
28
28
  preloadedState: {
29
- [chatWindowSliceName]: getInitialChatWindowState({ isPreview }),
29
+ [chatWindowSliceName]: getInitialChatWindowState({ isPreview, allowInteractionIntelligence }),
30
30
  },
31
31
  middleware: (getDefaultMiddleware) => getDefaultMiddleware({
32
32
  serializableCheck: {
package/esm/types.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { type IChatConversationVisualisationContent } from "@gooddata/sdk-backend-spi";
1
+ import { type IChatConversationInteractionStep, type IChatConversationItemDetail, type IChatConversationVisualisationContent } from "@gooddata/sdk-backend-spi";
2
2
  import { type GenAIChatEffort, type GenAIObjectType, type IGenAIObjectReference, type IGenAIUserContext, type IGenAIVisualization, type ObjRef } from "@gooddata/sdk-model";
3
3
  import { type IChatConversationLocalItem } from "./model.js";
4
4
  export type Config = IGenAIVisualization["config"] | NonNullable<IChatConversationVisualisationContent["visualization"]>["insight"]["properties"]["controls"];
@@ -40,6 +40,38 @@ export type StoredConversation = {
40
40
  * yet, the conversation runs at the default effort.
41
41
  */
42
42
  reasoningEffort?: GenAIChatEffort;
43
+ /**
44
+ * The "Interaction Intelligence" trace of this conversation's responses, keyed by `responseId`.
45
+ * Kept out of `items` because a step is not a message.
46
+ */
47
+ interactionTrace?: Record<string, IChatConversationResponseTrace>;
48
+ };
49
+ /**
50
+ * The trace of one response: its steps (timing and spend, from the `interaction_step` events) and
51
+ * the per-action details of the items that ran within them (from the items' own `detail`, keyed by
52
+ * `stepId`). Neither half is complete alone — a step has no category, and an item has no timing.
53
+ * @internal
54
+ */
55
+ export type IChatConversationResponseTrace = {
56
+ steps: IChatConversationInteractionStep[];
57
+ /** Details of the actions that ran within each step, keyed by `stepId`. */
58
+ detailsByStepId: Record<string, IChatConversationTracedAction[]>;
59
+ /** Backend trace id of this response, for support/debugging. Set from the first step that carries one. */
60
+ traceId?: string;
61
+ };
62
+ /**
63
+ * One traced action within a step: the tool that ran, when it ran, and what it did.
64
+ *
65
+ * `toolName` is resolved from the matching `toolCall` item, since a `toolResult` carries only its
66
+ * `callId`. `detail` is absent for a tool whose category has no card body yet — the action is
67
+ * still recorded, so its step can be named after the tool rather than falling back to nothing.
68
+ * @internal
69
+ */
70
+ export type IChatConversationTracedAction = {
71
+ itemId: string;
72
+ createdAt: number;
73
+ toolName?: string;
74
+ detail?: IChatConversationItemDetail;
43
75
  };
44
76
  export type StoreContext = {
45
77
  /**
@@ -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,EACH,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B,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;IACF;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAC9C,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACnC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,gCAAgC,EACrC,KAAK,2BAA2B,EAChC,KAAK,qCAAqC,EAC7C,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,MAAM,EACd,MAAM,qBAAqB,CAAC;AAE7B,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;IACF;;;;OAIG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,8BAA8B,GAAG;IACzC,KAAK,EAAE,gCAAgC,EAAE,CAAC;IAC1C,2EAA2E;IAC3E,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,6BAA6B,EAAE,CAAC,CAAC;IACjE,0GAA0G;IAC1G,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,MAAM,6BAA6B,GAAG;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB;;;;OAIG;IACH,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B;;OAEG;IACH,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,eAAe,GAAG,QAAQ,CAAC;IACjC,KAAK,EAAE,gBAAgB,GAAG,mBAAmB,CAAC;IAC9C,OAAO,CAAC,EAAE,qBAAqB,CAAC;CACnC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gooddata/sdk-ui-gen-ai",
3
- "version": "11.52.0",
3
+ "version": "11.53.0-alpha.0",
4
4
  "description": "GoodData GenAI SDK",
5
5
  "license": "MIT",
6
6
  "author": "GoodData Corporation",
@@ -57,18 +57,18 @@
57
57
  "reselect": "5.1.1",
58
58
  "tslib": "2.8.1",
59
59
  "uuid": "11.1.1",
60
- "@gooddata/api-client-tiger": "11.52.0",
61
- "@gooddata/sdk-backend-spi": "11.52.0",
62
- "@gooddata/sdk-model": "11.52.0",
63
- "@gooddata/sdk-ui": "11.52.0",
64
- "@gooddata/sdk-ui-charts": "11.52.0",
65
- "@gooddata/sdk-ui-dashboard": "11.52.0",
66
- "@gooddata/sdk-ui-filters": "11.52.0",
67
- "@gooddata/sdk-ui-kit": "11.52.0",
68
- "@gooddata/sdk-ui-pivot": "11.52.0",
69
- "@gooddata/sdk-ui-semantic-search": "11.52.0",
70
- "@gooddata/sdk-ui-theme-provider": "11.52.0",
71
- "@gooddata/util": "11.52.0"
60
+ "@gooddata/api-client-tiger": "11.53.0-alpha.0",
61
+ "@gooddata/sdk-model": "11.53.0-alpha.0",
62
+ "@gooddata/sdk-backend-spi": "11.53.0-alpha.0",
63
+ "@gooddata/sdk-ui": "11.53.0-alpha.0",
64
+ "@gooddata/sdk-ui-charts": "11.53.0-alpha.0",
65
+ "@gooddata/sdk-ui-dashboard": "11.53.0-alpha.0",
66
+ "@gooddata/sdk-ui-filters": "11.53.0-alpha.0",
67
+ "@gooddata/sdk-ui-kit": "11.53.0-alpha.0",
68
+ "@gooddata/sdk-ui-pivot": "11.53.0-alpha.0",
69
+ "@gooddata/sdk-ui-semantic-search": "11.53.0-alpha.0",
70
+ "@gooddata/sdk-ui-theme-provider": "11.53.0-alpha.0",
71
+ "@gooddata/util": "11.53.0-alpha.0"
72
72
  },
73
73
  "devDependencies": {
74
74
  "@microsoft/api-documenter": "^7.17.0",
@@ -111,13 +111,13 @@
111
111
  "typescript": "5.9.3",
112
112
  "vitest": "4.1.8",
113
113
  "vitest-dom": "0.1.1",
114
- "@gooddata/eslint-config": "11.52.0",
115
- "@gooddata/oxlint-config": "11.52.0",
116
- "@gooddata/i18n-toolkit": "11.52.0",
117
- "@gooddata/reference-workspace": "11.52.0",
118
- "@gooddata/sdk-backend-mockingbird": "11.52.0",
119
- "@gooddata/sdk-ui-theme-provider": "11.52.0",
120
- "@gooddata/stylelint-config": "11.52.0"
114
+ "@gooddata/eslint-config": "11.53.0-alpha.0",
115
+ "@gooddata/i18n-toolkit": "11.53.0-alpha.0",
116
+ "@gooddata/reference-workspace": "11.53.0-alpha.0",
117
+ "@gooddata/sdk-backend-mockingbird": "11.53.0-alpha.0",
118
+ "@gooddata/sdk-ui-theme-provider": "11.53.0-alpha.0",
119
+ "@gooddata/stylelint-config": "11.53.0-alpha.0",
120
+ "@gooddata/oxlint-config": "11.53.0-alpha.0"
121
121
  },
122
122
  "peerDependencies": {
123
123
  "react": "^18.0.0 || ^19.0.0",
@@ -0,0 +1,300 @@
1
+ .gd-gen-ai-chat__interaction-intelligence__trigger {
2
+ padding: 5px;
3
+ border: none;
4
+ border-radius: 3px;
5
+ background: transparent;
6
+ font: inherit;
7
+ font-size: 14px;
8
+ color: var(--gd-palette-complementary-8, #464e56);
9
+ cursor: pointer;
10
+ text-decoration: none;
11
+ }
12
+ .gd-gen-ai-chat__interaction-intelligence__trigger:first-child {
13
+ margin-left: -5px;
14
+ }
15
+ .gd-gen-ai-chat__interaction-intelligence__trigger:hover, .gd-gen-ai-chat__interaction-intelligence__trigger:focus-visible {
16
+ text-decoration: underline;
17
+ }
18
+
19
+ .gd-gen-ai-chat__interaction-intelligence {
20
+ box-sizing: border-box;
21
+ display: flex;
22
+ flex-direction: column;
23
+ gap: 10px;
24
+ width: 100%;
25
+ max-width: 100%;
26
+ padding: 10px;
27
+ margin-top: 5px;
28
+ border: 1px solid var(--gd-palette-complementary-3, #dde4eb);
29
+ border-radius: 8px;
30
+ background: var(--gd-palette-complementary-0, #fff);
31
+ font-size: 14px;
32
+ color: var(--gd-palette-complementary-8, #464e56);
33
+ }
34
+
35
+ .gd-gen-ai-chat__interaction-intelligence__header {
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 5px;
39
+ min-width: 0;
40
+ }
41
+ .gd-gen-ai-chat__interaction-intelligence__header__title {
42
+ flex: 1 0 0;
43
+ min-width: 0;
44
+ line-height: 23px;
45
+ }
46
+
47
+ .gd-gen-ai-chat__interaction-intelligence__duration-tokens__separator {
48
+ color: var(--gd-palette-complementary-5, #b0beca);
49
+ }
50
+
51
+ .gd-gen-ai-chat__interaction-intelligence__footer {
52
+ display: flex;
53
+ align-items: center;
54
+ gap: 4px;
55
+ min-width: 0;
56
+ font-size: 12px;
57
+ color: var(--gd-palette-complementary-6, #94a1ad);
58
+ }
59
+ .gd-gen-ai-chat__interaction-intelligence__footer__trace-id {
60
+ overflow: hidden;
61
+ text-overflow: ellipsis;
62
+ white-space: nowrap;
63
+ }
64
+ .gd-gen-ai-chat__interaction-intelligence__footer__hint {
65
+ flex: 0 0 auto;
66
+ border-bottom: 1px dashed var(--gd-palette-complementary-5, #b0beca);
67
+ cursor: help;
68
+ }
69
+
70
+ .gd-gen-ai-chat__interaction-intelligence__category-list {
71
+ display: flex;
72
+ flex-direction: column;
73
+ gap: 5px;
74
+ }
75
+
76
+ .gd-gen-ai-chat__interaction-intelligence__category-row {
77
+ display: flex;
78
+ align-items: center;
79
+ gap: 8px;
80
+ width: 100%;
81
+ min-width: 0;
82
+ padding: 7px;
83
+ border: none;
84
+ border-radius: 3px;
85
+ background: transparent;
86
+ font: inherit;
87
+ color: inherit;
88
+ text-align: left;
89
+ cursor: pointer;
90
+ }
91
+ .gd-gen-ai-chat__interaction-intelligence__category-row:hover {
92
+ background: var(--gd-palette-complementary-1, #f5f8fa);
93
+ }
94
+ .gd-gen-ai-chat__interaction-intelligence__category-row__label {
95
+ flex: 0 0 130px;
96
+ width: 130px;
97
+ min-width: 0;
98
+ overflow: hidden;
99
+ text-overflow: ellipsis;
100
+ white-space: nowrap;
101
+ }
102
+ .gd-gen-ai-chat__interaction-intelligence__category-row__excerpt {
103
+ display: flex;
104
+ flex: 1 0 0;
105
+ justify-content: flex-end;
106
+ gap: 8px;
107
+ min-width: 0;
108
+ overflow: hidden;
109
+ font-size: 12px;
110
+ color: var(--gd-palette-complementary-6, #94a1ad);
111
+ text-align: right;
112
+ text-overflow: ellipsis;
113
+ white-space: nowrap;
114
+ }
115
+
116
+ .gd-gen-ai-chat__interaction-intelligence__icon-circle {
117
+ display: flex;
118
+ align-items: center;
119
+ justify-content: center;
120
+ flex: 0 0 auto;
121
+ width: 26px;
122
+ height: 26px;
123
+ border-radius: 50%;
124
+ background: var(--gd-palette-complementary-1, #f5f8fa);
125
+ }
126
+
127
+ .gd-gen-ai-chat__interaction-intelligence__timeline-wrapper {
128
+ display: flex;
129
+ flex: 0 0 auto;
130
+ min-width: 0;
131
+ }
132
+
133
+ .gd-gen-ai-chat__interaction-intelligence__timeline {
134
+ display: flex;
135
+ align-items: center;
136
+ flex: 1 0 0;
137
+ min-width: 0;
138
+ height: 15px;
139
+ gap: 1px;
140
+ border-radius: 2px;
141
+ overflow: hidden;
142
+ }
143
+
144
+ .gd-gen-ai-chat__interaction-intelligence__timeline-segment {
145
+ display: block;
146
+ flex: 0 0 auto;
147
+ width: 100%;
148
+ height: 15px;
149
+ border-radius: 2px;
150
+ background: var(--gd-palette-complementary-3, #dde4eb);
151
+ }
152
+ .gd-gen-ai-chat__interaction-intelligence__timeline-segment--dimmed {
153
+ background: var(--gd-palette-complementary-2, #ebeff4);
154
+ }
155
+ .gd-gen-ai-chat__interaction-intelligence__timeline-segment--highlighted {
156
+ background: var(--gd-palette-success-base, #00c18d);
157
+ }
158
+
159
+ .gd-gen-ai-chat__interaction-intelligence__step-tooltip {
160
+ display: flex;
161
+ flex-direction: column;
162
+ gap: 10px;
163
+ width: 210px;
164
+ padding: 15px;
165
+ border: 1px solid var(--gd-palette-complementary-3, #dde4eb);
166
+ border-radius: 3px;
167
+ background: var(--gd-palette-complementary-0, #fff);
168
+ box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.1);
169
+ font-size: 14px;
170
+ line-height: 23px;
171
+ color: var(--gd-palette-complementary-8, #464e56);
172
+ }
173
+ .gd-gen-ai-chat__interaction-intelligence__step-tooltip__eyebrow {
174
+ margin: 0;
175
+ font-size: 10px;
176
+ color: var(--gd-palette-complementary-6, #94a1ad);
177
+ text-transform: uppercase;
178
+ }
179
+ .gd-gen-ai-chat__interaction-intelligence__step-tooltip__activity-list {
180
+ display: flex;
181
+ flex-direction: column;
182
+ gap: 3px;
183
+ font-size: 12px;
184
+ line-height: 19px;
185
+ }
186
+ .gd-gen-ai-chat__interaction-intelligence__step-tooltip__divider {
187
+ width: 100%;
188
+ height: 1px;
189
+ background: var(--gd-palette-complementary-3, #dde4eb);
190
+ }
191
+ .gd-gen-ai-chat__interaction-intelligence__step-tooltip__footer {
192
+ font-size: 12px;
193
+ color: var(--gd-palette-complementary-7, #6d7680);
194
+ }
195
+
196
+ .gd-gen-ai-chat__interaction-intelligence__detail {
197
+ display: flex;
198
+ flex-direction: column;
199
+ gap: 10px;
200
+ height: 300px;
201
+ }
202
+ .gd-gen-ai-chat__interaction-intelligence__detail__divider {
203
+ width: 100%;
204
+ height: 1px;
205
+ background: var(--gd-palette-complementary-3, #dde4eb);
206
+ }
207
+
208
+ .gd-gen-ai-chat__interaction-intelligence__detail-header {
209
+ display: flex;
210
+ align-items: center;
211
+ gap: 10px;
212
+ min-width: 0;
213
+ }
214
+ .gd-gen-ai-chat__interaction-intelligence__detail-header__label {
215
+ flex: 1 0 0;
216
+ min-width: 0;
217
+ overflow: hidden;
218
+ text-overflow: ellipsis;
219
+ white-space: nowrap;
220
+ }
221
+
222
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows {
223
+ display: flex;
224
+ flex-direction: column;
225
+ gap: 10px;
226
+ margin: 0;
227
+ font-size: 14px;
228
+ color: var(--gd-palette-complementary-8, #464e56);
229
+ }
230
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows--scrollable {
231
+ flex: 1 1 auto;
232
+ min-height: 0;
233
+ overflow-y: auto;
234
+ overscroll-behavior: contain;
235
+ }
236
+
237
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__row {
238
+ display: flex;
239
+ gap: 10px;
240
+ align-items: flex-start;
241
+ }
242
+
243
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__label {
244
+ flex: 0 0 120px;
245
+ margin: 0;
246
+ line-height: 23px;
247
+ }
248
+
249
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__value {
250
+ flex: 1 0 0;
251
+ min-width: 0;
252
+ margin: 0;
253
+ line-height: 23px;
254
+ }
255
+
256
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list {
257
+ display: flex;
258
+ flex-direction: column;
259
+ }
260
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list + .gd-gen-ai-chat__interaction-intelligence__detail-rows__list {
261
+ margin-top: 10px;
262
+ }
263
+
264
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list-heading {
265
+ margin: 0;
266
+ }
267
+
268
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list-items {
269
+ margin: 0;
270
+ padding-left: 21px;
271
+ list-style: disc;
272
+ }
273
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list-items--plain {
274
+ padding-left: 0;
275
+ list-style: none;
276
+ }
277
+
278
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list-item-meta {
279
+ color: var(--gd-palette-complementary-6, #94a1ad);
280
+ }
281
+
282
+ .gd-gen-ai-chat__interaction-intelligence__detail-rows__list-truncated {
283
+ margin: 0;
284
+ color: var(--gd-palette-complementary-6, #94a1ad);
285
+ }
286
+
287
+ .gd-gen-ai-chat__interaction-intelligence__carousel {
288
+ display: flex;
289
+ align-items: center;
290
+ justify-content: center;
291
+ gap: 8px;
292
+ font-size: 12px;
293
+ color: var(--gd-palette-complementary-7, #6d7680);
294
+ }
295
+ .gd-gen-ai-chat__interaction-intelligence__carousel__label b {
296
+ color: #000;
297
+ font-weight: 700;
298
+ }
299
+
300
+ /*# sourceMappingURL=intelligence.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sourceRoot":"","sources":["../scss/intelligence.scss"],"names":[],"mappings":"AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAIA;EACI;;AAGJ;EAEI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;;AAGJ;EACI;EACA;EACA;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;;AAGJ;EACI;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AAGJ;EACI;EACA;EACA;;AAGJ;EACI;EACA;;;AAIR;EACI;EACA;EACA;EAEA;;AAEA;EACI;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;;AAEA;EACI;EACA;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;EACA;EACA;EACA;;AAKA;EACI;EACA;EACA;EACA;;;AAIR;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AAEA;EACI;;;AAIR;EACI;;;AAGJ;EACI;EACA;EACA;;AAEA;EACI;EACA;;;AAIR;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;;AAEA;EACI;EACA","file":"intelligence.css"}