@gooddata/sdk-ui-gen-ai 11.41.0-alpha.4 → 11.41.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 (384) 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 +76 -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 +1 -0
  26. package/esm/components/GenAIChatDialog.d.ts.map +1 -0
  27. package/esm/components/GenAIChatHeader.d.ts +1 -0
  28. package/esm/components/GenAIChatHeader.d.ts.map +1 -0
  29. package/esm/components/GenAIChatOverlay.d.ts +1 -0
  30. package/esm/components/GenAIChatOverlay.d.ts.map +1 -0
  31. package/esm/components/GenAIChatWrapper.d.ts +1 -0
  32. package/esm/components/GenAIChatWrapper.d.ts.map +1 -0
  33. package/esm/components/GenAiConversations.d.ts +1 -0
  34. package/esm/components/GenAiConversations.d.ts.map +1 -0
  35. package/esm/components/GenAiStore.d.ts +1 -0
  36. package/esm/components/GenAiStore.d.ts.map +1 -0
  37. package/esm/components/GlobalError.d.ts +1 -0
  38. package/esm/components/GlobalError.d.ts.map +1 -0
  39. package/esm/components/HeaderIcon.d.ts +1 -0
  40. package/esm/components/HeaderIcon.d.ts.map +1 -0
  41. package/esm/components/Input.d.ts +1 -0
  42. package/esm/components/Input.d.ts.map +1 -0
  43. package/esm/components/Input.js +72 -24
  44. package/esm/components/KeyDriverAnalysis.d.ts +1 -0
  45. package/esm/components/KeyDriverAnalysis.d.ts.map +1 -0
  46. package/esm/components/Messages.d.ts +1 -0
  47. package/esm/components/Messages.d.ts.map +1 -0
  48. package/esm/components/Messages.js +9 -6
  49. package/esm/components/completion/InfoComponent.d.ts +1 -0
  50. package/esm/components/completion/InfoComponent.d.ts.map +1 -0
  51. package/esm/components/completion/plugins/rehype-references.d.ts +1 -0
  52. package/esm/components/completion/plugins/rehype-references.d.ts.map +1 -0
  53. package/esm/components/completion/plugins/remark-references.d.ts +1 -0
  54. package/esm/components/completion/plugins/remark-references.d.ts.map +1 -0
  55. package/esm/components/completion/plugins/types.d.ts +1 -0
  56. package/esm/components/completion/plugins/types.d.ts.map +1 -0
  57. package/esm/components/completion/references.d.ts +1 -0
  58. package/esm/components/completion/references.d.ts.map +1 -0
  59. package/esm/components/completion/useCompletion.d.ts +1 -0
  60. package/esm/components/completion/useCompletion.d.ts.map +1 -0
  61. package/esm/components/completion/utils.d.ts +1 -0
  62. package/esm/components/completion/utils.d.ts.map +1 -0
  63. package/esm/components/customized/Disclaimer.d.ts +1 -0
  64. package/esm/components/customized/Disclaimer.d.ts.map +1 -0
  65. package/esm/components/customized/LandingContainer.d.ts +1 -0
  66. package/esm/components/customized/LandingContainer.d.ts.map +1 -0
  67. package/esm/components/customized/LandingQuestion.d.ts +1 -0
  68. package/esm/components/customized/LandingQuestion.d.ts.map +1 -0
  69. package/esm/components/customized/LandingQuestion.js +32 -13
  70. package/esm/components/customized/LandingScreen.d.ts +1 -0
  71. package/esm/components/customized/LandingScreen.d.ts.map +1 -0
  72. package/esm/components/customized/LandingTitle.d.ts +1 -0
  73. package/esm/components/customized/LandingTitle.d.ts.map +1 -0
  74. package/esm/components/highlight/useHighlight.d.ts +1 -0
  75. package/esm/components/highlight/useHighlight.d.ts.map +1 -0
  76. package/esm/components/hooks/useEndpointCheck.d.ts +1 -0
  77. package/esm/components/hooks/useEndpointCheck.d.ts.map +1 -0
  78. package/esm/components/hooks/useFullscreenCheck.d.ts +1 -0
  79. package/esm/components/hooks/useFullscreenCheck.d.ts.map +1 -0
  80. package/esm/components/hooks/useHistoryCheck.d.ts +1 -0
  81. package/esm/components/hooks/useHistoryCheck.d.ts.map +1 -0
  82. package/esm/components/hooks/useSettingsClick.d.ts +1 -0
  83. package/esm/components/hooks/useSettingsClick.d.ts.map +1 -0
  84. package/esm/components/hooks/useThreadLoading.d.ts +1 -0
  85. package/esm/components/hooks/useThreadLoading.d.ts.map +1 -0
  86. package/esm/components/messages/AgentChangeItem.d.ts +7 -0
  87. package/esm/components/messages/AgentChangeItem.d.ts.map +1 -0
  88. package/esm/components/messages/AgentChangeItem.js +17 -0
  89. package/esm/components/messages/AssistantItem.d.ts +1 -0
  90. package/esm/components/messages/AssistantItem.d.ts.map +1 -0
  91. package/esm/components/messages/AssistantItemFeedback.d.ts +1 -0
  92. package/esm/components/messages/AssistantItemFeedback.d.ts.map +1 -0
  93. package/esm/components/messages/AssistantItemSuggestions.d.ts +3 -2
  94. package/esm/components/messages/AssistantItemSuggestions.d.ts.map +1 -0
  95. package/esm/components/messages/AssistantItemSuggestions.js +6 -2
  96. package/esm/components/messages/AssistantMessage.d.ts +1 -0
  97. package/esm/components/messages/AssistantMessage.d.ts.map +1 -0
  98. package/esm/components/messages/ConversationItemContents.d.ts +1 -0
  99. package/esm/components/messages/ConversationItemContents.d.ts.map +1 -0
  100. package/esm/components/messages/FeedbackPopup.d.ts +1 -0
  101. package/esm/components/messages/FeedbackPopup.d.ts.map +1 -0
  102. package/esm/components/messages/ItemsGroup.d.ts +1 -0
  103. package/esm/components/messages/ItemsGroup.d.ts.map +1 -0
  104. package/esm/components/messages/MessageContents.d.ts +1 -0
  105. package/esm/components/messages/MessageContents.d.ts.map +1 -0
  106. package/esm/components/messages/MessageScroller.d.ts +1 -0
  107. package/esm/components/messages/MessageScroller.d.ts.map +1 -0
  108. package/esm/components/messages/ReasoningDropdown.d.ts +1 -0
  109. package/esm/components/messages/ReasoningDropdown.d.ts.map +1 -0
  110. package/esm/components/messages/ReasoningMessage.d.ts +1 -0
  111. package/esm/components/messages/ReasoningMessage.d.ts.map +1 -0
  112. package/esm/components/messages/SystemItem.d.ts +7 -0
  113. package/esm/components/messages/SystemItem.d.ts.map +1 -0
  114. package/esm/components/messages/SystemItem.js +12 -0
  115. package/esm/components/messages/ToolItem.d.ts +1 -0
  116. package/esm/components/messages/ToolItem.d.ts.map +1 -0
  117. package/esm/components/messages/UserItem.d.ts +1 -0
  118. package/esm/components/messages/UserItem.d.ts.map +1 -0
  119. package/esm/components/messages/UserMessage.d.ts +1 -0
  120. package/esm/components/messages/UserMessage.d.ts.map +1 -0
  121. package/esm/components/messages/components/SemanticSearchTreeView.d.ts +1 -0
  122. package/esm/components/messages/components/SemanticSearchTreeView.d.ts.map +1 -0
  123. package/esm/components/messages/components/VisualizationErrorBoundary.d.ts +1 -0
  124. package/esm/components/messages/components/VisualizationErrorBoundary.d.ts.map +1 -0
  125. package/esm/components/messages/contents/ChangeAnalysisContentsComponent.d.ts +1 -0
  126. package/esm/components/messages/contents/ChangeAnalysisContentsComponent.d.ts.map +1 -0
  127. package/esm/components/messages/contents/CustomHyperlink.d.ts +1 -0
  128. package/esm/components/messages/contents/CustomHyperlink.d.ts.map +1 -0
  129. package/esm/components/messages/contents/ErrorContents.d.ts +1 -0
  130. package/esm/components/messages/contents/ErrorContents.d.ts.map +1 -0
  131. package/esm/components/messages/contents/Markdown.d.ts +1 -0
  132. package/esm/components/messages/contents/Markdown.d.ts.map +1 -0
  133. package/esm/components/messages/contents/ReasoningContents.d.ts +1 -0
  134. package/esm/components/messages/contents/ReasoningContents.d.ts.map +1 -0
  135. package/esm/components/messages/contents/ReasoningIcon.d.ts +3 -2
  136. package/esm/components/messages/contents/ReasoningIcon.d.ts.map +1 -0
  137. package/esm/components/messages/contents/RoutingContents.d.ts +1 -0
  138. package/esm/components/messages/contents/RoutingContents.d.ts.map +1 -0
  139. package/esm/components/messages/contents/SearchContents.d.ts +1 -0
  140. package/esm/components/messages/contents/SearchContents.d.ts.map +1 -0
  141. package/esm/components/messages/contents/SemanticSearchContents.d.ts +1 -0
  142. package/esm/components/messages/contents/SemanticSearchContents.d.ts.map +1 -0
  143. package/esm/components/messages/contents/TextContents.d.ts +1 -0
  144. package/esm/components/messages/contents/TextContents.d.ts.map +1 -0
  145. package/esm/components/messages/contents/VisualizationContents.d.ts +4 -1
  146. package/esm/components/messages/contents/VisualizationContents.d.ts.map +1 -0
  147. package/esm/components/messages/contents/VisualizationContents.js +7 -3
  148. package/esm/components/messages/contents/VisualizationSaveDialog.d.ts +1 -0
  149. package/esm/components/messages/contents/VisualizationSaveDialog.d.ts.map +1 -0
  150. package/esm/components/messages/contents/drill/DrillSelectDropdownMenu.d.ts +1 -0
  151. package/esm/components/messages/contents/drill/DrillSelectDropdownMenu.d.ts.map +1 -0
  152. package/esm/components/messages/contents/hooks/useVisualisationSaving.d.ts +1 -0
  153. package/esm/components/messages/contents/hooks/useVisualisationSaving.d.ts.map +1 -0
  154. package/esm/components/messages/contents/replaceLinks.d.ts +1 -0
  155. package/esm/components/messages/contents/replaceLinks.d.ts.map +1 -0
  156. package/esm/components/messages/contents/useExecution.d.ts +1 -0
  157. package/esm/components/messages/contents/useExecution.d.ts.map +1 -0
  158. package/esm/components/messages/contents/useKdaDefinition.d.ts +1 -0
  159. package/esm/components/messages/contents/useKdaDefinition.d.ts.map +1 -0
  160. package/esm/components/messages/conversationContents/ConversationErrorContent.d.ts +1 -0
  161. package/esm/components/messages/conversationContents/ConversationErrorContent.d.ts.map +1 -0
  162. package/esm/components/messages/conversationContents/ConversationKdaContent.d.ts +1 -0
  163. package/esm/components/messages/conversationContents/ConversationKdaContent.d.ts.map +1 -0
  164. package/esm/components/messages/conversationContents/ConversationReasoningContent.d.ts +1 -0
  165. package/esm/components/messages/conversationContents/ConversationReasoningContent.d.ts.map +1 -0
  166. package/esm/components/messages/conversationContents/ConversationSearchContent.d.ts +1 -0
  167. package/esm/components/messages/conversationContents/ConversationSearchContent.d.ts.map +1 -0
  168. package/esm/components/messages/conversationContents/ConversationTextContent.d.ts +1 -0
  169. package/esm/components/messages/conversationContents/ConversationTextContent.d.ts.map +1 -0
  170. package/esm/components/messages/conversationContents/ConversationToolCallContent.d.ts +1 -0
  171. package/esm/components/messages/conversationContents/ConversationToolCallContent.d.ts.map +1 -0
  172. package/esm/components/messages/conversationContents/ConversationToolResultContent.d.ts +1 -0
  173. package/esm/components/messages/conversationContents/ConversationToolResultContent.d.ts.map +1 -0
  174. package/esm/components/messages/conversationContents/ConversationVisualisation.d.ts +1 -0
  175. package/esm/components/messages/conversationContents/ConversationVisualisation.d.ts.map +1 -0
  176. package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts +1 -0
  177. package/esm/components/messages/conversationContents/ConversationVisualizationContent.d.ts.map +1 -0
  178. package/esm/components/messages/conversationContents/ConversationWhatIfContent.d.ts +1 -0
  179. package/esm/components/messages/conversationContents/ConversationWhatIfContent.d.ts.map +1 -0
  180. package/esm/components/messages/conversationContents/SaveVisualizationDialog.d.ts +1 -0
  181. package/esm/components/messages/conversationContents/SaveVisualizationDialog.d.ts.map +1 -0
  182. package/esm/components/messages/conversationContents/useExecution.d.ts +1 -0
  183. package/esm/components/messages/conversationContents/useExecution.d.ts.map +1 -0
  184. package/esm/components/messages/conversationContents/useKdaDefinition.d.ts +1 -0
  185. package/esm/components/messages/conversationContents/useKdaDefinition.d.ts.map +1 -0
  186. package/esm/components/messages/conversationContents/useSaveCheck.d.ts +1 -0
  187. package/esm/components/messages/conversationContents/useSaveCheck.d.ts.map +1 -0
  188. package/esm/components/messages/itemState.d.ts +1 -0
  189. package/esm/components/messages/itemState.d.ts.map +1 -0
  190. package/esm/components/messages/messageState.d.ts +1 -0
  191. package/esm/components/messages/messageState.d.ts.map +1 -0
  192. package/esm/components/messages/useUserFeedback.d.ts +1 -0
  193. package/esm/components/messages/useUserFeedback.d.ts.map +1 -0
  194. package/esm/components/utils/agentSelection.d.ts +20 -0
  195. package/esm/components/utils/agentSelection.d.ts.map +1 -0
  196. package/esm/components/utils/agentSelection.js +47 -0
  197. package/esm/components/utils/conversationGrouper.d.ts +1 -0
  198. package/esm/components/utils/conversationGrouper.d.ts.map +1 -0
  199. package/esm/components/utils/groupUtility.d.ts +2 -1
  200. package/esm/components/utils/groupUtility.d.ts.map +1 -0
  201. package/esm/components/utils/groupUtility.js +3 -0
  202. package/esm/components/utils/intersectionUtils.d.ts +1 -0
  203. package/esm/components/utils/intersectionUtils.d.ts.map +1 -0
  204. package/esm/components/utils/markdownUtils.d.ts +1 -0
  205. package/esm/components/utils/markdownUtils.d.ts.map +1 -0
  206. package/esm/components/utils/modelCheckUtility.d.ts +1 -0
  207. package/esm/components/utils/modelCheckUtility.d.ts.map +1 -0
  208. package/esm/forecast/forecastMapping.d.ts +1 -0
  209. package/esm/forecast/forecastMapping.d.ts.map +1 -0
  210. package/esm/hooks/useGenAIStore.d.ts +1 -0
  211. package/esm/hooks/useGenAIStore.d.ts.map +1 -0
  212. package/esm/hooks/useGenAIStore.js +4 -1
  213. package/esm/hooks/useGenAiChatAvailability.d.ts +1 -0
  214. package/esm/hooks/useGenAiChatAvailability.d.ts.map +1 -0
  215. package/esm/index.d.ts +2 -1
  216. package/esm/index.d.ts.map +1 -0
  217. package/esm/internal.d.ts +1 -0
  218. package/esm/internal.d.ts.map +1 -0
  219. package/esm/localization/IntlWrapper.d.ts +1 -0
  220. package/esm/localization/IntlWrapper.d.ts.map +1 -0
  221. package/esm/localization/bundles/de-DE.localization-bundle.d.ts +1 -0
  222. package/esm/localization/bundles/de-DE.localization-bundle.d.ts.map +1 -0
  223. package/esm/localization/bundles/en-AU.localization-bundle.d.ts +1 -0
  224. package/esm/localization/bundles/en-AU.localization-bundle.d.ts.map +1 -0
  225. package/esm/localization/bundles/en-GB.localization-bundle.d.ts +1 -0
  226. package/esm/localization/bundles/en-GB.localization-bundle.d.ts.map +1 -0
  227. package/esm/localization/bundles/en-US.localization-bundle.d.ts +25 -0
  228. package/esm/localization/bundles/en-US.localization-bundle.d.ts.map +1 -0
  229. package/esm/localization/bundles/en-US.localization-bundle.js +24 -0
  230. package/esm/localization/bundles/es-419.localization-bundle.d.ts +1 -0
  231. package/esm/localization/bundles/es-419.localization-bundle.d.ts.map +1 -0
  232. package/esm/localization/bundles/es-ES.localization-bundle.d.ts +1 -0
  233. package/esm/localization/bundles/es-ES.localization-bundle.d.ts.map +1 -0
  234. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts +1 -0
  235. package/esm/localization/bundles/fi-FI.localization-bundle.d.ts.map +1 -0
  236. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts +1 -0
  237. package/esm/localization/bundles/fr-CA.localization-bundle.d.ts.map +1 -0
  238. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts +1 -0
  239. package/esm/localization/bundles/fr-FR.localization-bundle.d.ts.map +1 -0
  240. package/esm/localization/bundles/id-ID.localization-bundle.d.ts +1 -0
  241. package/esm/localization/bundles/id-ID.localization-bundle.d.ts.map +1 -0
  242. package/esm/localization/bundles/it-IT.localization-bundle.d.ts +1 -0
  243. package/esm/localization/bundles/it-IT.localization-bundle.d.ts.map +1 -0
  244. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts +1 -0
  245. package/esm/localization/bundles/ja-JP.localization-bundle.d.ts.map +1 -0
  246. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts +1 -0
  247. package/esm/localization/bundles/ko-KR.localization-bundle.d.ts.map +1 -0
  248. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts +1 -0
  249. package/esm/localization/bundles/nl-NL.localization-bundle.d.ts.map +1 -0
  250. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts +1 -0
  251. package/esm/localization/bundles/pl-PL.localization-bundle.d.ts.map +1 -0
  252. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts +1 -0
  253. package/esm/localization/bundles/pt-BR.localization-bundle.d.ts.map +1 -0
  254. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts +1 -0
  255. package/esm/localization/bundles/pt-PT.localization-bundle.d.ts.map +1 -0
  256. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts +1 -0
  257. package/esm/localization/bundles/ru-RU.localization-bundle.d.ts.map +1 -0
  258. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts +1 -0
  259. package/esm/localization/bundles/sl-SI.localization-bundle.d.ts.map +1 -0
  260. package/esm/localization/bundles/th-TH.localization-bundle.d.ts +1 -0
  261. package/esm/localization/bundles/th-TH.localization-bundle.d.ts.map +1 -0
  262. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts +1 -0
  263. package/esm/localization/bundles/tr-TR.localization-bundle.d.ts.map +1 -0
  264. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts +1 -0
  265. package/esm/localization/bundles/uk-UA.localization-bundle.d.ts.map +1 -0
  266. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts +1 -0
  267. package/esm/localization/bundles/vi-VN.localization-bundle.d.ts.map +1 -0
  268. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts +1 -0
  269. package/esm/localization/bundles/zh-HK.localization-bundle.d.ts.map +1 -0
  270. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts +1 -0
  271. package/esm/localization/bundles/zh-Hans.localization-bundle.d.ts.map +1 -0
  272. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts +1 -0
  273. package/esm/localization/bundles/zh-Hant.localization-bundle.d.ts.map +1 -0
  274. package/esm/localization/translations.d.ts +1 -0
  275. package/esm/localization/translations.d.ts.map +1 -0
  276. package/esm/model.d.ts +28 -1
  277. package/esm/model.d.ts.map +1 -0
  278. package/esm/model.js +16 -0
  279. package/esm/permissions/PermissionsContext.d.ts +1 -0
  280. package/esm/permissions/PermissionsContext.d.ts.map +1 -0
  281. package/esm/permissions/usePermissions.d.ts +1 -0
  282. package/esm/permissions/usePermissions.d.ts.map +1 -0
  283. package/esm/permissions/useWorkspacePermissions.d.ts +1 -0
  284. package/esm/permissions/useWorkspacePermissions.d.ts.map +1 -0
  285. package/esm/permissions/utils.d.ts +1 -0
  286. package/esm/permissions/utils.d.ts.map +1 -0
  287. package/esm/sdk-ui-gen-ai.d.ts +10 -1
  288. package/esm/store/chatWindow/allowedRelationshipTypes.d.ts +1 -0
  289. package/esm/store/chatWindow/allowedRelationshipTypes.d.ts.map +1 -0
  290. package/esm/store/chatWindow/chatWindowSelectors.d.ts +4 -0
  291. package/esm/store/chatWindow/chatWindowSelectors.d.ts.map +1 -0
  292. package/esm/store/chatWindow/chatWindowSelectors.js +6 -0
  293. package/esm/store/chatWindow/chatWindowSlice.d.ts +12 -1
  294. package/esm/store/chatWindow/chatWindowSlice.d.ts.map +1 -0
  295. package/esm/store/chatWindow/chatWindowSlice.js +10 -2
  296. package/esm/store/events.d.ts +1 -0
  297. package/esm/store/events.d.ts.map +1 -0
  298. package/esm/store/localStorage.d.ts +1 -0
  299. package/esm/store/localStorage.d.ts.map +1 -0
  300. package/esm/store/messages/messagesSelectors.d.ts +67 -1
  301. package/esm/store/messages/messagesSelectors.d.ts.map +1 -0
  302. package/esm/store/messages/messagesSelectors.js +3 -0
  303. package/esm/store/messages/messagesSlice.d.ts +26 -3
  304. package/esm/store/messages/messagesSlice.d.ts.map +1 -0
  305. package/esm/store/messages/messagesSlice.js +82 -2
  306. package/esm/store/options.d.ts +1 -0
  307. package/esm/store/options.d.ts.map +1 -0
  308. package/esm/store/queues/queue.newMessage.d.ts +1 -0
  309. package/esm/store/queues/queue.newMessage.d.ts.map +1 -0
  310. package/esm/store/sideEffects/converters/interactionsToMessages.d.ts +1 -0
  311. package/esm/store/sideEffects/converters/interactionsToMessages.d.ts.map +1 -0
  312. package/esm/store/sideEffects/converters/toLocalContent.d.ts +1 -0
  313. package/esm/store/sideEffects/converters/toLocalContent.d.ts.map +1 -0
  314. package/esm/store/sideEffects/index.d.ts +1 -0
  315. package/esm/store/sideEffects/index.d.ts.map +1 -0
  316. package/esm/store/sideEffects/index.js +10 -1
  317. package/esm/store/sideEffects/loadAgents.d.ts +13 -0
  318. package/esm/store/sideEffects/loadAgents.d.ts.map +1 -0
  319. package/esm/store/sideEffects/loadAgents.js +46 -0
  320. package/esm/store/sideEffects/loadCatalogItems.d.ts +1 -0
  321. package/esm/store/sideEffects/loadCatalogItems.d.ts.map +1 -0
  322. package/esm/store/sideEffects/loadColorPalette.d.ts +1 -0
  323. package/esm/store/sideEffects/loadColorPalette.d.ts.map +1 -0
  324. package/esm/store/sideEffects/loadSettings.d.ts +1 -0
  325. package/esm/store/sideEffects/loadSettings.d.ts.map +1 -0
  326. package/esm/store/sideEffects/onAgentSwitch.d.ts +22 -0
  327. package/esm/store/sideEffects/onAgentSwitch.d.ts.map +1 -0
  328. package/esm/store/sideEffects/onAgentSwitch.js +55 -0
  329. package/esm/store/sideEffects/onChatOpenSync.d.ts +44 -0
  330. package/esm/store/sideEffects/onChatOpenSync.d.ts.map +1 -0
  331. package/esm/store/sideEffects/onChatOpenSync.js +141 -0
  332. package/esm/store/sideEffects/onConversationDelete.d.ts +1 -0
  333. package/esm/store/sideEffects/onConversationDelete.d.ts.map +1 -0
  334. package/esm/store/sideEffects/onConversationPin.d.ts +1 -0
  335. package/esm/store/sideEffects/onConversationPin.d.ts.map +1 -0
  336. package/esm/store/sideEffects/onConversationRename.d.ts +1 -0
  337. package/esm/store/sideEffects/onConversationRename.d.ts.map +1 -0
  338. package/esm/store/sideEffects/onEvent.d.ts +1 -0
  339. package/esm/store/sideEffects/onEvent.d.ts.map +1 -0
  340. package/esm/store/sideEffects/onThreadClear.d.ts +1 -0
  341. package/esm/store/sideEffects/onThreadClear.d.ts.map +1 -0
  342. package/esm/store/sideEffects/onThreadLoad.d.ts +1 -0
  343. package/esm/store/sideEffects/onThreadLoad.d.ts.map +1 -0
  344. package/esm/store/sideEffects/onThreadLoad.js +2 -1
  345. package/esm/store/sideEffects/onUserFeedback.d.ts +1 -0
  346. package/esm/store/sideEffects/onUserFeedback.d.ts.map +1 -0
  347. package/esm/store/sideEffects/onUserMessage.d.ts +1 -0
  348. package/esm/store/sideEffects/onUserMessage.d.ts.map +1 -0
  349. package/esm/store/sideEffects/onUserMessage.js +20 -5
  350. package/esm/store/sideEffects/onUserMessageUpdate.d.ts +1 -0
  351. package/esm/store/sideEffects/onUserMessageUpdate.d.ts.map +1 -0
  352. package/esm/store/sideEffects/onVerboseStore.d.ts +1 -0
  353. package/esm/store/sideEffects/onVerboseStore.d.ts.map +1 -0
  354. package/esm/store/sideEffects/onVisualisationRender.d.ts +1 -0
  355. package/esm/store/sideEffects/onVisualisationRender.d.ts.map +1 -0
  356. package/esm/store/sideEffects/onVisualizationSave.d.ts +1 -0
  357. package/esm/store/sideEffects/onVisualizationSave.d.ts.map +1 -0
  358. package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts +1 -0
  359. package/esm/store/sideEffects/onVisualizationSuccessSave.d.ts.map +1 -0
  360. package/esm/store/sideEffects/utils.d.ts +1 -0
  361. package/esm/store/sideEffects/utils.d.ts.map +1 -0
  362. package/esm/store/store.d.ts +1 -0
  363. package/esm/store/store.d.ts.map +1 -0
  364. package/esm/store/store.js +4 -1
  365. package/esm/store/types.d.ts +1 -0
  366. package/esm/store/types.d.ts.map +1 -0
  367. package/esm/store/utils.d.ts +1 -0
  368. package/esm/store/utils.d.ts.map +1 -0
  369. package/esm/types.d.ts +3 -1
  370. package/esm/types.d.ts.map +1 -0
  371. package/esm/utils.d.ts +1 -0
  372. package/esm/utils.d.ts.map +1 -0
  373. package/esm/whatIf/whatIfMapping.d.ts +1 -0
  374. package/esm/whatIf/whatIfMapping.d.ts.map +1 -0
  375. package/package.json +20 -20
  376. package/styles/css/input.css +103 -13
  377. package/styles/css/input.css.map +1 -1
  378. package/styles/css/main.css +152 -14
  379. package/styles/css/main.css.map +1 -1
  380. package/styles/css/messages.css +47 -0
  381. package/styles/css/messages.css.map +1 -1
  382. package/styles/scss/input.scss +113 -17
  383. package/styles/scss/main.scss +2 -1
  384. package/styles/scss/messages.scss +61 -0
@@ -12,10 +12,15 @@ const initialState = {
12
12
  excludeTags: undefined,
13
13
  allowedRelationshipTypes: undefined,
14
14
  userContext: undefined,
15
+ isPreview: undefined,
15
16
  };
17
+ export const getInitialChatWindowState = ({ isPreview, } = {}) => ({
18
+ ...initialState,
19
+ isPreview,
20
+ });
16
21
  const chatWindowSlice = createSlice({
17
22
  name: chatWindowSliceName,
18
- initialState,
23
+ initialState: getInitialChatWindowState(),
19
24
  reducers: {
20
25
  setOpenAction: (state, { payload: { isOpen } }) => {
21
26
  state.isOpen = isOpen;
@@ -54,8 +59,11 @@ const chatWindowSlice = createSlice({
54
59
  clearUserContextAction: (state) => {
55
60
  state.userContext = undefined;
56
61
  },
62
+ setIsPreviewAction: (state, { payload: { isPreview } }) => {
63
+ state.isPreview = isPreview;
64
+ },
57
65
  copyToClipboardAction: (state, _action) => state,
58
66
  },
59
67
  });
60
68
  export const chatWindowSliceReducer = chatWindowSlice.reducer;
61
- export const { setOpenAction, setFullscreenAction, setHistoryAction, setColorPaletteAction, setSettingsAction, copyToClipboardAction, setKeyDriverAnalysisAction, setObjectTypesAction, setTagsAction, setCatalogItemsActions, setAllowedRelationshipTypesAction, setUserContextAction, clearUserContextAction, } = chatWindowSlice.actions;
69
+ export const { setOpenAction, setFullscreenAction, setHistoryAction, setColorPaletteAction, setSettingsAction, copyToClipboardAction, setKeyDriverAnalysisAction, setObjectTypesAction, setTagsAction, setCatalogItemsActions, setAllowedRelationshipTypesAction, setUserContextAction, clearUserContextAction, setIsPreviewAction, } = chatWindowSlice.actions;
@@ -307,3 +307,4 @@ export declare class EventDispatcher {
307
307
  setHandlers(handlers: ChatEventHandler[]): void;
308
308
  dispatch(event: ChatEvent): void;
309
309
  }
310
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/store/events.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,4 @@ export declare function setIsOpened(isOpened: boolean): void;
4
4
  export declare function saveMessages(workspaceId: string, messages: Message[]): void;
5
5
  export declare function loadMessages(workspaceId: string): Message[] | undefined;
6
6
  export declare function clearCachedMessages(workspaceId: string): void;
7
+ //# sourceMappingURL=localStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localStorage.d.ts","sourceRoot":"","sources":["../../src/store/localStorage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAK3C,wBAAgB,WAAW,wBAU1B;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,QAY5C;AAMD,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI,CAS3E;AAED,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,EAAE,GAAG,SAAS,CAavE;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAS7D"}
@@ -5,12 +5,78 @@ export declare const loadedSelector: (state: RootState) => boolean;
5
5
  export declare const isVerboseSelector: (state: RootState) => boolean;
6
6
  export declare const lastMessageSelector: (state: RootState) => Message | undefined;
7
7
  export declare const hasMessagesSelector: (state: RootState) => boolean;
8
- export declare const asyncProcessSelector: (state: RootState) => "loading" | "restoring" | "clearing" | "evaluating" | undefined;
8
+ export declare const asyncProcessSelector: (state: RootState) => "loading" | "restoring" | "clearing" | "evaluating" | "switchingAgent" | undefined;
9
9
  export declare const globalErrorSelector: (state: RootState) => Record<string, unknown> | null;
10
10
  export declare const threadIdSelector: (state: RootState) => string | undefined;
11
11
  export declare const conversationMessagesSelector: (state: RootState) => IChatConversationLocalItem[];
12
12
  export declare const conversationMessagesByIdSelector: (state: RootState, conversationId?: string) => IChatConversationLocalItem[];
13
13
  export declare const conversationSelector: (state: RootState) => IChatConversationLocal | undefined;
14
+ export declare const selectedAgentIdSelector: (state: RootState) => string | undefined;
15
+ export declare const agentsSelector: ((state: RootState) => import("../../model.js").GenAIAgent[] | undefined) & {
16
+ clearCache: () => void;
17
+ resultsCount: () => number;
18
+ resetResultsCount: () => void;
19
+ } & {
20
+ resultFunc: (resultFuncArgs_0: {
21
+ verbose: boolean;
22
+ loaded: boolean;
23
+ messages: Record<string, Message>;
24
+ messageOrder: string[];
25
+ messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" | "switchingAgent" | undefined;
26
+ conversations: IChatConversationLocal[] | undefined;
27
+ conversationsLoaded: boolean;
28
+ currentConversation: IChatConversationLocal | undefined;
29
+ selectedAgentId: string | undefined;
30
+ agents: import("../../model.js").GenAIAgent[] | undefined;
31
+ conversationsData: Record<string, import("../../types.js").StoredConversation>;
32
+ globalError?: Record<string, unknown> | undefined;
33
+ threadId?: string | undefined;
34
+ }) => import("../../model.js").GenAIAgent[] | undefined;
35
+ memoizedResultFunc: ((resultFuncArgs_0: {
36
+ verbose: boolean;
37
+ loaded: boolean;
38
+ messages: Record<string, Message>;
39
+ messageOrder: string[];
40
+ messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" | "switchingAgent" | undefined;
41
+ conversations: IChatConversationLocal[] | undefined;
42
+ conversationsLoaded: boolean;
43
+ currentConversation: IChatConversationLocal | undefined;
44
+ selectedAgentId: string | undefined;
45
+ agents: import("../../model.js").GenAIAgent[] | undefined;
46
+ conversationsData: Record<string, import("../../types.js").StoredConversation>;
47
+ globalError?: Record<string, unknown> | undefined;
48
+ threadId?: string | undefined;
49
+ }) => import("../../model.js").GenAIAgent[] | undefined) & {
50
+ clearCache: () => void;
51
+ resultsCount: () => number;
52
+ resetResultsCount: () => void;
53
+ };
54
+ lastResult: () => import("../../model.js").GenAIAgent[] | undefined;
55
+ dependencies: [(state: RootState) => {
56
+ verbose: boolean;
57
+ loaded: boolean;
58
+ messages: Record<string, Message>;
59
+ messageOrder: string[];
60
+ messageAsyncProcess?: "clearing" | "evaluating" | "loading" | "restoring" | "switchingAgent" | undefined;
61
+ conversations: IChatConversationLocal[] | undefined;
62
+ conversationsLoaded: boolean;
63
+ currentConversation: IChatConversationLocal | undefined;
64
+ selectedAgentId: string | undefined;
65
+ agents: import("../../model.js").GenAIAgent[] | undefined;
66
+ conversationsData: Record<string, import("../../types.js").StoredConversation>;
67
+ globalError?: Record<string, unknown> | undefined;
68
+ threadId?: string | undefined;
69
+ }];
70
+ recomputations: () => number;
71
+ resetRecomputations: () => void;
72
+ dependencyRecomputations: () => number;
73
+ resetDependencyRecomputations: () => void;
74
+ } & {
75
+ memoize: typeof import("reselect").weakMapMemoize;
76
+ argsMemoize: typeof import("reselect").weakMapMemoize;
77
+ };
78
+ export declare const agentsAvailableSelector: (state: RootState) => boolean | undefined;
14
79
  export declare const conversationByIdSelector: (state: RootState, conversationId: string) => IChatConversationLocal | undefined;
15
80
  export declare const conversationsSelector: (state: RootState) => IChatConversationLocal[] | undefined;
16
81
  export declare const conversationsLoadedSelector: (state: RootState) => boolean;
82
+ //# sourceMappingURL=messagesSelectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messagesSelectors.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSelectors.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,sBAAsB,EAAE,KAAK,0BAA0B,EAAE,KAAK,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC5G,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAM7C,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,EAG3D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGlD,CAAC;AAEF,eAAO,MAAM,iBAAiB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAGrD,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGjE,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OASvD,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAC/B,KAAK,EAAE,SAAS,KACf,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,SAS7E,CAAC;AAEF,eAAO,MAAM,mBAAmB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAGjF,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,SAG7D,CAAC;AAEF,eAAO,MAAM,4BAA4B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,0BAA0B,EAIrF,CAAC;AAEP,eAAO,MAAM,gCAAgC,EAAE,CAC3C,KAAK,EAAE,SAAS,EAChB,cAAc,CAAC,EAAE,MAAM,KACtB,0BAA0B,EAU9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,sBAAsB,GAAG,SAGjF,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,MAAM,GAAG,SAGpE,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAiE,CAAC;AAE7F,eAAO,MAAM,uBAAuB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAAO,GAAG,SAGrE,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,CACnC,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,MAAM,KACrB,sBAAsB,GAAG,SAI7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,sBAAsB,EAAE,GAAG,SACZ,CAAC;AAE1E,eAAO,MAAM,2BAA2B,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,OAG/D,CAAC"}
@@ -34,6 +34,9 @@ export const conversationMessagesByIdSelector = createSelector([messagesSliceSel
34
34
  return data.order.map((id) => data.items[id]);
35
35
  });
36
36
  export const conversationSelector = createSelector(messagesSliceSelector, (state) => state.currentConversation);
37
+ export const selectedAgentIdSelector = createSelector(messagesSliceSelector, (state) => state.selectedAgentId);
38
+ export const agentsSelector = createSelector(messagesSliceSelector, (state) => state.agents);
39
+ export const agentsAvailableSelector = createSelector(agentsSelector, (agents) => (agents ? agents.length > 0 : undefined));
37
40
  export const conversationByIdSelector = createSelector([messagesSliceSelector, (_state, conversationId) => conversationId], (state, conversationId) => state.conversations?.find((conversation) => conversation.localId === conversationId));
38
41
  export const conversationsSelector = createSelector(messagesSliceSelector, (state) => state.conversations);
39
42
  export const conversationsLoadedSelector = createSelector(messagesSliceSelector, (state) => state.conversationsLoaded);
@@ -1,7 +1,7 @@
1
1
  import { type Reducer } from "@reduxjs/toolkit";
2
2
  import { type IChatConversationItem } from "@gooddata/sdk-backend-spi";
3
3
  import { type GenAIChatInteractionUserFeedback } from "@gooddata/sdk-model";
4
- import { type AssistantMessage, type Contents, type IChatConversationErrorContent, type IChatConversationLocal, type IChatConversationLocalContent, type IChatConversationLocalItem, type Message, type UserMessage } from "../../model.js";
4
+ import { type AssistantMessage, type Contents, type GenAIAgent, type IChatConversationErrorContent, type IChatConversationLocal, type IChatConversationLocalContent, type IChatConversationLocalItem, type Message, type UserMessage } from "../../model.js";
5
5
  import { type StoredConversation } from "../../types.js";
6
6
  type MessagesSliceState = {
7
7
  /**
@@ -27,8 +27,9 @@ type MessagesSliceState = {
27
27
  * - restoring: cached messages have been restored while the backend fetch is still in-flight
28
28
  * - clearing: the thread is being cleared
29
29
  * - evaluating: the new user message is being evaluated by assistant
30
+ * - switchingAgent: the active agent switch is being persisted
30
31
  */
31
- messageAsyncProcess?: "loading" | "restoring" | "clearing" | "evaluating";
32
+ messageAsyncProcess?: "loading" | "restoring" | "clearing" | "evaluating" | "switchingAgent";
32
33
  /**
33
34
  * A list of conversations.
34
35
  */
@@ -42,6 +43,15 @@ type MessagesSliceState = {
42
43
  * - undefined: no conversation is selected
43
44
  */
44
45
  currentConversation: IChatConversationLocal | undefined;
46
+ /**
47
+ * The currently selected agent id for newly created conversations.
48
+ */
49
+ selectedAgentId: string | undefined;
50
+ /**
51
+ * The enabled agents available for new prompts.
52
+ * Undefined means the agent list has not been evaluated yet.
53
+ */
54
+ agents: GenAIAgent[] | undefined;
45
55
  /**
46
56
  * Conversation data
47
57
  */
@@ -158,7 +168,19 @@ export declare const loadThreadAction: import("@reduxjs/toolkit").ActionCreatorW
158
168
  }, "messages/saveVisualisationRenderStatusSuccessAction">, visualizationErrorAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
159
169
  errorType: "BAD_REQUEST" | "CANCELLED" | "CLUSTERING_NOT_RECEIVED" | "DATA_TOO_LARGE_TO_COMPUTE" | "DATA_TOO_LARGE_TO_DISPLAY" | "DYNAMIC_SCRIPT_LOAD_ERROR" | "FORECAST_NOT_RECEIVED" | "GEO_AREA_MISSING" | "GEO_LOCATION_MISSING" | "GEO_MAPBOX_TOKEN_MISSING" | "HEADERS_TOO_LARGE" | "NEGATIVE_VALUES" | "NOT_FOUND" | "NO_DATA" | "PROTECTED_REPORT" | "RESULT_CACHE_MISSING" | "TIMEOUT_ERROR" | "UNAUTHORIZED" | "UNKNOWN_ERROR" | "VISUALIZATION_CLASS_UNKNOWN";
160
170
  errorMessage?: string | undefined;
161
- }, "messages/visualizationErrorAction">, pinConversationAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
171
+ }, "messages/visualizationErrorAction">, setSelectedAgentAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
172
+ agentId: string | undefined;
173
+ previousAgentId?: string | undefined;
174
+ showChangeEvent?: boolean | undefined;
175
+ }, "messages/setSelectedAgentAction">, finishAgentSwitchAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
176
+ conversationLocalId: string;
177
+ }, "messages/finishAgentSwitchAction">, revertAgentSwitchAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
178
+ previousAgentId: string | undefined;
179
+ failedAgentId: string;
180
+ conversationLocalId: string;
181
+ }, "messages/revertAgentSwitchAction">, setAgentsAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
182
+ agents: GenAIAgent[] | undefined;
183
+ }, "messages/setAgentsAction">, pinConversationAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
162
184
  conversation: IChatConversationLocal;
163
185
  pinned: boolean;
164
186
  }, "messages/pinConversationAction">, pinConversationSuccessAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<{
@@ -207,3 +229,4 @@ clearThreadAction: import("@reduxjs/toolkit").ActionCreatorWithoutPayload<"messa
207
229
  */
208
230
  newMessageAction: import("@reduxjs/toolkit").ActionCreatorWithPayload<Message | IChatConversationLocalItem, "messages/newMessageAction">;
209
231
  export {};
232
+ //# sourceMappingURL=messagesSlice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messagesSlice.d.ts","sourceRoot":"","sources":["../../../src/store/messages/messagesSlice.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { createSlice } from "@reduxjs/toolkit";
3
- import { isAssistantMessage, isChatConversationLocalItem, isUserMessage, isVisualizationContents, makeErrorContent, makeErrorContents, } from "../../model.js";
3
+ import { selectDefaultAgentId } from "../../components/utils/agentSelection.js";
4
+ import { isAssistantMessage, isChatConversationLocalItem, isUserMessage, isVisualizationContents, makeAgentChangeItem, makeErrorContent, makeErrorContents, } from "../../model.js";
4
5
  import { convertMessageToChatConversation } from "../sideEffects/utils.js";
5
6
  import { createEmptyConversation, getConversationData, getConversationLocalId, isConversationWithLocalId, } from "../utils.js";
6
7
  export const LS_VERBOSE_KEY = "gd-gen-ai-verbose";
@@ -27,6 +28,8 @@ const initialState = {
27
28
  conversations: undefined,
28
29
  currentConversation: undefined,
29
30
  conversationsLoaded: false,
31
+ selectedAgentId: undefined,
32
+ agents: undefined,
30
33
  conversationsData: {},
31
34
  };
32
35
  const setNormalizedMessages = (state, messages) => {
@@ -212,6 +215,7 @@ const messagesSlice = createSlice({
212
215
  },
213
216
  loadConversationSuccessAction: (state, { payload: { currentConversation, conversationItems, threadId }, }) => {
214
217
  setNormalizedConversation(state, currentConversation, conversationItems);
218
+ state.selectedAgentId = currentConversation.agentId ?? state.selectedAgentId;
215
219
  state.threadId = threadId;
216
220
  if (state.currentConversation) {
217
221
  const data = getConversationData(state.conversationsData, state.currentConversation.localId);
@@ -457,6 +461,7 @@ const messagesSlice = createSlice({
457
461
  state.threadId = payload.conversation.id;
458
462
  existing.id = payload.conversation.id;
459
463
  existing.localId = payload.conversation.localId;
464
+ existing.agentId = payload.conversation.agentId;
460
465
  }
461
466
  else {
462
467
  state.conversations = [payload.conversation, ...(state.conversations ?? [])];
@@ -464,6 +469,81 @@ const messagesSlice = createSlice({
464
469
  state.threadId = payload.conversation.id;
465
470
  state.loaded = true;
466
471
  }
472
+ state.selectedAgentId = payload.conversation.agentId ?? state.selectedAgentId;
473
+ },
474
+ setSelectedAgentAction: (state, { payload, }) => {
475
+ const previousAgentId = state.currentConversation?.agentId;
476
+ state.selectedAgentId = payload.agentId;
477
+ // Silent defaults (no showChangeEvent) must not stamp a persisted conversation's agentId.
478
+ if (state.currentConversation && payload.showChangeEvent) {
479
+ state.currentConversation.agentId = payload.agentId;
480
+ state.conversations = state.conversations?.map((conversation) => conversation.localId === state.currentConversation?.localId
481
+ ? {
482
+ ...conversation,
483
+ agentId: payload.agentId,
484
+ }
485
+ : conversation);
486
+ const data = getConversationData(state.conversationsData, state.currentConversation.localId);
487
+ // Only persisted conversations (with an id) are switched on the backend by onAgentSwitch.
488
+ // A draft conversation (empty id) is created with the selected agent on the first message,
489
+ // so it must not show a "switched agent" divider or enter the switching busy state - that
490
+ // switch never happened on the server.
491
+ if (data &&
492
+ state.currentConversation.id &&
493
+ payload.agentId &&
494
+ previousAgentId !== payload.agentId) {
495
+ // Optimistically append the agentChange event for immediate in-session feedback -
496
+ // nothing reloads the conversation history right after a switch. The backend persists
497
+ // its own agentChange item, which is reconstructed by the history convertor when the
498
+ // conversation is reopened (in-memory items are empty on a fresh load, so this does not
499
+ // duplicate).
500
+ const item = makeAgentChangeItem({
501
+ agentId: payload.agentId,
502
+ oldAgentId: previousAgentId,
503
+ });
504
+ data.items[item.localId] = item;
505
+ data.order.push(item.localId);
506
+ data.asyncProcess = "switchingAgent";
507
+ }
508
+ }
509
+ },
510
+ finishAgentSwitchAction: (state, { payload }) => {
511
+ const data = state.conversationsData[payload.conversationLocalId];
512
+ if (data?.asyncProcess === "switchingAgent") {
513
+ delete data.asyncProcess;
514
+ }
515
+ },
516
+ revertAgentSwitchAction: (state, { payload, }) => {
517
+ // Only revert the dropdown when the user is still on the failed conversation.
518
+ if (state.currentConversation?.localId === payload.conversationLocalId) {
519
+ // The conversation itself goes back to its previous agent (possibly none - the
520
+ // server never switched), but the dropdown needs a concrete selection that is
521
+ // actually available, otherwise it would flip into the loading state until a
522
+ // default is re-resolved.
523
+ const isPreviousAgentAvailable = !!payload.previousAgentId &&
524
+ (state.agents ?? []).some((agent) => agent.id === payload.previousAgentId);
525
+ state.selectedAgentId = isPreviousAgentAvailable
526
+ ? payload.previousAgentId
527
+ : selectDefaultAgentId(state.agents ?? [], state.conversations);
528
+ state.currentConversation.agentId = payload.previousAgentId;
529
+ }
530
+ state.conversations = state.conversations?.map((conversation) => conversation.localId === payload.conversationLocalId
531
+ ? { ...conversation, agentId: payload.previousAgentId }
532
+ : conversation);
533
+ const data = state.conversationsData[payload.conversationLocalId];
534
+ if (data) {
535
+ const optimisticId = [...data.order].reverse().find((id) => {
536
+ const item = data.items[id];
537
+ return item.role === "system" && item.agentId === payload.failedAgentId && item.id === "";
538
+ });
539
+ if (optimisticId) {
540
+ data.order.splice(data.order.indexOf(optimisticId), 1);
541
+ delete data.items[optimisticId];
542
+ }
543
+ }
544
+ },
545
+ setAgentsAction: (state, { payload }) => {
546
+ state.agents = payload.agents;
467
547
  },
468
548
  setGlobalErrorAction: (state, { payload: { error } }) => {
469
549
  state.globalError = errorToObject(error);
@@ -724,7 +804,7 @@ const messagesSlice = createSlice({
724
804
  });
725
805
  const errorToObject = (error) => Object.fromEntries(Object.getOwnPropertyNames(error).map((key) => [key, error[key]]));
726
806
  export const messagesSliceReducer = messagesSlice.reducer;
727
- export const { loadThreadAction, loadThreadErrorAction, loadThreadSuccessAction, loadConversationsSuccessAction, loadConversationSuccessAction, restoreCachedMessagesAction, clearThreadErrorAction, clearThreadSuccessAction, clearConversationSuccessAction, evaluateConversationTitleAction, evaluateMessageAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, evaluateMessageCompleteAction, setMessagesAction, setVerboseAction, setGlobalErrorAction, cancelAsyncAction, setUserFeedback, setUserFeedbackError, clearUserFeedbackError, saveVisualizationAction, savedVisualizationAction, saveVisualizationErrorAction, saveVisualizationSuccessAction, saveVisualisationRenderStatusAction, saveVisualisationRenderStatusSuccessAction, visualizationErrorAction, pinConversationAction, pinConversationSuccessAction, pinConversationFailureAction, renameConversationAction, renameConversationSuccessAction, renameConversationFailureAction, deleteConversationAction, deleteConversationStartAction, deleteConversationSuccessAction, deleteConversationFailureAction,
807
+ export const { loadThreadAction, loadThreadErrorAction, loadThreadSuccessAction, loadConversationsSuccessAction, loadConversationSuccessAction, restoreCachedMessagesAction, clearThreadErrorAction, clearThreadSuccessAction, clearConversationSuccessAction, evaluateConversationTitleAction, evaluateMessageAction, evaluateMessageErrorAction, evaluateMessageStreamingAction, evaluateMessageUpdateAction, evaluateMessageCompleteAction, setMessagesAction, setVerboseAction, setGlobalErrorAction, cancelAsyncAction, setUserFeedback, setUserFeedbackError, clearUserFeedbackError, saveVisualizationAction, savedVisualizationAction, saveVisualizationErrorAction, saveVisualizationSuccessAction, saveVisualisationRenderStatusAction, saveVisualisationRenderStatusSuccessAction, visualizationErrorAction, setSelectedAgentAction, finishAgentSwitchAction, revertAgentSwitchAction, setAgentsAction, pinConversationAction, pinConversationSuccessAction, pinConversationFailureAction, renameConversationAction, renameConversationSuccessAction, renameConversationFailureAction, deleteConversationAction, deleteConversationStartAction, deleteConversationSuccessAction, deleteConversationFailureAction,
728
808
  /**
729
809
  * @public
730
810
  */
@@ -25,3 +25,4 @@ export declare class OptionsDispatcher {
25
25
  setCatalogItems(catalogItems: CatalogItem[] | undefined): void;
26
26
  getCatalogItems(): CatalogItem[] | undefined;
27
27
  }
28
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/store/options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEjG;;;GAGG;AACH,qBAAa,iBAAiB;IAC1B,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,QAAQ,CAAiD;IACjE,OAAO,CAAC,WAAW,CAA4C;IAC/D,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,WAAW,CAAmC;IACtD,OAAO,CAAC,YAAY,CAAwC;IAErD,eAAe,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,GAAG,IAAI,CAEpE;IAEM,eAAe,IAAI,aAAa,GAAG,SAAS,CAElD;IAEM,WAAW,CAAC,QAAQ,EAAE,sBAAsB,GAAG,SAAS,GAAG,IAAI,CAErE;IAEM,WAAW,IAAI,sBAAsB,GAAG,SAAS,CAEvD;IAEM,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,GAAG,SAAS,GAAG,IAAI,CAEtE;IAEM,cAAc,IAAI,eAAe,EAAE,GAAG,SAAS,CAErD;IAEM,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,IAAI,CAGzF;IAEM,OAAO,IAAI;QAAE,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;QAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAS,CAAA;KAAE,CAKzF;IAEM,eAAe,CAAC,YAAY,EAAE,WAAW,EAAE,GAAG,SAAS,GAAG,IAAI,CAEpE;IAEM,eAAe,IAAI,WAAW,EAAE,GAAG,SAAS,CAElD;CACJ"}
@@ -1,2 +1,3 @@
1
1
  import { type Middleware } from "@reduxjs/toolkit";
2
2
  export declare const queueMiddleware: Middleware;
3
+ //# sourceMappingURL=queue.newMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.newMessage.d.ts","sourceRoot":"","sources":["../../../src/store/queues/queue.newMessage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AAMvE,eAAO,MAAM,eAAe,EAAE,UAgD7B,CAAC"}
@@ -16,3 +16,4 @@ export type InteractionsToMessagesOptions = {
16
16
  */
17
17
  export declare const interactionsToMessages: (interactions: IGenAIChatInteraction[], options?: InteractionsToMessagesOptions) => Message[];
18
18
  export declare const processContents: (item: IGenAIChatEvaluation | IGenAIChatInteraction, arrived?: boolean | undefined, options?: InteractionsToMessagesOptions) => Contents[];
19
+ //# sourceMappingURL=interactionsToMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interactionsToMessages.d.ts","sourceRoot":"","sources":["../../../../src/store/sideEffects/converters/interactionsToMessages.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAEjE,OAAO,EACH,KAAK,QAAQ,EACb,KAAK,OAAO,EAWf,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG;IACxC;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,+FA2BlC,CAAC;AAEF,eAAO,MAAM,eAAe,4IA+E3B,CAAC"}
@@ -2,3 +2,4 @@ import { type IChatConversationContent, type IChatConversationMultipartPart } fr
2
2
  import type { IChatConversationLocalContent, IChatConversationMultipartLocalPart } from "../../../model.js";
3
3
  export declare function convertToLocalContent(content: IChatConversationContent): IChatConversationLocalContent;
4
4
  export declare function convertToLocalMultipartContent(content: IChatConversationMultipartPart[]): IChatConversationMultipartLocalPart[];
5
+ //# sourceMappingURL=toLocalContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toLocalContent.d.ts","sourceRoot":"","sources":["../../../../src/store/sideEffects/converters/toLocalContent.ts"],"names":[],"mappings":"AAEA,OAAO,EACH,KAAK,wBAAwB,EAC7B,KAAK,8BAA8B,EACtC,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,6BAA6B,EAAE,mCAAmC,EAAE,MAAM,mBAAmB,CAAC;AAE5G,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,6BAA6B,CAStG;AAED,wBAAgB,8BAA8B,CAC1C,OAAO,EAAE,8BAA8B,EAAE,GAC1C,mCAAmC,EAAE,CASvC"}
@@ -3,3 +3,4 @@
3
3
  * @internal
4
4
  */
5
5
  export declare function rootSaga(): Generator<import("redux-saga/effects").CallEffect<void> | import("redux-saga/effects").ForkEffect<void>, void, unknown>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/index.ts"],"names":[],"mappings":"AAyCA;;;GAGG;AACH,wBAAiB,QAAQ,4HAyBxB"}
@@ -1,9 +1,13 @@
1
1
  // (C) 2024-2026 GoodData Corporation
2
2
  import { call, fork, takeEvery, takeLatest } from "redux-saga/effects";
3
- import { clearThreadAction, deleteConversationAction, evaluateMessageUpdateAction, loadThreadAction, newMessageAction, pinConversationAction, renameConversationAction, saveVisualisationRenderStatusAction, saveVisualizationAction, saveVisualizationSuccessAction, setUserFeedback, setVerboseAction, } from "../messages/messagesSlice.js";
3
+ import { setOpenAction } from "../chatWindow/chatWindowSlice.js";
4
+ import { clearThreadAction, deleteConversationAction, evaluateMessageUpdateAction, loadThreadAction, newMessageAction, pinConversationAction, renameConversationAction, saveVisualisationRenderStatusAction, saveVisualizationAction, saveVisualizationSuccessAction, setSelectedAgentAction, setUserFeedback, setVerboseAction, } from "../messages/messagesSlice.js";
5
+ import { loadAgents } from "./loadAgents.js";
4
6
  import { loadCatalogItems } from "./loadCatalogItems.js";
5
7
  import { loadColorPalette } from "./loadColorPalette.js";
6
8
  import { loadSettings } from "./loadSettings.js";
9
+ import { onAgentSwitch } from "./onAgentSwitch.js";
10
+ import { onChatOpenSync } from "./onChatOpenSync.js";
7
11
  import { onConversationDelete } from "./onConversationDelete.js";
8
12
  import { onConversationPin } from "./onConversationPin.js";
9
13
  import { onConversationRename } from "./onConversationRename.js";
@@ -24,6 +28,9 @@ import { onVisualizationSuccessSave } from "./onVisualizationSuccessSave.js";
24
28
  export function* rootSaga() {
25
29
  yield takeLatest(loadThreadAction.type, onThreadLoad);
26
30
  yield takeLatest(clearThreadAction.type, onThreadClear);
31
+ // Re-sync the active conversation with the backend when the chat is (re)opened so that
32
+ // a conversation started/switched on another host micro-frontend is reflected without reload.
33
+ yield takeLatest(setOpenAction.type, onChatOpenSync);
27
34
  yield takeEvery(newMessageAction.type, onUserMessage);
28
35
  //messages API
29
36
  yield takeEvery(setUserFeedback.type, onUserFeedback);
@@ -34,11 +41,13 @@ export function* rootSaga() {
34
41
  yield takeEvery(pinConversationAction.type, onConversationPin);
35
42
  yield takeEvery(renameConversationAction.type, onConversationRename);
36
43
  yield takeEvery(deleteConversationAction.type, onConversationDelete);
44
+ yield takeEvery(setSelectedAgentAction.type, onAgentSwitch);
37
45
  yield takeEvery(evaluateMessageUpdateAction.type, onUserMessageUpdate);
38
46
  //others
39
47
  yield takeEvery(setVerboseAction.type, onVerboseStore);
40
48
  yield fork(onEvent);
41
49
  yield call(loadColorPalette);
42
50
  yield call(loadSettings);
51
+ yield call(loadAgents);
43
52
  yield call(loadCatalogItems);
44
53
  }
@@ -0,0 +1,13 @@
1
+ import { type IAgent } from "@gooddata/sdk-model";
2
+ import { type GenAIAgent } from "../../model.js";
3
+ /**
4
+ * Load enabled agents from the backend.
5
+ * @internal
6
+ */
7
+ export declare function loadAgents(): Generator<import("redux-saga/effects").CallEffect<IAgent[]> | import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").PutEffect<{
8
+ payload: {
9
+ agents: GenAIAgent[] | undefined;
10
+ };
11
+ type: "messages/setAgentsAction";
12
+ }> | import("redux-saga/effects").SelectEffect, void, never>;
13
+ //# sourceMappingURL=loadAgents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadAgents.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/loadAgents.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,MAAM,EAAmB,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAIjD;;;GAGG;AACH,wBAAiB,UAAU;;;;;6DAgC1B"}
@@ -0,0 +1,46 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { call, getContext, put, select } from "redux-saga/effects";
3
+ import { isIdentifierRef } from "@gooddata/sdk-model";
4
+ import { agentSwitchingActiveSelector } from "../chatWindow/chatWindowSelectors.js";
5
+ import { setAgentsAction } from "../messages/messagesSlice.js";
6
+ /**
7
+ * Load enabled agents from the backend.
8
+ * @internal
9
+ */
10
+ export function* loadAgents() {
11
+ const agentSwitchingActive = yield select(agentSwitchingActiveSelector);
12
+ if (!agentSwitchingActive) {
13
+ return;
14
+ }
15
+ try {
16
+ const backend = yield getContext("backend");
17
+ const workspace = yield getContext("workspace");
18
+ const query = backend
19
+ .workspace(workspace)
20
+ .agents()
21
+ .getAgentsQuery()
22
+ .withFilter({ isPreview: false })
23
+ .withSorting(["name,asc"]);
24
+ const agents = yield call([query, "queryAll"]);
25
+ yield put(setAgentsAction({
26
+ agents: agents.map(agentToOption).filter((agent) => !!agent.id),
27
+ }));
28
+ }
29
+ catch (e) {
30
+ console.error("Failed to load agents", e);
31
+ yield put(setAgentsAction({
32
+ // Treat load failure as no usable agents so sending is blocked instead of loading forever.
33
+ agents: [],
34
+ }));
35
+ }
36
+ }
37
+ function agentToOption(agent) {
38
+ const id = isIdentifierRef(agent.ref) ? agent.ref.identifier : "";
39
+ return {
40
+ id,
41
+ title: agent.name || id,
42
+ description: agent.description,
43
+ modifiedAt: agent.modifiedAt,
44
+ lastUsedAt: agent.lastUsedAt,
45
+ };
46
+ }
@@ -8,3 +8,4 @@ export declare function loadCatalogItems(): Generator<import("redux-saga/effects
8
8
  payload: import("@gooddata/sdk-model").CatalogItem[] | undefined;
9
9
  type: "chatWindow/setCatalogItemsActions";
10
10
  }>, void, OptionsDispatcher & IAnalyticalBackend & string & import("@gooddata/sdk-backend-spi").IWorkspaceCatalog>;
11
+ //# sourceMappingURL=loadCatalogItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadCatalogItems.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/loadCatalogItems.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;GAGG;AACH,wBAAiB,gBAAgB;;;mHA6BhC"}
@@ -10,3 +10,4 @@ export declare function loadColorPalette(): Generator<import("redux-saga/effects
10
10
  };
11
11
  type: "chatWindow/setColorPaletteAction";
12
12
  }>, void, OptionsDispatcher & IAnalyticalBackend & string & import("@gooddata/sdk-model").IColorPalette>;
13
+ //# sourceMappingURL=loadColorPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadColorPalette.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/loadColorPalette.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;GAGG;AACH,wBAAiB,gBAAgB;;;;;yGAwChC"}
@@ -10,3 +10,4 @@ export declare function loadSettings(): Generator<import("redux-saga/effects").C
10
10
  };
11
11
  type: "chatWindow/setSettingsAction";
12
12
  }>, void, OptionsDispatcher & IAnalyticalBackend & string & import("@gooddata/sdk-backend-spi").IUserWorkspaceSettings>;
13
+ //# sourceMappingURL=loadSettings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadSettings.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/loadSettings.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD;;;GAGG;AACH,wBAAiB,YAAY;;;;;wHAwC5B"}
@@ -0,0 +1,22 @@
1
+ import { type IChatConversation } from "@gooddata/sdk-backend-spi";
2
+ import { type IChatConversationLocal } from "../../model.js";
3
+ import { type setSelectedAgentAction } from "../messages/messagesSlice.js";
4
+ export declare function onAgentSwitch({ payload }: ReturnType<typeof setSelectedAgentAction>): Generator<import("redux-saga/effects").CallEffect<IChatConversation> | import("redux-saga/effects").GetContextEffect | import("redux-saga/effects").PutEffect<{
5
+ payload: {
6
+ conversation: IChatConversationLocal;
7
+ };
8
+ type: "messages/setCurrentConversationAction";
9
+ }> | import("redux-saga/effects").PutEffect<{
10
+ payload: {
11
+ conversationLocalId: string;
12
+ };
13
+ type: "messages/finishAgentSwitchAction";
14
+ }> | import("redux-saga/effects").PutEffect<{
15
+ payload: {
16
+ previousAgentId: string | undefined;
17
+ failedAgentId: string;
18
+ conversationLocalId: string;
19
+ };
20
+ type: "messages/revertAgentSwitchAction";
21
+ }> | import("redux-saga/effects").SelectEffect, void, never>;
22
+ //# sourceMappingURL=onAgentSwitch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onAgentSwitch.d.ts","sourceRoot":"","sources":["../../../src/store/sideEffects/onAgentSwitch.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAG7D,OAAO,EAIH,KAAK,sBAAsB,EAC9B,MAAM,8BAA8B,CAAC;AAEtC,wBAAiB,aAAa,CAAC,EAAE,OAAO,EAAE,EAAE,UAAU,CAAC,OAAO,sBAAsB,CAAC;;;;;;;;;;;;;;;;;6DA+DpF"}
@@ -0,0 +1,55 @@
1
+ // (C) 2026 GoodData Corporation
2
+ import { call, getContext, put, select } from "redux-saga/effects";
3
+ import { agentSwitchingActiveSelector } from "../chatWindow/chatWindowSelectors.js";
4
+ import { conversationSelector } from "../messages/messagesSelectors.js";
5
+ import { finishAgentSwitchAction, revertAgentSwitchAction, setCurrentConversationAction, } from "../messages/messagesSlice.js";
6
+ export function* onAgentSwitch({ payload }) {
7
+ const agentSwitchingActive = yield select(agentSwitchingActiveSelector);
8
+ if (!agentSwitchingActive) {
9
+ return;
10
+ }
11
+ if (!payload.showChangeEvent || !payload.agentId) {
12
+ return;
13
+ }
14
+ const conversation = yield select(conversationSelector);
15
+ if (!conversation?.id) {
16
+ return;
17
+ }
18
+ try {
19
+ const backend = yield getContext("backend");
20
+ const workspace = yield getContext("workspace");
21
+ const isPreview = yield getContext("isPreview");
22
+ const chatConversations = backend.workspace(workspace).genAI().getChatConversations({ isPreview });
23
+ const switchAgentCall = chatConversations.switchAgent.bind(chatConversations);
24
+ const updatedConversation = yield call(switchAgentCall, conversation.id, payload.agentId);
25
+ const currentConversation = yield select(conversationSelector);
26
+ if (currentConversation?.localId !== conversation.localId) {
27
+ return;
28
+ }
29
+ if (currentConversation.agentId !== payload.agentId) {
30
+ // A newer explicit switch has already taken over — discard this stale response.
31
+ return;
32
+ }
33
+ yield put(setCurrentConversationAction({
34
+ conversation: {
35
+ ...updatedConversation,
36
+ localId: conversation.localId,
37
+ },
38
+ }));
39
+ }
40
+ catch (e) {
41
+ console.error("Failed to switch agent for conversation", e);
42
+ const currentConversation = yield select(conversationSelector);
43
+ if (currentConversation?.localId === conversation.localId &&
44
+ currentConversation.agentId === payload.agentId) {
45
+ yield put(revertAgentSwitchAction({
46
+ previousAgentId: payload.previousAgentId,
47
+ failedAgentId: payload.agentId,
48
+ conversationLocalId: conversation.localId,
49
+ }));
50
+ }
51
+ }
52
+ finally {
53
+ yield put(finishAgentSwitchAction({ conversationLocalId: conversation.localId }));
54
+ }
55
+ }