@stack-spot/ai-chat-widget 0.11.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/StackspotAIWidget.d.ts +20 -0
  3. package/dist/StackspotAIWidget.d.ts.map +1 -1
  4. package/dist/StackspotAIWidget.js +7 -3
  5. package/dist/StackspotAIWidget.js.map +1 -1
  6. package/dist/chat-interceptors/CustomInputs.d.ts +4 -1
  7. package/dist/chat-interceptors/CustomInputs.d.ts.map +1 -1
  8. package/dist/chat-interceptors/CustomInputs.js +10 -1
  9. package/dist/chat-interceptors/CustomInputs.js.map +1 -1
  10. package/dist/chat-interceptors/quick-command-questions.d.ts +10 -0
  11. package/dist/chat-interceptors/quick-command-questions.d.ts.map +1 -1
  12. package/dist/chat-interceptors/quick-command-questions.js +12 -2
  13. package/dist/chat-interceptors/quick-command-questions.js.map +1 -1
  14. package/dist/chat-interceptors/quick-commands.d.ts +11 -0
  15. package/dist/chat-interceptors/quick-commands.d.ts.map +1 -1
  16. package/dist/chat-interceptors/quick-commands.js +65 -25
  17. package/dist/chat-interceptors/quick-commands.js.map +1 -1
  18. package/dist/chat-interceptors/send-message.d.ts +10 -0
  19. package/dist/chat-interceptors/send-message.d.ts.map +1 -1
  20. package/dist/chat-interceptors/send-message.js +32 -10
  21. package/dist/chat-interceptors/send-message.js.map +1 -1
  22. package/dist/components/Accordion.d.ts +10 -0
  23. package/dist/components/Accordion.d.ts.map +1 -1
  24. package/dist/components/Accordion.js +3 -0
  25. package/dist/components/Accordion.js.map +1 -1
  26. package/dist/components/AdaptiveTextArea.d.ts +13 -1
  27. package/dist/components/AdaptiveTextArea.d.ts.map +1 -1
  28. package/dist/components/AdaptiveTextArea.js +9 -4
  29. package/dist/components/AdaptiveTextArea.js.map +1 -1
  30. package/dist/components/AutoFocus.d.ts +23 -0
  31. package/dist/components/AutoFocus.d.ts.map +1 -0
  32. package/dist/components/AutoFocus.js +16 -0
  33. package/dist/components/AutoFocus.js.map +1 -0
  34. package/dist/components/Fading.d.ts +32 -0
  35. package/dist/components/Fading.d.ts.map +1 -0
  36. package/dist/components/Fading.js +33 -0
  37. package/dist/components/Fading.js.map +1 -0
  38. package/dist/components/FadingOverflow.d.ts +25 -0
  39. package/dist/components/FadingOverflow.d.ts.map +1 -1
  40. package/dist/components/FadingOverflow.js +11 -2
  41. package/dist/components/FadingOverflow.js.map +1 -1
  42. package/dist/components/FallbackBoundary/ErrorBoundary.d.ts +3 -0
  43. package/dist/components/FallbackBoundary/ErrorBoundary.d.ts.map +1 -1
  44. package/dist/components/FallbackBoundary/ErrorBoundary.js +18 -4
  45. package/dist/components/FallbackBoundary/ErrorBoundary.js.map +1 -1
  46. package/dist/components/FallbackBoundary/Loading.js +1 -1
  47. package/dist/components/FallbackBoundary/Loading.js.map +1 -1
  48. package/dist/components/FallbackBoundary/index.d.ts +12 -1
  49. package/dist/components/FallbackBoundary/index.d.ts.map +1 -1
  50. package/dist/components/FallbackBoundary/index.js +1 -1
  51. package/dist/components/FallbackBoundary/index.js.map +1 -1
  52. package/dist/components/HistoryList.d.ts +15 -0
  53. package/dist/components/HistoryList.d.ts.map +1 -1
  54. package/dist/components/HistoryList.js +3 -1
  55. package/dist/components/HistoryList.js.map +1 -1
  56. package/dist/components/IconInput.d.ts +3 -0
  57. package/dist/components/IconInput.d.ts.map +1 -1
  58. package/dist/components/IconInput.js +3 -0
  59. package/dist/components/IconInput.js.map +1 -1
  60. package/dist/components/OverlayMenu.d.ts +12 -1
  61. package/dist/components/OverlayMenu.d.ts.map +1 -1
  62. package/dist/components/OverlayMenu.js +31 -10
  63. package/dist/components/OverlayMenu.js.map +1 -1
  64. package/dist/components/ProgressBar.d.ts +22 -0
  65. package/dist/components/ProgressBar.d.ts.map +1 -1
  66. package/dist/components/ProgressBar.js +5 -0
  67. package/dist/components/ProgressBar.js.map +1 -1
  68. package/dist/components/QuickStartButton.d.ts.map +1 -1
  69. package/dist/components/QuickStartButton.js +3 -0
  70. package/dist/components/QuickStartButton.js.map +1 -1
  71. package/dist/components/RightPanelForm.d.ts +3 -0
  72. package/dist/components/RightPanelForm.d.ts.map +1 -1
  73. package/dist/components/RightPanelForm.js +8 -4
  74. package/dist/components/RightPanelForm.js.map +1 -1
  75. package/dist/components/RightPanelTabs.d.ts +3 -0
  76. package/dist/components/RightPanelTabs.d.ts.map +1 -1
  77. package/dist/components/RightPanelTabs.js +3 -0
  78. package/dist/components/RightPanelTabs.js.map +1 -1
  79. package/dist/components/TabManager.d.ts +6 -0
  80. package/dist/components/TabManager.d.ts.map +1 -1
  81. package/dist/components/TabManager.js +8 -0
  82. package/dist/components/TabManager.js.map +1 -1
  83. package/dist/components/Tooltip/Tooltip.d.ts +26 -1
  84. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
  85. package/dist/components/Tooltip/Tooltip.js +18 -5
  86. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  87. package/dist/components/Tooltip/TooltipAPI.d.ts +18 -2
  88. package/dist/components/Tooltip/TooltipAPI.d.ts.map +1 -1
  89. package/dist/components/Tooltip/TooltipAPI.js +68 -51
  90. package/dist/components/Tooltip/TooltipAPI.js.map +1 -1
  91. package/dist/components/Tooltip/types.d.ts +13 -0
  92. package/dist/components/Tooltip/types.d.ts.map +1 -1
  93. package/dist/components/form/DescribedCheckboxGroup.d.ts +4 -0
  94. package/dist/components/form/DescribedCheckboxGroup.d.ts.map +1 -1
  95. package/dist/components/form/DescribedCheckboxGroup.js +4 -0
  96. package/dist/components/form/DescribedCheckboxGroup.js.map +1 -1
  97. package/dist/components/form/DescribedRadioGroup.d.ts +4 -0
  98. package/dist/components/form/DescribedRadioGroup.d.ts.map +1 -1
  99. package/dist/components/form/DescribedRadioGroup.js +4 -0
  100. package/dist/components/form/DescribedRadioGroup.js.map +1 -1
  101. package/dist/components/form/types.d.ts +34 -0
  102. package/dist/components/form/types.d.ts.map +1 -1
  103. package/dist/context/AIWidgetProvider.d.ts +19 -0
  104. package/dist/context/AIWidgetProvider.d.ts.map +1 -1
  105. package/dist/context/AIWidgetProvider.js +19 -0
  106. package/dist/context/AIWidgetProvider.js.map +1 -1
  107. package/dist/context/hooks.d.ts +56 -0
  108. package/dist/context/hooks.d.ts.map +1 -1
  109. package/dist/context/hooks.js +56 -1
  110. package/dist/context/hooks.js.map +1 -1
  111. package/dist/features.d.ts +28 -0
  112. package/dist/features.d.ts.map +1 -1
  113. package/dist/features.js +1 -0
  114. package/dist/features.js.map +1 -1
  115. package/dist/layout.css +5 -0
  116. package/dist/regex.d.ts +2 -0
  117. package/dist/regex.d.ts.map +1 -0
  118. package/dist/regex.js +2 -0
  119. package/dist/regex.js.map +1 -0
  120. package/dist/right-panel/DefaultPanel.d.ts +3 -0
  121. package/dist/right-panel/DefaultPanel.d.ts.map +1 -1
  122. package/dist/right-panel/DefaultPanel.js +3 -0
  123. package/dist/right-panel/DefaultPanel.js.map +1 -1
  124. package/dist/right-panel/RightPanel.d.ts +3 -0
  125. package/dist/right-panel/RightPanel.d.ts.map +1 -1
  126. package/dist/right-panel/RightPanel.js +3 -0
  127. package/dist/right-panel/RightPanel.js.map +1 -1
  128. package/dist/right-panel/RightPanelProvider.d.ts +15 -0
  129. package/dist/right-panel/RightPanelProvider.d.ts.map +1 -1
  130. package/dist/right-panel/RightPanelProvider.js.map +1 -1
  131. package/dist/right-panel/constants.d.ts +2 -0
  132. package/dist/right-panel/constants.d.ts.map +1 -0
  133. package/dist/right-panel/constants.js +2 -0
  134. package/dist/right-panel/constants.js.map +1 -0
  135. package/dist/right-panel/hooks.d.ts +6 -0
  136. package/dist/right-panel/hooks.d.ts.map +1 -1
  137. package/dist/right-panel/hooks.js +8 -1
  138. package/dist/right-panel/hooks.js.map +1 -1
  139. package/dist/state/ChatEntry.d.ts +58 -2
  140. package/dist/state/ChatEntry.d.ts.map +1 -1
  141. package/dist/state/ChatEntry.js +20 -1
  142. package/dist/state/ChatEntry.js.map +1 -1
  143. package/dist/state/ChatState.d.ts +73 -8
  144. package/dist/state/ChatState.d.ts.map +1 -1
  145. package/dist/state/ChatState.js +24 -7
  146. package/dist/state/ChatState.js.map +1 -1
  147. package/dist/state/ChatTabsController.d.ts +31 -0
  148. package/dist/state/ChatTabsController.d.ts.map +1 -1
  149. package/dist/state/ChatTabsController.js +31 -0
  150. package/dist/state/ChatTabsController.js.map +1 -1
  151. package/dist/state/ObservableState.d.ts +14 -0
  152. package/dist/state/ObservableState.d.ts.map +1 -1
  153. package/dist/state/ObservableState.js +14 -0
  154. package/dist/state/ObservableState.js.map +1 -1
  155. package/dist/state/WidgetState.d.ts +5 -0
  156. package/dist/state/WidgetState.d.ts.map +1 -1
  157. package/dist/state/WidgetState.js +5 -0
  158. package/dist/state/WidgetState.js.map +1 -1
  159. package/dist/types.d.ts +10 -0
  160. package/dist/types.d.ts.map +1 -1
  161. package/dist/utils/chat.d.ts +13 -0
  162. package/dist/utils/chat.d.ts.map +1 -1
  163. package/dist/utils/chat.js +15 -1
  164. package/dist/utils/chat.js.map +1 -1
  165. package/dist/utils/date.d.ts +25 -0
  166. package/dist/utils/date.d.ts.map +1 -1
  167. package/dist/utils/date.js +25 -0
  168. package/dist/utils/date.js.map +1 -1
  169. package/dist/utils/download.d.ts +5 -0
  170. package/dist/utils/download.d.ts.map +1 -1
  171. package/dist/utils/download.js +5 -0
  172. package/dist/utils/download.js.map +1 -1
  173. package/dist/utils/knowledge-source.d.ts +10 -0
  174. package/dist/utils/knowledge-source.d.ts.map +1 -1
  175. package/dist/utils/knowledge-source.js +16 -0
  176. package/dist/utils/knowledge-source.js.map +1 -1
  177. package/dist/utils/string.d.ts +5 -0
  178. package/dist/utils/string.d.ts.map +1 -1
  179. package/dist/utils/string.js +5 -1
  180. package/dist/utils/string.js.map +1 -1
  181. package/dist/utils/url.d.ts +2 -0
  182. package/dist/utils/url.d.ts.map +1 -0
  183. package/dist/utils/url.js +8 -0
  184. package/dist/utils/url.js.map +1 -0
  185. package/dist/views/Agents.js +3 -0
  186. package/dist/views/Agents.js.map +1 -1
  187. package/dist/views/Chat/AgentInfo.d.ts +3 -0
  188. package/dist/views/Chat/AgentInfo.d.ts.map +1 -1
  189. package/dist/views/Chat/AgentInfo.js +3 -0
  190. package/dist/views/Chat/AgentInfo.js.map +1 -1
  191. package/dist/views/Chat/ChatMessage.d.ts +17 -2
  192. package/dist/views/Chat/ChatMessage.d.ts.map +1 -1
  193. package/dist/views/Chat/ChatMessage.js +9 -13
  194. package/dist/views/Chat/ChatMessage.js.map +1 -1
  195. package/dist/views/Chat/ChatMessages.d.ts +3 -0
  196. package/dist/views/Chat/ChatMessages.d.ts.map +1 -1
  197. package/dist/views/Chat/ChatMessages.js +3 -0
  198. package/dist/views/Chat/ChatMessages.js.map +1 -1
  199. package/dist/views/Chat/chat-scroll.d.ts +1 -1
  200. package/dist/views/Chat/chat-scroll.js +1 -1
  201. package/dist/views/Chat/events.d.ts +22 -0
  202. package/dist/views/Chat/events.d.ts.map +1 -0
  203. package/dist/views/Chat/events.js +66 -0
  204. package/dist/views/Chat/events.js.map +1 -0
  205. package/dist/views/Chat/index.d.ts +6 -0
  206. package/dist/views/Chat/index.d.ts.map +1 -1
  207. package/dist/views/Chat/index.js +3 -0
  208. package/dist/views/Chat/index.js.map +1 -1
  209. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts +3 -0
  210. package/dist/views/ChatHistory/ChatHistoryPanel.d.ts.map +1 -1
  211. package/dist/views/ChatHistory/ChatHistoryPanel.js +5 -1
  212. package/dist/views/ChatHistory/ChatHistoryPanel.js.map +1 -1
  213. package/dist/views/ChatHistory/HistoryItem.d.ts +3 -0
  214. package/dist/views/ChatHistory/HistoryItem.d.ts.map +1 -1
  215. package/dist/views/ChatHistory/HistoryItem.js +13 -1
  216. package/dist/views/ChatHistory/HistoryItem.js.map +1 -1
  217. package/dist/views/ChatHistory/index.d.ts +10 -2
  218. package/dist/views/ChatHistory/index.d.ts.map +1 -1
  219. package/dist/views/ChatHistory/index.js +3 -0
  220. package/dist/views/ChatHistory/index.js.map +1 -1
  221. package/dist/views/ChatHistory/utils.d.ts +14 -0
  222. package/dist/views/ChatHistory/utils.d.ts.map +1 -1
  223. package/dist/views/ChatHistory/utils.js +14 -0
  224. package/dist/views/ChatHistory/utils.js.map +1 -1
  225. package/dist/views/ChatTabSelection.d.ts +3 -0
  226. package/dist/views/ChatTabSelection.d.ts.map +1 -1
  227. package/dist/views/ChatTabSelection.js +3 -0
  228. package/dist/views/ChatTabSelection.js.map +1 -1
  229. package/dist/views/Editor.d.ts +3 -0
  230. package/dist/views/Editor.d.ts.map +1 -1
  231. package/dist/views/Editor.js +4 -0
  232. package/dist/views/Editor.js.map +1 -1
  233. package/dist/views/Home.d.ts +8 -0
  234. package/dist/views/Home.d.ts.map +1 -1
  235. package/dist/views/Home.js +5 -0
  236. package/dist/views/Home.js.map +1 -1
  237. package/dist/views/KSDocument.d.ts +3 -0
  238. package/dist/views/KSDocument.d.ts.map +1 -1
  239. package/dist/views/KSDocument.js +3 -0
  240. package/dist/views/KSDocument.js.map +1 -1
  241. package/dist/views/KnowledgeSources.js +3 -0
  242. package/dist/views/KnowledgeSources.js.map +1 -1
  243. package/dist/views/MessageInput/ButtonGroup.d.ts +22 -0
  244. package/dist/views/MessageInput/ButtonGroup.d.ts.map +1 -1
  245. package/dist/views/MessageInput/ButtonGroup.js +4 -0
  246. package/dist/views/MessageInput/ButtonGroup.js.map +1 -1
  247. package/dist/views/MessageInput/InfoBar.d.ts +7 -0
  248. package/dist/views/MessageInput/InfoBar.d.ts.map +1 -1
  249. package/dist/views/MessageInput/InfoBar.js +7 -0
  250. package/dist/views/MessageInput/InfoBar.js.map +1 -1
  251. package/dist/views/MessageInput/QuickCommandSelector.d.ts +13 -0
  252. package/dist/views/MessageInput/QuickCommandSelector.d.ts.map +1 -0
  253. package/dist/views/MessageInput/QuickCommandSelector.js +141 -0
  254. package/dist/views/MessageInput/QuickCommandSelector.js.map +1 -0
  255. package/dist/views/MessageInput/index.d.ts +8 -0
  256. package/dist/views/MessageInput/index.d.ts.map +1 -1
  257. package/dist/views/MessageInput/index.js +11 -4
  258. package/dist/views/MessageInput/index.js.map +1 -1
  259. package/dist/views/MessageInput/styled.d.ts.map +1 -1
  260. package/dist/views/MessageInput/styled.js +137 -0
  261. package/dist/views/MessageInput/styled.js.map +1 -1
  262. package/dist/views/MinimizedHeader.d.ts +4 -0
  263. package/dist/views/MinimizedHeader.d.ts.map +1 -1
  264. package/dist/views/MinimizedHeader.js +4 -0
  265. package/dist/views/MinimizedHeader.js.map +1 -1
  266. package/dist/views/Stacks.d.ts +3 -0
  267. package/dist/views/Stacks.d.ts.map +1 -1
  268. package/dist/views/Stacks.js +3 -0
  269. package/dist/views/Stacks.js.map +1 -1
  270. package/dist/views/Workspaces.d.ts +3 -0
  271. package/dist/views/Workspaces.d.ts.map +1 -1
  272. package/dist/views/Workspaces.js +3 -0
  273. package/dist/views/Workspaces.js.map +1 -1
  274. package/package.json +6 -6
  275. package/src/StackspotAIWidget.tsx +23 -2
  276. package/src/chat-interceptors/CustomInputs.ts +14 -1
  277. package/src/chat-interceptors/quick-command-questions.ts +12 -2
  278. package/src/chat-interceptors/quick-commands.ts +66 -26
  279. package/src/chat-interceptors/send-message.ts +41 -11
  280. package/src/components/Accordion.tsx +10 -0
  281. package/src/components/AdaptiveTextArea.tsx +21 -4
  282. package/src/components/AutoFocus.tsx +34 -0
  283. package/src/components/Fading.tsx +66 -0
  284. package/src/components/FadingOverflow.tsx +31 -3
  285. package/src/components/FallbackBoundary/ErrorBoundary.tsx +26 -3
  286. package/src/components/FallbackBoundary/Loading.tsx +1 -1
  287. package/src/components/FallbackBoundary/index.tsx +13 -2
  288. package/src/components/HistoryList.tsx +15 -1
  289. package/src/components/IconInput.tsx +3 -0
  290. package/src/components/OverlayMenu.tsx +76 -20
  291. package/src/components/ProgressBar.tsx +23 -0
  292. package/src/components/QuickStartButton.tsx +3 -0
  293. package/src/components/RightPanelForm.tsx +15 -9
  294. package/src/components/RightPanelTabs.tsx +3 -0
  295. package/src/components/TabManager.tsx +8 -0
  296. package/src/components/Tooltip/Tooltip.tsx +47 -5
  297. package/src/components/Tooltip/TooltipAPI.ts +59 -42
  298. package/src/components/Tooltip/types.ts +13 -0
  299. package/src/components/form/DescribedCheckboxGroup.tsx +4 -0
  300. package/src/components/form/DescribedRadioGroup.tsx +4 -0
  301. package/src/components/form/types.ts +34 -0
  302. package/src/context/AIWidgetProvider.tsx +19 -0
  303. package/src/context/hooks.ts +56 -1
  304. package/src/features.ts +29 -0
  305. package/src/layout.css +5 -0
  306. package/src/regex.ts +1 -0
  307. package/src/right-panel/DefaultPanel.tsx +4 -0
  308. package/src/right-panel/RightPanel.tsx +3 -0
  309. package/src/right-panel/RightPanelProvider.tsx +15 -0
  310. package/src/right-panel/constants.ts +1 -0
  311. package/src/right-panel/hooks.tsx +8 -1
  312. package/src/state/ChatEntry.ts +60 -2
  313. package/src/state/ChatState.ts +74 -9
  314. package/src/state/ChatTabsController.ts +31 -0
  315. package/src/state/ObservableState.ts +14 -0
  316. package/src/state/WidgetState.ts +5 -0
  317. package/src/types.ts +10 -0
  318. package/src/utils/chat.ts +15 -1
  319. package/src/utils/date.ts +25 -1
  320. package/src/utils/download.ts +5 -0
  321. package/src/utils/knowledge-source.ts +16 -0
  322. package/src/utils/string.ts +5 -1
  323. package/src/utils/url.ts +8 -0
  324. package/src/views/Agents.tsx +3 -0
  325. package/src/views/Chat/AgentInfo.tsx +3 -0
  326. package/src/views/Chat/ChatMessage.tsx +31 -18
  327. package/src/views/Chat/ChatMessages.tsx +3 -0
  328. package/src/views/Chat/chat-scroll.ts +1 -1
  329. package/src/views/Chat/events.ts +69 -0
  330. package/src/views/Chat/index.tsx +6 -0
  331. package/src/views/ChatHistory/ChatHistoryPanel.tsx +6 -2
  332. package/src/views/ChatHistory/HistoryItem.tsx +14 -2
  333. package/src/views/ChatHistory/index.tsx +11 -1
  334. package/src/views/ChatHistory/utils.ts +14 -0
  335. package/src/views/ChatTabSelection.tsx +3 -0
  336. package/src/views/Editor.tsx +4 -0
  337. package/src/views/Home.tsx +8 -0
  338. package/src/views/KSDocument.tsx +3 -0
  339. package/src/views/KnowledgeSources.tsx +3 -0
  340. package/src/views/MessageInput/ButtonGroup.tsx +22 -0
  341. package/src/views/MessageInput/InfoBar.tsx +7 -0
  342. package/src/views/MessageInput/QuickCommandSelector.tsx +217 -0
  343. package/src/views/MessageInput/index.tsx +16 -4
  344. package/src/views/MessageInput/styled.ts +137 -0
  345. package/src/views/MinimizedHeader.tsx +4 -0
  346. package/src/views/Stacks.tsx +3 -0
  347. package/src/views/Workspaces.tsx +3 -0
@@ -80,6 +80,7 @@ export const MessageInputBox = styled.div `
80
80
 
81
81
  .action-box {
82
82
  display: flex;
83
+ position: relative;
83
84
  flex-direction: row;
84
85
  gap: 4px;
85
86
  align-items: end;
@@ -199,5 +200,141 @@ export const MessageInputBox = styled.div `
199
200
  box-shadow: none;
200
201
  }
201
202
  }
203
+
204
+ .quick-command-selector {
205
+ position: absolute;
206
+ border-radius: 4px;
207
+ border: 1px solid ${theme.color.light[600]};
208
+ background-color: ${theme.color.light[500]};
209
+ box-shadow: 0px 2px 16px 0px #0000005C;
210
+ display: flex;
211
+ flex-direction: column;
212
+ width: 480px;
213
+ bottom: 55px;
214
+
215
+ .loading, .error {
216
+ padding-bottom: 26px;
217
+ p {
218
+ width: 200px;
219
+ text-align: center;
220
+ line-height: 20px;
221
+ }
222
+ }
223
+
224
+ .empty {
225
+ padding-bottom: 26px;
226
+ width: 200px;
227
+ text-align: center;
228
+ line-height: 20px;
229
+ margin: auto;
230
+ }
231
+
232
+ header {
233
+ display: flex;
234
+ flex-direction: row;
235
+ gap: 8px;
236
+ align-items: center;
237
+ padding: 8px;
238
+ font-family: 'San Francisco';
239
+ font-weight: 500;
240
+ font-size: 11px;
241
+ }
242
+
243
+ .body {
244
+ display: flex;
245
+ flex-direction: row;
246
+ align-items: center;
247
+ }
248
+
249
+ ul {
250
+ margin: 0;
251
+ padding: 0;
252
+ list-style: none;
253
+ }
254
+
255
+ ul.tabs {
256
+ display: flex;
257
+ flex-direction: column;
258
+
259
+ li {
260
+ display: flex;
261
+ flex-direction: column;
262
+ }
263
+
264
+ button {
265
+ box-sizing: border-box;
266
+ color: ${theme.color.light[700]};
267
+ text-align: left;
268
+ padding: 10px;
269
+ font-weight: 600;
270
+ font-size: 12px;
271
+ transition: background-color 0.3s;
272
+ border-top-right-radius: 4px;
273
+ border-bottom-right-radius: 4px;
274
+ background-color: transparent;
275
+ border: none;
276
+ cursor: pointer;
277
+ outline: none;
278
+
279
+ &:hover, &.active, &:focus {
280
+ background-color: ${theme.color.light[600]};
281
+ }
282
+
283
+ &.active {
284
+ border-left: 1px solid ${theme.color.light.contrastText};
285
+ color: ${theme.color.light.contrastText};
286
+ }
287
+ }
288
+ }
289
+
290
+ ul.command-list {
291
+ align-self: stretch;
292
+ display: flex;
293
+ flex-direction: column;
294
+ gap: 2px;
295
+ overflow-y: auto;
296
+ flex: 1;
297
+ max-height: 170px;
298
+
299
+ li {
300
+ display: flex;
301
+ flex-direction: row;
302
+ align-items: center;
303
+ gap: 8px;
304
+ padding: 8px;
305
+ border-radius: 4px;
306
+
307
+ &:hover, &.focus {
308
+ background-color: ${theme.color.light[600]};
309
+ }
310
+
311
+ button.qc {
312
+ flex: 1;
313
+ border: none;
314
+ text-align: left;
315
+ background-color: transparent;
316
+ text-align: left;
317
+ outline: none;
318
+ overflow: hidden;
319
+ cursor: pointer;
320
+
321
+ .qc-title {
322
+ font-size: 11px;
323
+ margin: 0 0 4px 0;
324
+ color: ${theme.color.light.contrastText};
325
+ text-transform: uppercase;
326
+ text-overflow: ellipsis;
327
+ overflow: hidden;
328
+ }
329
+
330
+ .qc-description {
331
+ color: ${theme.color.light[700]};
332
+ font-size: 12px;
333
+ margin: 0;
334
+ }
335
+ }
336
+ }
337
+ }
338
+ }
202
339
  `;
203
340
  //# sourceMappingURL=styled.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/views/MessageInput/styled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,eAAe,GAAG,EAAE,CAAA;AAC1B,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;kBAWvB,eAAe,GAAG,qBAAqB;;;;;;;;;;;;;;;;gBAgBzC,eAAe;;0BAEL,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BtC,UAAU;;;;;;;;;;;;;;;;;;;;;;wBAsBI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;wBACtB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;sBAKxB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;;;;0BAIpB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;gBAoBhC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;4BAMV,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;4BAItB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;;;;;kBAKlC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmD5C,UAAU;;;;;;;;;;;cAWF,gBAAgB;;;;;;;;CAQ7B,CAAA"}
1
+ {"version":3,"file":"styled.js","sourceRoot":"","sources":["../../../src/views/MessageInput/styled.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE1C,MAAM,eAAe,GAAG,EAAE,CAAA;AAC1B,MAAM,qBAAqB,GAAG,CAAC,CAAA;AAC/B,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAA;AACnC,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,CAAA;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;kBAWvB,eAAe,GAAG,qBAAqB;;;;;;;;;;;;;;;;gBAgBzC,eAAe;;0BAEL,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA4BtC,UAAU;;;;;;;;;;;;;;;;;;;;;;;wBAuBI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;wBACtB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;sBAKxB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;;;;0BAIpB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;gBAoBhC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;4BAMV,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;4BAItB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;;;;;kBAKlC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAmD5C,UAAU;;;;;;;;;;;cAWF,gBAAgB;;;;;;;;;;;;wBAYN,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;wBACtB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0D7B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;8BAcT,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;mCAIjB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;mBAC9C,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;8BAuBnB,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;qBAgB/B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY;;;;;;;qBAO9B,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;;;;;;;CAQ1C,CAAA"}
@@ -1,3 +1,7 @@
1
1
  import { MinimizedActions } from '../types.js';
2
+ /**
3
+ * When the chat is minimized, there's no chat selection, i.e. the tabs are not rendered. In place of the tabs this header with the current
4
+ * chat name and buttons to collapse and close is rendered.
5
+ */
2
6
  export declare const MinimizedHeader: ({ onClose, onCollapse, onExpand }: MinimizedActions) => import("react/jsx-runtime").JSX.Element;
3
7
  //# sourceMappingURL=MinimizedHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"MinimizedHeader.d.ts","sourceRoot":"","sources":["../../src/views/MinimizedHeader.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAwC3C,eAAO,MAAM,eAAe,sCAAuC,gBAAgB,4CA8BlF,CAAA"}
1
+ {"version":3,"file":"MinimizedHeader.d.ts","sourceRoot":"","sources":["../../src/views/MinimizedHeader.tsx"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAwC3C;;;GAGG;AACH,eAAO,MAAM,eAAe,sCAAuC,gBAAgB,4CA8BlF,CAAA"}
@@ -45,6 +45,10 @@ const Header = styled.header `
45
45
  }
46
46
  }
47
47
  `;
48
+ /**
49
+ * When the chat is minimized, there's no chat selection, i.e. the tabs are not rendered. In place of the tabs this header with the current
50
+ * chat name and buttons to collapse and close is rendered.
51
+ */
48
52
  export const MinimizedHeader = ({ onClose, onCollapse, onExpand }) => {
49
53
  const t = useTranslate(dictionary);
50
54
  const { active } = useChatTabs();
@@ -1 +1 @@
1
- {"version":3,"file":"MinimizedHeader.js","sourceRoot":"","sources":["../../src/views/MinimizedHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAoB,EAAE,EAAE;IACrF,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IAChC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,MAAM,WAAW,GAAG,OAAO,IAAI,UAAU,IAAI,QAAQ,CAAA;IAErD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,SAAS;YAAE,QAAQ,EAAE,EAAE,CAAA;;YACtB,UAAU,EAAE,EAAE,CAAA;QACnB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAA;IAC1B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL,MAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,kBAAkB,aAC5C,KAAC,cAAc,IAAC,SAAS,EAAC,OAAO,YAAC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,KAAK,GAAQ,GAAiB,EACpF,WAAW,IAAI,eAAK,SAAS,EAAC,cAAc,aAC1C,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,KAAC,UAAU,IACtC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,gBAC5B,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC7C,SAAS,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE,SAAS,IAAI,WAAW,CAAC,CAAC,EAC9D,OAAO,EAAE,eAAe,YAExB,KAAC,WAAW,KAAG,GACJ,EACZ,OAAO,IAAI,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,gBAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,YAAE,KAAC,KAAK,KAAG,GAAa,IACjG,IACC,CACV,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;KACf;IACD,EAAE,EAAE;QACF,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,QAAQ;KAChB;CACmB,CAAA"}
1
+ {"version":3,"file":"MinimizedHeader.js","sourceRoot":"","sources":["../../src/views/MinimizedHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;AACnC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAG5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoC3B,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAoB,EAAE,EAAE;IACrF,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,EAAE,CAAA;IAChC,MAAM,KAAK,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC3C,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjD,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,MAAM,WAAW,GAAG,OAAO,IAAI,UAAU,IAAI,QAAQ,CAAA;IAErD,MAAM,eAAe,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,SAAS;YAAE,QAAQ,EAAE,EAAE,CAAA;;YACtB,UAAU,EAAE,EAAE,CAAA;QACnB,YAAY,CAAC,CAAC,SAAS,CAAC,CAAA;IAC1B,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAEf,OAAO,CACL,MAAC,MAAM,IAAC,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,kBAAkB,aAC5C,KAAC,cAAc,IAAC,SAAS,EAAC,OAAO,YAAC,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,KAAK,GAAQ,GAAiB,EACpF,WAAW,IAAI,eAAK,SAAS,EAAC,cAAc,aAC1C,CAAC,QAAQ,IAAI,UAAU,CAAC,IAAI,KAAC,UAAU,IACtC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,gBAC5B,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC7C,SAAS,EAAE,WAAW,CAAC,CAAC,UAAU,EAAE,SAAS,IAAI,WAAW,CAAC,CAAC,EAC9D,OAAO,EAAE,eAAe,YAExB,KAAC,WAAW,KAAG,GACJ,EACZ,OAAO,IAAI,KAAC,UAAU,IAAC,KAAK,EAAE,CAAC,CAAC,KAAK,gBAAc,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,YAAE,KAAC,KAAK,KAAG,GAAa,IACjG,IACC,CACV,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,QAAQ,EAAE,UAAU;QACpB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;KACf;IACD,EAAE,EAAE;QACF,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,QAAQ;KAChB;CACmB,CAAA"}
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Renders the Stack selection form in the Right Panel if this is the panel that is currently opened.
3
+ */
1
4
  export declare const Stacks: () => null;
2
5
  //# sourceMappingURL=Stacks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Stacks.d.ts","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,MAAM,YAclB,CAAA"}
1
+ {"version":3,"file":"Stacks.d.ts","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"AAaA;;GAEG;AACH,eAAO,MAAM,MAAM,YAclB,CAAA"}
@@ -10,6 +10,9 @@ import { IconInput } from '../components/IconInput.js';
10
10
  import { RightPanelTabs } from '../components/RightPanelTabs.js';
11
11
  import { useCurrentChat, useWidget, useWidgetState } from '../context/hooks.js';
12
12
  import { useRightPanel } from '../right-panel/hooks.js';
13
+ /**
14
+ * Renders the Stack selection form in the Right Panel if this is the panel that is currently opened.
15
+ */
13
16
  export const Stacks = () => {
14
17
  const t = useTranslate(dictionary);
15
18
  const panel = useWidgetState('panel');
@@ -1 +1 @@
1
- {"version":3,"file":"Stacks.js","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Stacks.js","sourceRoot":"","sources":["../../src/views/Stacks.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,5 @@
1
+ /**
2
+ * Renders the Workspace selection form in the Right Panel if this is the panel that is currently opened.
3
+ */
1
4
  export declare const Workspaces: () => null;
2
5
  //# sourceMappingURL=Workspaces.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Workspaces.d.ts","sourceRoot":"","sources":["../../src/views/Workspaces.tsx"],"names":[],"mappings":"AAaA,eAAO,MAAM,UAAU,YAetB,CAAA"}
1
+ {"version":3,"file":"Workspaces.d.ts","sourceRoot":"","sources":["../../src/views/Workspaces.tsx"],"names":[],"mappings":"AAaA;;GAEG;AACH,eAAO,MAAM,UAAU,YAetB,CAAA"}
@@ -10,6 +10,9 @@ import { IconInput } from '../components/IconInput.js';
10
10
  import { RightPanelForm } from '../components/RightPanelForm.js';
11
11
  import { useCurrentChat, useWidget, useWidgetState } from '../context/hooks.js';
12
12
  import { useRightPanel } from '../right-panel/hooks.js';
13
+ /**
14
+ * Renders the Workspace selection form in the Right Panel if this is the panel that is currently opened.
15
+ */
13
16
  export const Workspaces = () => {
14
17
  const t = useTranslate(dictionary);
15
18
  const panel = useWidgetState('panel');
@@ -1 +1 @@
1
- {"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../src/views/Workspaces.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Workspaces.js","sourceRoot":"","sources":["../../src/views/Workspaces.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAA;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAE5D,OAAO,EAAc,YAAY,EAAE,MAAM,8BAA8B,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAC5E,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAEpD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,EAAE;IAC7B,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,aAAa,EAAE,CAAA;IAChC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,KAAK,WAAW;YAAE,IAAI,CAC7B,KAAC,cAAc,cAAC,KAAC,eAAe,MAAM,IAAI,CAAC,EAAE,CAAI,GAAiB,EAClE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAC9F,CAAA;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAEvB,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IAC3B,MAAM,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAA;IAClC,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,EAAE,CAAA;IACjC,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAC7B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IACxC,MAAM,UAAU,GAAG,eAAe,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAoC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/H,MAAM,QAAQ,GAAG,OAAO,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAClI,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,CAAC,CAC5B,CAAA;IAED,SAAS,MAAM;QACb,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QACrE,KAAK,EAAE,CAAA;IACT,CAAC;IAED,OAAO,CACL,8BACE,eAAK,SAAS,EAAC,SAAS,aACtB,KAAC,SAAS,IAAC,IAAI,EAAE,KAAC,MAAM,KAAG,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAC,QAAQ,GAAG,EACrF,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAC,mBAAmB,IACxC,OAAO,EAAE,QAAQ,EACjB,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EACxB,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EACrC,eAAe,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;4BAC/G,CAAC,CAAC,cAAc;4BAChB,CAAC,CAAC,EAAE,EAEN,SAAS,EAAC,aAAa,GACvB,EACD,CAAC,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,CAAC,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,0BAA0B,GAAI,EAC/H,CAAC,UAAU,CAAC,MAAM,IAAI,KAAC,WAAW,IAAC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,iBAAiB,GAAI,IACrF,EACN,KAAC,MAAM,IAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,YAAG,CAAC,CAAC,KAAK,GAAU,IAC5D,CACJ,CAAA;AACH,CAAC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,EAAE,EAAE;QACF,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,kGAAkG;QAC/G,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,mCAAmC;QACpD,0BAA0B,EAAE,kCAAkC;QAC9D,MAAM,EAAE,8BAA8B;QACtC,iBAAiB,EAAE,6CAA6C;KACjE;IACD,EAAE,EAAE;QACF,KAAK,EAAE,YAAY;QACnB,WAAW,EAAE,qGAAqG;QAClH,KAAK,EAAE,SAAS;QAChB,eAAe,EAAE,mCAAmC;QACpD,0BAA0B,EAAE,+BAA+B;QAC3D,MAAM,EAAE,yBAAyB;QACjC,iBAAiB,EAAE,8CAA8C;KAClE;CACmB,CAAA"}
package/package.json CHANGED
@@ -1,14 +1,18 @@
1
1
  {
2
2
  "name": "@stack-spot/ai-chat-widget",
3
- "version": "0.11.0",
3
+ "version": "1.1.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "rimraf dist && tsc && tsc-esm-fix --target='dist' && cpy src/layout.css dist --flat",
9
+ "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
10
+ },
7
11
  "peerDependencies": {
8
12
  "@citric/core": "^6.0.0",
9
13
  "@citric/icons": "^5.4.0 || ^6.0.0",
10
14
  "@citric/ui": "^5.4.0 || ^6.0.0",
11
- "@stack-spot/portal-components": "^2.6.1",
15
+ "@stack-spot/portal-components": "^2.8.1",
12
16
  "@stack-spot/portal-network": "^0.46.0",
13
17
  "@stack-spot/portal-theme": "^1.0.0",
14
18
  "@stack-spot/portal-translate": "^1.1.0",
@@ -47,9 +51,5 @@
47
51
  "react-syntax-highlighter": "^15.5.0",
48
52
  "remark-gfm": "^4.0.0",
49
53
  "ulid": "^2.3.0"
50
- },
51
- "scripts": {
52
- "build": "rimraf dist && tsc && tsc-esm-fix --target='dist' && cpy src/layout.css dist --flat",
53
- "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
54
54
  }
55
55
  }
@@ -26,23 +26,44 @@ import { Stacks } from './views/Stacks'
26
26
  import { Workspaces } from './views/Workspaces'
27
27
 
28
28
  export interface AIWidgetProps {
29
+ /**
30
+ * The features to enable or disable.
31
+ */
29
32
  features?: AIWidgetFeatures,
33
+ /**
34
+ * The name of the user currently logged in.
35
+ */
30
36
  username: string,
37
+ /**
38
+ * Chat interceptors allows you to intercept chat messages, interpret them, modify them and even change the chat flow. See
39
+ * {@link ChatState} for more details.
40
+ */
31
41
  interceptors?: MessageInterceptor[],
42
+ /**
43
+ * A custom view to show when the chat has no messages to display.
44
+ */
32
45
  children?: React.ReactNode,
46
+ /**
47
+ * If the chat can be minimized, this set of functions tells what to do when minimization related buttons are clicked.
48
+ */
33
49
  minimizedActions?: MinimizedActions,
34
50
  }
35
51
 
52
+ /**
53
+ * Renders a Chat Widget according to the closest model found in the React tree (AIWidgetProvider). If no model is found, a global version
54
+ * of the Chat Widget will be instantiated and used.
55
+ */
36
56
  export const StackspotAIWidget = (
37
57
  { username, features = defaultFeatures, interceptors: userInterceptors = [], minimizedActions = {}, children }: AIWidgetProps,
38
58
  ) => {
39
59
  const widget = useWidget()
40
60
  const interceptors: MessageInterceptor[] = useMemo(
41
- () => [
61
+ () => features.quickCommands ? [
42
62
  ...userInterceptors,
43
63
  quickCommandQuestionsInterceptor,
44
64
  createQuickCommandInterceptor(widget, () => loader.__getMonacoInstance()?.editor),
45
- sendMessageInterceptor],
65
+ sendMessageInterceptor,
66
+ ] : [...userInterceptors, sendMessageInterceptor],
46
67
  [],
47
68
  )
48
69
  useFirstChat(interceptors)
@@ -1,9 +1,10 @@
1
1
  import { CustomInputResponse } from '@stack-spot/portal-network/api/ai'
2
2
  import { Dictionary, translate } from '@stack-spot/portal-translate'
3
3
  import { ChatEntry } from '../state/ChatEntry'
4
+ import { ChatState } from '../state/ChatState'
4
5
  import { LabeledWithImage } from '../state/types'
5
6
 
6
- export const CUSTOM_INPUTS_KEY = 'customInputs'
7
+ const CUSTOM_INPUTS_KEY = 'customInputs'
7
8
 
8
9
  export class CustomInputs {
9
10
  private value: Record<string, string> = {}
@@ -21,6 +22,18 @@ export class CustomInputs {
21
22
  })
22
23
  }
23
24
 
25
+ static getCustomInputsFromChat(chat: ChatState): CustomInputs | undefined {
26
+ return chat.interceptorMemory.get(CUSTOM_INPUTS_KEY)
27
+ }
28
+
29
+ static setCustomInputsForChat(inputs: CustomInputs, chat: ChatState): void {
30
+ chat.interceptorMemory.set(CUSTOM_INPUTS_KEY, inputs)
31
+ }
32
+
33
+ static deleteCustomInputsFromChat(chat: ChatState): void {
34
+ chat.interceptorMemory.delete(CUSTOM_INPUTS_KEY)
35
+ }
36
+
24
37
  ask(): ChatEntry {
25
38
  if (this.index >= this.inputs.length) throw new Error('No more questions to ask.')
26
39
  const t = translate(dictionary)
@@ -1,11 +1,21 @@
1
1
  import { ChatEntry } from '../state/ChatEntry'
2
2
  import { ChatState } from '../state/ChatState'
3
- import { CUSTOM_INPUTS_KEY } from './CustomInputs'
3
+ import { CustomInputs } from './CustomInputs'
4
4
 
5
+ /**
6
+ * This chat interceptor is responsible for interrupting the normal flow of the chat and asking questions about the variables (custom
7
+ * inputs) needed to run the quick command previously typed.
8
+ *
9
+ * The first question is actually asked by the `quickCommandInterceptor`, this registers all answers and asks the next questions (if any).
10
+ *
11
+ * @param entry the chat entry.
12
+ * @param chat the chat state.
13
+ * @returns false if, and only if, this entry is an answer to a quick command question (custom input). Undefined otherwise.
14
+ */
5
15
  export function quickCommandQuestionsInterceptor(entry: ChatEntry, chat: ChatState) {
6
16
  const { agentType, content } = entry.getValue()
7
17
  if (agentType !== 'user') return
8
- const customInputs = chat.interceptorMemory.get(CUSTOM_INPUTS_KEY)
18
+ const customInputs = CustomInputs.getCustomInputsFromChat(chat)
9
19
  if (!customInputs) return
10
20
  if (content === '/skip') customInputs.skip()
11
21
  else customInputs.answer(content)
@@ -4,13 +4,14 @@ import { Dictionary, interpolate, translate } from '@stack-spot/portal-translate
4
4
  import type { editor } from 'monaco-editor'
5
5
  import { ulid } from 'ulid'
6
6
  import { AbortedError } from '../AbortedError'
7
+ import { quickCommandRegex } from '../regex'
7
8
  import { ChatEntry } from '../state/ChatEntry'
8
9
  import { ChatState } from '../state/ChatState'
9
10
  import { LabeledWithImage } from '../state/types'
10
11
  import { WidgetState } from '../state/WidgetState'
11
12
  import { buildConversationContext } from '../utils/chat'
12
13
  import { getSizeOfString } from '../utils/string'
13
- import { CUSTOM_INPUTS_KEY, CustomInputs } from './CustomInputs'
14
+ import { CustomInputs } from './CustomInputs'
14
15
 
15
16
  type SlugExecution = Record<string, string | QuickCommandFetchResponseResult | QuickCommandPromptResponse2>
16
17
 
@@ -24,17 +25,35 @@ interface QCContext {
24
25
  signal: AbortSignal,
25
26
  }
26
27
 
27
- const commandRegex = /^\/[\w\d-_]+$/
28
+ /**
29
+ * While the quick command is running, if it takes more than `progressMessageDelayMS` a progress message is shown.
30
+ * This progress message is shown immediately if one of the steps is of type "LLM".
31
+ */
28
32
  const progressMessageDelayMS = 1000
29
33
 
34
+ /**
35
+ * This creates a chat interceptor for interpreting and running quick commands. We need a function to create the interceptor because, for
36
+ * quick commands, we need access to the full widget state and the editor, which are not provided to a chat interceptor.
37
+ *
38
+ * The quick command interceptor intercepts all user messages (trimmed) that matches the quick command regex. It fetches the quick command
39
+ * from the backend, runs all of its steps and outputs the final response (in the chat or in the editor).
40
+ *
41
+ * @param widget the full widget state.
42
+ * @param getEditor a function that returns the editor instance (monaco).
43
+ * @returns the quick commands chat interceptor.
44
+ */
30
45
  export function createQuickCommandInterceptor(widget: WidgetState, getEditor: () => typeof editor | undefined) {
46
+ /**
47
+ * This creates a CustomInputs instance in the current chat, which activates the `quickCommandQuestionsInterceptor`. In summary, this asks
48
+ * the first question, wait for all answers to be given and fills the result map in the context passed as parameter.
49
+ */
31
50
  async function computeCustomInputs(ctx: QCContext) {
32
51
  const { chat, qc: { custom_inputs: inputs, name, slug } } = ctx
33
52
  if (!inputs?.length) return
34
53
  chat.set('isLoading', false)
35
54
  const t = translate(dictionary)
36
55
  const customInputs = new CustomInputs(inputs, chat.get('agent'))
37
- chat.interceptorMemory.set(CUSTOM_INPUTS_KEY, customInputs)
56
+ CustomInputs.setCustomInputsForChat(customInputs, chat)
38
57
  chat.pushMessage(new ChatEntry({
39
58
  agentType: 'bot',
40
59
  type: 'text',
@@ -43,10 +62,13 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
43
62
  chat.pushMessage(customInputs.ask())
44
63
  const inputsValues = await customInputs.getValue()
45
64
  chat.set('isLoading', true)
46
- chat.interceptorMemory.delete(CUSTOM_INPUTS_KEY)
65
+ CustomInputs.deleteCustomInputsFromChat(chat)
47
66
  ctx.resultMap = { ...ctx.resultMap, ...inputsValues }
48
67
  }
49
68
 
69
+ /**
70
+ * Runs a fetch step of a quick command and puts the result in the `resultMap` of the context passed as parameter.
71
+ */
50
72
  async function runFetchStep(ctx: QCContext, stepIndex: number) {
51
73
  const { qc: { slug, steps }, code, context, resultMap, executionId, signal } = ctx
52
74
  const step = steps![stepIndex]
@@ -65,6 +87,9 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
65
87
  }
66
88
  }
67
89
 
90
+ /**
91
+ * Runs an LLM step of a quick command and puts the result in the `resultMap` of the context passed as parameter.
92
+ */
68
93
  async function runLLMStep(
69
94
  { qc: { slug, steps }, code, context, executionId, resultMap, signal }: QCContext,
70
95
  stepIndex: number,
@@ -82,43 +107,43 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
82
107
  message.setValue({
83
108
  ...message.getValue(),
84
109
  content: interpolate(t.progress, qc.name || qc.slug, stepIndex + 1, qc.steps?.[stepIndex]?.slug, qc.steps?.length),
85
- updated: new Date().toISOString(),
86
110
  })
87
111
  }
88
112
 
89
- function showProgressMessage(ctx: QCContext, message: ChatEntry) {
90
- const result = {
91
- removeProgressMessage: () => clearTimeout(timeout),
92
- }
93
- const timeout = window.setTimeout(() => {
94
- const chat = ctx.chat
95
- chat.pushMessage(message)
96
- result.removeProgressMessage = () => chat.popMessage()
97
- }, progressMessageDelayMS)
98
- return result
99
- }
100
-
101
113
  function createProgressMessage(agent?: LabeledWithImage) {
102
114
  return new ChatEntry({
103
115
  agentType: 'bot',
104
116
  content: '',
105
117
  type: 'text',
106
118
  agent,
107
- updated: new Date().toISOString(),
108
119
  })
109
120
  }
110
121
 
122
+ function showProgressMessage(ctx: QCContext) {
123
+ const showImmediately = ctx.qc.steps?.some(s => s.type === 'LLM')
124
+ const message = createProgressMessage(ctx.chat.get('agent'))
125
+ const controller = {
126
+ update: (index: number) => updateProgressMessageForStep(message, ctx.qc, index),
127
+ remove: () => clearTimeout(timeout),
128
+ }
129
+ const timeout = window.setTimeout(() => {
130
+ const chat = ctx.chat
131
+ chat.pushMessage(message)
132
+ controller.remove = () => chat.popMessage()
133
+ }, showImmediately ? 0 : progressMessageDelayMS)
134
+ return controller
135
+ }
136
+
111
137
  async function runSteps(ctx: QCContext) {
112
- const { qc, chat } = ctx
113
- const progress = createProgressMessage(chat.get('agent'))
114
- const { removeProgressMessage } = showProgressMessage(ctx, progress)
138
+ const { qc } = ctx
139
+ const progress = showProgressMessage(ctx)
115
140
  try {
116
141
  for (let i = 0; i < (qc.steps?.length ?? 0); i++) {
117
- updateProgressMessageForStep(progress, qc, i)
142
+ progress.update(i)
118
143
  await (qc.steps?.[i].type === 'FETCH' ? runFetchStep(ctx, i) : runLLMStep(ctx, i))
119
144
  }
120
145
  } finally {
121
- removeProgressMessage()
146
+ progress.remove()
122
147
  }
123
148
  }
124
149
 
@@ -146,6 +171,7 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
146
171
  widget.chatTabs.select(ctx.chat.id)
147
172
  ctx.context.conversation_id = ctx.chat.id
148
173
  } else {
174
+ // if we're running a command in teh editor, we don't need to open a new tab, we just need to run it in a new conversation context.
149
175
  ctx.context.conversation_id = ulid()
150
176
  }
151
177
  }
@@ -170,6 +196,9 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
170
196
  return formatResult(ctx)
171
197
  }
172
198
 
199
+ /**
200
+ * This registers a quick command event in the backend (analytics).
201
+ */
173
202
  async function registerAnalyticsEvent({ qc, executionId, code = '', context }: QCContext, status: string, start: number) {
174
203
  const now = new Date().getTime()
175
204
  try {
@@ -197,6 +226,9 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
197
226
  }
198
227
  }
199
228
 
229
+ /**
230
+ * Writes the result in the chat or in the editor.
231
+ */
200
232
  function outputResult({ qc, chat, code }: QCContext, result: string) {
201
233
  if (qc.return_type === 'CHAT') {
202
234
  chat.pushMessage(new ChatEntry({
@@ -204,6 +236,7 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
204
236
  content: result,
205
237
  agent: chat.get('agent'),
206
238
  type: 'md',
239
+ updated: new Date().toISOString(),
207
240
  }))
208
241
  } else {
209
242
  const editor = getEditor()?.getEditors()[0]
@@ -215,9 +248,16 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
215
248
  }
216
249
  }
217
250
 
251
+ /**
252
+ * The chat interceptor itself.
253
+ * @param entry the chat entry.
254
+ * @param chat the chat state.
255
+ * @param signal a signal that can be canceled by the user.
256
+ * @returns false if, and only if, this entry (trimmed) matches the quick command regex. Undefined otherwise.
257
+ */
218
258
  async function quickCommandInterceptor(entry: ChatEntry, chat: ChatState, signal: AbortSignal) {
219
259
  const { agentType, content } = entry.getValue()
220
- if (agentType !== 'user' || !commandRegex.test(content.trim())) return
260
+ if (agentType !== 'user' || !quickCommandRegex.test(content.trim())) return
221
261
  const t = translate(dictionary)
222
262
  const slug = content.trim().substring(1)
223
263
  const ctx: QCContext = {
@@ -258,14 +298,14 @@ export function createQuickCommandInterceptor(widget: WidgetState, getEditor: ()
258
298
 
259
299
  const dictionary = {
260
300
  en: {
261
- requiresSelection: 'This quick command requires some code to be selected in the editor.',
301
+ requiresSelection: 'This quick command requires some code to be selected in the editor. To open the editor click the icon "{/}" in the field below.',
262
302
  startQuestioning: 'To execute the Quick Command "$0", I\'ll need you to provide some information. Some may be mandatory, and others optional. Let\'s get started.',
263
303
  progress: 'Running quick command "$0". Step $1 ($2) of $3.',
264
304
  aborted: 'The quick command execution aborted by the user.',
265
305
  notFound: 'There\'s no quick command with the provided name. If you don\'t wish to run a command, prefix the first "/" with a "\\".',
266
306
  },
267
307
  pt: {
268
- requiresSelection: 'Este quick command precisa que algum código esteja selecionado no editor.',
308
+ requiresSelection: 'Este quick command precisa que algum código esteja selecionado no editor. Para abrir o editor clique no ícone "{/}" no campo abaixo.',
269
309
  startQuestioning: 'Para executar o Quick Command "$0", vou precisar que você providencie algumas explicações. Algumas são obrigatórias e outras opcionais. Vamos começar.',
270
310
  progress: 'Executando quick command "$0". Passo $1 ($2) de $3.',
271
311
  aborted: 'A execução do quick command foi abortada pelo usuário.',