@stack-spot/ai-chat-widget 0.10.0 → 1.0.0-dev.1768314799914

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 (791) hide show
  1. package/CHANGELOG.md +972 -0
  2. package/README.md +1 -0
  3. package/dist/AbortedError.d.ts +5 -0
  4. package/dist/AbortedError.d.ts.map +1 -0
  5. package/dist/AbortedError.js +7 -0
  6. package/dist/AbortedError.js.map +1 -0
  7. package/dist/StackspotAIWidget.d.ts +48 -7
  8. package/dist/StackspotAIWidget.d.ts.map +1 -1
  9. package/dist/StackspotAIWidget.js +22 -15
  10. package/dist/StackspotAIWidget.js.map +1 -1
  11. package/dist/app-metadata.json +171 -0
  12. package/dist/assets/placeholder.png +0 -0
  13. package/dist/chat-interceptors/CustomInputs.d.ts +22 -0
  14. package/dist/chat-interceptors/CustomInputs.d.ts.map +1 -0
  15. package/dist/chat-interceptors/CustomInputs.js +71 -0
  16. package/dist/chat-interceptors/CustomInputs.js.map +1 -0
  17. package/dist/chat-interceptors/quick-command-questions.d.ts +14 -0
  18. package/dist/chat-interceptors/quick-command-questions.d.ts.map +1 -0
  19. package/dist/chat-interceptors/quick-command-questions.js +28 -0
  20. package/dist/chat-interceptors/quick-command-questions.js.map +1 -0
  21. package/dist/chat-interceptors/quick-commands.d.ts +14 -1
  22. package/dist/chat-interceptors/quick-commands.d.ts.map +1 -1
  23. package/dist/chat-interceptors/quick-commands.js +442 -8
  24. package/dist/chat-interceptors/quick-commands.js.map +1 -1
  25. package/dist/chat-interceptors/send-message.d.ts +27 -2
  26. package/dist/chat-interceptors/send-message.d.ts.map +1 -1
  27. package/dist/chat-interceptors/send-message.js +230 -29
  28. package/dist/chat-interceptors/send-message.js.map +1 -1
  29. package/dist/components/AdaptiveTextArea.d.ts +15 -3
  30. package/dist/components/AdaptiveTextArea.d.ts.map +1 -1
  31. package/dist/components/AdaptiveTextArea.js +22 -10
  32. package/dist/components/AdaptiveTextArea.js.map +1 -1
  33. package/dist/components/AgentCard/AgentCardCreate.d.ts +4 -0
  34. package/dist/components/AgentCard/AgentCardCreate.d.ts.map +1 -0
  35. package/dist/components/AgentCard/AgentCardCreate.js +33 -0
  36. package/dist/components/AgentCard/AgentCardCreate.js.map +1 -0
  37. package/dist/components/AgentCard/dictionary.d.ts +23 -0
  38. package/dist/components/AgentCard/dictionary.d.ts.map +1 -0
  39. package/dist/components/AgentCard/dictionary.js +23 -0
  40. package/dist/components/AgentCard/dictionary.js.map +1 -0
  41. package/dist/components/AgentCard/index.d.ts +5 -0
  42. package/dist/components/AgentCard/index.d.ts.map +1 -0
  43. package/dist/components/AgentCard/index.js +55 -0
  44. package/dist/components/AgentCard/index.js.map +1 -0
  45. package/dist/components/AnimatedOpacity.d.ts +8 -0
  46. package/dist/components/AnimatedOpacity.d.ts.map +1 -0
  47. package/dist/components/AnimatedOpacity.js +46 -0
  48. package/dist/components/AnimatedOpacity.js.map +1 -0
  49. package/dist/components/AutoFocus.d.ts +23 -0
  50. package/dist/components/AutoFocus.d.ts.map +1 -0
  51. package/dist/components/AutoFocus.js +23 -0
  52. package/dist/components/AutoFocus.js.map +1 -0
  53. package/dist/components/ButtonFavorite.d.ts +40 -0
  54. package/dist/components/ButtonFavorite.d.ts.map +1 -0
  55. package/dist/components/ButtonFavorite.js +25 -0
  56. package/dist/components/ButtonFavorite.js.map +1 -0
  57. package/dist/components/Code.d.ts +2 -1
  58. package/dist/components/Code.d.ts.map +1 -1
  59. package/dist/components/Code.js +52 -24
  60. package/dist/components/Code.js.map +1 -1
  61. package/dist/components/ComponentNavigator.d.ts +38 -0
  62. package/dist/components/ComponentNavigator.d.ts.map +1 -0
  63. package/dist/components/ComponentNavigator.js +31 -0
  64. package/dist/components/ComponentNavigator.js.map +1 -0
  65. package/dist/components/Fading.d.ts +32 -0
  66. package/dist/components/Fading.d.ts.map +1 -0
  67. package/dist/components/Fading.js +33 -0
  68. package/dist/components/Fading.js.map +1 -0
  69. package/dist/components/FadingOverflow.d.ts +25 -0
  70. package/dist/components/FadingOverflow.d.ts.map +1 -1
  71. package/dist/components/FadingOverflow.js +16 -8
  72. package/dist/components/FadingOverflow.js.map +1 -1
  73. package/dist/components/FileDescription.d.ts +10 -0
  74. package/dist/components/FileDescription.d.ts.map +1 -0
  75. package/dist/components/FileDescription.js +84 -0
  76. package/dist/components/FileDescription.js.map +1 -0
  77. package/dist/components/HistoryList.d.ts +15 -0
  78. package/dist/components/HistoryList.d.ts.map +1 -1
  79. package/dist/components/HistoryList.js +6 -2
  80. package/dist/components/HistoryList.js.map +1 -1
  81. package/dist/components/ListResource.d.ts +29 -0
  82. package/dist/components/ListResource.d.ts.map +1 -0
  83. package/dist/components/ListResource.js +17 -0
  84. package/dist/components/ListResource.js.map +1 -0
  85. package/dist/components/Markdown.d.ts.map +1 -1
  86. package/dist/components/Markdown.js +2 -2
  87. package/dist/components/Markdown.js.map +1 -1
  88. package/dist/components/Modal.d.ts +9 -0
  89. package/dist/components/Modal.d.ts.map +1 -0
  90. package/dist/components/Modal.js +56 -0
  91. package/dist/components/Modal.js.map +1 -0
  92. package/dist/components/QuickStartButton.d.ts +2 -4
  93. package/dist/components/QuickStartButton.d.ts.map +1 -1
  94. package/dist/components/QuickStartButton.js +7 -39
  95. package/dist/components/QuickStartButton.js.map +1 -1
  96. package/dist/components/RightPanelContentList.d.ts +10 -0
  97. package/dist/components/RightPanelContentList.d.ts.map +1 -0
  98. package/dist/components/RightPanelContentList.js +7 -0
  99. package/dist/components/RightPanelContentList.js.map +1 -0
  100. package/dist/components/RightPanelForm.d.ts +3 -0
  101. package/dist/components/RightPanelForm.d.ts.map +1 -1
  102. package/dist/components/RightPanelForm.js +57 -17
  103. package/dist/components/RightPanelForm.js.map +1 -1
  104. package/dist/components/RightPanelTabs.d.ts +4 -4
  105. package/dist/components/RightPanelTabs.d.ts.map +1 -1
  106. package/dist/components/RightPanelTabs.js +7 -16
  107. package/dist/components/RightPanelTabs.js.map +1 -1
  108. package/dist/components/Selector/index.d.ts +54 -0
  109. package/dist/components/Selector/index.d.ts.map +1 -0
  110. package/dist/components/Selector/index.js +143 -0
  111. package/dist/components/Selector/index.js.map +1 -0
  112. package/dist/components/Selector/styled.d.ts +4 -0
  113. package/dist/components/Selector/styled.d.ts.map +1 -0
  114. package/dist/components/Selector/styled.js +157 -0
  115. package/dist/components/Selector/styled.js.map +1 -0
  116. package/dist/components/StackedBadge.d.ts +14 -0
  117. package/dist/components/StackedBadge.d.ts.map +1 -0
  118. package/dist/components/StackedBadge.js +56 -0
  119. package/dist/components/StackedBadge.js.map +1 -0
  120. package/dist/components/TabManager.d.ts +6 -0
  121. package/dist/components/TabManager.d.ts.map +1 -1
  122. package/dist/components/TabManager.js +16 -28
  123. package/dist/components/TabManager.js.map +1 -1
  124. package/dist/components/ToolBadge.d.ts +9 -0
  125. package/dist/components/ToolBadge.d.ts.map +1 -0
  126. package/dist/components/ToolBadge.js +34 -0
  127. package/dist/components/ToolBadge.js.map +1 -0
  128. package/dist/components/WorkspaceTabNavigator.d.ts +17 -0
  129. package/dist/components/WorkspaceTabNavigator.d.ts.map +1 -0
  130. package/dist/components/WorkspaceTabNavigator.js +93 -0
  131. package/dist/components/WorkspaceTabNavigator.js.map +1 -0
  132. package/dist/components/form/DescribedCheckboxGroup.d.ts +30 -2
  133. package/dist/components/form/DescribedCheckboxGroup.d.ts.map +1 -1
  134. package/dist/components/form/DescribedCheckboxGroup.js +75 -21
  135. package/dist/components/form/DescribedCheckboxGroup.js.map +1 -1
  136. package/dist/components/form/DescribedRadioGroup.d.ts +31 -2
  137. package/dist/components/form/DescribedRadioGroup.d.ts.map +1 -1
  138. package/dist/components/form/DescribedRadioGroup.js +65 -16
  139. package/dist/components/form/DescribedRadioGroup.js.map +1 -1
  140. package/dist/components/form/dictionary.d.ts +19 -0
  141. package/dist/components/form/dictionary.d.ts.map +1 -0
  142. package/dist/components/form/dictionary.js +19 -0
  143. package/dist/components/form/dictionary.js.map +1 -0
  144. package/dist/components/form/styled.d.ts.map +1 -1
  145. package/dist/components/form/styled.js +1 -2
  146. package/dist/components/form/styled.js.map +1 -1
  147. package/dist/components/form/types.d.ts +42 -0
  148. package/dist/components/form/types.d.ts.map +1 -1
  149. package/dist/context/AIWidgetProvider.d.ts +19 -0
  150. package/dist/context/AIWidgetProvider.d.ts.map +1 -1
  151. package/dist/context/AIWidgetProvider.js +19 -0
  152. package/dist/context/AIWidgetProvider.js.map +1 -1
  153. package/dist/context/hooks.d.ts +61 -4
  154. package/dist/context/hooks.d.ts.map +1 -1
  155. package/dist/context/hooks.js +83 -13
  156. package/dist/context/hooks.js.map +1 -1
  157. package/dist/features.d.ts +72 -10
  158. package/dist/features.d.ts.map +1 -1
  159. package/dist/features.js +23 -8
  160. package/dist/features.js.map +1 -1
  161. package/dist/hooks/midnight-update-view.d.ts +5 -0
  162. package/dist/hooks/midnight-update-view.d.ts.map +1 -0
  163. package/dist/hooks/midnight-update-view.js +30 -0
  164. package/dist/hooks/midnight-update-view.js.map +1 -0
  165. package/dist/index.d.ts +12 -0
  166. package/dist/index.d.ts.map +1 -1
  167. package/dist/index.js +7 -0
  168. package/dist/index.js.map +1 -1
  169. package/dist/layout.css +95 -28
  170. package/dist/regex.d.ts +3 -0
  171. package/dist/regex.d.ts.map +1 -0
  172. package/dist/regex.js +3 -0
  173. package/dist/regex.js.map +1 -0
  174. package/dist/right-panel/DefaultPanel.d.ts +3 -0
  175. package/dist/right-panel/DefaultPanel.d.ts.map +1 -1
  176. package/dist/right-panel/DefaultPanel.js +5 -4
  177. package/dist/right-panel/DefaultPanel.js.map +1 -1
  178. package/dist/right-panel/RightPanel.d.ts +3 -0
  179. package/dist/right-panel/RightPanel.d.ts.map +1 -1
  180. package/dist/right-panel/RightPanel.js +3 -0
  181. package/dist/right-panel/RightPanel.js.map +1 -1
  182. package/dist/right-panel/RightPanelProvider.d.ts +15 -0
  183. package/dist/right-panel/RightPanelProvider.d.ts.map +1 -1
  184. package/dist/right-panel/RightPanelProvider.js.map +1 -1
  185. package/dist/right-panel/constants.d.ts +2 -0
  186. package/dist/right-panel/constants.d.ts.map +1 -0
  187. package/dist/right-panel/constants.js +2 -0
  188. package/dist/right-panel/constants.js.map +1 -0
  189. package/dist/right-panel/hooks.d.ts +6 -0
  190. package/dist/right-panel/hooks.d.ts.map +1 -1
  191. package/dist/right-panel/hooks.js +8 -1
  192. package/dist/right-panel/hooks.js.map +1 -1
  193. package/dist/state/ChatEntry.d.ts +189 -15
  194. package/dist/state/ChatEntry.d.ts.map +1 -1
  195. package/dist/state/ChatEntry.js +29 -18
  196. package/dist/state/ChatEntry.js.map +1 -1
  197. package/dist/state/ChatState.d.ts +129 -15
  198. package/dist/state/ChatState.d.ts.map +1 -1
  199. package/dist/state/ChatState.js +87 -11
  200. package/dist/state/ChatState.js.map +1 -1
  201. package/dist/state/ChatTabsController.d.ts +50 -1
  202. package/dist/state/ChatTabsController.d.ts.map +1 -1
  203. package/dist/state/ChatTabsController.js +77 -8
  204. package/dist/state/ChatTabsController.js.map +1 -1
  205. package/dist/state/ObservableState.d.ts +15 -1
  206. package/dist/state/ObservableState.d.ts.map +1 -1
  207. package/dist/state/ObservableState.js +14 -0
  208. package/dist/state/ObservableState.js.map +1 -1
  209. package/dist/state/WidgetState.d.ts +62 -2
  210. package/dist/state/WidgetState.d.ts.map +1 -1
  211. package/dist/state/WidgetState.js +49 -2
  212. package/dist/state/WidgetState.js.map +1 -1
  213. package/dist/state/constants.d.ts +5 -0
  214. package/dist/state/constants.d.ts.map +1 -0
  215. package/dist/state/constants.js +10 -0
  216. package/dist/state/constants.js.map +1 -0
  217. package/dist/state/types.d.ts +10 -1
  218. package/dist/state/types.d.ts.map +1 -1
  219. package/dist/types.d.ts +20 -4
  220. package/dist/types.d.ts.map +1 -1
  221. package/dist/utils/chat.d.ts +11 -4
  222. package/dist/utils/chat.d.ts.map +1 -1
  223. package/dist/utils/chat.js +15 -12
  224. package/dist/utils/chat.js.map +1 -1
  225. package/dist/utils/check-is-trial.d.ts +2 -0
  226. package/dist/utils/check-is-trial.d.ts.map +1 -0
  227. package/dist/utils/check-is-trial.js +6 -0
  228. package/dist/utils/check-is-trial.js.map +1 -0
  229. package/dist/utils/copy-to-clipboard.d.ts +6 -0
  230. package/dist/utils/copy-to-clipboard.d.ts.map +1 -0
  231. package/dist/utils/copy-to-clipboard.js +30 -0
  232. package/dist/utils/copy-to-clipboard.js.map +1 -0
  233. package/dist/utils/date.d.ts +26 -2
  234. package/dist/utils/date.d.ts.map +1 -1
  235. package/dist/utils/date.js +28 -3
  236. package/dist/utils/date.js.map +1 -1
  237. package/dist/utils/download.d.ts +5 -0
  238. package/dist/utils/download.d.ts.map +1 -1
  239. package/dist/utils/download.js +5 -0
  240. package/dist/utils/download.js.map +1 -1
  241. package/dist/utils/error.d.ts +2 -0
  242. package/dist/utils/error.d.ts.map +1 -0
  243. package/dist/utils/error.js +54 -0
  244. package/dist/utils/error.js.map +1 -0
  245. package/dist/utils/knowledge-source.d.ts +12 -2
  246. package/dist/utils/knowledge-source.d.ts.map +1 -1
  247. package/dist/utils/knowledge-source.js +20 -6
  248. package/dist/utils/knowledge-source.js.map +1 -1
  249. package/dist/utils/planning-tool.d.ts +17 -0
  250. package/dist/utils/planning-tool.d.ts.map +1 -0
  251. package/dist/utils/planning-tool.js +32 -0
  252. package/dist/utils/planning-tool.js.map +1 -0
  253. package/dist/utils/programming-languages.d.ts +1 -0
  254. package/dist/utils/programming-languages.d.ts.map +1 -1
  255. package/dist/utils/programming-languages.js +11 -0
  256. package/dist/utils/programming-languages.js.map +1 -1
  257. package/dist/utils/string.d.ts +7 -0
  258. package/dist/utils/string.d.ts.map +1 -0
  259. package/dist/utils/string.js +11 -0
  260. package/dist/utils/string.js.map +1 -0
  261. package/dist/utils/tools.d.ts +23 -0
  262. package/dist/utils/tools.d.ts.map +1 -0
  263. package/dist/utils/tools.js +23 -0
  264. package/dist/utils/tools.js.map +1 -0
  265. package/dist/utils/update-tool-step.d.ts +3 -0
  266. package/dist/utils/update-tool-step.d.ts.map +1 -0
  267. package/dist/utils/update-tool-step.js +23 -0
  268. package/dist/utils/update-tool-step.js.map +1 -0
  269. package/dist/utils/upload/FileUpload.d.ts +21 -0
  270. package/dist/utils/upload/FileUpload.d.ts.map +1 -0
  271. package/dist/utils/upload/FileUpload.js +54 -0
  272. package/dist/utils/upload/FileUpload.js.map +1 -0
  273. package/dist/utils/upload/UploadManager.d.ts +42 -0
  274. package/dist/utils/upload/UploadManager.d.ts.map +1 -0
  275. package/dist/utils/upload/UploadManager.js +138 -0
  276. package/dist/utils/upload/UploadManager.js.map +1 -0
  277. package/dist/utils/upload/context.d.ts +15 -0
  278. package/dist/utils/upload/context.d.ts.map +1 -0
  279. package/dist/utils/upload/context.js +37 -0
  280. package/dist/utils/upload/context.js.map +1 -0
  281. package/dist/utils/upload/errors.d.ts +17 -0
  282. package/dist/utils/upload/errors.d.ts.map +1 -0
  283. package/dist/utils/upload/errors.js +27 -0
  284. package/dist/utils/upload/errors.js.map +1 -0
  285. package/dist/utils/upload/types.d.ts +7 -0
  286. package/dist/utils/upload/types.d.ts.map +1 -0
  287. package/dist/{components/Tooltip → utils/upload}/types.js.map +1 -1
  288. package/dist/utils/upload/use-paste-upload.d.ts +8 -0
  289. package/dist/utils/upload/use-paste-upload.d.ts.map +1 -0
  290. package/dist/utils/upload/use-paste-upload.js +19 -0
  291. package/dist/utils/upload/use-paste-upload.js.map +1 -0
  292. package/dist/utils/upload/utils.d.ts +4 -0
  293. package/dist/utils/upload/utils.d.ts.map +1 -0
  294. package/dist/utils/upload/utils.js +10 -0
  295. package/dist/utils/upload/utils.js.map +1 -0
  296. package/dist/utils/url.d.ts +2 -0
  297. package/dist/utils/url.d.ts.map +1 -0
  298. package/dist/utils/url.js +8 -0
  299. package/dist/utils/url.js.map +1 -0
  300. package/dist/views/Agents/AgentDescription.d.ts +4 -0
  301. package/dist/views/Agents/AgentDescription.d.ts.map +1 -0
  302. package/dist/views/Agents/AgentDescription.js +38 -0
  303. package/dist/views/Agents/AgentDescription.js.map +1 -0
  304. package/dist/views/Agents/AgentsPanel.d.ts +5 -0
  305. package/dist/views/Agents/AgentsPanel.d.ts.map +1 -0
  306. package/dist/views/Agents/AgentsPanel.js +45 -0
  307. package/dist/views/Agents/AgentsPanel.js.map +1 -0
  308. package/dist/views/Agents/AgentsTab.d.ts +11 -0
  309. package/dist/views/Agents/AgentsTab.d.ts.map +1 -0
  310. package/dist/views/Agents/AgentsTab.js +82 -0
  311. package/dist/views/Agents/AgentsTab.js.map +1 -0
  312. package/dist/views/Agents/dictionary.d.ts +2 -0
  313. package/dist/views/Agents/dictionary.d.ts.map +1 -0
  314. package/dist/views/Agents/dictionary.js +43 -0
  315. package/dist/views/Agents/dictionary.js.map +1 -0
  316. package/dist/views/Agents/index.d.ts +5 -0
  317. package/dist/views/Agents/index.d.ts.map +1 -0
  318. package/dist/views/Agents/index.js +21 -0
  319. package/dist/views/Agents/index.js.map +1 -0
  320. package/dist/views/Agents/styled.d.ts +3 -0
  321. package/dist/views/Agents/styled.d.ts.map +1 -0
  322. package/dist/views/Agents/styled.js +68 -0
  323. package/dist/views/Agents/styled.js.map +1 -0
  324. package/dist/views/Agents/useAgentFavorites.d.ts +8 -0
  325. package/dist/views/Agents/useAgentFavorites.d.ts.map +1 -0
  326. package/dist/views/Agents/useAgentFavorites.js +59 -0
  327. package/dist/views/Agents/useAgentFavorites.js.map +1 -0
  328. package/dist/views/Chat/AgentInfo.d.ts +5 -1
  329. package/dist/views/Chat/AgentInfo.d.ts.map +1 -1
  330. package/dist/views/Chat/AgentInfo.js +6 -5
  331. package/dist/views/Chat/AgentInfo.js.map +1 -1
  332. package/dist/views/Chat/ButtonExecutionDetail.d.ts +5 -0
  333. package/dist/views/Chat/ButtonExecutionDetail.d.ts.map +1 -0
  334. package/dist/views/Chat/ButtonExecutionDetail.js +34 -0
  335. package/dist/views/Chat/ButtonExecutionDetail.js.map +1 -0
  336. package/dist/views/Chat/ChatMessage.d.ts +57 -4
  337. package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
  338. package/dist/views/Chat/ChatMessage.js +167 -20
  339. package/dist/views/Chat/ChatMessage.js.map +1 -1
  340. package/dist/views/Chat/ChatMessages.d.ts +6 -2
  341. package/dist/views/Chat/ChatMessages.d.ts.map +1 -1
  342. package/dist/views/Chat/ChatMessages.js +5 -2
  343. package/dist/views/Chat/ChatMessages.js.map +1 -1
  344. package/dist/views/Chat/StepsList.d.ts +14 -0
  345. package/dist/views/Chat/StepsList.d.ts.map +1 -0
  346. package/dist/views/Chat/StepsList.js +192 -0
  347. package/dist/views/Chat/StepsList.js.map +1 -0
  348. package/dist/views/Chat/chat-scroll.d.ts +1 -1
  349. package/dist/views/Chat/chat-scroll.js +1 -1
  350. package/dist/views/Chat/events.d.ts +22 -0
  351. package/dist/views/Chat/events.d.ts.map +1 -0
  352. package/dist/views/Chat/events.js +67 -0
  353. package/dist/views/Chat/events.js.map +1 -0
  354. package/dist/views/Chat/index.d.ts +9 -2
  355. package/dist/views/Chat/index.d.ts.map +1 -1
  356. package/dist/views/Chat/index.js +5 -2
  357. package/dist/views/Chat/index.js.map +1 -1
  358. package/dist/views/Chat/styled.d.ts +3 -1
  359. package/dist/views/Chat/styled.d.ts.map +1 -1
  360. package/dist/views/Chat/styled.js +183 -31
  361. package/dist/views/Chat/styled.js.map +1 -1
  362. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts +4 -4
  363. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts.map +1 -1
  364. package/dist/views/ChatHistory/ChatHistoryPanel.js +6 -2
  365. package/dist/views/ChatHistory/ChatHistoryPanel.js.map +1 -1
  366. package/dist/views/ChatHistory/HistoryItem.d.ts +4 -3
  367. package/dist/views/ChatHistory/HistoryItem.d.ts.map +1 -1
  368. package/dist/views/ChatHistory/HistoryItem.js +16 -37
  369. package/dist/views/ChatHistory/HistoryItem.js.map +1 -1
  370. package/dist/views/ChatHistory/dictionary.d.ts +1 -1
  371. package/dist/views/ChatHistory/index.d.ts +4 -4
  372. package/dist/views/ChatHistory/index.d.ts.map +1 -1
  373. package/dist/views/ChatHistory/index.js +6 -3
  374. package/dist/views/ChatHistory/index.js.map +1 -1
  375. package/dist/views/ChatHistory/styled.d.ts.map +1 -1
  376. package/dist/views/ChatHistory/styled.js +3 -5
  377. package/dist/views/ChatHistory/styled.js.map +1 -1
  378. package/dist/views/ChatHistory/utils.d.ts +17 -2
  379. package/dist/views/ChatHistory/utils.d.ts.map +1 -1
  380. package/dist/views/ChatHistory/utils.js +140 -9
  381. package/dist/views/ChatHistory/utils.js.map +1 -1
  382. package/dist/views/ChatTabSelection.d.ts +6 -4
  383. package/dist/views/ChatTabSelection.d.ts.map +1 -1
  384. package/dist/views/ChatTabSelection.js +40 -15
  385. package/dist/views/ChatTabSelection.js.map +1 -1
  386. package/dist/views/Editor.d.ts +3 -0
  387. package/dist/views/Editor.d.ts.map +1 -1
  388. package/dist/views/Editor.js +26 -20
  389. package/dist/views/Editor.js.map +1 -1
  390. package/dist/views/Home/BuiltInAgent.d.ts +6 -0
  391. package/dist/views/Home/BuiltInAgent.d.ts.map +1 -0
  392. package/dist/views/Home/BuiltInAgent.js +37 -0
  393. package/dist/views/Home/BuiltInAgent.js.map +1 -0
  394. package/dist/views/Home/CustomAgent.d.ts +5 -0
  395. package/dist/views/Home/CustomAgent.d.ts.map +1 -0
  396. package/dist/views/Home/CustomAgent.js +23 -0
  397. package/dist/views/Home/CustomAgent.js.map +1 -0
  398. package/dist/views/Home/index.d.ts +8 -0
  399. package/dist/views/Home/index.d.ts.map +1 -0
  400. package/dist/views/Home/index.js +34 -0
  401. package/dist/views/Home/index.js.map +1 -0
  402. package/dist/views/Home/styled.d.ts +2 -0
  403. package/dist/views/Home/styled.d.ts.map +1 -0
  404. package/dist/views/Home/styled.js +74 -0
  405. package/dist/views/Home/styled.js.map +1 -0
  406. package/dist/views/Home/types.d.ts +16 -0
  407. package/dist/views/Home/types.d.ts.map +1 -0
  408. package/dist/views/Home/types.js +2 -0
  409. package/dist/views/Home/types.js.map +1 -0
  410. package/dist/views/KSDocument.d.ts +3 -0
  411. package/dist/views/KSDocument.d.ts.map +1 -1
  412. package/dist/views/KSDocument.js +7 -4
  413. package/dist/views/KSDocument.js.map +1 -1
  414. package/dist/views/KnowledgeSources.d.ts +12 -0
  415. package/dist/views/KnowledgeSources.d.ts.map +1 -1
  416. package/dist/views/KnowledgeSources.js +123 -33
  417. package/dist/views/KnowledgeSources.js.map +1 -1
  418. package/dist/views/MessageInput/AgentSelector.d.ts +5 -0
  419. package/dist/views/MessageInput/AgentSelector.d.ts.map +1 -0
  420. package/dist/views/MessageInput/AgentSelector.js +66 -0
  421. package/dist/views/MessageInput/AgentSelector.js.map +1 -0
  422. package/dist/views/MessageInput/ButtonAgent.d.ts +2 -0
  423. package/dist/views/MessageInput/ButtonAgent.d.ts.map +1 -0
  424. package/dist/views/MessageInput/ButtonAgent.js +35 -0
  425. package/dist/views/MessageInput/ButtonAgent.js.map +1 -0
  426. package/dist/views/MessageInput/ButtonBar.d.ts +13 -0
  427. package/dist/views/MessageInput/ButtonBar.d.ts.map +1 -0
  428. package/dist/views/MessageInput/ButtonBar.js +15 -0
  429. package/dist/views/MessageInput/ButtonBar.js.map +1 -0
  430. package/dist/views/MessageInput/ContextBar.d.ts +9 -0
  431. package/dist/views/MessageInput/ContextBar.d.ts.map +1 -0
  432. package/dist/views/MessageInput/ContextBar.js +51 -0
  433. package/dist/views/MessageInput/ContextBar.js.map +1 -0
  434. package/dist/views/MessageInput/ModelSwitcher/index.d.ts +2 -0
  435. package/dist/views/MessageInput/ModelSwitcher/index.d.ts.map +1 -0
  436. package/dist/views/MessageInput/ModelSwitcher/index.js +25 -0
  437. package/dist/views/MessageInput/ModelSwitcher/index.js.map +1 -0
  438. package/dist/views/MessageInput/ModelSwitcher/utils.d.ts +30 -0
  439. package/dist/views/MessageInput/ModelSwitcher/utils.d.ts.map +1 -0
  440. package/dist/views/MessageInput/ModelSwitcher/utils.js +91 -0
  441. package/dist/views/MessageInput/ModelSwitcher/utils.js.map +1 -0
  442. package/dist/views/MessageInput/QuickCommandSelector.d.ts +5 -0
  443. package/dist/views/MessageInput/QuickCommandSelector.d.ts.map +1 -0
  444. package/dist/views/MessageInput/QuickCommandSelector.js +104 -0
  445. package/dist/views/MessageInput/QuickCommandSelector.js.map +1 -0
  446. package/dist/views/MessageInput/SelectContent.d.ts +2 -0
  447. package/dist/views/MessageInput/SelectContent.d.ts.map +1 -0
  448. package/dist/views/MessageInput/SelectContent.js +84 -0
  449. package/dist/views/MessageInput/SelectContent.js.map +1 -0
  450. package/dist/views/MessageInput/UploadBar.d.ts +2 -0
  451. package/dist/views/MessageInput/UploadBar.d.ts.map +1 -0
  452. package/dist/views/MessageInput/UploadBar.js +74 -0
  453. package/dist/views/MessageInput/UploadBar.js.map +1 -0
  454. package/dist/views/MessageInput/UploadDragNDrop.d.ts +14 -0
  455. package/dist/views/MessageInput/UploadDragNDrop.d.ts.map +1 -0
  456. package/dist/views/MessageInput/UploadDragNDrop.js +51 -0
  457. package/dist/views/MessageInput/UploadDragNDrop.js.map +1 -0
  458. package/dist/views/MessageInput/chat-entry-history.d.ts +11 -0
  459. package/dist/views/MessageInput/chat-entry-history.d.ts.map +1 -0
  460. package/dist/views/MessageInput/chat-entry-history.js +78 -0
  461. package/dist/views/MessageInput/chat-entry-history.js.map +1 -0
  462. package/dist/views/MessageInput/dictionary.d.ts +1 -1
  463. package/dist/views/MessageInput/dictionary.d.ts.map +1 -1
  464. package/dist/views/MessageInput/dictionary.js +52 -10
  465. package/dist/views/MessageInput/dictionary.js.map +1 -1
  466. package/dist/views/MessageInput/index.d.ts +9 -6
  467. package/dist/views/MessageInput/index.d.ts.map +1 -1
  468. package/dist/views/MessageInput/index.js +116 -20
  469. package/dist/views/MessageInput/index.js.map +1 -1
  470. package/dist/views/MessageInput/styled.d.ts +13 -1
  471. package/dist/views/MessageInput/styled.d.ts.map +1 -1
  472. package/dist/views/MessageInput/styled.js +223 -85
  473. package/dist/views/MessageInput/styled.js.map +1 -1
  474. package/dist/views/MinimizedHeader.d.ts +4 -0
  475. package/dist/views/MinimizedHeader.d.ts.map +1 -1
  476. package/dist/views/MinimizedHeader.js +9 -7
  477. package/dist/views/MinimizedHeader.js.map +1 -1
  478. package/dist/views/Resources.d.ts +2 -0
  479. package/dist/views/Resources.d.ts.map +1 -0
  480. package/dist/views/Resources.js +69 -0
  481. package/dist/views/Resources.js.map +1 -0
  482. package/dist/views/Stacks.d.ts +12 -0
  483. package/dist/views/Stacks.d.ts.map +1 -1
  484. package/dist/views/Stacks.js +117 -21
  485. package/dist/views/Stacks.js.map +1 -1
  486. package/dist/views/Steps/FlowChart/HandleGroup.d.ts +10 -0
  487. package/dist/views/Steps/FlowChart/HandleGroup.d.ts.map +1 -0
  488. package/dist/views/Steps/FlowChart/HandleGroup.js +4 -0
  489. package/dist/views/Steps/FlowChart/HandleGroup.js.map +1 -0
  490. package/dist/views/Steps/FlowChart/NodeDynamic.d.ts +15 -0
  491. package/dist/views/Steps/FlowChart/NodeDynamic.d.ts.map +1 -0
  492. package/dist/views/Steps/FlowChart/NodeDynamic.js +41 -0
  493. package/dist/views/Steps/FlowChart/NodeDynamic.js.map +1 -0
  494. package/dist/views/Steps/FlowChart/NodeStep.d.ts +10 -0
  495. package/dist/views/Steps/FlowChart/NodeStep.d.ts.map +1 -0
  496. package/dist/views/Steps/FlowChart/NodeStep.js +13 -0
  497. package/dist/views/Steps/FlowChart/NodeStep.js.map +1 -0
  498. package/dist/views/Steps/FlowChart/hooks.d.ts +7 -0
  499. package/dist/views/Steps/FlowChart/hooks.d.ts.map +1 -0
  500. package/dist/views/Steps/FlowChart/hooks.js +31 -0
  501. package/dist/views/Steps/FlowChart/hooks.js.map +1 -0
  502. package/dist/views/Steps/FlowChart/index.d.ts +12 -0
  503. package/dist/views/Steps/FlowChart/index.d.ts.map +1 -0
  504. package/dist/views/Steps/FlowChart/index.js +78 -0
  505. package/dist/views/Steps/FlowChart/index.js.map +1 -0
  506. package/dist/views/Steps/FlowChart/layout.d.ts +8 -0
  507. package/dist/views/Steps/FlowChart/layout.d.ts.map +1 -0
  508. package/dist/views/Steps/FlowChart/layout.js +59 -0
  509. package/dist/views/Steps/FlowChart/layout.js.map +1 -0
  510. package/dist/views/Steps/FlowChart/styled.d.ts +14 -0
  511. package/dist/views/Steps/FlowChart/styled.d.ts.map +1 -0
  512. package/dist/views/Steps/FlowChart/styled.js +156 -0
  513. package/dist/views/Steps/FlowChart/styled.js.map +1 -0
  514. package/dist/views/Steps/FlowChart/types.d.ts +25 -0
  515. package/dist/views/Steps/FlowChart/types.d.ts.map +1 -0
  516. package/dist/views/Steps/FlowChart/types.js +2 -0
  517. package/dist/views/Steps/FlowChart/types.js.map +1 -0
  518. package/dist/views/Steps/StepModal.d.ts +10 -0
  519. package/dist/views/Steps/StepModal.d.ts.map +1 -0
  520. package/dist/views/Steps/StepModal.js +139 -0
  521. package/dist/views/Steps/StepModal.js.map +1 -0
  522. package/dist/views/Steps/StepsPanel.d.ts +6 -0
  523. package/dist/views/Steps/StepsPanel.d.ts.map +1 -0
  524. package/dist/views/Steps/StepsPanel.js +18 -0
  525. package/dist/views/Steps/StepsPanel.js.map +1 -0
  526. package/dist/views/Steps/dictionary.d.ts +43 -0
  527. package/dist/views/Steps/dictionary.d.ts.map +1 -0
  528. package/dist/views/Steps/dictionary.js +45 -0
  529. package/dist/views/Steps/dictionary.js.map +1 -0
  530. package/dist/views/Steps/index.d.ts +5 -0
  531. package/dist/views/Steps/index.d.ts.map +1 -0
  532. package/dist/views/Steps/index.js +30 -0
  533. package/dist/views/Steps/index.js.map +1 -0
  534. package/dist/views/Steps/utils.d.ts +7 -0
  535. package/dist/views/Steps/utils.d.ts.map +1 -0
  536. package/dist/views/Steps/utils.js +32 -0
  537. package/dist/views/Steps/utils.js.map +1 -0
  538. package/dist/views/Tools.d.ts +2 -0
  539. package/dist/views/Tools.d.ts.map +1 -0
  540. package/dist/views/Tools.js +53 -0
  541. package/dist/views/Tools.js.map +1 -0
  542. package/dist/views/Workspaces/WorkspacesTab.d.ts +20 -0
  543. package/dist/views/Workspaces/WorkspacesTab.d.ts.map +1 -0
  544. package/dist/views/Workspaces/WorkspacesTab.js +61 -0
  545. package/dist/views/Workspaces/WorkspacesTab.js.map +1 -0
  546. package/dist/views/Workspaces/index.d.ts +5 -0
  547. package/dist/views/Workspaces/index.d.ts.map +1 -0
  548. package/dist/views/Workspaces/index.js +69 -0
  549. package/dist/views/Workspaces/index.js.map +1 -0
  550. package/package.dev.json +3 -0
  551. package/package.json +20 -13
  552. package/package.stg.json +4 -0
  553. package/scripts/package-override.js +105 -0
  554. package/src/AbortedError.ts +7 -0
  555. package/src/StackspotAIWidget.tsx +96 -27
  556. package/src/app-metadata.json +171 -0
  557. package/src/assets/placeholder.png +0 -0
  558. package/src/chat-interceptors/CustomInputs.ts +83 -0
  559. package/src/chat-interceptors/quick-command-questions.ts +25 -0
  560. package/src/chat-interceptors/quick-commands.ts +503 -7
  561. package/src/chat-interceptors/send-message.ts +256 -28
  562. package/src/components/AdaptiveTextArea.tsx +36 -11
  563. package/src/components/AgentCard/AgentCardCreate.tsx +42 -0
  564. package/src/components/AgentCard/dictionary.ts +25 -0
  565. package/src/components/AgentCard/index.tsx +82 -0
  566. package/src/components/AnimatedOpacity.tsx +55 -0
  567. package/src/components/AutoFocus.tsx +42 -0
  568. package/src/components/ButtonFavorite.tsx +78 -0
  569. package/src/components/Code.tsx +94 -59
  570. package/src/components/ComponentNavigator.tsx +99 -0
  571. package/src/components/Fading.tsx +66 -0
  572. package/src/components/FadingOverflow.tsx +39 -12
  573. package/src/components/FileDescription.tsx +118 -0
  574. package/src/components/HistoryList.tsx +19 -2
  575. package/src/components/ListResource.tsx +60 -0
  576. package/src/components/Markdown.tsx +2 -1
  577. package/src/components/Modal.tsx +85 -0
  578. package/src/components/QuickStartButton.tsx +15 -47
  579. package/src/components/RightPanelContentList.tsx +15 -0
  580. package/src/components/RightPanelForm.tsx +64 -22
  581. package/src/components/RightPanelTabs.tsx +7 -32
  582. package/src/components/Selector/index.tsx +312 -0
  583. package/src/components/Selector/styled.ts +158 -0
  584. package/src/components/StackedBadge.tsx +77 -0
  585. package/src/components/TabManager.tsx +36 -36
  586. package/src/components/ToolBadge.tsx +67 -0
  587. package/src/components/WorkspaceTabNavigator.tsx +172 -0
  588. package/src/components/form/DescribedCheckboxGroup.tsx +135 -33
  589. package/src/components/form/DescribedRadioGroup.tsx +136 -32
  590. package/src/components/form/dictionary.ts +18 -0
  591. package/src/components/form/styled.ts +1 -2
  592. package/src/components/form/types.ts +45 -1
  593. package/src/context/AIWidgetProvider.tsx +19 -0
  594. package/src/context/hooks.ts +86 -16
  595. package/src/features.ts +90 -16
  596. package/src/hooks/midnight-update-view.ts +36 -0
  597. package/src/images.d.ts +5 -0
  598. package/src/index.ts +16 -0
  599. package/src/layout.css +95 -28
  600. package/src/regex.ts +2 -0
  601. package/src/right-panel/DefaultPanel.tsx +7 -7
  602. package/src/right-panel/RightPanel.tsx +3 -0
  603. package/src/right-panel/RightPanelProvider.tsx +15 -0
  604. package/src/right-panel/constants.ts +1 -0
  605. package/src/right-panel/hooks.tsx +8 -1
  606. package/src/state/ChatEntry.ts +194 -27
  607. package/src/state/ChatState.ts +172 -17
  608. package/src/state/ChatTabsController.ts +78 -8
  609. package/src/state/ObservableState.ts +15 -1
  610. package/src/state/WidgetState.ts +86 -3
  611. package/src/state/constants.ts +13 -0
  612. package/src/state/types.ts +12 -1
  613. package/src/types.ts +21 -4
  614. package/src/utils/chat.ts +17 -15
  615. package/src/utils/check-is-trial.ts +6 -0
  616. package/src/utils/copy-to-clipboard.ts +29 -0
  617. package/src/utils/date.ts +28 -4
  618. package/src/utils/download.ts +5 -0
  619. package/src/utils/error.ts +56 -0
  620. package/src/utils/knowledge-source.ts +22 -8
  621. package/src/utils/planning-tool.ts +41 -0
  622. package/src/utils/programming-languages.ts +12 -0
  623. package/src/utils/string.ts +10 -0
  624. package/src/utils/tools.ts +32 -0
  625. package/src/utils/update-tool-step.tsx +27 -0
  626. package/src/utils/upload/FileUpload.ts +63 -0
  627. package/src/utils/upload/UploadManager.ts +156 -0
  628. package/src/utils/upload/context.tsx +44 -0
  629. package/src/utils/upload/errors.ts +34 -0
  630. package/src/utils/upload/types.ts +7 -0
  631. package/src/utils/upload/use-paste-upload.tsx +30 -0
  632. package/src/utils/upload/utils.ts +12 -0
  633. package/src/utils/url.ts +8 -0
  634. package/src/views/Agents/AgentDescription.tsx +107 -0
  635. package/src/views/Agents/AgentsPanel.tsx +57 -0
  636. package/src/views/Agents/AgentsTab.tsx +126 -0
  637. package/src/views/Agents/dictionary.ts +45 -0
  638. package/src/views/Agents/index.tsx +26 -0
  639. package/src/views/Agents/styled.ts +69 -0
  640. package/src/views/Agents/useAgentFavorites.ts +63 -0
  641. package/src/views/Chat/AgentInfo.tsx +13 -8
  642. package/src/views/Chat/ButtonExecutionDetail.tsx +46 -0
  643. package/src/views/Chat/ChatMessage.tsx +472 -56
  644. package/src/views/Chat/ChatMessages.tsx +18 -4
  645. package/src/views/Chat/StepsList.tsx +394 -0
  646. package/src/views/Chat/chat-scroll.ts +1 -1
  647. package/src/views/Chat/events.ts +71 -0
  648. package/src/views/Chat/index.tsx +17 -3
  649. package/src/views/Chat/styled.ts +189 -32
  650. package/src/views/ChatHistory/ChatHistoryPanel.tsx +8 -5
  651. package/src/views/ChatHistory/HistoryItem.tsx +23 -44
  652. package/src/views/ChatHistory/index.tsx +6 -4
  653. package/src/views/ChatHistory/styled.ts +3 -5
  654. package/src/views/ChatHistory/utils.ts +144 -11
  655. package/src/views/ChatTabSelection.tsx +47 -20
  656. package/src/views/Editor.tsx +31 -22
  657. package/src/views/Home/BuiltInAgent.tsx +67 -0
  658. package/src/views/Home/CustomAgent.tsx +36 -0
  659. package/src/views/Home/index.tsx +48 -0
  660. package/src/views/Home/styled.ts +74 -0
  661. package/src/views/Home/types.ts +16 -0
  662. package/src/views/KSDocument.tsx +11 -8
  663. package/src/views/KnowledgeSources.tsx +169 -62
  664. package/src/views/MessageInput/AgentSelector.tsx +92 -0
  665. package/src/views/MessageInput/ButtonAgent.tsx +73 -0
  666. package/src/views/MessageInput/ButtonBar.tsx +57 -0
  667. package/src/views/MessageInput/ContextBar.tsx +117 -0
  668. package/src/views/MessageInput/ModelSwitcher/index.tsx +69 -0
  669. package/src/views/MessageInput/ModelSwitcher/utils.tsx +143 -0
  670. package/src/views/MessageInput/QuickCommandSelector.tsx +137 -0
  671. package/src/views/MessageInput/SelectContent.tsx +99 -0
  672. package/src/views/MessageInput/UploadBar.tsx +107 -0
  673. package/src/views/MessageInput/UploadDragNDrop.tsx +79 -0
  674. package/src/views/MessageInput/chat-entry-history.ts +97 -0
  675. package/src/views/MessageInput/dictionary.ts +52 -10
  676. package/src/views/MessageInput/index.tsx +158 -51
  677. package/src/views/MessageInput/styled.ts +226 -85
  678. package/src/views/MinimizedHeader.tsx +11 -10
  679. package/src/views/Resources.tsx +108 -0
  680. package/src/views/Stacks.tsx +152 -39
  681. package/src/views/Steps/FlowChart/HandleGroup.tsx +14 -0
  682. package/src/views/Steps/FlowChart/NodeDynamic.tsx +97 -0
  683. package/src/views/Steps/FlowChart/NodeStep.tsx +49 -0
  684. package/src/views/Steps/FlowChart/hooks.ts +41 -0
  685. package/src/views/Steps/FlowChart/index.tsx +111 -0
  686. package/src/views/Steps/FlowChart/layout.ts +73 -0
  687. package/src/views/Steps/FlowChart/styled.ts +157 -0
  688. package/src/views/Steps/FlowChart/types.ts +28 -0
  689. package/src/views/Steps/StepModal.tsx +233 -0
  690. package/src/views/Steps/StepsPanel.tsx +31 -0
  691. package/src/views/Steps/dictionary.ts +48 -0
  692. package/src/views/Steps/index.tsx +36 -0
  693. package/src/views/Steps/utils.tsx +34 -0
  694. package/src/views/Tools.tsx +77 -0
  695. package/src/views/Workspaces/WorkspacesTab.tsx +116 -0
  696. package/src/views/Workspaces/index.tsx +78 -0
  697. package/tsconfig.json +8 -3
  698. package/dist/components/Accordion.d.ts +0 -10
  699. package/dist/components/Accordion.d.ts.map +0 -1
  700. package/dist/components/Accordion.js +0 -46
  701. package/dist/components/Accordion.js.map +0 -1
  702. package/dist/components/Editor.d.ts +0 -9
  703. package/dist/components/Editor.d.ts.map +0 -1
  704. package/dist/components/Editor.js +0 -2
  705. package/dist/components/Editor.js.map +0 -1
  706. package/dist/components/FallbackBoundary/ErrorBoundary.d.ts +0 -30
  707. package/dist/components/FallbackBoundary/ErrorBoundary.d.ts.map +0 -1
  708. package/dist/components/FallbackBoundary/ErrorBoundary.js +0 -38
  709. package/dist/components/FallbackBoundary/ErrorBoundary.js.map +0 -1
  710. package/dist/components/FallbackBoundary/Loading.d.ts +0 -2
  711. package/dist/components/FallbackBoundary/Loading.d.ts.map +0 -1
  712. package/dist/components/FallbackBoundary/Loading.js +0 -12
  713. package/dist/components/FallbackBoundary/Loading.js.map +0 -1
  714. package/dist/components/FallbackBoundary/index.d.ts +0 -6
  715. package/dist/components/FallbackBoundary/index.d.ts.map +0 -1
  716. package/dist/components/FallbackBoundary/index.js +0 -9
  717. package/dist/components/FallbackBoundary/index.js.map +0 -1
  718. package/dist/components/IconInput.d.ts +0 -7
  719. package/dist/components/IconInput.d.ts.map +0 -1
  720. package/dist/components/IconInput.js +0 -58
  721. package/dist/components/IconInput.js.map +0 -1
  722. package/dist/components/OverlayMenu.d.ts +0 -10
  723. package/dist/components/OverlayMenu.d.ts.map +0 -1
  724. package/dist/components/OverlayMenu.js +0 -58
  725. package/dist/components/OverlayMenu.js.map +0 -1
  726. package/dist/components/ProgressBar.d.ts +0 -11
  727. package/dist/components/ProgressBar.d.ts.map +0 -1
  728. package/dist/components/ProgressBar.js +0 -126
  729. package/dist/components/ProgressBar.js.map +0 -1
  730. package/dist/components/Tooltip/Tooltip.d.ts +0 -12
  731. package/dist/components/Tooltip/Tooltip.d.ts.map +0 -1
  732. package/dist/components/Tooltip/Tooltip.js +0 -17
  733. package/dist/components/Tooltip/Tooltip.js.map +0 -1
  734. package/dist/components/Tooltip/TooltipAPI.d.ts +0 -13
  735. package/dist/components/Tooltip/TooltipAPI.d.ts.map +0 -1
  736. package/dist/components/Tooltip/TooltipAPI.js +0 -90
  737. package/dist/components/Tooltip/TooltipAPI.js.map +0 -1
  738. package/dist/components/Tooltip/context.d.ts +0 -5
  739. package/dist/components/Tooltip/context.d.ts.map +0 -1
  740. package/dist/components/Tooltip/context.js +0 -18
  741. package/dist/components/Tooltip/context.js.map +0 -1
  742. package/dist/components/Tooltip/index.d.ts +0 -3
  743. package/dist/components/Tooltip/index.d.ts.map +0 -1
  744. package/dist/components/Tooltip/index.js +0 -3
  745. package/dist/components/Tooltip/index.js.map +0 -1
  746. package/dist/components/Tooltip/style.d.ts +0 -4
  747. package/dist/components/Tooltip/style.d.ts.map +0 -1
  748. package/dist/components/Tooltip/style.js +0 -22
  749. package/dist/components/Tooltip/style.js.map +0 -1
  750. package/dist/components/Tooltip/types.d.ts +0 -14
  751. package/dist/components/Tooltip/types.d.ts.map +0 -1
  752. package/dist/views/Agents.d.ts +0 -2
  753. package/dist/views/Agents.d.ts.map +0 -1
  754. package/dist/views/Agents.js +0 -143
  755. package/dist/views/Agents.js.map +0 -1
  756. package/dist/views/Home.d.ts +0 -6
  757. package/dist/views/Home.d.ts.map +0 -1
  758. package/dist/views/Home.js +0 -68
  759. package/dist/views/Home.js.map +0 -1
  760. package/dist/views/MessageInput/ButtonGroup.d.ts +0 -12
  761. package/dist/views/MessageInput/ButtonGroup.d.ts.map +0 -1
  762. package/dist/views/MessageInput/ButtonGroup.js +0 -24
  763. package/dist/views/MessageInput/ButtonGroup.js.map +0 -1
  764. package/dist/views/MessageInput/InfoBar.d.ts +0 -2
  765. package/dist/views/MessageInput/InfoBar.d.ts.map +0 -1
  766. package/dist/views/MessageInput/InfoBar.js +0 -35
  767. package/dist/views/MessageInput/InfoBar.js.map +0 -1
  768. package/dist/views/Workspaces.d.ts +0 -2
  769. package/dist/views/Workspaces.d.ts.map +0 -1
  770. package/dist/views/Workspaces.js +0 -62
  771. package/dist/views/Workspaces.js.map +0 -1
  772. package/src/components/Accordion.tsx +0 -64
  773. package/src/components/Editor.tsx +0 -12
  774. package/src/components/FallbackBoundary/ErrorBoundary.tsx +0 -48
  775. package/src/components/FallbackBoundary/Loading.tsx +0 -14
  776. package/src/components/FallbackBoundary/index.tsx +0 -15
  777. package/src/components/IconInput.tsx +0 -70
  778. package/src/components/OverlayMenu.tsx +0 -77
  779. package/src/components/ProgressBar.tsx +0 -153
  780. package/src/components/Tooltip/Tooltip.tsx +0 -36
  781. package/src/components/Tooltip/TooltipAPI.ts +0 -84
  782. package/src/components/Tooltip/context.tsx +0 -24
  783. package/src/components/Tooltip/index.ts +0 -2
  784. package/src/components/Tooltip/style.tsx +0 -24
  785. package/src/components/Tooltip/types.ts +0 -15
  786. package/src/views/Agents.tsx +0 -200
  787. package/src/views/Home.tsx +0 -109
  788. package/src/views/MessageInput/ButtonGroup.tsx +0 -91
  789. package/src/views/MessageInput/InfoBar.tsx +0 -82
  790. package/src/views/Workspaces.tsx +0 -92
  791. /package/dist/{components/Tooltip → utils/upload}/types.js +0 -0
@@ -1,46 +1,112 @@
1
- import { last, pull } from 'lodash'
1
+ import { groupBy, last, pull } from 'lodash'
2
2
  import { ChatState } from './ChatState'
3
3
 
4
- type TabChangeListener = (chats: ChatState[], activeId: string) => void
4
+ type TabChangeListener = (chats: ChatState[], active: ChatState) => void
5
5
 
6
+ /**
7
+ * Controls the chat tabs.
8
+ */
6
9
  export class ChatTabsController {
7
10
  private chats: ChatState[] = []
8
11
  private activeChatId = ''
9
12
  private listeners: TabChangeListener[] = []
10
13
 
11
14
  private runListeners() {
12
- this.listeners.forEach(l => l(this.chats, this.activeChatId))
15
+ this.listeners.forEach(l => l(this.chats, this.getActiveChat()))
13
16
  }
14
17
 
18
+ /**
19
+ * Adds new chats to the tab view.
20
+ * @param chats the chats to add.
21
+ */
15
22
  add(...chats: ChatState[]) {
16
23
  if (!chats.length) return
17
24
  this.chats = [...this.chats, ...chats]
18
25
  this.runListeners()
19
26
  }
20
27
 
21
- remove(...ids: string[]) {
22
- if (this.chats.length <= 1 || !ids.length) return
23
- const currentActiveIndex = this.chats.findIndex(c => c.id === this.activeChatId)
24
- this.chats = this.chats.filter(c => !ids.includes(c.id))
25
- if (ids.includes(this.activeChatId)) {
28
+ /**
29
+ * If the active chat is deleted, this selects a new chat based on the position of the chat that has been removed.
30
+ *
31
+ * @param previous the previous tabs.
32
+ * @param deleted the ids of the chats that have been deleted.
33
+ */
34
+ private reselect(previous: ChatState[], deleted: string[]) {
35
+ if (deleted.includes(this.activeChatId)) {
36
+ const currentActiveIndex = previous.findIndex(c => c.id === this.activeChatId)
26
37
  if (currentActiveIndex === -1) this.activeChatId = this.chats[0]?.id
27
38
  this.activeChatId = currentActiveIndex < this.chats.length ? this.chats[currentActiveIndex].id : last(this.chats)?.id ?? ''
28
39
  }
40
+ }
41
+
42
+ /**
43
+ * Removes chats from the tab view. This will never remove a chat if this chat is the last one.
44
+ *
45
+ * @param ids the ids of the chats to remove.
46
+ */
47
+ remove(...ids: string[]) {
48
+ ids.splice(this.chats.length - 1, ids.length - this.chats.length)
49
+ if (!ids.length) return
50
+ const previous = this.chats
51
+ this.chats = this.chats.filter(c => !ids.includes(c.id))
52
+ this.reselect(previous, ids)
29
53
  this.runListeners()
30
54
  }
31
55
 
56
+ /**
57
+ * Removes all empty chats. The last chat will be kept if it's empty, but the only chat remaining.
58
+ *
59
+ * @param exceptions ids of chats that shouldn't be removed even if empty.
60
+ */
61
+ removeEmptyChats(...exceptions: string[]) {
62
+ const lastChat = last(this.chats)
63
+ const previous = this.chats
64
+ const { true: removed, false: kept = [] } = groupBy(this.chats, c => c.getMessages().length === 0 && !exceptions.includes(c.id))
65
+ if (removed) {
66
+ this.chats = kept
67
+ if (lastChat && this.chats.length === 0) this.chats.push(lastChat)
68
+ this.reselect(previous, removed.map(c => c.id))
69
+ this.runListeners()
70
+ }
71
+ }
72
+
73
+ /**
74
+ * @param id the id of the chat to retrieve.
75
+ * @returns a ChatState corresponding to the id.
76
+ */
32
77
  get(id: string) {
33
78
  return this.chats.find(c => c.id === id)
34
79
  }
35
80
 
81
+ /**
82
+ * @returns the id of the chat corresponding to the tab that is currently active.
83
+ */
36
84
  getActiveChatId() {
37
85
  return this.activeChatId
38
86
  }
39
87
 
88
+ /**
89
+ * @returns the chat corresponding to the tab that is currently active.
90
+ */
91
+ getActiveChat() {
92
+ const chat = this.chats.find(c => c.id === this.activeChatId)
93
+ if (!chat) throw new Error('Chat state error, the active chat id corresponds to none chat in the tabs.')
94
+ return chat
95
+ }
96
+
97
+ /**
98
+ * @returns all chats in tab view.
99
+ */
40
100
  getAll() {
41
101
  return this.chats
42
102
  }
43
103
 
104
+ /**
105
+ * Watches for changes in the tab view.
106
+ * @param listener a function called whenever a tab is added, removed or selected. This function receives the list of chats as the first
107
+ * parameter and the id of the active chat as the second parameter.
108
+ * @returns a function to remove the listener.
109
+ */
44
110
  onChange(listener: TabChangeListener) {
45
111
  this.listeners.push(listener)
46
112
  return () => {
@@ -48,6 +114,10 @@ export class ChatTabsController {
48
114
  }
49
115
  }
50
116
 
117
+ /**
118
+ * Changes the chat (tab) that is currently active.
119
+ * @param id the id of the chat to select.
120
+ */
51
121
  select(id: string) {
52
122
  this.activeChatId = id
53
123
  this.runListeners()
@@ -6,8 +6,16 @@ type Listeners<T> = {
6
6
  [K in keyof T]?: ((value: T[K]) => void)[]
7
7
  }
8
8
 
9
+ /**
10
+ * A generic representation of a state that can be observed for changes.
11
+ *
12
+ * Building our own state instead of using React is important because:
13
+ * 1. We need to be able to control it even outside the react context.
14
+ * 2. We need performance, we can't have everything re-rendering because something changes. We need to be careful to watch only the
15
+ * properties we need in a component.
16
+ */
9
17
  export class ObservableState<T> {
10
- private state: T
18
+ protected state: T
11
19
  private listeners: Listeners<T> = {}
12
20
 
13
21
  constructor(initial: T) {
@@ -25,6 +33,12 @@ export class ObservableState<T> {
25
33
  return this.state[key]
26
34
  }
27
35
 
36
+ /**
37
+ * Watches for changes in the state referred by the provided key.
38
+ * @param key the key of the state to watch.
39
+ * @param listener a function called whenever the value of the state referred by `key` changes.
40
+ * @returns a function to remove the listener.
41
+ */
28
42
  onChange<K extends keyof T>(key: K, listener: (value: T[K]) => void) {
29
43
  this.listeners[key] ??= []
30
44
  this.listeners[key]!.push(listener)
@@ -1,3 +1,11 @@
1
+ import { loader } from '@monaco-editor/react'
2
+ import { ulid } from 'ulid'
3
+ import { quickCommandQuestionsInterceptor } from '../chat-interceptors/quick-command-questions'
4
+ import { createQuickCommandInterceptor } from '../chat-interceptors/quick-commands'
5
+ import { sendMessageInterceptor } from '../chat-interceptors/send-message'
6
+ import { AIWidgetFeatures, ChatFeatures, getFeaturesWithDefaults, GlobalFeatures } from '../features'
7
+ import { ChatEntry } from './ChatEntry'
8
+ import { ChatPropertiesWithOptionalFeatures, ChatState, MessageInterceptor } from './ChatState'
1
9
  import { ChatTabsController } from './ChatTabsController'
2
10
  import { ObservableState } from './ObservableState'
3
11
 
@@ -5,22 +13,97 @@ export interface WidgetProperties {
5
13
  /**
6
14
  * Current content of the right panel. Undefined for closed right panel.
7
15
  */
8
- panel?: 'stack' | 'workspace' | 'agent' | 'ks' | 'editor' | 'history' | 'ks-details',
16
+ panel?: 'stack' | 'workspace' | 'agent' | 'ks' | 'editor' | 'history' | 'ks-details' | 'steps' | 'tools' | 'resources',
9
17
  /**
10
18
  * KS to use when the right panel "ks-details" is open.
11
19
  */
12
20
  currentKSInPanel?: { name: string, slug: string, score: number, documentId: string },
21
+ /**
22
+ * The message to show in the tools panel or the steps panel.
23
+ */
24
+ currentMessageInPanel?: { chatId: string, messageId: number },
13
25
  /**
14
26
  * Whether or not the widget is in its minimized version.
15
27
  */
16
28
  isMinimized?: boolean,
29
+ /**
30
+ * Global features of the chat widget. These features don't depend on the chat currently selected.
31
+ */
32
+ features: GlobalFeatures,
33
+ }
34
+
35
+ interface Options {
36
+ /**
37
+ * Chat interceptors allows you to intercept chat messages, interpret them, modify them and even change the chat flow. See
38
+ * {@link ChatState} for more details.
39
+ *
40
+ * These interceptors, in addition to the default interceptors, will be used when creating a new chat via `WidgetState#createChat`.
41
+ */
42
+ interceptors?: MessageInterceptor[],
43
+ /**
44
+ * Features to enable in the widget. If a feature is not set explicitly to false, it's interpreted as enabled.
45
+ *
46
+ * These features will be used when creating a new chat via `WidgetState#createChat`. Updating chat features only influence new chats.
47
+ */
48
+ features?: Partial<AIWidgetFeatures>,
49
+ /**
50
+ * The initial values for the widget state.
51
+ *
52
+ * The default value for each feature under `initial.features` is true.
53
+ */
54
+ initial?: Omit<WidgetProperties, 'features'>,
55
+ /**
56
+ * The initial tabs for the chat window.
57
+ */
58
+ chatTabs?: ChatTabsController,
17
59
  }
18
60
 
61
+ /**
62
+ * Holds the full state of the AI Chat Widget.
63
+ *
64
+ * This can be used to fully control the chat widget. This is the model of what gets rendered to the screen.
65
+ */
19
66
  export class WidgetState extends ObservableState<WidgetProperties> {
20
67
  readonly chatTabs: ChatTabsController
68
+ /**
69
+ * Chat interceptors to be used by default when creating a new chat.
70
+ */
71
+ interceptors: MessageInterceptor[] = []
72
+ /**
73
+ * Chat features to be used by default when creating a new chat.
74
+ */
75
+ chatFeatures: ChatFeatures
21
76
 
22
- constructor(initial: WidgetProperties = {}, chatTabs?: ChatTabsController) {
23
- super(initial)
77
+ constructor({ chatTabs, initial, interceptors = [], features }: Options = {}) {
78
+ const featuresWithDefaults = getFeaturesWithDefaults(features)
79
+ super({ ...initial, features: featuresWithDefaults })
80
+ this.chatFeatures = featuresWithDefaults
24
81
  this.chatTabs = chatTabs ?? new ChatTabsController()
82
+ this.interceptors = [
83
+ ...interceptors,
84
+ quickCommandQuestionsInterceptor,
85
+ createQuickCommandInterceptor(this, () => loader.__getMonacoInstance()?.editor),
86
+ sendMessageInterceptor,
87
+ ],
88
+ this.createChat()
89
+ }
90
+
91
+ /**
92
+ * Utility function for adding a new chat to the chat tabs. This also selects the new tab.
93
+ * @param properties the chat properties (initial state).
94
+ * @param entries the entries for the chat to start with.
95
+ * @returns the chat created.
96
+ */
97
+ createChat({ label, ...properties }: Partial<ChatPropertiesWithOptionalFeatures> = {}, entries: ChatEntry[] = []) {
98
+ const chat = new ChatState({
99
+ id: ulid(),
100
+ initial: { label: label || 'Chat', features: this.chatFeatures, ...properties },
101
+ entries,
102
+ interceptors: this.interceptors,
103
+ untitled: !label,
104
+ })
105
+ this.chatTabs.add(chat)
106
+ this.chatTabs.select(chat.id)
107
+ return chat
25
108
  }
26
109
  }
@@ -0,0 +1,13 @@
1
+ import { FileSize } from './types'
2
+
3
+ export const acceptedFileTypes = [
4
+ 'json', 'yaml', 'txt', 'md', 'json', 'yaml', 'pdf', /*'xls',*/ 'xlsx', 'csv', 'cbl', 'cpp', 'cxx', 'cc', 'c', 'hpp', 'hxx', 'hh', 'h',
5
+ 'cs', 'go', 'html', 'htm', 'kt', 'kts', 'md', 'php', 'proto', 'py', 'java', 'js', 'jsx', 'ts', 'tsx', 'rst', 'rb', 'rs', 'scala', 'swift',
6
+ 'sql', 'yaml', 'yml', 'tf', 'sh', 'ps1', 'psd1', 'psm1', 'bat', 'cmd', 'rego', 'f', 'for', 'r', 'pl', 'vb', 'dart', 'hs', 'lua',
7
+ 'asm', 'groovy', 'gvy', 'gy', 'mat', 'clj', 'lisp', 'm', 'cls', 'css', 'scss', 'json', 'jpg', 'jpeg', 'png', 'docx', 'pptx',
8
+ 'tiff', 'tif', 'bmp',
9
+ ]
10
+
11
+ export const maxFileSize: FileSize = { value: 10, unit: 'MB' }
12
+
13
+ export const maxUploadItems = 5
@@ -4,5 +4,16 @@ export interface Labeled {
4
4
  }
5
5
 
6
6
  export interface LabeledWithImage extends Labeled {
7
- image?: string,
7
+ image?: string | undefined | null,
8
+ }
9
+
10
+ export interface LabeledAgent extends LabeledWithImage {
11
+ builtIn?: boolean,
12
+ slug?: string,
13
+ visibility_level?: string,
14
+ }
15
+
16
+ export interface FileSize {
17
+ value: number,
18
+ unit: 'B' | 'KB' | 'MB' | 'GB',
8
19
  }
package/src/types.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { WithIcon } from '@stack-spot/citric-icons'
2
+ import { BaseIconBoxProps } from '@stack-spot/citric-react'
1
3
  import { WithStyle } from '@stack-spot/portal-theme'
2
4
 
3
5
  export interface WithChildren<T = React.ReactNode> {
@@ -6,15 +8,30 @@ export interface WithChildren<T = React.ReactNode> {
6
8
 
7
9
  export type PropsOf<T extends React.FunctionComponent> = T extends React.FunctionComponent<infer P> ? P : never
8
10
 
9
- export interface ButtonAction extends WithStyle {
10
- icon?: React.ReactElement,
11
+ export type ButtonAction = {
11
12
  color?: string,
12
- label: string,
13
+ label?: string,
14
+ ariaLabel?: string,
15
+ title?: string,
13
16
  onClick: () => any,
14
- }
17
+ appearance?: BaseIconBoxProps<any, any>['appearance'],
18
+ size?: BaseIconBoxProps<any, any>['size'],
19
+ disabled?: boolean,
20
+ } & WithStyle & Partial<WithIcon>
21
+
15
22
 
16
23
  export interface MinimizedActions {
24
+ /**
25
+ * When the chat is minimized, a button to collapse the window is rendered. This function is called whenever this button is clicked.
26
+ */
17
27
  onCollapse?: () => void,
28
+ /**
29
+ * If `onCollapse` is clicked, the button to collapse is replaced by a button to expand. This function is called whenever the expand
30
+ * button is clicked.
31
+ */
18
32
  onExpand?: () => void,
33
+ /**
34
+ * When the chat is minimized, a button to close the window is rendered. This function is called whenever this button is clicked.
35
+ */
19
36
  onClose?: () => void,
20
37
  }
package/src/utils/chat.ts CHANGED
@@ -1,29 +1,31 @@
1
1
  import { FixedChatRequest } from '@stack-spot/portal-network'
2
- import { ulid } from 'ulid'
3
- import { ChatState, MessageInterceptor } from '../state/ChatState'
4
- import { WidgetState } from '../state/WidgetState'
2
+ import appData from '../app-metadata.json'
3
+ import { ChatEntry } from '../state/ChatEntry'
4
+ import { ChatState } from '../state/ChatState'
5
+ import { defaultLanguage } from './programming-languages'
5
6
 
6
- let next = 1
7
-
8
- export function createNewChat(widget: WidgetState, interceptors: MessageInterceptor[]) {
9
- const id = ulid()
10
- widget.chatTabs.add(new ChatState({ id, initial: { label: `Chat ${next}` }, interceptors }))
11
- widget.chatTabs.select(id)
12
- next++
13
- }
14
-
15
- export function buildConversationContext(state: ChatState): FixedChatRequest['context'] {
7
+ /**
8
+ * Builds a conversation context from a ChatState.
9
+ *
10
+ * The conversation context is needed by most backend services.
11
+ *
12
+ * @param state the ChatState to build the context from.
13
+ * @returns the conversation context ready to be sent to the backend.
14
+ */
15
+ export function buildConversationContext(state: ChatState, message?: ChatEntry): FixedChatRequest['context'] {
16
16
  return {
17
17
  workspace: state.get('workspace')?.id,
18
18
  conversation_id: state.id,
19
19
  stack_id: state.get('stack')?.id,
20
- language: state.get('codeLanguage'),
20
+ language: state.get('codeLanguage') || (state.get('codeSelection') ? defaultLanguage : undefined),
21
21
  knowledge_sources: state.get('knowledgeSources')?.map(ks => ks.id),
22
+ upload_ids: message?.getValue().upload?.map(f => f.id),
22
23
  agent_id: state.get('agent')?.id,
23
24
  agent_built_in: state.get('agent')?.builtIn,
24
25
  os: navigator.userAgent,
25
26
  platform: 'web-widget',
26
27
  platform_version: navigator.userAgent,
27
- stackspot_ai_version: 'alpha',
28
+ stackspot_ai_version: appData.version,
29
+ selected_model_id: state.get('selected_model_id'),
28
30
  }
29
31
  }
@@ -0,0 +1,6 @@
1
+ import { NetworkClient } from '@stack-spot/portal-network'
2
+
3
+ export const checkIsTrial = () => {
4
+ const trialInfo = NetworkClient.sessionManager?.getSession()?.getTokenData()?.trial_account_status
5
+ return !!trialInfo
6
+ }
@@ -0,0 +1,29 @@
1
+ function copyTextToClipboardFallback(text: string) {
2
+ const input = document.createElement('input')
3
+ input.value = text
4
+ input.style.position = 'absolute'
5
+ input.style.left = '-99999px'
6
+ document.body.appendChild(input)
7
+ input.select()
8
+
9
+ try {
10
+ document.execCommand('copy')
11
+ } catch {
12
+ /* empty */
13
+ }
14
+ finally {
15
+ document.body.removeChild(input)
16
+ }
17
+ }
18
+
19
+ /**
20
+ * Copies the provided text to the clipboard. If the Clipboard API is not supported,
21
+ * it falls back to using a hidden input element to perform the copy operation.
22
+ */
23
+ export async function copyTextToClipboardWithFallback(text: string) {
24
+ try {
25
+ await navigator.clipboard.writeText(text)
26
+ } catch {
27
+ copyTextToClipboardFallback(text)
28
+ }
29
+ }
package/src/utils/date.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Dictionary, Language, getLanguage, useLanguage } from '@stack-spot/portal-translate'
1
+ import { Dictionary, getLanguage, ptEn, useLanguage } from '@stack-spot/portal-translate'
2
2
 
3
3
  const OneDay = 24 * 60 * 60 * 1000
4
4
  const timeFormatOptions: Intl.DateTimeFormatOptions = { hour: '2-digit', minute:'2-digit' }
@@ -8,8 +8,18 @@ const fullFormatOptions: Intl.DateTimeFormatOptions = {
8
8
  month: 'long',
9
9
  }
10
10
 
11
-
12
- export function formatDateForChatMessage(date: Date, language: Language = getLanguage()) {
11
+ /**
12
+ * Formats a date to show at the footer of a chat message.
13
+ *
14
+ * @example
15
+ * - Today, 14:11
16
+ * - Yesterday, 09:00
17
+ * - October 26 at 10:53
18
+ * @param date the Date to format.
19
+ * @param language the language to use.
20
+ * @returns the formatted date.
21
+ */
22
+ export function formatDateForChatMessage(date: Date, language = getLanguage(ptEn)) {
13
23
  const formatted: string[] = []
14
24
  const now = new Date()
15
25
  const isToday = date.toDateString() === now.toDateString()
@@ -21,13 +31,27 @@ export function formatDateForChatMessage(date: Date, language: Language = getLan
21
31
  return formatted.join(', ')
22
32
  }
23
33
 
34
+ /**
35
+ * Uses the current language to format dates.
36
+ * @returns an object containing functions for formatting dates.
37
+ */
24
38
  export function useDateFormatter() {
25
- const language = useLanguage()
39
+ const language = useLanguage(ptEn)
26
40
  return {
41
+ /**
42
+ * @param date the date to format using {@link formatDateForChatMessage}.
43
+ * @returns the formatted date according to the current language. If the language changes, this result also changes.
44
+ */
27
45
  formatForChatMessage: (date: Date) => formatDateForChatMessage(date, language),
28
46
  }
29
47
  }
30
48
 
49
+ /**
50
+ * Subtracts `numberOfDays` from `date`.
51
+ * @param date
52
+ * @param numberOfDays
53
+ * @returns the resulting Date object.
54
+ */
31
55
  export function subtractDays(date: Date, numberOfDays: number) {
32
56
  return new Date(date.getTime() - 24 * numberOfDays * 60 * 60000)
33
57
  }
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Downloads `text` as a file named `filename`.
3
+ * @param filename the name of the file.
4
+ * @param text the content of the file.
5
+ */
1
6
  export function download(filename: string, text: string) {
2
7
  const element = document.createElement('a')
3
8
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text))
@@ -0,0 +1,56 @@
1
+ import { getLanguage, ptEn } from '@stack-spot/portal-translate'
2
+
3
+ const httpErrors: Record<'en' | 'pt', Record<number, string>> = {
4
+ en: {
5
+ 400: 'Bad Request',
6
+ 401: 'Unauthorized',
7
+ 403: 'Forbidden',
8
+ 404: 'Not Found',
9
+ 405: 'Method Not Allowed',
10
+ 406: 'Not Acceptable',
11
+ 408: 'Request Timeout',
12
+ 409: 'Conflict',
13
+ 410: 'Gone',
14
+ 411: 'Length Required',
15
+ 413: 'Payload Too Large',
16
+ 414: 'URI Too Long',
17
+ 415: 'Unsupported Media Type',
18
+ 429: 'Too Many Requests',
19
+ 500: 'Internal Server Error',
20
+ 501: 'Not Implemented',
21
+ 502: 'Bad Gateway',
22
+ 503: 'Service Unavailable',
23
+ 504: 'Gateway Timeout',
24
+ 505: 'HTTP Version Not Supported',
25
+ },
26
+ pt: {
27
+ 400: 'Requisição Inválida',
28
+ 401: 'Não Autorizado',
29
+ 403: 'Proibido',
30
+ 404: 'Não Encontrado',
31
+ 405: 'Método Não Permitido',
32
+ 406: 'Não Aceitável',
33
+ 408: 'Tempo de Requisição Esgotado',
34
+ 409: 'Conflito',
35
+ 410: 'Indisponível',
36
+ 411: 'Comprimento Necessário',
37
+ 413: 'Carga Muito Grande',
38
+ 414: 'URI Muito Longa',
39
+ 415: 'Tipo de Mídia Não Suportado',
40
+ 429: 'Muitas Requisições',
41
+ 500: 'Erro Interno do Servidor',
42
+ 501: 'Não Implementado',
43
+ 502: 'Gateway Inválido',
44
+ 503: 'Serviço Indisponível',
45
+ 504: 'Tempo de Gateway Esgotado',
46
+ 505: 'Versão HTTP Não Suportada',
47
+ },
48
+ }
49
+
50
+ function getGenericErrorBasedOnStatus(status: number) {
51
+ return httpErrors[getLanguage(ptEn)][status] ?? `Unknown error. Status code: ${status}.`
52
+ }
53
+
54
+ export function treatHTMLInErrorMessage(text: string, status: number) {
55
+ return (!text.includes('<html>')) ? text : getGenericErrorBasedOnStatus(status)
56
+ }
@@ -1,6 +1,12 @@
1
- import { DocumentResponse, SourceKnowledgeSource4, SourceProjectFile4, SourceStackAi } from '@stack-spot/portal-network/api/ai'
1
+ import { DocumentResponse, SourceKnowledgeSource, SourceProjectFile3, SourceStackAi } from '@stack-spot/portal-network/api/ai'
2
2
  import { KnowledgeSource } from '../state/ChatEntry'
3
3
 
4
+ /**
5
+ * A document can come from the backend as something that resembles a JSON, but it is not. This function attempts to solve some issues and
6
+ * still interpret as a JSON.
7
+ * @param str the malformed JSON.
8
+ * @returns the object corresponding to parsed JSON or undefined if it wasn't possible to fix it.
9
+ */
4
10
  function attemptToParseMalFormedJson(str: string) {
5
11
  try {
6
12
  return JSON.parse(str)
@@ -21,6 +27,11 @@ function attemptToParseMalFormedJson(str: string) {
21
27
  }
22
28
  }
23
29
 
30
+ /**
31
+ * Extracts the important part of a KS document to show for the user.
32
+ * @param document the document to parse.
33
+ * @returns an object containing the programming language of the KS, its code snippet and a textual description.
34
+ */
24
35
  export function extractCodeFromKSDocument(document: DocumentResponse): { language?: string, snippet: string, text?: string } {
25
36
  const language = (document?.metadata as any)?.language
26
37
  if (language) {
@@ -43,13 +54,16 @@ export function extractCodeFromKSDocument(document: DocumentResponse): { languag
43
54
  return typeof document === 'object' ? { language: 'json', snippet: JSON.stringify(document, null, 2) } : { snippet: String(document) }
44
55
  }
45
56
 
57
+ /**
58
+ * Extracts all knowledge sources from a mix of sources that can be used to shape an AI agent's answer.
59
+ * @param sources a list with sources of any kind.
60
+ * @returns a list of knowledge sources in the format expected by the chat.
61
+ */
46
62
  export function genericSourcesToKnowledgeSources(
47
- sources: (SourceStackAi | SourceKnowledgeSource4 | SourceProjectFile4)[] | undefined,
63
+ sources: (SourceStackAi | SourceKnowledgeSource | SourceProjectFile3)[] | undefined,
48
64
  ): KnowledgeSource[] | undefined {
49
- return sources?.filter(s => s.type === 'knowledge_source').map(ks => ({
50
- documentId: ks.document_id,
51
- documentScore: ks.document_score,
52
- name: ks.name,
53
- slug: ks.slug,
54
- }))
65
+ return sources?.filter(s => s.type === 'knowledge_source').map(ks => {
66
+ const { document_id: documentId, document_score: documentScore, name, slug } = ks as SourceKnowledgeSource
67
+ return { documentId, documentScore, name, slug }
68
+ })
55
69
  }
@@ -0,0 +1,41 @@
1
+ class PlanningToolDictionaryHelper {
2
+ static instance: PlanningToolDictionaryHelper | undefined
3
+ private toolExecutionIdPlanningStep: Record<string, string> = {}
4
+ private toolExecutionIdToolStep: Record<string, string> = {}
5
+ private stepId: Record<string, number> = {}
6
+
7
+ private constructor() {
8
+ PlanningToolDictionaryHelper.instance = this
9
+ }
10
+
11
+ static create() {
12
+ return PlanningToolDictionaryHelper.instance ?? new PlanningToolDictionaryHelper()
13
+ }
14
+
15
+ setMessageIdPlanningStepToolExecutionId(messageId: string, toolExecutionId: string){
16
+ this.toolExecutionIdPlanningStep[toolExecutionId] = messageId
17
+ }
18
+
19
+ setMessageIdToolStepToolExecutionId(messageId: string, toolExecutionId: string){
20
+ this.toolExecutionIdToolStep[toolExecutionId] = messageId
21
+ }
22
+
23
+ setMessageIdForStepId(messageId: number, stepId: string){
24
+ this.stepId[stepId] = messageId
25
+ }
26
+
27
+ getMessageIdFromStepId(stepId: string){
28
+ return this.stepId[stepId]
29
+ }
30
+
31
+ getMessageIdPlanningStepFromToolExecutionId(toolExecutionId: string){
32
+ return this.toolExecutionIdPlanningStep[toolExecutionId]
33
+ }
34
+
35
+ getMessageIdToolStepFromToolExecutionId(toolExecutionId: string){
36
+ return this.toolExecutionIdToolStep[toolExecutionId]
37
+ }
38
+ }
39
+
40
+ export const planningToolDictionaryHelper = PlanningToolDictionaryHelper.create()
41
+