@gooddata/sdk-ui-gen-ai 11.41.0-alpha.3 → 11.41.0-alpha.5

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 (386) hide show
  1. package/NOTICE +3 -3
  2. package/esm/anomalyDetection/anomalyDetectionMapping.d.ts +1 -0
  3. package/esm/anomalyDetection/anomalyDetectionMapping.d.ts.map +1 -0
  4. package/esm/clustering/clusteringMapping.d.ts +1 -0
  5. package/esm/clustering/clusteringMapping.d.ts.map +1 -0
  6. package/esm/components/ChatSkeleton.d.ts +1 -0
  7. package/esm/components/ChatSkeleton.d.ts.map +1 -0
  8. package/esm/components/ConfigContext.d.ts +1 -0
  9. package/esm/components/ConfigContext.d.ts.map +1 -0
  10. package/esm/components/ConversationDeleteDialog.d.ts +1 -0
  11. package/esm/components/ConversationDeleteDialog.d.ts.map +1 -0
  12. package/esm/components/ConversationRenameDialog.d.ts +1 -0
  13. package/esm/components/ConversationRenameDialog.d.ts.map +1 -0
  14. package/esm/components/CustomizationProvider.d.ts +1 -0
  15. package/esm/components/CustomizationProvider.d.ts.map +1 -0
  16. package/esm/components/ErrorBoundary.d.ts +1 -0
  17. package/esm/components/ErrorBoundary.d.ts.map +1 -0
  18. package/esm/components/GenAIChat.d.ts +1 -0
  19. package/esm/components/GenAIChat.d.ts.map +1 -0
  20. package/esm/components/GenAIChatAgentDropdown.d.ts +14 -0
  21. package/esm/components/GenAIChatAgentDropdown.d.ts.map +1 -0
  22. package/esm/components/GenAIChatAgentDropdown.js +75 -0
  23. package/esm/components/GenAIChatConversations.d.ts +1 -0
  24. package/esm/components/GenAIChatConversations.d.ts.map +1 -0
  25. package/esm/components/GenAIChatDialog.d.ts +4 -1
  26. package/esm/components/GenAIChatDialog.d.ts.map +1 -0
  27. package/esm/components/GenAIChatDialog.js +4 -4
  28. package/esm/components/GenAIChatHeader.d.ts +1 -0
  29. package/esm/components/GenAIChatHeader.d.ts.map +1 -0
  30. package/esm/components/GenAIChatOverlay.d.ts +3 -0
  31. package/esm/components/GenAIChatOverlay.d.ts.map +1 -0
  32. package/esm/components/GenAIChatOverlay.js +15 -4
  33. package/esm/components/GenAIChatWrapper.d.ts +1 -0
  34. package/esm/components/GenAIChatWrapper.d.ts.map +1 -0
  35. package/esm/components/GenAiConversations.d.ts +1 -0
  36. package/esm/components/GenAiConversations.d.ts.map +1 -0
  37. package/esm/components/GenAiStore.d.ts +1 -0
  38. package/esm/components/GenAiStore.d.ts.map +1 -0
  39. package/esm/components/GlobalError.d.ts +1 -0
  40. package/esm/components/GlobalError.d.ts.map +1 -0
  41. package/esm/components/HeaderIcon.d.ts +1 -0
  42. package/esm/components/HeaderIcon.d.ts.map +1 -0
  43. package/esm/components/Input.d.ts +1 -0
  44. package/esm/components/Input.d.ts.map +1 -0
  45. package/esm/components/Input.js +69 -23
  46. package/esm/components/KeyDriverAnalysis.d.ts +1 -0
  47. package/esm/components/KeyDriverAnalysis.d.ts.map +1 -0
  48. package/esm/components/Messages.d.ts +1 -0
  49. package/esm/components/Messages.d.ts.map +1 -0
  50. package/esm/components/Messages.js +9 -6
  51. package/esm/components/completion/InfoComponent.d.ts +1 -0
  52. package/esm/components/completion/InfoComponent.d.ts.map +1 -0
  53. package/esm/components/completion/plugins/rehype-references.d.ts +1 -0
  54. package/esm/components/completion/plugins/rehype-references.d.ts.map +1 -0
  55. package/esm/components/completion/plugins/remark-references.d.ts +1 -0
  56. package/esm/components/completion/plugins/remark-references.d.ts.map +1 -0
  57. package/esm/components/completion/plugins/types.d.ts +1 -0
  58. package/esm/components/completion/plugins/types.d.ts.map +1 -0
  59. package/esm/components/completion/references.d.ts +1 -0
  60. package/esm/components/completion/references.d.ts.map +1 -0
  61. package/esm/components/completion/useCompletion.d.ts +1 -0
  62. package/esm/components/completion/useCompletion.d.ts.map +1 -0
  63. package/esm/components/completion/utils.d.ts +1 -0
  64. package/esm/components/completion/utils.d.ts.map +1 -0
  65. package/esm/components/customized/Disclaimer.d.ts +1 -0
  66. package/esm/components/customized/Disclaimer.d.ts.map +1 -0
  67. package/esm/components/customized/LandingContainer.d.ts +1 -0
  68. package/esm/components/customized/LandingContainer.d.ts.map +1 -0
  69. package/esm/components/customized/LandingQuestion.d.ts +1 -0
  70. package/esm/components/customized/LandingQuestion.d.ts.map +1 -0
  71. package/esm/components/customized/LandingQuestion.js +32 -13
  72. package/esm/components/customized/LandingScreen.d.ts +1 -0
  73. package/esm/components/customized/LandingScreen.d.ts.map +1 -0
  74. package/esm/components/customized/LandingTitle.d.ts +1 -0
  75. package/esm/components/customized/LandingTitle.d.ts.map +1 -0
  76. package/esm/components/highlight/useHighlight.d.ts +1 -0
  77. package/esm/components/highlight/useHighlight.d.ts.map +1 -0
  78. package/esm/components/hooks/useEndpointCheck.d.ts +1 -0
  79. package/esm/components/hooks/useEndpointCheck.d.ts.map +1 -0
  80. package/esm/components/hooks/useFullscreenCheck.d.ts +1 -0
  81. package/esm/components/hooks/useFullscreenCheck.d.ts.map +1 -0
  82. package/esm/components/hooks/useHistoryCheck.d.ts +1 -0
  83. package/esm/components/hooks/useHistoryCheck.d.ts.map +1 -0
  84. package/esm/components/hooks/useSettingsClick.d.ts +1 -0
  85. package/esm/components/hooks/useSettingsClick.d.ts.map +1 -0
  86. package/esm/components/hooks/useThreadLoading.d.ts +1 -0
  87. package/esm/components/hooks/useThreadLoading.d.ts.map +1 -0
  88. package/esm/components/messages/AgentChangeItem.d.ts +7 -0
  89. package/esm/components/messages/AgentChangeItem.d.ts.map +1 -0
  90. package/esm/components/messages/AgentChangeItem.js +17 -0
  91. package/esm/components/messages/AssistantItem.d.ts +1 -0
  92. package/esm/components/messages/AssistantItem.d.ts.map +1 -0
  93. package/esm/components/messages/AssistantItemFeedback.d.ts +1 -0
  94. package/esm/components/messages/AssistantItemFeedback.d.ts.map +1 -0
  95. package/esm/components/messages/AssistantItemSuggestions.d.ts +3 -2
  96. package/esm/components/messages/AssistantItemSuggestions.d.ts.map +1 -0
  97. package/esm/components/messages/AssistantItemSuggestions.js +6 -2
  98. package/esm/components/messages/AssistantMessage.d.ts +1 -0
  99. package/esm/components/messages/AssistantMessage.d.ts.map +1 -0
  100. package/esm/components/messages/ConversationItemContents.d.ts +1 -0
  101. package/esm/components/messages/ConversationItemContents.d.ts.map +1 -0
  102. package/esm/components/messages/FeedbackPopup.d.ts +1 -0
  103. package/esm/components/messages/FeedbackPopup.d.ts.map +1 -0
  104. package/esm/components/messages/ItemsGroup.d.ts +1 -0
  105. package/esm/components/messages/ItemsGroup.d.ts.map +1 -0
  106. package/esm/components/messages/MessageContents.d.ts +1 -0
  107. package/esm/components/messages/MessageContents.d.ts.map +1 -0
  108. package/esm/components/messages/MessageScroller.d.ts +1 -0
  109. package/esm/components/messages/MessageScroller.d.ts.map +1 -0
  110. package/esm/components/messages/ReasoningDropdown.d.ts +1 -0
  111. package/esm/components/messages/ReasoningDropdown.d.ts.map +1 -0
  112. package/esm/components/messages/ReasoningMessage.d.ts +1 -0
  113. package/esm/components/messages/ReasoningMessage.d.ts.map +1 -0
  114. package/esm/components/messages/SystemItem.d.ts +7 -0
  115. package/esm/components/messages/SystemItem.d.ts.map +1 -0
  116. package/esm/components/messages/SystemItem.js +12 -0
  117. package/esm/components/messages/ToolItem.d.ts +1 -0
  118. package/esm/components/messages/ToolItem.d.ts.map +1 -0
  119. package/esm/components/messages/UserItem.d.ts +1 -0
  120. package/esm/components/messages/UserItem.d.ts.map +1 -0
  121. package/esm/components/messages/UserMessage.d.ts +1 -0
  122. package/esm/components/messages/UserMessage.d.ts.map +1 -0
  123. package/esm/components/messages/components/SemanticSearchTreeView.d.ts +1 -0
  124. package/esm/components/messages/components/SemanticSearchTreeView.d.ts.map +1 -0
  125. package/esm/components/messages/components/VisualizationErrorBoundary.d.ts +1 -0
  126. package/esm/components/messages/components/VisualizationErrorBoundary.d.ts.map +1 -0
  127. package/esm/components/messages/contents/ChangeAnalysisContentsComponent.d.ts +1 -0
  128. package/esm/components/messages/contents/ChangeAnalysisContentsComponent.d.ts.map +1 -0
  129. package/esm/components/messages/contents/CustomHyperlink.d.ts +1 -0
  130. package/esm/components/messages/contents/CustomHyperlink.d.ts.map +1 -0
  131. package/esm/components/messages/contents/ErrorContents.d.ts +1 -0
  132. package/esm/components/messages/contents/ErrorContents.d.ts.map +1 -0
  133. package/esm/components/messages/contents/Markdown.d.ts +1 -0
  134. package/esm/components/messages/contents/Markdown.d.ts.map +1 -0
  135. package/esm/components/messages/contents/ReasoningContents.d.ts +1 -0
  136. package/esm/components/messages/contents/ReasoningContents.d.ts.map +1 -0
  137. package/esm/components/messages/contents/ReasoningIcon.d.ts +3 -2
  138. package/esm/components/messages/contents/ReasoningIcon.d.ts.map +1 -0
  139. package/esm/components/messages/contents/RoutingContents.d.ts +1 -0
  140. package/esm/components/messages/contents/RoutingContents.d.ts.map +1 -0
  141. package/esm/components/messages/contents/SearchContents.d.ts +1 -0
  142. package/esm/components/messages/contents/SearchContents.d.ts.map +1 -0
  143. package/esm/components/messages/contents/SemanticSearchContents.d.ts +1 -0
  144. package/esm/components/messages/contents/SemanticSearchContents.d.ts.map +1 -0
  145. package/esm/components/messages/contents/TextContents.d.ts +1 -0
  146. package/esm/components/messages/contents/TextContents.d.ts.map +1 -0
  147. package/esm/components/messages/contents/VisualizationContents.d.ts +4 -1
  148. package/esm/components/messages/contents/VisualizationContents.d.ts.map +1 -0
  149. package/esm/components/messages/contents/VisualizationContents.js +7 -3
  150. package/esm/components/messages/contents/VisualizationSaveDialog.d.ts +1 -0
  151. package/esm/components/messages/contents/VisualizationSaveDialog.d.ts.map +1 -0
  152. package/esm/components/messages/contents/drill/DrillSelectDropdownMenu.d.ts +1 -0
  153. package/esm/components/messages/contents/drill/DrillSelectDropdownMenu.d.ts.map +1 -0
  154. package/esm/components/messages/contents/hooks/useVisualisationSaving.d.ts +1 -0
  155. package/esm/components/messages/contents/hooks/useVisualisationSaving.d.ts.map +1 -0
  156. package/esm/components/messages/contents/replaceLinks.d.ts +1 -0
  157. package/esm/components/messages/contents/replaceLinks.d.ts.map +1 -0
  158. package/esm/components/messages/contents/useExecution.d.ts +1 -0
  159. package/esm/components/messages/contents/useExecution.d.ts.map +1 -0
  160. package/esm/components/messages/contents/useKdaDefinition.d.ts +1 -0
  161. package/esm/components/messages/contents/useKdaDefinition.d.ts.map +1 -0
  162. package/esm/components/messages/conversationContents/ConversationErrorContent.d.ts +1 -0
  163. package/esm/components/messages/conversationContents/ConversationErrorContent.d.ts.map +1 -0
  164. package/esm/components/messages/conversationContents/ConversationKdaContent.d.ts +1 -0
  165. package/esm/components/messages/conversationContents/ConversationKdaContent.d.ts.map +1 -0
  166. package/esm/components/messages/conversationContents/ConversationReasoningContent.d.ts +1 -0
  167. package/esm/components/messages/conversationContents/ConversationReasoningContent.d.ts.map +1 -0
  168. package/esm/components/messages/conversationContents/ConversationSearchContent.d.ts +1 -0
  169. package/esm/components/messages/conversationContents/ConversationSearchContent.d.ts.map +1 -0
  170. package/esm/components/messages/conversationContents/ConversationTextContent.d.ts +1 -0
  171. package/esm/components/messages/conversationContents/ConversationTextContent.d.ts.map +1 -0
  172. package/esm/components/messages/conversationContents/ConversationToolCallContent.d.ts +1 -0
  173. package/esm/components/messages/conversationContents/ConversationToolCallContent.d.ts.map +1 -0
  174. package/esm/components/messages/conversationContents/ConversationToolResultContent.d.ts +1 -0
  175. package/esm/components/messages/conversationContents/ConversationToolResultContent.d.ts.map +1 -0
  176. package/esm/components/messages/conversationContents/ConversationVisualisation.d.ts +1 -0
  177. package/esm/components/messages/conversationContents/ConversationVisualisation.d.ts.map +1 -0
  178. package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts +1 -0
  179. package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts.map +1 -0
  180. package/esm/components/messages/conversationContents/ConversationWhatIfContent.d.ts +1 -0
  181. package/esm/components/messages/conversationContents/ConversationWhatIfContent.d.ts.map +1 -0
  182. package/esm/components/messages/conversationContents/SaveVisualizationDialog.d.ts +1 -0
  183. package/esm/components/messages/conversationContents/SaveVisualizationDialog.d.ts.map +1 -0
  184. package/esm/components/messages/conversationContents/useExecution.d.ts +1 -0
  185. package/esm/components/messages/conversationContents/useExecution.d.ts.map +1 -0
  186. package/esm/components/messages/conversationContents/useKdaDefinition.d.ts +1 -0
  187. package/esm/components/messages/conversationContents/useKdaDefinition.d.ts.map +1 -0
  188. package/esm/components/messages/conversationContents/useSaveCheck.d.ts +1 -0
  189. package/esm/components/messages/conversationContents/useSaveCheck.d.ts.map +1 -0
  190. package/esm/components/messages/itemState.d.ts +1 -0
  191. package/esm/components/messages/itemState.d.ts.map +1 -0
  192. package/esm/components/messages/messageState.d.ts +1 -0
  193. package/esm/components/messages/messageState.d.ts.map +1 -0
  194. package/esm/components/messages/useUserFeedback.d.ts +1 -0
  195. package/esm/components/messages/useUserFeedback.d.ts.map +1 -0
  196. package/esm/components/utils/agentSelection.d.ts +19 -0
  197. package/esm/components/utils/agentSelection.d.ts.map +1 -0
  198. package/esm/components/utils/agentSelection.js +42 -0
  199. package/esm/components/utils/conversationGrouper.d.ts +1 -0
  200. package/esm/components/utils/conversationGrouper.d.ts.map +1 -0
  201. package/esm/components/utils/groupUtility.d.ts +2 -1
  202. package/esm/components/utils/groupUtility.d.ts.map +1 -0
  203. package/esm/components/utils/groupUtility.js +3 -0
  204. package/esm/components/utils/intersectionUtils.d.ts +1 -0
  205. package/esm/components/utils/intersectionUtils.d.ts.map +1 -0
  206. package/esm/components/utils/markdownUtils.d.ts +1 -0
  207. package/esm/components/utils/markdownUtils.d.ts.map +1 -0
  208. package/esm/components/utils/modelCheckUtility.d.ts +1 -0
  209. package/esm/components/utils/modelCheckUtility.d.ts.map +1 -0
  210. package/esm/forecast/forecastMapping.d.ts +1 -0
  211. package/esm/forecast/forecastMapping.d.ts.map +1 -0
  212. package/esm/hooks/useGenAIStore.d.ts +1 -0
  213. package/esm/hooks/useGenAIStore.d.ts.map +1 -0
  214. package/esm/hooks/useGenAIStore.js +4 -1
  215. package/esm/hooks/useGenAiChatAvailability.d.ts +1 -0
  216. package/esm/hooks/useGenAiChatAvailability.d.ts.map +1 -0
  217. package/esm/index.d.ts +2 -1
  218. package/esm/index.d.ts.map +1 -0
  219. package/esm/internal.d.ts +1 -0
  220. package/esm/internal.d.ts.map +1 -0
  221. package/esm/localization/IntlWrapper.d.ts +1 -0
  222. package/esm/localization/IntlWrapper.d.ts.map +1 -0
  223. package/esm/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  224. package/esm/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -0
  225. package/esm/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  226. package/esm/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -0
  227. package/esm/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  228. package/esm/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -0
  229. package/esm/localization/bundles/en-US.localization-bundle.d.ts +25 -0
  230. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -0
  231. package/esm/localization/bundles/en-US.localization-bundle.js +24 -0
  232. package/esm/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  233. package/esm/localization/bundles/es-419.localization-bundle.d.ts.map +1 -0
  234. package/esm/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  235. package/esm/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -0
  236. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  237. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -0
  238. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  239. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -0
  240. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  241. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -0
  242. package/esm/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  243. package/esm/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -0
  244. package/esm/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  245. package/esm/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -0
  246. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  247. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -0
  248. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  249. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -0
  250. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  251. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -0
  252. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  253. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -0
  254. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  255. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -0
  256. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  257. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -0
  258. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  259. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -0
  260. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  261. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -0
  262. package/esm/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  263. package/esm/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -0
  264. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  265. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -0
  266. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  267. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -0
  268. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  269. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -0
  270. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  271. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -0
  272. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  273. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -0
  274. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  275. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -0
  276. package/esm/localization/translations.d.ts +1 -0
  277. package/esm/localization/translations.d.ts.map +1 -0
  278. package/esm/model.d.ts +28 -1
  279. package/esm/model.d.ts.map +1 -0
  280. package/esm/model.js +16 -0
  281. package/esm/permissions/PermissionsContext.d.ts +1 -0
  282. package/esm/permissions/PermissionsContext.d.ts.map +1 -0
  283. package/esm/permissions/usePermissions.d.ts +1 -0
  284. package/esm/permissions/usePermissions.d.ts.map +1 -0
  285. package/esm/permissions/useWorkspacePermissions.d.ts +1 -0
  286. package/esm/permissions/useWorkspacePermissions.d.ts.map +1 -0
  287. package/esm/permissions/utils.d.ts +1 -0
  288. package/esm/permissions/utils.d.ts.map +1 -0
  289. package/esm/sdk-ui-gen-ai.d.ts +10 -1
  290. package/esm/store/chatWindow/allowedRelationshipTypes.d.ts +1 -0
  291. package/esm/store/chatWindow/allowedRelationshipTypes.d.ts.map +1 -0
  292. package/esm/store/chatWindow/chatWindowSelectors.d.ts +4 -0
  293. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -0
  294. package/esm/store/chatWindow/chatWindowSelectors.js +6 -0
  295. package/esm/store/chatWindow/chatWindowSlice.d.ts +12 -1
  296. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -0
  297. package/esm/store/chatWindow/chatWindowSlice.js +10 -2
  298. package/esm/store/events.d.ts +1 -0
  299. package/esm/store/events.d.ts.map +1 -0
  300. package/esm/store/localStorage.d.ts +1 -0
  301. package/esm/store/localStorage.d.ts.map +1 -0
  302. package/esm/store/messages/messagesSelectors.d.ts +67 -1
  303. package/esm/store/messages/messagesSelectors.d.ts.map +1 -0
  304. package/esm/store/messages/messagesSelectors.js +3 -0
  305. package/esm/store/messages/messagesSlice.d.ts +26 -3
  306. package/esm/store/messages/messagesSlice.d.ts.map +1 -0
  307. package/esm/store/messages/messagesSlice.js +73 -2
  308. package/esm/store/options.d.ts +1 -0
  309. package/esm/store/options.d.ts.map +1 -0
  310. package/esm/store/queues/queue.newMessage.d.ts +1 -0
  311. package/esm/store/queues/queue.newMessage.d.ts.map +1 -0
  312. package/esm/store/sideEffects/converters/interactionsToMessages.d.ts +1 -0
  313. package/esm/store/sideEffects/converters/interactionsToMessages.d.ts.map +1 -0
  314. package/esm/store/sideEffects/converters/toLocalContent.d.ts +1 -0
  315. package/esm/store/sideEffects/converters/toLocalContent.d.ts.map +1 -0
  316. package/esm/store/sideEffects/index.d.ts +1 -0
  317. package/esm/store/sideEffects/index.d.ts.map +1 -0
  318. package/esm/store/sideEffects/index.js +5 -1
  319. package/esm/store/sideEffects/loadAgents.d.ts +13 -0
  320. package/esm/store/sideEffects/loadAgents.d.ts.map +1 -0
  321. package/esm/store/sideEffects/loadAgents.js +46 -0
  322. package/esm/store/sideEffects/loadCatalogItems.d.ts +1 -0
  323. package/esm/store/sideEffects/loadCatalogItems.d.ts.map +1 -0
  324. package/esm/store/sideEffects/loadColorPalette.d.ts +1 -0
  325. package/esm/store/sideEffects/loadColorPalette.d.ts.map +1 -0
  326. package/esm/store/sideEffects/loadSettings.d.ts +1 -0
  327. package/esm/store/sideEffects/loadSettings.d.ts.map +1 -0
  328. package/esm/store/sideEffects/onAgentSwitch.d.ts +22 -0
  329. package/esm/store/sideEffects/onAgentSwitch.d.ts.map +1 -0
  330. package/esm/store/sideEffects/onAgentSwitch.js +55 -0
  331. package/esm/store/sideEffects/onConversationDelete.d.ts +1 -0
  332. package/esm/store/sideEffects/onConversationDelete.d.ts.map +1 -0
  333. package/esm/store/sideEffects/onConversationPin.d.ts +1 -0
  334. package/esm/store/sideEffects/onConversationPin.d.ts.map +1 -0
  335. package/esm/store/sideEffects/onConversationRename.d.ts +1 -0
  336. package/esm/store/sideEffects/onConversationRename.d.ts.map +1 -0
  337. package/esm/store/sideEffects/onEvent.d.ts +1 -0
  338. package/esm/store/sideEffects/onEvent.d.ts.map +1 -0
  339. package/esm/store/sideEffects/onThreadClear.d.ts +1 -0
  340. package/esm/store/sideEffects/onThreadClear.d.ts.map +1 -0
  341. package/esm/store/sideEffects/onThreadLoad.d.ts +1 -0
  342. package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -0
  343. package/esm/store/sideEffects/onThreadLoad.js +2 -1
  344. package/esm/store/sideEffects/onUserFeedback.d.ts +1 -0
  345. package/esm/store/sideEffects/onUserFeedback.d.ts.map +1 -0
  346. package/esm/store/sideEffects/onUserMessage.d.ts +1 -0
  347. package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -0
  348. package/esm/store/sideEffects/onUserMessage.js +20 -5
  349. package/esm/store/sideEffects/onUserMessageUpdate.d.ts +1 -0
  350. package/esm/store/sideEffects/onUserMessageUpdate.d.ts.map +1 -0
  351. package/esm/store/sideEffects/onVerboseStore.d.ts +1 -0
  352. package/esm/store/sideEffects/onVerboseStore.d.ts.map +1 -0
  353. package/esm/store/sideEffects/onVisualisationRender.d.ts +1 -0
  354. package/esm/store/sideEffects/onVisualisationRender.d.ts.map +1 -0
  355. package/esm/store/sideEffects/onVisualizationSave.d.ts +1 -0
  356. package/esm/store/sideEffects/onVisualizationSave.d.ts.map +1 -0
  357. package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts +1 -0
  358. package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts.map +1 -0
  359. package/esm/store/sideEffects/utils.d.ts +1 -0
  360. package/esm/store/sideEffects/utils.d.ts.map +1 -0
  361. package/esm/store/store.d.ts +1 -0
  362. package/esm/store/store.d.ts.map +1 -0
  363. package/esm/store/store.js +4 -1
  364. package/esm/store/types.d.ts +1 -0
  365. package/esm/store/types.d.ts.map +1 -0
  366. package/esm/store/utils.d.ts +1 -0
  367. package/esm/store/utils.d.ts.map +1 -0
  368. package/esm/types.d.ts +3 -1
  369. package/esm/types.d.ts.map +1 -0
  370. package/esm/utils.d.ts +1 -0
  371. package/esm/utils.d.ts.map +1 -0
  372. package/esm/whatIf/whatIfMapping.d.ts +1 -0
  373. package/esm/whatIf/whatIfMapping.d.ts.map +1 -0
  374. package/package.json +20 -20
  375. package/styles/css/input.css +103 -13
  376. package/styles/css/input.css.map +1 -1
  377. package/styles/css/main.css +158 -15
  378. package/styles/css/main.css.map +1 -1
  379. package/styles/css/messages.css +47 -0
  380. package/styles/css/messages.css.map +1 -1
  381. package/styles/css/window.css +6 -1
  382. package/styles/css/window.css.map +1 -1
  383. package/styles/scss/input.scss +113 -17
  384. package/styles/scss/main.scss +2 -1
  385. package/styles/scss/messages.scss +61 -0
  386. package/styles/scss/window.scss +8 -1
package/NOTICE CHANGED
@@ -7,9 +7,9 @@
7
7
 
8
8
  The following 3rd-party software packages may be used by or distributed with gooddata-ui-sdk. Any information relevant to third-party vendors listed below are collected using common, reasonable means.
9
9
 
10
- Date generated: 2026-6-8
10
+ Date generated: 2026-6-10
11
11
 
12
- Revision ID: 8cffadeacc1753fb2646bddafa2fbbda98bc57de
12
+ Revision ID: f75738464fd32f3d4e0f874c715181b53a187ef8
13
13
 
14
14
  ================================================================================
15
15
  ================================================================================
@@ -38571,4 +38571,4 @@ POSSIBILITY OF SUCH DAMAGE.
38571
38571
  --------------------------------------------------------------------------------
38572
38572
  --------------------------------------------------------------------------------
38573
38573
 
38574
- Report Generated by FOSSA on 2026-6-8
38574
+ Report Generated by FOSSA on 2026-6-10
@@ -22,3 +22,4 @@ export declare function mapVisualizationAnomalyDetectionToBackendConfig(config?:
22
22
  * @internal
23
23
  */
24
24
  export declare function getNormalizedAnomalyDetectionValues(config?: Config): INormalizedAnomalyDetectionValues | undefined;
25
+ //# sourceMappingURL=anomalyDetectionMapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anomalyDetectionMapping.d.ts","sourceRoot":"","sources":["../../src/anomalyDetection/anomalyDetectionMapping.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAC9C,WAAW,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACvC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAgB,6CAA6C,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAarG;AAED;;GAEG;AACH,wBAAgB,+CAA+C,CAC3D,MAAM,CAAC,EAAE,MAAM,GAChB,eAAe,GAAG,SAAS,CAU7B;AAED;;GAEG;AACH,wBAAgB,mCAAmC,CAC/C,MAAM,CAAC,EAAE,MAAM,GAChB,iCAAiC,GAAG,SAAS,CAoB/C"}
@@ -9,3 +9,4 @@ export declare function mapVisualizationClusteringToChartConfig(config?: Config)
9
9
  * @internal
10
10
  */
11
11
  export declare function mapVisualizationClusteringToBackendConfig(config?: Config): IClusteringConfig | undefined;
12
+ //# sourceMappingURL=clusteringMapping.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clusteringMapping.d.ts","sourceRoot":"","sources":["../../src/clustering/clusteringMapping.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;GAEG;AACH,wBAAgB,uCAAuC,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAY3G;AAED;;GAEG;AACH,wBAAgB,yCAAyC,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAWxG"}
@@ -1 +1,2 @@
1
1
  export declare function ChatSkeleton(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=ChatSkeleton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChatSkeleton.d.ts","sourceRoot":"","sources":["../../src/components/ChatSkeleton.tsx"],"names":[],"mappings":"AAIA,wBAAgB,YAAY,4CAS3B"}
@@ -22,3 +22,4 @@ export type LinkHandlerEvent = {
22
22
  };
23
23
  export declare function ConfigProvider({ children, allowNativeLinks, linkHandler, catalogItems, canManage, canAnalyze, canFullControl }: PropsWithChildren<ConfigContext>): import("react/jsx-runtime").JSX.Element;
24
24
  export declare const useConfig: () => ConfigContext;
25
+ //# sourceMappingURL=ConfigContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigContext.d.ts","sourceRoot":"","sources":["../../src/components/ConfigContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,iBAAiB,EAAsC,MAAM,OAAO,CAAC;AAEnF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE7E,MAAM,MAAM,aAAa,GAAG;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;CAChC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC3B,IAAI,EAAE,SAAS,GAAG,eAAe,CAAC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,IAAI,CAAC;IAC3B,OAAO,CAAC,EAAE,IAAI,CAAC;CAClB,CAAC;AASF,wBAAgB,cAAc,CAAC,EAC3B,QAAQ,EACR,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,UAAU,EACV,cAAc,EACjB,EAAE,iBAAiB,CAAC,aAAa,CAAC,2CAclC;AAED,eAAO,MAAM,SAAS,qBAErB,CAAC"}
@@ -6,3 +6,4 @@ type ConversationDeleteDialogProps = {
6
6
  };
7
7
  export declare function ConversationDeleteDialog({ conversation, onDelete, onClose }: ConversationDeleteDialogProps): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
+ //# sourceMappingURL=ConversationDeleteDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationDeleteDialog.d.ts","sourceRoot":"","sources":["../../src/components/ConversationDeleteDialog.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAa1D,KAAK,6BAA6B,GAAG;IACjC,YAAY,EAAE,sBAAsB,CAAC;IACrC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,6BAA6B,2CAgC1G"}
@@ -6,3 +6,4 @@ type ConversationRenameDialogProps = {
6
6
  };
7
7
  export declare function ConversationRenameDialog({ conversation, onRename, onClose }: ConversationRenameDialogProps): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
+ //# sourceMappingURL=ConversationRenameDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationRenameDialog.d.ts","sourceRoot":"","sources":["../../src/components/ConversationRenameDialog.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAa1D,KAAK,6BAA6B,GAAG;IACjC,YAAY,EAAE,sBAAsB,CAAC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,6BAA6B,2CAuC1G"}
@@ -12,3 +12,4 @@ export declare const useCustomization: () => {
12
12
  LandingScreenComponent: ComponentType;
13
13
  DisclaimerComponent: ComponentType | null;
14
14
  };
15
+ //# sourceMappingURL=CustomizationProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomizationProvider.d.ts","sourceRoot":"","sources":["../../src/components/CustomizationProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAsC,MAAM,OAAO,CAAC;AAMvG,MAAM,MAAM,oBAAoB,GAAG;IAC/B,8BAA8B,CAAC,EAAE,CAAC,KAAK,EAAE;QACrC,YAAY,EAAE,OAAO,CAAC;QACtB,WAAW,EAAE,OAAO,CAAC;QACrB,aAAa,EAAE,OAAO,CAAC;KAC1B,KAAK,aAAa,CAAC;IACpB,2BAA2B,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;CAC5D,CAAC;AAYF,wBAAgB,qBAAqB,CAAC,EAClC,QAAQ,EACR,8BAA8B,EAC9B,2BAA2B,EAC9B,EAAE,iBAAiB,CAAC,oBAAoB,CAAC,2CAiCzC;AAED,eAAO,MAAM,gBAAgB;;;CAqB5B,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import { type FC, type PropsWithChildren } from "react";
2
2
  export declare const ErrorBoundary: FC<PropsWithChildren>;
3
+ //# sourceMappingURL=ErrorBoundary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../src/components/ErrorBoundary.tsx"],"names":[],"mappings":"AAEA,OAAO,EAA6B,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAkB,MAAM,OAAO,CAAC;AA+FnG,eAAO,MAAM,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAGhB,CAAC"}
@@ -63,3 +63,4 @@ export declare function GenAIAssistant(props: GenAIAssistantProps): import("reac
63
63
  * @public
64
64
  */
65
65
  export declare const GenAIChat: typeof GenAIAssistant;
66
+ //# sourceMappingURL=GenAIChat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChat.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChat.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,OAAO,CAAC;AAQ3C,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG;IAClE;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEzD;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAE7B;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,aAAa,CAAC;IAErD;;OAEG;IACH,2BAA2B,CAAC,EAAE,MAAM,aAAa,GAAG,IAAI,CAAC;IAEzD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,mBAAmB,CAAC;AAEjD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,2CA6CxD;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,uBAAiB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type GenAIAgent, type IChatConversationLocal } from "../model.js";
2
+ export type GenAIChatAgentDropdownProps = {
3
+ agents: GenAIAgent[];
4
+ conversations?: IChatConversationLocal[];
5
+ conversationAgentId?: string;
6
+ selectedAgentId?: string;
7
+ isDisabled?: boolean;
8
+ isLoading?: boolean;
9
+ onSelectAgent: (agentId: string | undefined, options?: {
10
+ showChangeEvent?: boolean;
11
+ }) => void;
12
+ };
13
+ export declare function GenAIChatAgentDropdown({ agents, conversations, conversationAgentId, selectedAgentId, isDisabled, isLoading, onSelectAgent }: GenAIChatAgentDropdownProps): import("react/jsx-runtime").JSX.Element;
14
+ //# sourceMappingURL=GenAIChatAgentDropdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChatAgentDropdown.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatAgentDropdown.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAiB3E,MAAM,MAAM,2BAA2B,GAAG;IACtC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;IACzC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE;QAAE,eAAe,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAC;CACjG,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,EACnC,MAAM,EACN,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,UAAU,EACV,SAAS,EACT,aAAa,EAChB,EAAE,2BAA2B,2CAgH7B"}
@@ -0,0 +1,75 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // (C) 2026 GoodData Corporation
3
+ import { useEffect, useMemo } from "react";
4
+ import cx from "classnames";
5
+ import { defineMessages, useIntl } from "react-intl";
6
+ import { Dropdown, UiButton, UiIcon, UiMenu, UiSubmenuHeader } from "@gooddata/sdk-ui-kit";
7
+ import { getEffectiveSelectedAgentId, selectDefaultAgentId } from "./utils/agentSelection.js";
8
+ const msgs = defineMessages({
9
+ agent: {
10
+ id: "gd.gen-ai.agents",
11
+ },
12
+ loading: {
13
+ id: "gd.gen-ai.agents.loading",
14
+ },
15
+ });
16
+ export function GenAIChatAgentDropdown({ agents, conversations, conversationAgentId, selectedAgentId, isDisabled, isLoading, onSelectAgent, }) {
17
+ const intl = useIntl();
18
+ const effectiveSelectedAgentId = getEffectiveSelectedAgentId({
19
+ agents,
20
+ conversationAgentId,
21
+ selectedAgentId,
22
+ });
23
+ const selectedAgent = agents.find((agent) => agent.id === effectiveSelectedAgentId);
24
+ const agentLabel = intl.formatMessage(msgs.agent);
25
+ const loadingLabel = `${intl.formatMessage(msgs.loading)}…`;
26
+ useEffect(() => {
27
+ const isConversationAgentAvailable = !!conversationAgentId && agents.some((agent) => agent.id === conversationAgentId);
28
+ const isSelectedAgentAvailable = !!selectedAgentId && agents.some((agent) => agent.id === selectedAgentId);
29
+ if (conversationAgentId) {
30
+ if (isConversationAgentAvailable) {
31
+ if (conversationAgentId !== selectedAgentId) {
32
+ onSelectAgent(conversationAgentId);
33
+ }
34
+ return;
35
+ }
36
+ if (agents.length) {
37
+ onSelectAgent(isSelectedAgentAvailable ? selectedAgentId : selectDefaultAgentId(agents, conversations), { showChangeEvent: true });
38
+ }
39
+ return;
40
+ }
41
+ if (!isSelectedAgentAvailable && agents.length) {
42
+ // Resolve a default as soon as agents are loaded. selectDefaultAgentId always yields an
43
+ // agent from agent metadata alone (lastUsedAt, then modifiedAt), so input usability never
44
+ // depends on the conversations list loading. The conversations are still consulted as a
45
+ // best-effort "last used conversation agent" heuristic when they are already available.
46
+ onSelectAgent(selectDefaultAgentId(agents, conversations));
47
+ }
48
+ }, [agents, conversationAgentId, conversations, onSelectAgent, selectedAgentId]);
49
+ const items = useMemo(() => agents.map((agent) => {
50
+ const isSelected = agent.id === effectiveSelectedAgentId;
51
+ return {
52
+ type: "interactive",
53
+ id: agent.id,
54
+ stringTitle: agent.title,
55
+ isSelected,
56
+ isDisabled: false,
57
+ data: agent,
58
+ tooltip: agent.description || undefined,
59
+ iconRight: agent.description ? (_jsx(UiIcon, { type: "question", size: 12, color: isSelected ? "complementary-7" : "complementary-5", accessibilityConfig: { ariaHidden: true } })) : undefined,
60
+ };
61
+ }), [agents, effectiveSelectedAgentId]);
62
+ return (_jsx(Dropdown, { className: cx("gd-gen-ai-chat__input__agent-dropdown", {
63
+ "gd-gen-ai-chat__input__agent-dropdown--loading": isLoading,
64
+ }), alignPoints: [{ align: "tr br", offset: { x: 0, y: 0 } }], closeOnEscape: true, fullscreenOnMobile: false, accessibilityConfig: { popupRole: "listbox" }, renderButton: ({ isOpen, toggleDropdown, accessibilityConfig }) => (_jsx(UiButton, { label: isLoading ? loadingLabel : (selectedAgent?.title ?? agentLabel), variant: "dropdownInline", size: "small", iconAfter: isLoading ? undefined : isOpen ? "navigateUp" : "navigateDown", isDisabled: isLoading || isDisabled || !agents.length, onClick: toggleDropdown, dataTestId: "agent_dropdown_button", accessibilityConfig: {
65
+ ...accessibilityConfig,
66
+ ariaLabel: agentLabel,
67
+ } })), renderBody: ({ closeDropdown, ariaAttributes }) => (_jsx(UiMenu, { dataTestId: "agent_dropdown_menu", items: items, size: "small", minWidth: 160, maxWidth: 220, containerTopPadding: "small", containerBottomPadding: "small", MenuHeader: AgentMenuHeader, ariaAttributes: ariaAttributes, onSelect: (item) => {
68
+ onSelectAgent(item.data.id, { showChangeEvent: true });
69
+ closeDropdown();
70
+ } })) }));
71
+ }
72
+ function AgentMenuHeader() {
73
+ const intl = useIntl();
74
+ return _jsx(UiSubmenuHeader, { title: intl.formatMessage(msgs.agent), height: "medium" });
75
+ }
@@ -19,3 +19,4 @@ type GenAIChatConversationsExternalProps = {
19
19
  export type GenAIChatConversationsProps = GenAIChatConversationsStateProps & GenAIChatConversationsDispatchProps & GenAIChatConversationsExternalProps;
20
20
  export declare const GenAIChatConversations: FC<GenAIChatConversationsExternalProps>;
21
21
  export {};
22
+ //# sourceMappingURL=GenAIChatConversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChatConversations.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatConversations.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEH,KAAK,EAAE,EAGP,KAAK,YAAY,EASpB,MAAM,OAAO,CAAC;AAkBf,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EACH,oBAAoB,EAEpB,qBAAqB,EACxB,MAAM,wCAAwC,CAAC;AAChD,OAAO,EACH,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EAC3B,MAAM,oCAAoC,CAAC;AAY5C,KAAK,gCAAgC,GAAG;IACpC,YAAY,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC;IACtD,aAAa,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC;CAC3D,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACvC,kBAAkB,EAAE,OAAO,wBAAwB,CAAC;IACpD,eAAe,EAAE,OAAO,qBAAqB,CAAC;IAC9C,kBAAkB,EAAE,OAAO,wBAAwB,CAAC;CACvD,CAAC;AAEF,KAAK,mCAAmC,GAAG;IACvC,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,IAAI,CAAC;CAC5D,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG,gCAAgC,GACtE,mCAAmC,GACnC,mCAAmC,CAAC;AA6qBxC,eAAO,MAAM,sBAAsB,EAAE,EAAE,CAAC,mCAAmC,CAGzC,CAAC"}
@@ -3,6 +3,8 @@ import { type LinkHandlerEvent } from "./ConfigContext.js";
3
3
  import { type GenAiStoreProps } from "./GenAiStore.js";
4
4
  export type GenAIChatDialogProps = Omit<GenAiStoreProps, "children"> & {
5
5
  isOpen: boolean;
6
+ className?: string;
7
+ dialogPosition?: "left" | "right";
6
8
  locale?: string;
7
9
  canManage?: boolean;
8
10
  canAnalyze?: boolean;
@@ -13,4 +15,5 @@ export type GenAIChatDialogProps = Omit<GenAiStoreProps, "children"> & {
13
15
  onLinkClick?: (linkClickEvent: LinkHandlerEvent) => void;
14
16
  LandingScreenComponentProvider?: () => ComponentType;
15
17
  };
16
- export declare function GenAIChatDialog({ backend, workspace, locale, isOpen, onOpen, onClose, settings, returnFocusTo, objectTypes, includeTags, excludeTags, canManage, canAnalyze, canFullControl, eventHandlers, catalogItems, colorPalette, onLinkClick, onDispatcher, LandingScreenComponentProvider }: GenAIChatDialogProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function GenAIChatDialog({ backend, workspace, locale, isOpen, onOpen, onClose, settings, className, dialogPosition, returnFocusTo, objectTypes, includeTags, excludeTags, canManage, canAnalyze, canFullControl, eventHandlers, catalogItems, colorPalette, onLinkClick, onDispatcher, LandingScreenComponentProvider }: GenAIChatDialogProps): import("react/jsx-runtime").JSX.Element;
19
+ //# sourceMappingURL=GenAIChatDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChatDialog.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatDialog.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,SAAS,EAA2C,MAAM,OAAO,CAAC;AAcpG,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3E,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG;IACnE,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IACvD,WAAW,CAAC,EAAE,CAAC,cAAc,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,8BAA8B,CAAC,EAAE,MAAM,aAAa,CAAC;CACxD,CAAC;AAOF,wBAAgB,eAAe,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,SAAS,EACT,cAAc,EACd,aAAa,EACb,WAAW,EACX,WAAW,EACX,WAAW,EACX,SAAiB,EACjB,UAAkB,EAClB,cAAsB,EACtB,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,8BAA8B,EACjC,EAAE,oBAAoB,2CAwCtB"}
@@ -15,12 +15,12 @@ import { GenAiStore } from "./GenAiStore.js";
15
15
  // - High enough to be over other dialogs
16
16
  // - Below chart tooltips
17
17
  const DEFAULT_CHAT_Z_INDEX = 3000;
18
- export function GenAIChatDialog({ backend, workspace, locale, isOpen, onOpen, onClose, settings, returnFocusTo, objectTypes, includeTags, excludeTags, canManage = false, canAnalyze = false, canFullControl = false, eventHandlers, catalogItems, colorPalette, onLinkClick, onDispatcher, LandingScreenComponentProvider, }) {
18
+ export function GenAIChatDialog({ backend, workspace, locale, isOpen, onOpen, onClose, settings, className, dialogPosition, returnFocusTo, objectTypes, includeTags, excludeTags, canManage = false, canAnalyze = false, canFullControl = false, eventHandlers, catalogItems, colorPalette, onLinkClick, onDispatcher, LandingScreenComponentProvider, }) {
19
19
  const effectiveBackend = useBackendStrict(backend);
20
20
  const effectiveWorkspace = useWorkspaceStrict(workspace);
21
- return (_jsx(IntlWrapper, { locale: locale, children: _jsx(GenAiStore, { backend: effectiveBackend, workspace: effectiveWorkspace, onDispatcher: onDispatcher, eventHandlers: eventHandlers, colorPalette: colorPalette, settings: settings, objectTypes: objectTypes, includeTags: includeTags, excludeTags: excludeTags, catalogItems: catalogItems, children: (genAIStore) => (_jsx(GenAIChatDialogContent, { genAIStore: genAIStore, backend: effectiveBackend, workspace: effectiveWorkspace, isOpen: isOpen, onOpen: onOpen, onClose: onClose, returnFocusTo: returnFocusTo, onLinkClick: onLinkClick, catalogItems: catalogItems, canManage: canManage, canAnalyze: canAnalyze, canFullControl: canFullControl, LandingScreenComponentProvider: LandingScreenComponentProvider })) }) }));
21
+ return (_jsx(IntlWrapper, { locale: locale, children: _jsx(GenAiStore, { backend: effectiveBackend, workspace: effectiveWorkspace, onDispatcher: onDispatcher, eventHandlers: eventHandlers, colorPalette: colorPalette, settings: settings, objectTypes: objectTypes, includeTags: includeTags, excludeTags: excludeTags, catalogItems: catalogItems, children: (genAIStore) => (_jsx(GenAIChatDialogContent, { genAIStore: genAIStore, backend: effectiveBackend, workspace: effectiveWorkspace, className: className, dialogPosition: dialogPosition, isOpen: isOpen, onOpen: onOpen, onClose: onClose, returnFocusTo: returnFocusTo, onLinkClick: onLinkClick, catalogItems: catalogItems, canManage: canManage, canAnalyze: canAnalyze, canFullControl: canFullControl, LandingScreenComponentProvider: LandingScreenComponentProvider })) }) }));
22
22
  }
23
- function GenAIChatDialogContent({ genAIStore, backend, workspace, isOpen, onOpen, onClose, returnFocusTo, onLinkClick, catalogItems, canManage, canAnalyze, canFullControl, LandingScreenComponentProvider, }) {
23
+ function GenAIChatDialogContent({ genAIStore, backend, workspace, className, dialogPosition, isOpen, onOpen, onClose, returnFocusTo, onLinkClick, catalogItems, canManage, canAnalyze, canFullControl, LandingScreenComponentProvider, }) {
24
24
  const open = useRef(onOpen);
25
25
  open.current = onOpen;
26
26
  const close = useRef(onClose);
@@ -58,5 +58,5 @@ function GenAIChatDialogContent({ genAIStore, backend, workspace, isOpen, onOpen
58
58
  const chatOverlayController = useMemo(() => parentOverlayController ?? OverlayController.getInstance(DEFAULT_CHAT_Z_INDEX), [parentOverlayController]);
59
59
  if (!isOpen)
60
60
  return null;
61
- return (_jsx(BackendProvider, { backend: backend, children: _jsx(WorkspaceProvider, { workspace: workspace, children: _jsx(OverlayControllerProvider, { overlayController: chatOverlayController, children: _jsx(ConfigProvider, { allowNativeLinks: true, linkHandler: onLinkClick, catalogItems: catalogItems, canManage: canManage, canAnalyze: canAnalyze, canFullControl: canFullControl, children: _jsx(CustomizationProvider, { landingScreenComponentProvider: LandingScreenComponentProvider, children: _jsx(GenAIChatOverlay, { returnFocusTo: returnFocusTo, onClose: onCloseHandler }) }) }) }) }) }));
61
+ return (_jsx(BackendProvider, { backend: backend, children: _jsx(WorkspaceProvider, { workspace: workspace, children: _jsx(OverlayControllerProvider, { overlayController: chatOverlayController, children: _jsx(ConfigProvider, { allowNativeLinks: true, linkHandler: onLinkClick, catalogItems: catalogItems, canManage: canManage, canAnalyze: canAnalyze, canFullControl: canFullControl, children: _jsx(CustomizationProvider, { landingScreenComponentProvider: LandingScreenComponentProvider, children: _jsx(GenAIChatOverlay, { className: className, dialogPosition: dialogPosition, returnFocusTo: returnFocusTo, onClose: onCloseHandler }) }) }) }) }) }));
62
62
  }
@@ -18,3 +18,4 @@ type GenAIChatHeaderDispatchProps = {
18
18
  export type GenAIChatHeaderProps = GenAIChatHeaderOwnProps & GenAIChatHeaderStateProps & GenAIChatHeaderDispatchProps;
19
19
  export declare const GenAIChatHeader: FC<GenAIChatHeaderOwnProps>;
20
20
  export {};
21
+ //# sourceMappingURL=GenAIChatHeader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChatHeader.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAE/F,OAAO,EAAE,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAMnG,KAAK,uBAAuB,GAAG;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,KAAK,yBAAyB,GAAG;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,CAAC;CACjD,CAAC;AAEF,KAAK,4BAA4B,GAAG;IAChC,WAAW,EAAE,OAAO,iBAAiB,CAAC;IACtC,aAAa,EAAE,OAAO,mBAAmB,CAAC;IAC1C,UAAU,EAAE,OAAO,gBAAgB,CAAC;IACpC,oBAAoB,EAAE,OAAO,0BAA0B,CAAC;CAC3D,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,uBAAuB,GACtD,yBAAyB,GACzB,4BAA4B,CAAC;AA+EjC,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,uBAAuB,CAG7B,CAAC"}
@@ -7,7 +7,10 @@ export type GenAIChatOverlayDispatchProps = {
7
7
  };
8
8
  export type GenAIChatOverlayExternalProps = {
9
9
  returnFocusTo?: RefObject<HTMLElement | null> | string;
10
+ className?: string;
11
+ dialogPosition?: "left" | "right";
10
12
  onClose: () => void;
11
13
  };
12
14
  export type GenAIChatOverlayProps = GenAIChatOverlayExternalProps & GenAIChatOverlayDispatchProps;
13
15
  export declare const GenAIChatOverlay: FC<GenAIChatOverlayExternalProps>;
16
+ //# sourceMappingURL=GenAIChatOverlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChatOverlay.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatOverlay.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,SAAS,EAAwB,MAAM,OAAO,CAAC;AAStE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAOlF,MAAM,MAAM,6BAA6B,GAAG;IACxC,UAAU,EAAE,OAAO,gBAAgB,CAAC;IACpC,gBAAgB,EAAE,OAAO,4BAA4B,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IACxC,aAAa,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,OAAO,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,6BAA6B,GAAG,6BAA6B,CAAC;AAsElG,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,6BAA6B,CAGnC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // (C) 2024-2026 GoodData Corporation
3
- import { useCallback } from "react";
3
+ import { useCallback, useMemo } from "react";
4
4
  import cx from "classnames";
5
5
  import { useIntl } from "react-intl";
6
6
  import { connect } from "react-redux";
@@ -11,11 +11,13 @@ import { GenAIChatConversations } from "./GenAIChatConversations.js";
11
11
  import { GenAIChatHeader } from "./GenAIChatHeader.js";
12
12
  import { GenAIChatWrapper } from "./GenAIChatWrapper.js";
13
13
  import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js";
14
- function GenAIChatOverlayComponent({ onClose, returnFocusTo, setHistory, loadConversation, }) {
14
+ function GenAIChatOverlayComponent({ onClose, returnFocusTo, setHistory, loadConversation, dialogPosition, className, }) {
15
15
  const intl = useIntl();
16
16
  const { isFullscreen } = useFullscreenCheck();
17
- const classNames = cx("gd-gen-ai-chat__window", {
17
+ const classNames = cx("gd-gen-ai-chat__window", className, {
18
18
  "gd-gen-ai-chat__window--fullscreen": isFullscreen,
19
+ "gd-gen-ai-chat__window--left": !isFullscreen && dialogPosition === "left",
20
+ "gd-gen-ai-chat__window--right": !isFullscreen && dialogPosition !== "left",
19
21
  });
20
22
  const onHistoryClose = useCallback(() => {
21
23
  setHistory({ isHistory: false });
@@ -24,7 +26,16 @@ function GenAIChatOverlayComponent({ onClose, returnFocusTo, setHistory, loadCon
24
26
  loadConversation({ conversation });
25
27
  setHistory({ isHistory: false });
26
28
  }, [loadConversation, setHistory]);
27
- return (_jsxs(Dialog, { isModal: isFullscreen, returnFocusTo: returnFocusTo, returnFocusAfterClose: !!returnFocusTo, alignPoints: [{ align: isFullscreen ? "cc cc" : "br br" }], submitOnEnterKey: false, closeOnEscape: true, closeOnParentScroll: false, closeOnMouseDrag: false, onClose: onClose, className: classNames, accessibilityConfig: {
29
+ const position = useMemo(() => {
30
+ if (isFullscreen) {
31
+ return "cc cc";
32
+ }
33
+ if (dialogPosition === "left") {
34
+ return "bl bl";
35
+ }
36
+ return "br br";
37
+ }, [dialogPosition, isFullscreen]);
38
+ return (_jsxs(Dialog, { isModal: isFullscreen, returnFocusTo: returnFocusTo, returnFocusAfterClose: !!returnFocusTo, alignPoints: [{ align: position }], submitOnEnterKey: false, closeOnEscape: true, closeOnParentScroll: false, closeOnMouseDrag: false, onClose: onClose, className: classNames, accessibilityConfig: {
28
39
  title: intl.formatMessage({ id: "gd.gen-ai.dialog.label" }),
29
40
  isModal: isFullscreen,
30
41
  }, children: [
@@ -18,3 +18,4 @@ export type GenAIChatWrapperProps = GenAIChatOwnProps & {
18
18
  settings?: IUserWorkspaceSettings;
19
19
  };
20
20
  export declare const GenAIChatWrapper: FC<GenAIChatOwnProps>;
21
+ //# sourceMappingURL=GenAIChatWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAIChatWrapper.d.ts","sourceRoot":"","sources":["../../src/components/GenAIChatWrapper.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAC;AAM3C,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAKxE,OAAO,EAAE,iCAAiC,EAAE,MAAM,wCAAwC,CAAC;AAE3F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAc5G,MAAM,MAAM,iBAAiB,GAAG;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,iBAAiB,GAAG;IACpD,UAAU,EAAE,OAAO,gBAAgB,CAAC;IACpC,aAAa,EAAE,OAAO,iBAAiB,CAAC;IACxC,WAAW,EAAE,OAAO,iBAAiB,CAAC;IACtC,2BAA2B,EAAE,OAAO,iCAAiC,CAAC;IACtE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACrC,CAAC;AA+IF,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,iBAAiB,CAGvB,CAAC"}
@@ -24,3 +24,4 @@ export type GenAIConversationsProps = Omit<GenAiStoreProps, "children"> & {
24
24
  * @public
25
25
  */
26
26
  export declare function GenAIConversations(props: GenAIConversationsProps): import("react/jsx-runtime").JSX.Element;
27
+ //# sourceMappingURL=GenAiConversations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAiConversations.d.ts","sourceRoot":"","sources":["../../src/components/GenAiConversations.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAc1D,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGnE;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,GAAG;IACtE;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,YAAY,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACtE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CA6ChE"}
@@ -77,3 +77,4 @@ export type GenAiStoreProps = {
77
77
  * @public
78
78
  */
79
79
  export declare function GenAiStore(props: GenAiStoreProps): import("react/jsx-runtime").JSX.Element | null;
80
+ //# sourceMappingURL=GenAiStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenAiStore.d.ts","sourceRoot":"","sources":["../../src/components/GenAiStore.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAmC,MAAM,OAAO,CAAC;AAExE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAGlE,OAAO,EAAE,KAAK,kBAAkB,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKjG,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/B;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,WAAW,EAAE,CAAC;IAC7B;;OAEG;IACH,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC;;OAEG;IACH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAC7D;;OAEG;IACH,QAAQ,EAAE,SAAS,GAAG,CAAC,CAAC,UAAU,EAAE,aAAa,KAAK,SAAS,CAAC,CAAC;IAEjE;;;;;;;;;;;;OAYG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,kDA2ChD"}
@@ -10,3 +10,4 @@ type GlobalErrorProps = {
10
10
  };
11
11
  export declare function GlobalError({ errorMessage, errorDescription, errorDetails, errorTraceId, buttonsBefore, clearing, clearError }: GlobalErrorProps): import("react/jsx-runtime").JSX.Element;
12
12
  export {};
13
+ //# sourceMappingURL=GlobalError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GlobalError.d.ts","sourceRoot":"","sources":["../../src/components/GlobalError.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAY,MAAM,OAAO,CAAC;AAOjD,KAAK,gBAAgB,GAAG;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,SAAS,CAAC;CAC7B,CAAC;AAEF,wBAAgB,WAAW,CAAC,EACxB,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,UAAU,EACb,EAAE,gBAAgB,2CA0ElB"}
@@ -8,3 +8,4 @@ type HeaderIconProps = {
8
8
  };
9
9
  export declare function HeaderIcon({ tooltip, icon, onClick, disabled, arrowPlacement }: HeaderIconProps): import("react/jsx-runtime").JSX.Element;
10
10
  export {};
11
+ //# sourceMappingURL=HeaderIcon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeaderIcon.d.ts","sourceRoot":"","sources":["../../src/components/HeaderIcon.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,qBAAqB,EAA2B,MAAM,sBAAsB,CAAC;AAE1G,KAAK,eAAe,GAAG;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,qBAAqB,CAAC;CAC1C,CAAC;AAEF,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,eAAe,2CAwB/F"}
@@ -6,3 +6,4 @@ export type InputOwnProps = {
6
6
  targetRef?: LegacyRef<HTMLDivElement>;
7
7
  };
8
8
  export declare const Input: FC<InputOwnProps>;
9
+ //# sourceMappingURL=Input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../src/components/Input.tsx"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,EAAE,EACP,KAAK,SAAS,EASjB,MAAM,OAAO,CAAC;AAwCf,MAAM,MAAM,aAAa,GAAG;IACxB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;CACzC,CAAC;AAwXF,eAAO,MAAM,KAAK,EAAE,EAAE,CAAC,aAAa,CAAgE,CAAC"}
@@ -1,17 +1,20 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
1
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  // (C) 2024-2026 GoodData Corporation
3
- import { useEffect, useMemo, useReducer, useRef, useState, } from "react";
3
+ import { useCallback, useEffect, useMemo, useReducer, useRef, useState, } from "react";
4
4
  import cx from "classnames";
5
5
  import { FormattedMessage, defineMessages, useIntl } from "react-intl";
6
6
  import { connect } from "react-redux";
7
7
  import { SyntaxHighlightingInput, UiIconButton, UiTooltip } from "@gooddata/sdk-ui-kit";
8
8
  import { makeTextContents, makeUserItem, makeUserMessage, } from "../model.js";
9
- import { asyncProcessSelector, conversationMessagesSelector, conversationSelector, messagesSelector, } from "../store/messages/messagesSelectors.js";
10
- import { newMessageAction } from "../store/messages/messagesSlice.js";
9
+ import { agentSwitchingActiveSelector, agentSwitchingEnabledSelector, } from "../store/chatWindow/chatWindowSelectors.js";
10
+ import { agentsSelector, asyncProcessSelector, conversationMessagesSelector, conversationSelector, conversationsSelector, messagesSelector, selectedAgentIdSelector, } from "../store/messages/messagesSelectors.js";
11
+ import { newMessageAction, setSelectedAgentAction } from "../store/messages/messagesSlice.js";
11
12
  import { collectReferences } from "./completion/references.js";
12
13
  import { useCompletion } from "./completion/useCompletion.js";
14
+ import { GenAIChatAgentDropdown } from "./GenAIChatAgentDropdown.js";
13
15
  import { useHighlight } from "./highlight/useHighlight.js";
14
16
  import { useFullscreenCheck } from "./hooks/useFullscreenCheck.js";
17
+ import { getAgentSelectionStatus } from "./utils/agentSelection.js";
15
18
  import { escapeMarkdown } from "./utils/markdownUtils.js";
16
19
  const msgs = defineMessages({
17
20
  placeholder: {
@@ -26,17 +29,27 @@ const msgs = defineMessages({
26
29
  send: {
27
30
  id: "gd.gen-ai.button.send",
28
31
  },
32
+ noAgentAvailable: {
33
+ id: "gd.gen-ai.agent.unavailable",
34
+ },
29
35
  });
30
36
  const isMac = typeof navigator !== "undefined" &&
31
37
  (navigator.platform.toUpperCase().indexOf("MAC") >= 0 || navigator.userAgent.includes("Macintosh"));
32
- function InputComponent({ isBusy, isEvaluating, newMessage, autofocus = false, canManage, canAnalyze, targetRef, messages, conversation, items, loading, }) {
38
+ function InputComponent({ isBusy, isEvaluating, newMessage, autofocus = false, canManage, canAnalyze, targetRef, messages, conversation, conversations, items, agents, agentSwitchingEnabled, agentSwitchingActive, loading, selectedAgentId, setSelectedAgent, }) {
33
39
  const intl = useIntl();
34
40
  const { isBigScreen, isSmallScreen, isFullscreen } = useFullscreenCheck();
35
41
  const isLoading = loading === "loading" || loading === "clearing";
42
+ const isAssistantLoading = isLoading || loading === "restoring";
36
43
  const isEmpty = conversation ? !items?.length && !isLoading : !messages?.length && !isLoading;
37
44
  const [value, setValue] = useState("");
38
45
  const [editorApi, setApi] = useState(null);
39
46
  const [focused, setFocused] = useState(false);
47
+ const { availableAgents, hasNoAgents, isSelectionLoading } = getAgentSelectionStatus({
48
+ agentSwitchingActive,
49
+ assistantLoading: isAssistantLoading,
50
+ agents,
51
+ selectedAgentId,
52
+ });
40
53
  const { onCompletion, used } = useCompletion([], { canManage, canAnalyze });
41
54
  const { highlightExtension, atomicCursorExtension } = useHighlight(used);
42
55
  const beforeExtensions = useMemo(() => [atomicCursorExtension], [atomicCursorExtension]);
@@ -73,6 +86,9 @@ function InputComponent({ isBusy, isEvaluating, newMessage, autofocus = false, c
73
86
  forceFocusOnce.current = true;
74
87
  }, []);
75
88
  const handleSubmit = () => {
89
+ if (agentSwitchingActive && hasNoAgents) {
90
+ return;
91
+ }
76
92
  let item;
77
93
  if (conversation) {
78
94
  item = makeUserItem({
@@ -92,7 +108,7 @@ function InputComponent({ isBusy, isEvaluating, newMessage, autofocus = false, c
92
108
  const handleKeyDown = (e) => {
93
109
  if (e.key === "Enter" && !e.shiftKey) {
94
110
  const trimmed = value.trim();
95
- if (isBusy || !trimmed) {
111
+ if (isBusy || !trimmed || (agentSwitchingActive && (hasNoAgents || isSelectionLoading))) {
96
112
  return true;
97
113
  }
98
114
  e.preventDefault();
@@ -102,31 +118,55 @@ function InputComponent({ isBusy, isEvaluating, newMessage, autofocus = false, c
102
118
  }
103
119
  return false;
104
120
  };
105
- const buttonDisabled = !value.trim() || isBusy || isEvaluating;
106
- const buttonClasses = cx("gd-gen-ai-chat__input__send_button", {
107
- "gd-gen-ai-chat__input__send_button--disabled": buttonDisabled,
108
- });
121
+ const handleActionsMouseDown = (e) => {
122
+ if (e.target !== e.currentTarget) {
123
+ return;
124
+ }
125
+ e.preventDefault();
126
+ editorApi?.focus();
127
+ };
128
+ const agentDropdownDisabled = isBusy || isEvaluating || isSelectionLoading;
129
+ const buttonDisabled = !value.trim() || agentDropdownDisabled || (agentSwitchingActive && hasNoAgents);
130
+ const handleSelectAgent = useCallback((agentId, options) => {
131
+ setSelectedAgent({
132
+ agentId,
133
+ previousAgentId: conversation?.agentId ?? selectedAgentId,
134
+ showChangeEvent: options?.showChangeEvent,
135
+ });
136
+ }, [conversation?.agentId, selectedAgentId, setSelectedAgent]);
109
137
  const sendLabel = intl.formatMessage(msgs.send);
138
+ const noAgentAvailableLabel = intl.formatMessage(msgs.noAgentAvailable);
110
139
  return (_jsx("div", { className: cx("gd-gen-ai-chat__input", {
111
140
  focused,
112
141
  "gd-gen-ai-chat__input--fullscreen": isFullscreen,
113
142
  "gd-gen-ai-chat__input--big-screen": isBigScreen,
114
143
  "gd-gen-ai-chat__input--small-screen": isSmallScreen,
115
144
  "gd-gen-ai-chat__input--empty": isEmpty,
145
+ "gd-gen-ai-chat__input--agent-switching": agentSwitchingEnabled,
146
+ "gd-gen-ai-chat__input--no-agents": hasNoAgents,
116
147
  }), children: _jsxs("div", { className: "gd-gen-ai-chat__input__content", children: [
117
- _jsx("div", { ref: targetRef, onFocus: () => {
118
- editorApi?.focus();
119
- } }), _jsx(HintText, { focused: focused, where: "top" }), _jsx(SyntaxHighlightingInput, { className: "gd-gen-ai-chat__input__mc", placeholder: intl.formatMessage(msgs.placeholder), label: isMac ? intl.formatMessage(msgs.labelMac) : intl.formatMessage(msgs.labelWin), value: value, autocompletion: {
120
- aboveCursor: true,
121
- whenTyping: true,
122
- whenTypingDelay: 300,
123
- }, beforeExtensions: beforeExtensions, extensions: extensions, onApi: setApi, onChange: setValue, onFocus: () => {
124
- setFocused(true);
125
- }, onBlur: () => {
126
- setFocused(false);
127
- }, onKeyDown: handleKeyDown, onCompletion: onCompletion }), _jsx(HintText, { focused: focused, where: "bottom" }), _jsx("div", { className: buttonClasses, children: _jsx(UiTooltip, { triggerBy: ["focus", "hover"], arrowPlacement: "bottom", anchor: _jsx(UiIconButton, { icon: "send", variant: "tertiary", size: "medium", dataTestId: "send_message", isDisabled: buttonDisabled, onClick: buttonDisabled ? undefined : handleSubmit, accessibilityConfig: {
128
- ariaLabel: sendLabel,
129
- } }), content: sendLabel }) })
148
+ _jsx(HintText, { focused: focused, where: "top" }), _jsxs("div", { className: "gd-gen-ai-chat__input__container", children: [
149
+ _jsx("div", { ref: targetRef, onFocus: () => {
150
+ editorApi?.focus();
151
+ } }), _jsx("div", { className: "gd-gen-ai-chat__input__text", children: _jsx(SyntaxHighlightingInput, { className: "gd-gen-ai-chat__input__mc", placeholder: intl.formatMessage(msgs.placeholder), label: isMac ? intl.formatMessage(msgs.labelMac) : intl.formatMessage(msgs.labelWin), value: value, autocompletion: {
152
+ aboveCursor: true,
153
+ whenTyping: true,
154
+ whenTypingDelay: 300,
155
+ }, beforeExtensions: beforeExtensions, extensions: extensions, onApi: setApi, onChange: setValue, onFocus: () => {
156
+ setFocused(true);
157
+ }, onBlur: () => {
158
+ setFocused(false);
159
+ }, onKeyDown: handleKeyDown, onCompletion: onCompletion }) }), _jsx("div", { className: cx({
160
+ "gd-gen-ai-chat__input__actions": agentSwitchingEnabled,
161
+ "gd-gen-ai-chat__input__send_button": !agentSwitchingEnabled,
162
+ "gd-gen-ai-chat__input__send_button--disabled": !agentSwitchingEnabled && buttonDisabled,
163
+ }), onMouseDown: agentSwitchingEnabled ? handleActionsMouseDown : undefined, children: agentSwitchingActive && hasNoAgents ? (_jsx("span", { className: "gd-gen-ai-chat__input__no-agent", "data-testid": "no_agent_available", children: noAgentAvailableLabel })) : agentSwitchingEnabled ? (_jsxs(_Fragment, { children: [agentSwitchingActive ? (_jsx(GenAIChatAgentDropdown, { agents: availableAgents, conversations: conversations, conversationAgentId: conversation?.agentId, selectedAgentId: selectedAgentId, isDisabled: agentDropdownDisabled, isLoading: isSelectionLoading, onSelectAgent: handleSelectAgent })) : null, _jsx(UiTooltip, { triggerBy: ["focus", "hover"], arrowPlacement: "bottom", anchor: _jsx(UiIconButton, { icon: "arrowUp", variant: "primary", size: "small", dataTestId: "send_message", isDisabled: buttonDisabled, onClick: buttonDisabled ? undefined : handleSubmit, accessibilityConfig: {
164
+ ariaLabel: sendLabel,
165
+ } }), content: sendLabel })
166
+ ] })) : (_jsx(UiTooltip, { triggerBy: ["focus", "hover"], arrowPlacement: "bottom", anchor: _jsx(UiIconButton, { icon: "send", variant: "tertiary", size: "medium", dataTestId: "send_message", isDisabled: buttonDisabled, onClick: buttonDisabled ? undefined : handleSubmit, accessibilityConfig: {
167
+ ariaLabel: sendLabel,
168
+ } }), content: sendLabel })) })
169
+ ] }), _jsx(HintText, { focused: focused, where: "bottom" })
130
170
  ] }) }));
131
171
  }
132
172
  function HintText({ where, focused }) {
@@ -144,14 +184,20 @@ const mapStateToProps = (state) => {
144
184
  const asyncState = asyncProcessSelector(state);
145
185
  return {
146
186
  conversation: conversationSelector(state),
187
+ conversations: conversationsSelector(state),
147
188
  items: conversationMessagesSelector(state),
148
189
  messages: messagesSelector(state),
149
190
  loading: asyncState,
191
+ agents: agentsSelector(state),
192
+ agentSwitchingEnabled: agentSwitchingEnabledSelector(state),
193
+ agentSwitchingActive: agentSwitchingActiveSelector(state),
194
+ selectedAgentId: selectedAgentIdSelector(state),
150
195
  isBusy: !!asyncState,
151
196
  isEvaluating: asyncState === "evaluating",
152
197
  };
153
198
  };
154
199
  const mapDispatchToProps = {
155
200
  newMessage: newMessageAction,
201
+ setSelectedAgent: setSelectedAgentAction,
156
202
  };
157
203
  export const Input = connect(mapStateToProps, mapDispatchToProps)(InputComponent);
@@ -1 +1,2 @@
1
1
  export declare const KeyDriverAnalysis: any;
2
+ //# sourceMappingURL=KeyDriverAnalysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KeyDriverAnalysis.d.ts","sourceRoot":"","sources":["../../src/components/KeyDriverAnalysis.tsx"],"names":[],"mappings":"AAyFA,eAAO,MAAM,iBAAiB,EAAE,GAGH,CAAC"}
@@ -1 +1,2 @@
1
1
  export declare const Messages: any;
2
+ //# sourceMappingURL=Messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Messages.d.ts","sourceRoot":"","sources":["../../src/components/Messages.tsx"],"names":[],"mappings":"AA8MA,eAAO,MAAM,QAAQ,EAAE,GAAiD,CAAC"}