@stack-spot/ai-chat-widget 1.0.0-dev.1768326769700 → 1.0.0-dev.1768423745486

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 (585) hide show
  1. package/package.dev.json +4 -1
  2. package/package.json +4 -3
  3. package/package.stg.json +4 -1
  4. package/src/app-metadata.json +3 -3
  5. package/src/chat-interceptors/send-message.ts +6 -2
  6. package/src/components/Selector/SelectVersion.tsx +55 -0
  7. package/src/components/Selector/index.tsx +11 -2
  8. package/src/components/Selector/styled.ts +47 -0
  9. package/src/hooks/enabled-feature-flags.ts +31 -0
  10. package/src/state/types.ts +1 -0
  11. package/src/utils/tools.ts +4 -4
  12. package/src/views/Agents/AgentDescription.tsx +48 -14
  13. package/src/views/Agents/AgentsTab.tsx +31 -13
  14. package/src/views/Agents/dictionary.ts +2 -1
  15. package/src/views/Chat/ChatMessage.tsx +8 -6
  16. package/src/views/ChatHistory/utils.ts +18 -10
  17. package/src/views/Home/CustomAgent.tsx +4 -4
  18. package/src/views/MessageInput/AgentSelector.tsx +15 -5
  19. package/src/views/MessageInput/ModelSwitcher/index.tsx +3 -2
  20. package/src/views/MessageInput/ModelSwitcher/utils.tsx +9 -8
  21. package/src/views/Resources.tsx +10 -6
  22. package/src/views/Tools.tsx +5 -4
  23. package/dist/AbortedError.d.ts +0 -5
  24. package/dist/AbortedError.d.ts.map +0 -1
  25. package/dist/AbortedError.js +0 -7
  26. package/dist/AbortedError.js.map +0 -1
  27. package/dist/StackspotAIWidget.d.ts +0 -54
  28. package/dist/StackspotAIWidget.d.ts.map +0 -1
  29. package/dist/StackspotAIWidget.js +0 -43
  30. package/dist/StackspotAIWidget.js.map +0 -1
  31. package/dist/app-metadata.json +0 -175
  32. package/dist/assets/placeholder.png +0 -0
  33. package/dist/chat-interceptors/CustomInputs.d.ts +0 -22
  34. package/dist/chat-interceptors/CustomInputs.d.ts.map +0 -1
  35. package/dist/chat-interceptors/CustomInputs.js +0 -71
  36. package/dist/chat-interceptors/CustomInputs.js.map +0 -1
  37. package/dist/chat-interceptors/quick-command-questions.d.ts +0 -14
  38. package/dist/chat-interceptors/quick-command-questions.d.ts.map +0 -1
  39. package/dist/chat-interceptors/quick-command-questions.js +0 -28
  40. package/dist/chat-interceptors/quick-command-questions.js.map +0 -1
  41. package/dist/chat-interceptors/quick-commands.d.ts +0 -17
  42. package/dist/chat-interceptors/quick-commands.d.ts.map +0 -1
  43. package/dist/chat-interceptors/quick-commands.js +0 -445
  44. package/dist/chat-interceptors/quick-commands.js.map +0 -1
  45. package/dist/chat-interceptors/send-message.d.ts +0 -29
  46. package/dist/chat-interceptors/send-message.d.ts.map +0 -1
  47. package/dist/chat-interceptors/send-message.js +0 -248
  48. package/dist/chat-interceptors/send-message.js.map +0 -1
  49. package/dist/components/AdaptiveTextArea.d.ts +0 -22
  50. package/dist/components/AdaptiveTextArea.d.ts.map +0 -1
  51. package/dist/components/AdaptiveTextArea.js +0 -40
  52. package/dist/components/AdaptiveTextArea.js.map +0 -1
  53. package/dist/components/AgentCard/AgentCardCreate.d.ts +0 -4
  54. package/dist/components/AgentCard/AgentCardCreate.d.ts.map +0 -1
  55. package/dist/components/AgentCard/AgentCardCreate.js +0 -33
  56. package/dist/components/AgentCard/AgentCardCreate.js.map +0 -1
  57. package/dist/components/AgentCard/dictionary.d.ts +0 -23
  58. package/dist/components/AgentCard/dictionary.d.ts.map +0 -1
  59. package/dist/components/AgentCard/dictionary.js +0 -23
  60. package/dist/components/AgentCard/dictionary.js.map +0 -1
  61. package/dist/components/AgentCard/index.d.ts +0 -5
  62. package/dist/components/AgentCard/index.d.ts.map +0 -1
  63. package/dist/components/AgentCard/index.js +0 -55
  64. package/dist/components/AgentCard/index.js.map +0 -1
  65. package/dist/components/AnimatedOpacity.d.ts +0 -8
  66. package/dist/components/AnimatedOpacity.d.ts.map +0 -1
  67. package/dist/components/AnimatedOpacity.js +0 -46
  68. package/dist/components/AnimatedOpacity.js.map +0 -1
  69. package/dist/components/AutoFocus.d.ts +0 -23
  70. package/dist/components/AutoFocus.d.ts.map +0 -1
  71. package/dist/components/AutoFocus.js +0 -23
  72. package/dist/components/AutoFocus.js.map +0 -1
  73. package/dist/components/ButtonFavorite.d.ts +0 -40
  74. package/dist/components/ButtonFavorite.d.ts.map +0 -1
  75. package/dist/components/ButtonFavorite.js +0 -25
  76. package/dist/components/ButtonFavorite.js.map +0 -1
  77. package/dist/components/Code.d.ts +0 -20
  78. package/dist/components/Code.d.ts.map +0 -1
  79. package/dist/components/Code.js +0 -146
  80. package/dist/components/Code.js.map +0 -1
  81. package/dist/components/ComponentNavigator.d.ts +0 -38
  82. package/dist/components/ComponentNavigator.d.ts.map +0 -1
  83. package/dist/components/ComponentNavigator.js +0 -31
  84. package/dist/components/ComponentNavigator.js.map +0 -1
  85. package/dist/components/Fading.d.ts +0 -32
  86. package/dist/components/Fading.d.ts.map +0 -1
  87. package/dist/components/Fading.js +0 -33
  88. package/dist/components/Fading.js.map +0 -1
  89. package/dist/components/FadingOverflow.d.ts +0 -37
  90. package/dist/components/FadingOverflow.d.ts.map +0 -1
  91. package/dist/components/FadingOverflow.js +0 -224
  92. package/dist/components/FadingOverflow.js.map +0 -1
  93. package/dist/components/FileDescription.d.ts +0 -10
  94. package/dist/components/FileDescription.d.ts.map +0 -1
  95. package/dist/components/FileDescription.js +0 -84
  96. package/dist/components/FileDescription.js.map +0 -1
  97. package/dist/components/HistoryList.d.ts +0 -25
  98. package/dist/components/HistoryList.d.ts.map +0 -1
  99. package/dist/components/HistoryList.js +0 -76
  100. package/dist/components/HistoryList.js.map +0 -1
  101. package/dist/components/ListResource.d.ts +0 -29
  102. package/dist/components/ListResource.d.ts.map +0 -1
  103. package/dist/components/ListResource.js +0 -17
  104. package/dist/components/ListResource.js.map +0 -1
  105. package/dist/components/Markdown.d.ts +0 -9
  106. package/dist/components/Markdown.d.ts.map +0 -1
  107. package/dist/components/Markdown.js +0 -17
  108. package/dist/components/Markdown.js.map +0 -1
  109. package/dist/components/Modal.d.ts +0 -9
  110. package/dist/components/Modal.d.ts.map +0 -1
  111. package/dist/components/Modal.js +0 -56
  112. package/dist/components/Modal.js.map +0 -1
  113. package/dist/components/QuickStartButton.d.ts +0 -6
  114. package/dist/components/QuickStartButton.d.ts.map +0 -1
  115. package/dist/components/QuickStartButton.js +0 -8
  116. package/dist/components/QuickStartButton.js.map +0 -1
  117. package/dist/components/RightPanelContentList.d.ts +0 -10
  118. package/dist/components/RightPanelContentList.d.ts.map +0 -1
  119. package/dist/components/RightPanelContentList.js +0 -7
  120. package/dist/components/RightPanelContentList.js.map +0 -1
  121. package/dist/components/RightPanelForm.d.ts +0 -8
  122. package/dist/components/RightPanelForm.d.ts.map +0 -1
  123. package/dist/components/RightPanelForm.js +0 -85
  124. package/dist/components/RightPanelForm.js.map +0 -1
  125. package/dist/components/RightPanelTabs.d.ts +0 -10
  126. package/dist/components/RightPanelTabs.d.ts.map +0 -1
  127. package/dist/components/RightPanelTabs.js +0 -12
  128. package/dist/components/RightPanelTabs.js.map +0 -1
  129. package/dist/components/Selector/index.d.ts +0 -54
  130. package/dist/components/Selector/index.d.ts.map +0 -1
  131. package/dist/components/Selector/index.js +0 -143
  132. package/dist/components/Selector/index.js.map +0 -1
  133. package/dist/components/Selector/styled.d.ts +0 -4
  134. package/dist/components/Selector/styled.d.ts.map +0 -1
  135. package/dist/components/Selector/styled.js +0 -157
  136. package/dist/components/Selector/styled.js.map +0 -1
  137. package/dist/components/StackedBadge.d.ts +0 -14
  138. package/dist/components/StackedBadge.d.ts.map +0 -1
  139. package/dist/components/StackedBadge.js +0 -56
  140. package/dist/components/StackedBadge.js.map +0 -1
  141. package/dist/components/TabManager.d.ts +0 -40
  142. package/dist/components/TabManager.d.ts.map +0 -1
  143. package/dist/components/TabManager.js +0 -146
  144. package/dist/components/TabManager.js.map +0 -1
  145. package/dist/components/ToolBadge.d.ts +0 -9
  146. package/dist/components/ToolBadge.d.ts.map +0 -1
  147. package/dist/components/ToolBadge.js +0 -34
  148. package/dist/components/ToolBadge.js.map +0 -1
  149. package/dist/components/WorkspaceTabNavigator.d.ts +0 -17
  150. package/dist/components/WorkspaceTabNavigator.d.ts.map +0 -1
  151. package/dist/components/WorkspaceTabNavigator.js +0 -93
  152. package/dist/components/WorkspaceTabNavigator.js.map +0 -1
  153. package/dist/components/form/DescribedCheckboxGroup.d.ts +0 -31
  154. package/dist/components/form/DescribedCheckboxGroup.d.ts.map +0 -1
  155. package/dist/components/form/DescribedCheckboxGroup.js +0 -77
  156. package/dist/components/form/DescribedCheckboxGroup.js.map +0 -1
  157. package/dist/components/form/DescribedRadioGroup.d.ts +0 -32
  158. package/dist/components/form/DescribedRadioGroup.d.ts.map +0 -1
  159. package/dist/components/form/DescribedRadioGroup.js +0 -67
  160. package/dist/components/form/DescribedRadioGroup.js.map +0 -1
  161. package/dist/components/form/dictionary.d.ts +0 -19
  162. package/dist/components/form/dictionary.d.ts.map +0 -1
  163. package/dist/components/form/dictionary.js +0 -19
  164. package/dist/components/form/dictionary.js.map +0 -1
  165. package/dist/components/form/styled.d.ts +0 -2
  166. package/dist/components/form/styled.d.ts.map +0 -1
  167. package/dist/components/form/styled.js +0 -41
  168. package/dist/components/form/styled.js.map +0 -1
  169. package/dist/components/form/types.d.ts +0 -61
  170. package/dist/components/form/types.d.ts.map +0 -1
  171. package/dist/components/form/types.js +0 -2
  172. package/dist/components/form/types.js.map +0 -1
  173. package/dist/context/AIWidgetProvider.d.ts +0 -23
  174. package/dist/context/AIWidgetProvider.d.ts.map +0 -1
  175. package/dist/context/AIWidgetProvider.js +0 -23
  176. package/dist/context/AIWidgetProvider.js.map +0 -1
  177. package/dist/context/hooks.d.ts +0 -75
  178. package/dist/context/hooks.d.ts.map +0 -1
  179. package/dist/context/hooks.js +0 -148
  180. package/dist/context/hooks.js.map +0 -1
  181. package/dist/features.d.ts +0 -75
  182. package/dist/features.d.ts.map +0 -1
  183. package/dist/features.js +0 -24
  184. package/dist/features.js.map +0 -1
  185. package/dist/hooks/midnight-update-view.d.ts +0 -5
  186. package/dist/hooks/midnight-update-view.d.ts.map +0 -1
  187. package/dist/hooks/midnight-update-view.js +0 -30
  188. package/dist/hooks/midnight-update-view.js.map +0 -1
  189. package/dist/index.d.ts +0 -21
  190. package/dist/index.d.ts.map +0 -1
  191. package/dist/index.js +0 -16
  192. package/dist/index.js.map +0 -1
  193. package/dist/layout.css +0 -192
  194. package/dist/regex.d.ts +0 -3
  195. package/dist/regex.d.ts.map +0 -1
  196. package/dist/regex.js +0 -3
  197. package/dist/regex.js.map +0 -1
  198. package/dist/right-panel/DefaultPanel.d.ts +0 -12
  199. package/dist/right-panel/DefaultPanel.d.ts.map +0 -1
  200. package/dist/right-panel/DefaultPanel.js +0 -48
  201. package/dist/right-panel/DefaultPanel.js.map +0 -1
  202. package/dist/right-panel/RightPanel.d.ts +0 -5
  203. package/dist/right-panel/RightPanel.d.ts.map +0 -1
  204. package/dist/right-panel/RightPanel.js +0 -9
  205. package/dist/right-panel/RightPanel.js.map +0 -1
  206. package/dist/right-panel/RightPanelProvider.d.ts +0 -28
  207. package/dist/right-panel/RightPanelProvider.d.ts.map +0 -1
  208. package/dist/right-panel/RightPanelProvider.js +0 -10
  209. package/dist/right-panel/RightPanelProvider.js.map +0 -1
  210. package/dist/right-panel/constants.d.ts +0 -2
  211. package/dist/right-panel/constants.d.ts.map +0 -1
  212. package/dist/right-panel/constants.js +0 -2
  213. package/dist/right-panel/constants.js.map +0 -1
  214. package/dist/right-panel/hooks.d.ts +0 -19
  215. package/dist/right-panel/hooks.d.ts.map +0 -1
  216. package/dist/right-panel/hooks.js +0 -46
  217. package/dist/right-panel/hooks.js.map +0 -1
  218. package/dist/state/ChatEntry.d.ts +0 -230
  219. package/dist/state/ChatEntry.d.ts.map +0 -1
  220. package/dist/state/ChatEntry.js +0 -63
  221. package/dist/state/ChatEntry.js.map +0 -1
  222. package/dist/state/ChatState.d.ts +0 -171
  223. package/dist/state/ChatState.d.ts.map +0 -1
  224. package/dist/state/ChatState.js +0 -129
  225. package/dist/state/ChatState.js.map +0 -1
  226. package/dist/state/ChatTabsController.d.ts +0 -66
  227. package/dist/state/ChatTabsController.d.ts.map +0 -1
  228. package/dist/state/ChatTabsController.js +0 -116
  229. package/dist/state/ChatTabsController.js.map +0 -1
  230. package/dist/state/ObservableState.d.ts +0 -24
  231. package/dist/state/ObservableState.d.ts.map +0 -1
  232. package/dist/state/ObservableState.js +0 -39
  233. package/dist/state/ObservableState.js.map +0 -1
  234. package/dist/state/WidgetState.d.ts +0 -86
  235. package/dist/state/WidgetState.d.ts.map +0 -1
  236. package/dist/state/WidgetState.js +0 -57
  237. package/dist/state/WidgetState.js.map +0 -1
  238. package/dist/state/constants.d.ts +0 -5
  239. package/dist/state/constants.d.ts.map +0 -1
  240. package/dist/state/constants.js +0 -10
  241. package/dist/state/constants.js.map +0 -1
  242. package/dist/state/types.d.ts +0 -17
  243. package/dist/state/types.d.ts.map +0 -1
  244. package/dist/state/types.js +0 -2
  245. package/dist/state/types.js.map +0 -1
  246. package/dist/types.d.ts +0 -33
  247. package/dist/types.d.ts.map +0 -1
  248. package/dist/types.js +0 -2
  249. package/dist/types.js.map +0 -1
  250. package/dist/utils/chat.d.ts +0 -13
  251. package/dist/utils/chat.d.ts.map +0 -1
  252. package/dist/utils/chat.js +0 -28
  253. package/dist/utils/chat.js.map +0 -1
  254. package/dist/utils/check-is-trial.d.ts +0 -2
  255. package/dist/utils/check-is-trial.d.ts.map +0 -1
  256. package/dist/utils/check-is-trial.js +0 -6
  257. package/dist/utils/check-is-trial.js.map +0 -1
  258. package/dist/utils/copy-to-clipboard.d.ts +0 -6
  259. package/dist/utils/copy-to-clipboard.d.ts.map +0 -1
  260. package/dist/utils/copy-to-clipboard.js +0 -30
  261. package/dist/utils/copy-to-clipboard.js.map +0 -1
  262. package/dist/utils/date.d.ts +0 -31
  263. package/dist/utils/date.d.ts.map +0 -1
  264. package/dist/utils/date.js +0 -66
  265. package/dist/utils/date.js.map +0 -1
  266. package/dist/utils/download.d.ts +0 -7
  267. package/dist/utils/download.d.ts.map +0 -1
  268. package/dist/utils/download.js +0 -15
  269. package/dist/utils/download.js.map +0 -1
  270. package/dist/utils/error.d.ts +0 -2
  271. package/dist/utils/error.d.ts.map +0 -1
  272. package/dist/utils/error.js +0 -54
  273. package/dist/utils/error.js.map +0 -1
  274. package/dist/utils/knowledge-source.d.ts +0 -19
  275. package/dist/utils/knowledge-source.d.ts.map +0 -1
  276. package/dist/utils/knowledge-source.js +0 -60
  277. package/dist/utils/knowledge-source.js.map +0 -1
  278. package/dist/utils/planning-tool.d.ts +0 -17
  279. package/dist/utils/planning-tool.d.ts.map +0 -1
  280. package/dist/utils/planning-tool.js +0 -32
  281. package/dist/utils/planning-tool.js.map +0 -1
  282. package/dist/utils/programming-languages.d.ts +0 -7
  283. package/dist/utils/programming-languages.d.ts.map +0 -1
  284. package/dist/utils/programming-languages.js +0 -474
  285. package/dist/utils/programming-languages.js.map +0 -1
  286. package/dist/utils/string.d.ts +0 -7
  287. package/dist/utils/string.d.ts.map +0 -1
  288. package/dist/utils/string.js +0 -11
  289. package/dist/utils/string.js.map +0 -1
  290. package/dist/utils/tools.d.ts +0 -23
  291. package/dist/utils/tools.d.ts.map +0 -1
  292. package/dist/utils/tools.js +0 -23
  293. package/dist/utils/tools.js.map +0 -1
  294. package/dist/utils/update-tool-step.d.ts +0 -3
  295. package/dist/utils/update-tool-step.d.ts.map +0 -1
  296. package/dist/utils/update-tool-step.js +0 -23
  297. package/dist/utils/update-tool-step.js.map +0 -1
  298. package/dist/utils/upload/FileUpload.d.ts +0 -21
  299. package/dist/utils/upload/FileUpload.d.ts.map +0 -1
  300. package/dist/utils/upload/FileUpload.js +0 -54
  301. package/dist/utils/upload/FileUpload.js.map +0 -1
  302. package/dist/utils/upload/UploadManager.d.ts +0 -42
  303. package/dist/utils/upload/UploadManager.d.ts.map +0 -1
  304. package/dist/utils/upload/UploadManager.js +0 -138
  305. package/dist/utils/upload/UploadManager.js.map +0 -1
  306. package/dist/utils/upload/context.d.ts +0 -15
  307. package/dist/utils/upload/context.d.ts.map +0 -1
  308. package/dist/utils/upload/context.js +0 -37
  309. package/dist/utils/upload/context.js.map +0 -1
  310. package/dist/utils/upload/errors.d.ts +0 -17
  311. package/dist/utils/upload/errors.d.ts.map +0 -1
  312. package/dist/utils/upload/errors.js +0 -27
  313. package/dist/utils/upload/errors.js.map +0 -1
  314. package/dist/utils/upload/types.d.ts +0 -7
  315. package/dist/utils/upload/types.d.ts.map +0 -1
  316. package/dist/utils/upload/types.js +0 -2
  317. package/dist/utils/upload/types.js.map +0 -1
  318. package/dist/utils/upload/use-paste-upload.d.ts +0 -8
  319. package/dist/utils/upload/use-paste-upload.d.ts.map +0 -1
  320. package/dist/utils/upload/use-paste-upload.js +0 -19
  321. package/dist/utils/upload/use-paste-upload.js.map +0 -1
  322. package/dist/utils/upload/utils.d.ts +0 -4
  323. package/dist/utils/upload/utils.d.ts.map +0 -1
  324. package/dist/utils/upload/utils.js +0 -10
  325. package/dist/utils/upload/utils.js.map +0 -1
  326. package/dist/utils/url.d.ts +0 -2
  327. package/dist/utils/url.d.ts.map +0 -1
  328. package/dist/utils/url.js +0 -8
  329. package/dist/utils/url.js.map +0 -1
  330. package/dist/views/Agents/AgentDescription.d.ts +0 -4
  331. package/dist/views/Agents/AgentDescription.d.ts.map +0 -1
  332. package/dist/views/Agents/AgentDescription.js +0 -38
  333. package/dist/views/Agents/AgentDescription.js.map +0 -1
  334. package/dist/views/Agents/AgentsPanel.d.ts +0 -5
  335. package/dist/views/Agents/AgentsPanel.d.ts.map +0 -1
  336. package/dist/views/Agents/AgentsPanel.js +0 -45
  337. package/dist/views/Agents/AgentsPanel.js.map +0 -1
  338. package/dist/views/Agents/AgentsTab.d.ts +0 -11
  339. package/dist/views/Agents/AgentsTab.d.ts.map +0 -1
  340. package/dist/views/Agents/AgentsTab.js +0 -82
  341. package/dist/views/Agents/AgentsTab.js.map +0 -1
  342. package/dist/views/Agents/dictionary.d.ts +0 -2
  343. package/dist/views/Agents/dictionary.d.ts.map +0 -1
  344. package/dist/views/Agents/dictionary.js +0 -43
  345. package/dist/views/Agents/dictionary.js.map +0 -1
  346. package/dist/views/Agents/index.d.ts +0 -5
  347. package/dist/views/Agents/index.d.ts.map +0 -1
  348. package/dist/views/Agents/index.js +0 -21
  349. package/dist/views/Agents/index.js.map +0 -1
  350. package/dist/views/Agents/styled.d.ts +0 -3
  351. package/dist/views/Agents/styled.d.ts.map +0 -1
  352. package/dist/views/Agents/styled.js +0 -68
  353. package/dist/views/Agents/styled.js.map +0 -1
  354. package/dist/views/Agents/useAgentFavorites.d.ts +0 -8
  355. package/dist/views/Agents/useAgentFavorites.d.ts.map +0 -1
  356. package/dist/views/Agents/useAgentFavorites.js +0 -59
  357. package/dist/views/Agents/useAgentFavorites.js.map +0 -1
  358. package/dist/views/Chat/AgentInfo.d.ts +0 -11
  359. package/dist/views/Chat/AgentInfo.d.ts.map +0 -1
  360. package/dist/views/Chat/AgentInfo.js +0 -8
  361. package/dist/views/Chat/AgentInfo.js.map +0 -1
  362. package/dist/views/Chat/ButtonExecutionDetail.d.ts +0 -5
  363. package/dist/views/Chat/ButtonExecutionDetail.d.ts.map +0 -1
  364. package/dist/views/Chat/ButtonExecutionDetail.js +0 -34
  365. package/dist/views/Chat/ButtonExecutionDetail.js.map +0 -1
  366. package/dist/views/Chat/ChatMessage.d.ts +0 -59
  367. package/dist/views/Chat/ChatMessage.d.ts.map +0 -1
  368. package/dist/views/Chat/ChatMessage.js +0 -215
  369. package/dist/views/Chat/ChatMessage.js.map +0 -1
  370. package/dist/views/Chat/ChatMessages.d.ts +0 -11
  371. package/dist/views/Chat/ChatMessages.d.ts.map +0 -1
  372. package/dist/views/Chat/ChatMessages.js +0 -15
  373. package/dist/views/Chat/ChatMessages.js.map +0 -1
  374. package/dist/views/Chat/StepsList.d.ts +0 -14
  375. package/dist/views/Chat/StepsList.d.ts.map +0 -1
  376. package/dist/views/Chat/StepsList.js +0 -192
  377. package/dist/views/Chat/StepsList.js.map +0 -1
  378. package/dist/views/Chat/chat-scroll.d.ts +0 -7
  379. package/dist/views/Chat/chat-scroll.d.ts.map +0 -1
  380. package/dist/views/Chat/chat-scroll.js +0 -17
  381. package/dist/views/Chat/chat-scroll.js.map +0 -1
  382. package/dist/views/Chat/events.d.ts +0 -22
  383. package/dist/views/Chat/events.d.ts.map +0 -1
  384. package/dist/views/Chat/events.js +0 -67
  385. package/dist/views/Chat/events.js.map +0 -1
  386. package/dist/views/Chat/index.d.ts +0 -13
  387. package/dist/views/Chat/index.d.ts.map +0 -1
  388. package/dist/views/Chat/index.js +0 -11
  389. package/dist/views/Chat/index.js.map +0 -1
  390. package/dist/views/Chat/styled.d.ts +0 -4
  391. package/dist/views/Chat/styled.d.ts.map +0 -1
  392. package/dist/views/Chat/styled.js +0 -307
  393. package/dist/views/Chat/styled.js.map +0 -1
  394. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts +0 -5
  395. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts.map +0 -1
  396. package/dist/views/ChatHistory/ChatHistoryPanel.js +0 -14
  397. package/dist/views/ChatHistory/ChatHistoryPanel.js.map +0 -1
  398. package/dist/views/ChatHistory/HistoryItem.d.ts +0 -8
  399. package/dist/views/ChatHistory/HistoryItem.d.ts.map +0 -1
  400. package/dist/views/ChatHistory/HistoryItem.js +0 -97
  401. package/dist/views/ChatHistory/HistoryItem.js.map +0 -1
  402. package/dist/views/ChatHistory/dictionary.d.ts +0 -2
  403. package/dist/views/ChatHistory/dictionary.d.ts.map +0 -1
  404. package/dist/views/ChatHistory/dictionary.js +0 -19
  405. package/dist/views/ChatHistory/dictionary.js.map +0 -1
  406. package/dist/views/ChatHistory/index.d.ts +0 -5
  407. package/dist/views/ChatHistory/index.d.ts.map +0 -1
  408. package/dist/views/ChatHistory/index.js +0 -26
  409. package/dist/views/ChatHistory/index.js.map +0 -1
  410. package/dist/views/ChatHistory/styled.d.ts +0 -2
  411. package/dist/views/ChatHistory/styled.d.ts.map +0 -1
  412. package/dist/views/ChatHistory/styled.js +0 -58
  413. package/dist/views/ChatHistory/styled.js.map +0 -1
  414. package/dist/views/ChatHistory/utils.d.ts +0 -21
  415. package/dist/views/ChatHistory/utils.d.ts.map +0 -1
  416. package/dist/views/ChatHistory/utils.js +0 -170
  417. package/dist/views/ChatHistory/utils.js.map +0 -1
  418. package/dist/views/ChatTabSelection.d.ts +0 -10
  419. package/dist/views/ChatTabSelection.d.ts.map +0 -1
  420. package/dist/views/ChatTabSelection.js +0 -70
  421. package/dist/views/ChatTabSelection.js.map +0 -1
  422. package/dist/views/Editor.d.ts +0 -5
  423. package/dist/views/Editor.d.ts.map +0 -1
  424. package/dist/views/Editor.js +0 -96
  425. package/dist/views/Editor.js.map +0 -1
  426. package/dist/views/Home/BuiltInAgent.d.ts +0 -6
  427. package/dist/views/Home/BuiltInAgent.d.ts.map +0 -1
  428. package/dist/views/Home/BuiltInAgent.js +0 -37
  429. package/dist/views/Home/BuiltInAgent.js.map +0 -1
  430. package/dist/views/Home/CustomAgent.d.ts +0 -5
  431. package/dist/views/Home/CustomAgent.d.ts.map +0 -1
  432. package/dist/views/Home/CustomAgent.js +0 -23
  433. package/dist/views/Home/CustomAgent.js.map +0 -1
  434. package/dist/views/Home/index.d.ts +0 -8
  435. package/dist/views/Home/index.d.ts.map +0 -1
  436. package/dist/views/Home/index.js +0 -34
  437. package/dist/views/Home/index.js.map +0 -1
  438. package/dist/views/Home/styled.d.ts +0 -2
  439. package/dist/views/Home/styled.d.ts.map +0 -1
  440. package/dist/views/Home/styled.js +0 -74
  441. package/dist/views/Home/styled.js.map +0 -1
  442. package/dist/views/Home/types.d.ts +0 -16
  443. package/dist/views/Home/types.d.ts.map +0 -1
  444. package/dist/views/Home/types.js +0 -2
  445. package/dist/views/Home/types.js.map +0 -1
  446. package/dist/views/KSDocument.d.ts +0 -5
  447. package/dist/views/KSDocument.d.ts.map +0 -1
  448. package/dist/views/KSDocument.js +0 -43
  449. package/dist/views/KSDocument.js.map +0 -1
  450. package/dist/views/KnowledgeSources.d.ts +0 -14
  451. package/dist/views/KnowledgeSources.d.ts.map +0 -1
  452. package/dist/views/KnowledgeSources.js +0 -183
  453. package/dist/views/KnowledgeSources.js.map +0 -1
  454. package/dist/views/MessageInput/AgentSelector.d.ts +0 -5
  455. package/dist/views/MessageInput/AgentSelector.d.ts.map +0 -1
  456. package/dist/views/MessageInput/AgentSelector.js +0 -66
  457. package/dist/views/MessageInput/AgentSelector.js.map +0 -1
  458. package/dist/views/MessageInput/ButtonAgent.d.ts +0 -2
  459. package/dist/views/MessageInput/ButtonAgent.d.ts.map +0 -1
  460. package/dist/views/MessageInput/ButtonAgent.js +0 -35
  461. package/dist/views/MessageInput/ButtonAgent.js.map +0 -1
  462. package/dist/views/MessageInput/ButtonBar.d.ts +0 -13
  463. package/dist/views/MessageInput/ButtonBar.d.ts.map +0 -1
  464. package/dist/views/MessageInput/ButtonBar.js +0 -15
  465. package/dist/views/MessageInput/ButtonBar.js.map +0 -1
  466. package/dist/views/MessageInput/ContextBar.d.ts +0 -9
  467. package/dist/views/MessageInput/ContextBar.d.ts.map +0 -1
  468. package/dist/views/MessageInput/ContextBar.js +0 -51
  469. package/dist/views/MessageInput/ContextBar.js.map +0 -1
  470. package/dist/views/MessageInput/ModelSwitcher/index.d.ts +0 -2
  471. package/dist/views/MessageInput/ModelSwitcher/index.d.ts.map +0 -1
  472. package/dist/views/MessageInput/ModelSwitcher/index.js +0 -25
  473. package/dist/views/MessageInput/ModelSwitcher/index.js.map +0 -1
  474. package/dist/views/MessageInput/ModelSwitcher/utils.d.ts +0 -30
  475. package/dist/views/MessageInput/ModelSwitcher/utils.d.ts.map +0 -1
  476. package/dist/views/MessageInput/ModelSwitcher/utils.js +0 -91
  477. package/dist/views/MessageInput/ModelSwitcher/utils.js.map +0 -1
  478. package/dist/views/MessageInput/QuickCommandSelector.d.ts +0 -5
  479. package/dist/views/MessageInput/QuickCommandSelector.d.ts.map +0 -1
  480. package/dist/views/MessageInput/QuickCommandSelector.js +0 -104
  481. package/dist/views/MessageInput/QuickCommandSelector.js.map +0 -1
  482. package/dist/views/MessageInput/SelectContent.d.ts +0 -2
  483. package/dist/views/MessageInput/SelectContent.d.ts.map +0 -1
  484. package/dist/views/MessageInput/SelectContent.js +0 -84
  485. package/dist/views/MessageInput/SelectContent.js.map +0 -1
  486. package/dist/views/MessageInput/UploadBar.d.ts +0 -2
  487. package/dist/views/MessageInput/UploadBar.d.ts.map +0 -1
  488. package/dist/views/MessageInput/UploadBar.js +0 -74
  489. package/dist/views/MessageInput/UploadBar.js.map +0 -1
  490. package/dist/views/MessageInput/UploadDragNDrop.d.ts +0 -14
  491. package/dist/views/MessageInput/UploadDragNDrop.d.ts.map +0 -1
  492. package/dist/views/MessageInput/UploadDragNDrop.js +0 -51
  493. package/dist/views/MessageInput/UploadDragNDrop.js.map +0 -1
  494. package/dist/views/MessageInput/chat-entry-history.d.ts +0 -11
  495. package/dist/views/MessageInput/chat-entry-history.d.ts.map +0 -1
  496. package/dist/views/MessageInput/chat-entry-history.js +0 -78
  497. package/dist/views/MessageInput/chat-entry-history.js.map +0 -1
  498. package/dist/views/MessageInput/dictionary.d.ts +0 -2
  499. package/dist/views/MessageInput/dictionary.d.ts.map +0 -1
  500. package/dist/views/MessageInput/dictionary.js +0 -81
  501. package/dist/views/MessageInput/dictionary.js.map +0 -1
  502. package/dist/views/MessageInput/index.d.ts +0 -10
  503. package/dist/views/MessageInput/index.d.ts.map +0 -1
  504. package/dist/views/MessageInput/index.js +0 -140
  505. package/dist/views/MessageInput/index.js.map +0 -1
  506. package/dist/views/MessageInput/styled.d.ts +0 -16
  507. package/dist/views/MessageInput/styled.d.ts.map +0 -1
  508. package/dist/views/MessageInput/styled.js +0 -341
  509. package/dist/views/MessageInput/styled.js.map +0 -1
  510. package/dist/views/MinimizedHeader.d.ts +0 -7
  511. package/dist/views/MinimizedHeader.d.ts.map +0 -1
  512. package/dist/views/MinimizedHeader.js +0 -78
  513. package/dist/views/MinimizedHeader.js.map +0 -1
  514. package/dist/views/Resources.d.ts +0 -2
  515. package/dist/views/Resources.d.ts.map +0 -1
  516. package/dist/views/Resources.js +0 -69
  517. package/dist/views/Resources.js.map +0 -1
  518. package/dist/views/Stacks.d.ts +0 -14
  519. package/dist/views/Stacks.d.ts.map +0 -1
  520. package/dist/views/Stacks.js +0 -172
  521. package/dist/views/Stacks.js.map +0 -1
  522. package/dist/views/Steps/FlowChart/HandleGroup.d.ts +0 -10
  523. package/dist/views/Steps/FlowChart/HandleGroup.d.ts.map +0 -1
  524. package/dist/views/Steps/FlowChart/HandleGroup.js +0 -4
  525. package/dist/views/Steps/FlowChart/HandleGroup.js.map +0 -1
  526. package/dist/views/Steps/FlowChart/NodeDynamic.d.ts +0 -15
  527. package/dist/views/Steps/FlowChart/NodeDynamic.d.ts.map +0 -1
  528. package/dist/views/Steps/FlowChart/NodeDynamic.js +0 -41
  529. package/dist/views/Steps/FlowChart/NodeDynamic.js.map +0 -1
  530. package/dist/views/Steps/FlowChart/NodeStep.d.ts +0 -10
  531. package/dist/views/Steps/FlowChart/NodeStep.d.ts.map +0 -1
  532. package/dist/views/Steps/FlowChart/NodeStep.js +0 -13
  533. package/dist/views/Steps/FlowChart/NodeStep.js.map +0 -1
  534. package/dist/views/Steps/FlowChart/hooks.d.ts +0 -7
  535. package/dist/views/Steps/FlowChart/hooks.d.ts.map +0 -1
  536. package/dist/views/Steps/FlowChart/hooks.js +0 -31
  537. package/dist/views/Steps/FlowChart/hooks.js.map +0 -1
  538. package/dist/views/Steps/FlowChart/index.d.ts +0 -12
  539. package/dist/views/Steps/FlowChart/index.d.ts.map +0 -1
  540. package/dist/views/Steps/FlowChart/index.js +0 -78
  541. package/dist/views/Steps/FlowChart/index.js.map +0 -1
  542. package/dist/views/Steps/FlowChart/layout.d.ts +0 -8
  543. package/dist/views/Steps/FlowChart/layout.d.ts.map +0 -1
  544. package/dist/views/Steps/FlowChart/layout.js +0 -59
  545. package/dist/views/Steps/FlowChart/layout.js.map +0 -1
  546. package/dist/views/Steps/FlowChart/styled.d.ts +0 -14
  547. package/dist/views/Steps/FlowChart/styled.d.ts.map +0 -1
  548. package/dist/views/Steps/FlowChart/styled.js +0 -156
  549. package/dist/views/Steps/FlowChart/styled.js.map +0 -1
  550. package/dist/views/Steps/FlowChart/types.d.ts +0 -25
  551. package/dist/views/Steps/FlowChart/types.d.ts.map +0 -1
  552. package/dist/views/Steps/FlowChart/types.js +0 -2
  553. package/dist/views/Steps/FlowChart/types.js.map +0 -1
  554. package/dist/views/Steps/StepModal.d.ts +0 -10
  555. package/dist/views/Steps/StepModal.d.ts.map +0 -1
  556. package/dist/views/Steps/StepModal.js +0 -139
  557. package/dist/views/Steps/StepModal.js.map +0 -1
  558. package/dist/views/Steps/StepsPanel.d.ts +0 -6
  559. package/dist/views/Steps/StepsPanel.d.ts.map +0 -1
  560. package/dist/views/Steps/StepsPanel.js +0 -18
  561. package/dist/views/Steps/StepsPanel.js.map +0 -1
  562. package/dist/views/Steps/dictionary.d.ts +0 -43
  563. package/dist/views/Steps/dictionary.d.ts.map +0 -1
  564. package/dist/views/Steps/dictionary.js +0 -45
  565. package/dist/views/Steps/dictionary.js.map +0 -1
  566. package/dist/views/Steps/index.d.ts +0 -5
  567. package/dist/views/Steps/index.d.ts.map +0 -1
  568. package/dist/views/Steps/index.js +0 -30
  569. package/dist/views/Steps/index.js.map +0 -1
  570. package/dist/views/Steps/utils.d.ts +0 -7
  571. package/dist/views/Steps/utils.d.ts.map +0 -1
  572. package/dist/views/Steps/utils.js +0 -32
  573. package/dist/views/Steps/utils.js.map +0 -1
  574. package/dist/views/Tools.d.ts +0 -2
  575. package/dist/views/Tools.d.ts.map +0 -1
  576. package/dist/views/Tools.js +0 -53
  577. package/dist/views/Tools.js.map +0 -1
  578. package/dist/views/Workspaces/WorkspacesTab.d.ts +0 -20
  579. package/dist/views/Workspaces/WorkspacesTab.d.ts.map +0 -1
  580. package/dist/views/Workspaces/WorkspacesTab.js +0 -61
  581. package/dist/views/Workspaces/WorkspacesTab.js.map +0 -1
  582. package/dist/views/Workspaces/index.d.ts +0 -5
  583. package/dist/views/Workspaces/index.d.ts.map +0 -1
  584. package/dist/views/Workspaces/index.js +0 -69
  585. package/dist/views/Workspaces/index.js.map +0 -1
package/package.dev.json CHANGED
@@ -1,3 +1,6 @@
1
1
  {
2
- "version": "1.0.0-dev.{timestamp}"
2
+ "version": "1.0.0-dev.{timestamp}",
3
+ "dependencies": {
4
+ "@stack-spot/portal-network": "dev"
5
+ }
3
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.0.0-dev.1768326769700",
3
+ "version": "1.0.0-dev.1768423745486",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -16,7 +16,7 @@
16
16
  "@citric/core": "^6.4.0",
17
17
  "@stack-spot/portal-components": "^2.27.3",
18
18
  "@citric/icons": "^5.13.0",
19
- "@stack-spot/portal-network": "0.212.4",
19
+ "@stack-spot/portal-network": "0.203.1-beta.1",
20
20
  "@citric/ui": "^6.10.2",
21
21
  "@stack-spot/portal-translate": "^2.1.0",
22
22
  "lodash": "^4.17.0",
@@ -58,6 +58,7 @@
58
58
  "remark-gfm": "^4.0.0",
59
59
  "ulid": "^2.3.0",
60
60
  "@xyflow/react": "^12.3.2",
61
- "@dagrejs/dagre": "^1.1.4"
61
+ "@dagrejs/dagre": "^1.1.4",
62
+ "@stack-spot/portal-network": "dev"
62
63
  }
63
64
  }
package/package.stg.json CHANGED
@@ -1,3 +1,6 @@
1
1
  {
2
- "version": "1.0.0-stg.{timestamp}"
2
+ "version": "1.0.0-stg.{timestamp}",
3
+ "dependencies": {
4
+ "@stack-spot/portal-network": "stg"
5
+ }
3
6
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "1.0.0-dev.1768326769700",
4
- "date": "Tue Jan 13 2026 17:52:53 GMT+0000 (Coordinated Universal Time)",
3
+ "version": "2.11.0",
4
+ "date": "Wed Jan 14 2026 20:49:04 GMT+0000 (Coordinated Universal Time)",
5
5
  "dependencies": [
6
6
  {
7
7
  "name": "@stack-spot/app-metadata",
@@ -125,7 +125,7 @@
125
125
  },
126
126
  {
127
127
  "name": "@stack-spot/portal-network",
128
- "version": "0.212.4(@stack-spot/auth@6.1.0)(@stack-spot/opa@2.5.0(@stack-spot/auth@6.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@stack-spot/portal-translate@2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@tanstack/react-query@5.59.16(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)"
128
+ "version": "0.203.1-beta.1(@stack-spot/auth@6.1.0)(@stack-spot/opa@2.5.0(@stack-spot/auth@6.1.0)(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@stack-spot/portal-translate@2.1.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0))(@tanstack/react-query@5.59.16(react@18.2.0))(react-dom@18.2.0(react@18.2.0))(react@18.2.0)"
129
129
  },
130
130
  {
131
131
  "name": "@stack-spot/portal-theme",
@@ -202,8 +202,12 @@ export async function sendMessageInterceptor(entry: ChatEntry, chat: ChatState,
202
202
  chat.set('label', content || entry.getValue().upload?.[0]?.name || 'Chat')
203
203
  chat.untitled = false
204
204
  }
205
-
206
- const stream = aiClient.sendChatMessage({ context, user_prompt: buildPrompt(content, data) })
205
+
206
+ const stream = aiClient.sendChatMessage({
207
+ context,
208
+ user_prompt: buildPrompt(content, data),
209
+ agent_version_number: chat.get('agent')?.agent_version_number,
210
+ })
207
211
  signal.addEventListener('abort', () => stream.cancel())
208
212
  const botEntry = ChatEntry.createStreamedBotEntry()
209
213
  // we add the chat entry and show the streaming if the streaming feature is enabled
@@ -0,0 +1,55 @@
1
+
2
+ import { Select } from '@stack-spot/citric-react'
3
+ import { useTranslate } from '@stack-spot/portal-translate'
4
+ import { Dispatch, MouseEvent, SetStateAction, useEffect, useState } from 'react'
5
+ import { isEqual } from 'lodash'
6
+ import { VersionSelector } from './styled'
7
+
8
+ interface Props {
9
+ value?: number,
10
+ onChange: Dispatch<SetStateAction<number | undefined>>,
11
+ options?: number[],
12
+ lazyLoadOptions?: boolean,
13
+ useVersions?: (id: string, enabled: boolean) => number[] | undefined,
14
+ id: string,
15
+ }
16
+
17
+ export const SelectVersion = ({ useVersions, value, onChange, options: initialOptions, id, lazyLoadOptions=false }: Props) => {
18
+ const t = useTranslate(dictionary)
19
+ const [options, setOptions] = useState(initialOptions)
20
+ const [enabled, setEnabled] = useState(!lazyLoadOptions)
21
+ const versions = useVersions?.(id, enabled)
22
+
23
+ const onClick = (e?: MouseEvent<HTMLDivElement>) => {
24
+ e?.stopPropagation()
25
+ if (lazyLoadOptions) {
26
+ setEnabled(true)
27
+ }
28
+ }
29
+
30
+ useEffect(() => {
31
+ if (lazyLoadOptions && !isEqual(versions, options)){
32
+ setOptions(versions)
33
+ }
34
+ }, [versions])
35
+
36
+ return (
37
+ <VersionSelector>
38
+ <Select className="version-selector"
39
+ options={options || []}
40
+ value={value}
41
+ onChange={onChange}
42
+ onClick={onClick}
43
+ renderLabel={(item) =>`${t.version} ${item}`} />
44
+ </VersionSelector>
45
+ )
46
+ }
47
+
48
+ const dictionary = {
49
+ en: {
50
+ version: 'Version',
51
+ },
52
+ pt: {
53
+ version: 'Versão',
54
+ },
55
+ }
@@ -10,6 +10,7 @@ import { useCurrentChatState, useWidgetState } from '../../context/hooks'
10
10
  import { getUrlToStackSpotAI } from '../../utils/url'
11
11
  import { ButtonFavorite } from '../ButtonFavorite'
12
12
  import { Fading } from '../Fading'
13
+ import { SelectVersion } from './SelectVersion'
13
14
  import { SelectorBox } from './styled'
14
15
 
15
16
  type SectionVisibility = AgentVisibilityLevel | VisibilityLevelEnum
@@ -20,6 +21,7 @@ interface Item {
20
21
  slug: string,
21
22
  description: string,
22
23
  visibility_level: SectionVisibility,
24
+ version_number?: number,
23
25
  }
24
26
 
25
27
  interface Favorite<T> {
@@ -69,6 +71,8 @@ interface SelectorConfig<T> {
69
71
  regex: RegExp,
70
72
  urlBuilder: (item: T) => string,
71
73
  searchProp: keyof T,
74
+ isEnabledVersionContent?: boolean,
75
+ useVersions?: (id: string, enabled: boolean) => number[] | undefined,
72
76
  isEnabled: boolean,
73
77
  sections: SectionVisibility[],
74
78
  renderComponentItem: FC<T>,
@@ -91,10 +95,11 @@ interface SelectorProps<T> {
91
95
 
92
96
  const ListItem = <T extends Item>({ item, selectorConfig, onSelect, favorite }: ListItemProps<T>) => {
93
97
  const t = useTranslate(dictionary)
94
- const { urlBuilder, renderComponentItem } = selectorConfig
98
+ const { urlBuilder, renderComponentItem, useVersions, isEnabledVersionContent } = selectorConfig
95
99
  const linkTitle = interpolate(t.open, item.slug)
96
100
  const listFavorites = favorite?.useFavorites?.()
97
-
101
+ const [selectedVersion, setSelectedVersion] = useState(item.version_number)
102
+
98
103
  return (
99
104
  <li>
100
105
  <button
@@ -106,6 +111,10 @@ const ListItem = <T extends Item>({ item, selectorConfig, onSelect, favorite }:
106
111
  >
107
112
  {renderComponentItem(item)}
108
113
  </button>
114
+ {isEnabledVersionContent &&
115
+ <SelectVersion options={item.version_number ? [item.version_number] : []} id={item.id}
116
+ value={selectedVersion} onChange={setSelectedVersion} lazyLoadOptions={true} useVersions={useVersions}
117
+ /> }
109
118
  <IconLink
110
119
  icon="ExternalLink"
111
120
  title={linkTitle}
@@ -156,3 +156,50 @@ export const SelectorBox = styled.div<{ $tabsCount: number }>`
156
156
  }
157
157
  }
158
158
  `
159
+
160
+ export const VersionSelector = styled.div`
161
+ position: relative;
162
+ min-width: 100px;
163
+
164
+ .version-selector {
165
+ height: 28px;
166
+ position: absolute;
167
+ top: -18px;
168
+ left: -12px;
169
+
170
+ header {
171
+ height: 20px;
172
+ background-color: ${theme.color.light[300]};
173
+ border: none;
174
+ margin-bottom: 0;
175
+ gap: 0;
176
+ padding: 0;
177
+
178
+ }
179
+ .selection-panel .options{
180
+ overflow: hidden;
181
+ }
182
+ li {
183
+ gap: 5px;
184
+ padding: 0 8px 0 !important;
185
+ padding-left: 5px;
186
+ }
187
+ }
188
+
189
+ `
190
+
191
+ export const VersionSelectorBox = styled.div`
192
+ border: 1px solid ${theme.color.light[500]};
193
+ border-radius: 4px;
194
+ .version-selector {
195
+ position: relative;
196
+ top: 0;
197
+ left: 0;
198
+ }
199
+ > div {
200
+ position: relative;
201
+ .options {
202
+ overflow: hidden;
203
+ }
204
+ }
205
+ `
@@ -0,0 +1,31 @@
1
+ import { accountClient } from '@stack-spot/portal-network'
2
+
3
+ const useEnabledFeatureFlags = (resourceType?: string, resourceSlug?: string) => {
4
+ const queryParams = resourceType && resourceSlug ? { [resourceType]: resourceSlug } : {}
5
+ const [featureFlags, , error, { isLoading }] = accountClient.getEnabledFeatureFlagsForAccount.useStatefulQuery({
6
+ queryParams,
7
+ })
8
+ return { featureFlags, isLoading, error }
9
+ }
10
+
11
+ export const useIsFeatureFlagEnabled = (
12
+ flagSlug: string,
13
+ resourceType?: string,
14
+ resourceSlug?: string,
15
+ ) => {
16
+ const { featureFlags, isLoading } = useEnabledFeatureFlags(resourceType, resourceSlug)
17
+ if (resourceType && resourceSlug) {
18
+ const featureFlag = featureFlags?.find((flag) => flag.slug === flagSlug)
19
+ const resourcesByType = featureFlag?.resources?.[resourceType]
20
+ if (!!featureFlag && !!resourcesByType) {
21
+ if (resourcesByType.mode === 'ALL') {
22
+ return { flagEnabled: true, isLoading }
23
+ } else {
24
+ return { flagEnabled: !!featureFlag.resources?.[resourceType].slugs.some((slug) => slug === resourceSlug), isLoading }
25
+ }
26
+ }
27
+ return { flagEnabled: false, isLoading }
28
+ } else {
29
+ return { flagEnabled: !!featureFlags?.some((flag) => flag.slug === flagSlug), isLoading }
30
+ }
31
+ }
@@ -11,6 +11,7 @@ export interface LabeledAgent extends LabeledWithImage {
11
11
  builtIn?: boolean,
12
12
  slug?: string,
13
13
  visibility_level?: string,
14
+ agent_version_number?: number,
14
15
  }
15
16
 
16
17
  export interface FileSize {
@@ -1,9 +1,9 @@
1
1
 
2
- export type ToolWithImage = { id?: string, image?: string, name: string, description?: string }
2
+ export type ToolWithImage = { id?: string | null, image?: string, name?: string, description?: string }
3
3
 
4
4
  interface Toolkit {
5
5
  id?: string | null,
6
- tools?: { id?: string, name?: string, description?: string, function?: { name: string, description?: string } }[] | null,
6
+ tools?: { id?: string | null, name?: string, description?: string, function?: { name: string, description: string } | null }[] | null,
7
7
  image_url?: string | null,
8
8
  avatar?: string | null,
9
9
  }
@@ -22,8 +22,8 @@ export function toolById(id: string, toolkits: Toolkit[] | undefined): ToolWithI
22
22
  if (mcp) {
23
23
  const [, toolkitId, toolName] = mcp
24
24
  const toolkit = toolkits?.find(tk => tk.id === toolkitId)
25
- const tool = toolkit?.tools?.find(t => t.name === toolName)
26
- return { id, image: toolkit?.avatar ?? undefined, name: toolName, description: tool?.function?.description }
25
+ const tool = toolkit?.tools?.find(t => t.name === toolName || t.function?.name === toolName)
26
+ return { id, image: toolkit?.avatar ?? undefined, name: tool?.function?.name, description: tool?.function?.description }
27
27
  }
28
28
  const { tool, toolkit } = findToolById(id, toolkits ?? []) ?? {}
29
29
  return (tool && toolkit)
@@ -1,17 +1,31 @@
1
1
  import { Icon } from '@stack-spot/citric-icons'
2
- import { AsyncContent, Badge, Card, IconBox, ImageBox, ImageWithFallback, Text } from '@stack-spot/citric-react'
2
+ import { AsyncContent, Badge, Card, IconBox, ImageBox, ImageWithFallback, Row, Text } from '@stack-spot/citric-react'
3
3
  import { agentToolsClient } from '@stack-spot/portal-network'
4
- import { useMemo } from 'react'
4
+ import { useEffect, useMemo, useState } from 'react'
5
+ import { SelectVersion } from '../../components/Selector/SelectVersion'
6
+ import { VersionSelectorBox } from '../../components/Selector/styled'
5
7
  import { useAgentsDictionary } from './dictionary'
6
8
  import { AgentDescriptionBox } from './styled'
7
9
 
8
- export const AgentDescription = ({ agentId }: { agentId?: string }) => {
10
+ interface Props {
11
+ agentId?: string,
12
+ enableVersionSelect?: boolean,
13
+ onVersionChange?: (version?: number) => void,
14
+ }
15
+
16
+ export const AgentDescription = ({ agentId, enableVersionSelect, onVersionChange }:Props) => {
9
17
  const t = useAgentsDictionary()
10
- const [agent,, error, { isLoading }] = agentToolsClient.agent.useStatefulQuery({ agentId: agentId! }, { enabled: !!agentId })
11
- const numberOfKnowledgeSources = agent?.knowledge_sources_config?.knowledge_sources.length ?? 0
18
+ const [selectedVersion, setSelectedVersion] = useState<number | undefined>(undefined)
19
+ const [agent,, error, { isLoading }] = agentToolsClient.agentV2.useStatefulQuery({ agentCoreId: agentId!,
20
+ versionNumber: selectedVersion }, { enabled: !!agentId })
21
+ const [listVersions, , errorAgentWithVersion, { isLoading: isLoadingAgentWithVersions }] =
22
+ agentToolsClient.listAgentVersions.useStatefulQuery({ agentCoreId: agentId! },
23
+ { enabled: enableVersionSelect && !!agentId })
24
+ const optionsVersions = listVersions?.map((version) => version.version_number)
25
+ const numberOfKnowledgeSources = agent?.version.knowledge_sources_config?.knowledge_sources.length ?? 0
12
26
 
13
27
  const knowledgeSources = useMemo(
14
- () => agent?.knowledge_sources_config?.knowledge_sources_details?.map((ks, index) => (
28
+ () => agent?.version.knowledge_sources_config?.knowledge_sources_details?.map((ks, index) => (
15
29
  <li key={index}>
16
30
  <Card gap="10px" direction="row" flex={1} size="xxs" bgLevel={500} justifyContent="space-between">
17
31
  <Text color="light.contrastText">{ks.name}</Text>
@@ -21,12 +35,12 @@ export const AgentDescription = ({ agentId }: { agentId?: string }) => {
21
35
  )),
22
36
  [agent],
23
37
  )
24
-
38
+
25
39
  const { tools, multiAgents } = useMemo(() => {
26
40
  const tools: React.ReactElement[] = []
27
41
  const multiAgents: React.ReactElement[] = []
28
- const builtInTools = agent?.toolkits?.builtin_toolkits ?? []
29
- const customToolkits = agent?.toolkits?.custom_toolkits ?? []
42
+ const builtInTools = agent?.version.toolkits?.builtin_toolkits ?? []
43
+ const customToolkits = agent?.version.toolkits?.custom_toolkits ?? []
30
44
  for (const toolkit of builtInTools) {
31
45
  for (const tool of toolkit.tools ?? []) {
32
46
  if (toolkit.id == 'UTILITIES'){
@@ -66,22 +80,42 @@ export const AgentDescription = ({ agentId }: { agentId?: string }) => {
66
80
  return { tools, multiAgents }
67
81
  }, [agent])
68
82
 
69
- const mcpToolkits = useMemo(() => agent?.toolkits?.mcp_toolkits?.map(t => (
83
+ const mcpToolkits = useMemo(() => agent?.version.toolkits?.mcp_toolkits?.map(t => (
70
84
  <li key={`mcp-${t.id}`}>
71
85
  <Card gap="10px" direction="row" flex={1} size="xxs" bgLevel={500}>
72
86
  <ImageBox><ImageWithFallback src={t.avatar ?? undefined} fallback={<Icon icon="Cog" />} /></ImageBox>
73
87
  <Text color="light.contrastText">{t.name}</Text>
74
88
  </Card>
75
89
  </li>
76
- )), [agent?.toolkits?.mcp_toolkits])
90
+ )), [agent?.version.toolkits?.mcp_toolkits])
91
+
92
+ useEffect(() => {
93
+ if (!selectedVersion && agent?.version.version_number !== selectedVersion){
94
+ setSelectedVersion(agent?.version.version_number)
95
+ }
96
+ }, [agent?.version.version_number])
97
+
98
+ const onChangeVersion = (version?: number) => {
99
+ setSelectedVersion(version)
100
+ onVersionChange?.(version)
101
+ }
77
102
 
78
103
  return (
79
- <AsyncContent loading={isLoading} error={error}>
104
+ <AsyncContent loading={isLoading || isLoadingAgentWithVersions} error={error || errorAgentWithVersion}>
80
105
  <AgentDescriptionBox>
81
106
  {agent?.description && <section>
82
107
  <Text appearance="microtext1" className="title">{t.description}</Text>
83
108
  <Text>{agent?.description}</Text>
84
109
  </section>}
110
+ {enableVersionSelect && optionsVersions && optionsVersions?.length > 0 && <section>
111
+ <VersionSelectorBox>
112
+ <Row justifyContent="space-between" p={4}>
113
+ <Text>{t.version}</Text>
114
+ <SelectVersion options={optionsVersions} value={selectedVersion}
115
+ onChange={(value?: any) => onChangeVersion(value)} id={agent?.id ?? ''} />
116
+ </Row>
117
+ </VersionSelectorBox>
118
+ </section>}
85
119
  {(!!numberOfKnowledgeSources || !!knowledgeSources?.length) && <section>
86
120
  <Text appearance="microtext1" className="title">Knowledge sources</Text>
87
121
  <ul>{knowledgeSources}</ul>
@@ -97,9 +131,9 @@ export const AgentDescription = ({ agentId }: { agentId?: string }) => {
97
131
  <Text appearance="microtext1" className="title">{t.multiAgent}</Text>
98
132
  <ul>{multiAgents}</ul>
99
133
  </section>}
100
- {agent?.model_name && <section>
134
+ {agent?.version.model_name && <section>
101
135
  <Text appearance="microtext1" className="title">LLM</Text>
102
- <Badge colorPalette="orange" appearance="square">{agent?.model_name}</Badge>
136
+ <Badge colorPalette="orange" appearance="square">{agent?.version.model_name}</Badge>
103
137
  </section>}
104
138
  </AgentDescriptionBox>
105
139
  </AsyncContent>
@@ -9,6 +9,7 @@ import { NavigationComponent } from '../../components/ComponentNavigator'
9
9
  import { DescribedRadioGroup } from '../../components/form/DescribedRadioGroup'
10
10
  import { WorkspaceTabNavigator } from '../../components/WorkspaceTabNavigator'
11
11
  import { useCurrentChat } from '../../context/hooks'
12
+ import { useIsFeatureFlagEnabled } from '../../hooks/enabled-feature-flags'
12
13
  import { useRightPanel } from '../../right-panel/hooks'
13
14
  import { ChatProperties } from '../../state/ChatState'
14
15
  import { AgentDescription } from './AgentDescription'
@@ -28,9 +29,10 @@ export const AgentsTab = ({ visibility, workspaceId, agent, showSubmitButton = t
28
29
  const chat = useCurrentChat()
29
30
  const { useFavorites, onAddFavorite, onRemoveFavorite } = useAgentFavorites()
30
31
  const [submitEnabled, setSubmitEnabled] = useState(false)
32
+ const featureFlag = useIsFeatureFlagEnabled('ENABLE_VERSION_CONTENT_AI')
31
33
  const listFavorites = useFavorites()
32
34
  const agentDefault = agentToolsClient.agentDefault.useQuery()
33
-
35
+ const [agentVersions, setAgentVersions] = useState<Record<string, number | undefined>>({})
34
36
  const [filter, setFilter] = useState<string | undefined>()
35
37
  const [apiFilter, setApiFilter] = useState<string | undefined>()
36
38
  const [isPending, startTransition] = useTransition()
@@ -59,15 +61,15 @@ export const AgentsTab = ({ visibility, workspaceId, agent, showSubmitButton = t
59
61
 
60
62
  const agents = workspaceId ? workspaceAgents : agentsData
61
63
 
62
- const initialValue = useMemo<AgentResponseWithBuiltIn | undefined>(
63
- () => {
64
- const initial = agent.current
65
- ? agents?.find(a => a.id === agent.current?.id)
66
- : chat.get('agent') ? agents?.find(a => a.id === chat.get('agent')?.id) : agentDefault as unknown as AgentResponseWithBuiltIn
67
- if (initial && !submitEnabled) setSubmitEnabled(true)
68
- return initial
69
- },
70
- [agents],
64
+ const initialValue = useMemo<AgentResponseWithBuiltIn | undefined>(() => {
65
+ const initial = agent.current
66
+ ? agents?.find(a => a.id === agent.current?.id)
67
+ : chat.get('agent') ?
68
+ agents?.find(a => a.id === chat.get('agent')?.id) : { ...agentDefault, suggested_prompts: null } as AgentResponseWithBuiltIn
69
+ if (initial && !submitEnabled) setSubmitEnabled(true)
70
+ return initial
71
+ },
72
+ [agents],
71
73
  )
72
74
 
73
75
  function submit() {
@@ -75,12 +77,26 @@ export const AgentsTab = ({ visibility, workspaceId, agent, showSubmitButton = t
75
77
  close()
76
78
  }
77
79
 
80
+ const onVersionChange = (ag: AgentResponseWithBuiltIn, version?: number) => {
81
+ setAgentVersions(prev => ({
82
+ ...prev,
83
+ [ag.id]: version,
84
+ }))
85
+
86
+ if (agent.current?.id === ag.id) {
87
+ agent.current = {
88
+ ...agent.current,
89
+ agent_version_number: version,
90
+ }
91
+ }
92
+ }
93
+
78
94
  return <>
79
95
  <div className="content">
80
96
  <DescribedRadioGroup
81
97
  fetchNextPage={fetchNextPage}
82
98
  hasNextPage={hasNextPage && !workspaceId}
83
- options={agents}
99
+ options={agents || []}
84
100
  initialValue={initialValue}
85
101
  filter={workspaceId ? undefined : filter}
86
102
  setFilter={workspaceId ? undefined : (value?: string) => {
@@ -89,7 +105,8 @@ export const AgentsTab = ({ visibility, workspaceId, agent, showSubmitButton = t
89
105
  }}
90
106
  onChange={(ag) => {
91
107
  agent.current = ag
92
- ? { ...ag, label: ag.name, image: ag.avatar!, slug: ag.slug, builtIn: ag.visibility_level === 'built_in' }
108
+ ? { ...ag, label: ag.name, image: ag.avatar!, slug: ag.slug, builtIn: ag.visibility_level === 'built_in',
109
+ agent_version_number: agentVersions[ag.id] ?? ag.version_number }
93
110
  : undefined
94
111
  setSubmitEnabled(true)
95
112
  }}
@@ -98,7 +115,8 @@ export const AgentsTab = ({ visibility, workspaceId, agent, showSubmitButton = t
98
115
  idOrSlug: ag.id,
99
116
  // below, "key" is important. I don't know why exactly, but sometimes the avatar doesn't update if we don't do this.
100
117
  image: <ImageWithFallback key={ag.id} src={ag.avatar ?? undefined} fallback={<Icon icon="Agent" />} />,
101
- description: <AgentDescription agentId={ag.id} />,
118
+ description: <AgentDescription agentId={ag.id} enableVersionSelect={featureFlag.flagEnabled}
119
+ onVersionChange={(version?: number) => onVersionChange(ag, version)} />,
102
120
  name: ag.name,
103
121
  listFavorites,
104
122
  onAddFavorite,
@@ -19,6 +19,7 @@ const dictionary = {
19
19
  tools: 'Tools',
20
20
  spots: 'Spots',
21
21
  multiAgent: 'Multi-agents',
22
+ version: 'Version',
22
23
  },
23
24
  pt: {
24
25
  title: 'Agentes',
@@ -38,7 +39,7 @@ const dictionary = {
38
39
  tools: 'Ferramentas',
39
40
  spots: 'Spots',
40
41
  multiAgent: 'Multi-agents',
41
-
42
+ version: 'Versão',
42
43
  },
43
44
  } satisfies Dictionary
44
45
 
@@ -215,14 +215,16 @@ export const ChatMessage = ({ message, isLast, beforeMessage, afterMessage, cust
215
215
  const chat = useCurrentChat()
216
216
  const agentId = entry.agent?.id ?? ''
217
217
  // enabled: we don't want to make any request if there is no agent
218
- const [agent] = agentToolsClient.agent.useStatefulQuery({ agentId }, { enabled: !!agentId })
218
+ const [agent] = agentToolsClient.agentV2.useStatefulQuery({ agentCoreId: agentId, versionNumber: entry.agent?.agent_version_number },
219
+ { enabled: !!agentId })
219
220
  const toolkits = useMemo(() => [
220
- ...agent?.toolkits?.builtin_toolkits ?? [],
221
- ...agent?.toolkits?.custom_toolkits ?? [],
222
- ...agent?.toolkits?.mcp_toolkits ?? [],
221
+ ...agent?.version?.toolkits?.builtin_toolkits ?? [],
222
+ ...agent?.version?.toolkits?.custom_toolkits ?? [],
223
+ ...agent?.version?.toolkits?.mcp_toolkits ?? [],
223
224
  ], [agent])
224
- const [agentsTools] = agentToolsClient.agentsByIds.useStatefulQuery(
225
- { searchAgentsRequest: { ids: entry.tools || [''] } }, { enabled: !!entry.tools?.length })
225
+ const agentsSearch = entry.tools?.map((id) => ({ agent_core_id: id })) ?? []
226
+ const [agentsTools] = agentToolsClient.agentsByIdsV2.useStatefulQuery(
227
+ { searchAgentsRequestV2: { agents: agentsSearch } }, { enabled: !!entry.tools?.length })
226
228
  const [copied, setCopied] = useState(false)
227
229
  const [showUserButtonCopy, setShowUserButtonCopy] = useState(false)
228
230
  const isPlanning = useCurrentChatState('isPlaning') ?? false
@@ -1,5 +1,5 @@
1
1
  import { agentToolsClient, aiClient, AnswerChatStep, ChatAgentTool, ChatStep, PlanningChatStep, workspaceClient } from '@stack-spot/portal-network'
2
- import { AgentModel } from '@stack-spot/portal-network/api/agent-tools'
2
+ import { AgentCoreWithSingleVersionResponse } from '@stack-spot/portal-network/api/agent-tools'
3
3
  import { last } from 'lodash'
4
4
  import { ChatEntry } from '../../state/ChatEntry'
5
5
  import { ChatProperties, ChatState } from '../../state/ChatState'
@@ -56,11 +56,11 @@ function toJSONString(data: any) {
56
56
  return `${data}`
57
57
  }
58
58
 
59
- function findTool(agent: AgentModel | undefined, id: string) {
59
+ function findTool(agent: AgentCoreWithSingleVersionResponse | undefined, id: string) {
60
60
  const allToolkits = [
61
- ...agent?.toolkits?.builtin_toolkits ?? [],
62
- ...agent?.toolkits?.custom_toolkits ?? [],
63
- ...agent?.toolkits?.mcp_toolkits ?? [],
61
+ ...agent?.version?.toolkits?.builtin_toolkits ?? [],
62
+ ...agent?.version?.toolkits?.custom_toolkits ?? [],
63
+ ...agent?.version?.toolkits?.mcp_toolkits ?? [],
64
64
  ]
65
65
  for (const toolkit of allToolkits) {
66
66
  for (const tool of toolkit.tools ?? []) {
@@ -75,9 +75,10 @@ async function stepsFromAgentInfo(
75
75
  ): Promise<ChatStep[] | undefined> {
76
76
  const planningInfo = agentInfo?.find(i => i.type === 'planning' && !!i.data)
77
77
  if (planningInfo) {
78
- let agent: AgentModel | undefined
78
+ let agent: AgentCoreWithSingleVersionResponse | undefined
79
79
  try {
80
- agent = agentId ? await agentToolsClient.agent.query({ agentId }) : undefined
80
+ //TODO: avaliar se vamos precisar da versao aqui
81
+ agent = agentId ? await agentToolsClient.agentV2.query({ agentCoreId: agentId }) : undefined
81
82
  } catch { /* empty */ }
82
83
  const planning: PlanningChatStep = {
83
84
  type: 'planning',
@@ -105,7 +106,7 @@ async function stepsFromAgentInfo(
105
106
  return {
106
107
  id: t.tool_id,
107
108
  executionId: t.tool_execution_id,
108
- name: tool?.name,
109
+ name: ('name' in tool ? tool.name : ('function' in tool ? tool?.function?.name : undefined) ?? ''),
109
110
  description: 'description' in tool ? tool.description : undefined,
110
111
  image: toolkit ? (('image_url' in toolkit ? toolkit?.image_url : toolkit?.avatar) ?? undefined) : undefined,
111
112
  goal: t.goal,
@@ -139,11 +140,18 @@ function toolsFromAgentInfo(agentInfo: any[] | null | undefined): string[] {
139
140
  */
140
141
  export async function loadChat(widget: WidgetState, conversationId: string) {
141
142
  const chat = await aiClient.chat.query({ conversationId })
142
- const historyAgentIds = chat.history?.map(item => item.custom_agent?.id).filter(Boolean) as string[] ?? []
143
+ const historyAgents = chat.history?.reduce<{ agent_core_id: string }[]>((accumulator, item) => {
144
+ const agentId = item.custom_agent?.id
145
+ if (agentId !== undefined) {
146
+ accumulator.push({ agent_core_id: agentId })
147
+ }
148
+ return accumulator
149
+ }, []) ?? []
150
+
143
151
  const [stack, workspace, agents] = await Promise.all([
144
152
  findStack(chat.ai_stack_id),
145
153
  findWorkspace(chat.workspace_id),
146
- agentToolsClient.agentsByIds.query({ searchAgentsRequest: { ids: historyAgentIds } }),
154
+ agentToolsClient.agentsByIdsV2.query({ searchAgentsRequestV2: { agents: historyAgents } }),
147
155
  ])
148
156
  const agentsAsLabeledAgents: LabeledAgent[] = agents
149
157
  .map((a) => ({ ...a, label: a.name, image: a.avatar ?? '', builtIn: a.visibility_level === 'built_in' }))
@@ -11,16 +11,16 @@ import { HomeBox } from './styled'
11
11
  * This is the home rendered when the agent is custom.
12
12
  */
13
13
  export const CustomAgent = () => {
14
- const { id, label, image } = useCurrentChatState('agent') ?? {}
15
- const [agent] = agentToolsClient.agent.useStatefulQuery({ agentId: id! })
14
+ const { id, label, image, agent_version_number } = useCurrentChatState('agent') ?? {}
15
+ const [agent] = agentToolsClient.agentV2.useStatefulQuery({ agentCoreId: id!, versionNumber: agent_version_number })
16
16
  const chat = useCurrentChat()
17
- const suggestions = useMemo(() => agent?.conversation_starter?.map((prompt, index) => (
17
+ const suggestions = useMemo(() => agent?.version?.conversation_starter?.map((prompt, index) => (
18
18
  <QuickStartButton
19
19
  key={index}
20
20
  label={prompt}
21
21
  onClick={() => send(prompt)}
22
22
  />
23
- )), [agent?.conversation_starter])
23
+ )), [agent?.version?.conversation_starter])
24
24
 
25
25
  function send(message: string) {
26
26
  chat.pushMessage(ChatEntry.createUserEntry(message))